user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<multiply>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  movslq %edi,%rbx
  mov    %edi,-0x34(%rsp)
  mov    %r8,-0x48(%rsp)
  mov    %rbx,-0x10(%rsp)
  test   %edi,%edi
  jle    L6
  mov    %rcx,%rax
  mov    %r8,%rdi
  movd   %esi,%xmm7
  mov    %esi,%r9d
  add    $0x4,%rax
  lea    0x0(,%rbx,4),%r10
  mov    -0x48(%rsp),%rbx
  pshufd $0x0,%xmm7,%xmm3
  mov    %rax,-0x50(%rsp)
  mov    -0x34(%rsp),%eax
  movdqa %xmm3,%xmm4
  xor    %r15d,%r15d
  mov    %rbx,-0x40(%rsp)
  lea    0x4(%rdx),%rbx
  psrlq  $0x20,%xmm4
  shr    $0x2,%eax
  mov    %rbx,-0x58(%rsp)
  mov    -0x50(%rsp),%rbx
  sub    $0x1,%eax
  mov    -0x58(%rsp),%rbp
  add    $0x1,%rax
  shl    $0x4,%rax
  mov    %rax,%r8
  mov    -0x34(%rsp),%eax
  and    $0xfffffffc,%eax
  mov    %eax,-0x5c(%rsp)
  add    $0x1,%eax
  movslq -0x5c(%rsp),%r12
  mov    %eax,-0x38(%rsp)
  mov    -0x5c(%rsp),%eax
  movslq -0x38(%rsp),%r13
  add    $0x2,%eax
  mov    %eax,-0x30(%rsp)
  mov    -0x34(%rsp),%eax
  movslq -0x30(%rsp),%r14
  sub    $0x1,%eax
  mov    %eax,-0x20(%rsp)
  mov    -0x34(%rsp),%eax
  mov    %rax,-0x28(%rsp)
  nopl   0x0(%rax,%rax,1)
L37077:
  cmpl   $0x2,-0x20(%rsp)
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  mov    %rdi,%rax
  seta   -0x60(%rsp)
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L29920
  xor    %eax,%eax
  cmpb   $0x0,-0x60(%rsp)
  je     L29920
  nopl   0x0(%rax)
L22270:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L22270
  mov    -0x5c(%rsp),%eax
  cmp    %eax,-0x34(%rsp)
  je     L23069
  mov    (%rcx,%r12,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%r12,4),%eax
  mov    %eax,(%rdi,%r12,4)
  mov    -0x38(%rsp),%eax
  cmp    %eax,-0x34(%rsp)
  jle    L23069
  mov    (%rcx,%r13,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%r13,4),%eax
  mov    %eax,(%rdi,%r13,4)
  mov    -0x30(%rsp),%eax
  cmp    %eax,-0x34(%rsp)
  jle    L23069
  mov    (%rcx,%r14,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%r14,4),%eax
  mov    %eax,(%rdi,%r14,4)
L23069:
  lea    0x1(%r15),%r11d
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r11d,-0x34(%rsp)
  je     L12239
  mov    %r11d,%r15d
  jmp    L37077
  nopl   0x0(%rax)
L29920:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L1524:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    -0x28(%rsp),%rdx
  jne    L1524
  jmp    L23069
  nopw   0x0(%rax,%rax,1)
L6:
  mov    -0x34(%rsp),%eax
  mov    -0x10(%rsp),%rdx
  mov    -0x48(%rsp),%rbx
  shr    $0x1f,%eax
  add    -0x34(%rsp),%eax
  sar    %eax
  cltq
  imul   %rax,%rdx
  shl    $0x2,%rax
  lea    (%rax,%rdx,4),%rax
  mov    (%rbx,%rax,1),%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax,%rax,1)
L12239:
  movslq -0x30(%rsp),%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  pshufd $0x0,%xmm6,%xmm3
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x20(%rsp)
  mov    -0x34(%rsp),%eax
  movdqa %xmm3,%xmm4
  movslq -0x5c(%rsp),%r13
  movslq -0x38(%rsp),%r14
  psrlq  $0x20,%xmm4
  mov    %rax,-0x28(%rsp)
  nopw   0x0(%rax,%rax,1)
L35592:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L28012
  xor    %eax,%eax
  cmpb   $0x0,-0x60(%rsp)
  je     L28012
  nopw   0x0(%rax,%rax,1)
L38957:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L38957
  mov    -0x5c(%rsp),%eax
  cmp    %eax,-0x34(%rsp)
  je     L35136
  mov    (%rcx,%r13,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%r13,4),%eax
  mov    %eax,(%rdi,%r13,4)
  cmp    -0x38(%rsp),%r11d
  jle    L35136
  mov    (%rcx,%r14,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%r14,4),%eax
  mov    %eax,(%rdi,%r14,4)
  cmp    -0x30(%rsp),%r11d
  jle    L35136
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L35136:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  je     L24537
  mov    %eax,%r12d
  jmp    L35592
  nopl   0x0(%rax)
L28012:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L27975:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    -0x28(%rsp),%rdx
  jne    L27975
  jmp    L35136
  nopw   0x0(%rax,%rax,1)
L24537:
  movslq -0x30(%rsp),%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  pshufd $0x0,%xmm6,%xmm3
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x20(%rsp)
  mov    -0x34(%rsp),%eax
  movdqa %xmm3,%xmm4
  movslq -0x5c(%rsp),%r13
  movslq -0x38(%rsp),%r14
  psrlq  $0x20,%xmm4
  mov    %rax,-0x28(%rsp)
  nopw   0x0(%rax,%rax,1)
L11621:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L31694
  xor    %eax,%eax
  cmpb   $0x0,-0x60(%rsp)
  je     L31694
  nop
L9895:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L9895
  mov    -0x5c(%rsp),%eax
  cmp    %eax,-0x34(%rsp)
  je     L39504
  mov    (%rcx,%r13,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%r13,4),%eax
  mov    %eax,(%rdi,%r13,4)
  cmp    -0x38(%rsp),%r11d
  jle    L39504
  mov    (%rcx,%r14,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%r14,4),%eax
  mov    %eax,(%rdi,%r14,4)
  cmp    -0x30(%rsp),%r11d
  jle    L39504
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L39504:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  je     L6437
  mov    %eax,%r12d
  jmp    L11621
  nopl   0x0(%rax)
L31694:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L16558:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    -0x28(%rsp),%rdx
  jne    L16558
  jmp    L39504
  nopw   0x0(%rax,%rax,1)
L6437:
  movslq -0x30(%rsp),%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  pshufd $0x0,%xmm7,%xmm3
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x20(%rsp)
  mov    -0x34(%rsp),%eax
  movdqa %xmm3,%xmm4
  movslq -0x5c(%rsp),%r13
  movslq -0x38(%rsp),%r14
  psrlq  $0x20,%xmm4
  mov    %rax,-0x28(%rsp)
  nopw   0x0(%rax,%rax,1)
L37200:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L15226
  xor    %eax,%eax
  cmpb   $0x0,-0x60(%rsp)
  je     L15226
  nop
L17606:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L17606
  mov    -0x5c(%rsp),%eax
  cmp    %eax,-0x34(%rsp)
  je     L18717
  mov    (%rcx,%r13,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%r13,4),%eax
  mov    %eax,(%rdi,%r13,4)
  cmp    -0x38(%rsp),%r11d
  jle    L18717
  mov    (%rcx,%r14,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%r14,4),%eax
  mov    %eax,(%rdi,%r14,4)
  cmp    -0x30(%rsp),%r11d
  jle    L18717
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L18717:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  je     L27064
  mov    %eax,%r12d
  jmp    L37200
  nopl   0x0(%rax)
L15226:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L11194:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    -0x28(%rsp),%rdx
  jne    L11194
  jmp    L18717
  nopw   0x0(%rax,%rax,1)
L27064:
  test   %r11d,%r11d
  mov    $0x1,%eax
  cmovg  -0x34(%rsp),%eax
  mov    -0x50(%rsp),%rbx
  movd   %r9d,%xmm7
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  xor    %r12d,%r12d
  mov    %eax,-0x60(%rsp)
  shr    $0x2,%eax
  mov    -0x60(%rsp),%r14d
  pshufd $0x0,%xmm7,%xmm3
  sub    $0x1,%eax
  movdqa %xmm3,%xmm4
  add    $0x1,%rax
  psrlq  $0x20,%xmm4
  and    $0xfffffffc,%r14d
  shl    $0x4,%rax
  mov    %rax,%r8
  lea    0x1(%r14),%eax
  mov    %eax,-0x5c(%rsp)
  lea    0x2(%r14),%eax
  mov    %eax,-0x38(%rsp)
  movslq %r14d,%rax
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  mov    %rax,-0x20(%rsp)
  movslq -0x38(%rsp),%rax
  mov    %rax,-0x18(%rsp)
  mov    -0x34(%rsp),%eax
  mov    %rax,-0x28(%rsp)
  nopl   (%rax)
L28801:
  cmp    $0x3,%r11d
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  mov    %rdi,%rax
  setg   %r13b
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L21245
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L21245
  nopl   (%rax)
L3586:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L3586
  cmp    %r14d,-0x60(%rsp)
  je     L14437
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L14437
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L14437
  mov    -0x18(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L14437:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  je     L18865
  mov    %eax,%r12d
  jmp    L28801
  nopl   (%rax)
L21245:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L36958:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    -0x28(%rsp),%rdx
  jne    L36958
  jmp    L14437
  nopw   0x0(%rax,%rax,1)
L18865:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x20(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x18(%rsp)
  mov    -0x34(%rsp),%eax
  mov    %rax,-0x28(%rsp)
  nopw   0x0(%rax,%rax,1)
L16209:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L35307
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L35307
  nopl   (%rax)
L8343:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L8343
  cmp    %r14d,-0x60(%rsp)
  je     L3613
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L3613
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L3613
  mov    -0x18(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L3613:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  je     L31284
  mov    %eax,%r12d
  jmp    L16209
  nopl   (%rax)
L35307:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L35976:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    -0x28(%rsp),%rdx
  jne    L35976
  jmp    L3613
  nopw   0x0(%rax,%rax,1)
L31284:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x20(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x18(%rsp)
  mov    -0x34(%rsp),%eax
  mov    %rax,-0x28(%rsp)
  nopw   0x0(%rax,%rax,1)
L31879:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L39264
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L39264
  nopl   (%rax)
L28496:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L28496
  cmp    %r14d,-0x60(%rsp)
  je     L1990
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L1990
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L1990
  mov    -0x18(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L1990:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  je     L28940
  mov    %eax,%r12d
  jmp    L31879
  nopl   (%rax)
L39264:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L3376:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    -0x28(%rsp),%rdx
  jne    L3376
  jmp    L1990
  nopw   0x0(%rax,%rax,1)
L28940:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L19676:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L36636
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L36636
  nopl   (%rax)
L6255:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L6255
  cmp    %r14d,-0x60(%rsp)
  je     L24732
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L24732
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L24732
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L24732:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  je     L10876
  mov    %eax,%r12d
  jmp    L19676
  nopl   (%rax)
L36636:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L27937:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L27937
  jmp    L24732
L10876:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L37126:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L6724
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L6724
  nopl   (%rax)
L647:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L647
  cmp    %r14d,-0x60(%rsp)
  je     L3068
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L3068
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L3068
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L3068:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L36231
  mov    %eax,%r12d
  jmp    L37126
  nopl   (%rax)
L6724:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L16281:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L16281
  jmp    L3068
  nopl   0x0(%rax,%rax,1)
L36231:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L21340:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L30260
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L30260
  nopl   (%rax)
L2281:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L2281
  cmp    %r14d,-0x60(%rsp)
  je     L14715
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L14715
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L14715
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L14715:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L6454
  mov    %eax,%r12d
  jmp    L21340
  nopl   (%rax)
L30260:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L29889:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L29889
  jmp    L14715
  nopl   0x0(%rax,%rax,1)
L6454:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L15439:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L34717
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L34717
  nopl   (%rax)
L24541:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L24541
  cmp    %r14d,-0x60(%rsp)
  je     L11095
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L11095
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L11095
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L11095:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L10324
  mov    %eax,%r12d
  jmp    L15439
  nopl   (%rax)
L34717:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L27002:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L27002
  jmp    L11095
  nopl   0x0(%rax,%rax,1)
L10324:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L12200:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L35937
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L35937
  nopl   (%rax)
L35061:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L35061
  cmp    %r14d,-0x60(%rsp)
  je     L9514
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L9514
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L9514
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L9514:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L19253
  mov    %eax,%r12d
  jmp    L12200
  nopl   (%rax)
L35937:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L14744:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L14744
  jmp    L9514
  nopl   0x0(%rax,%rax,1)
L19253:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L15584:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L9347
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L9347
  nopl   (%rax)
L19468:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L19468
  cmp    %r14d,-0x60(%rsp)
  je     L23669
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L23669
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L23669
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L23669:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L33778
  mov    %eax,%r12d
  jmp    L15584
  nopl   (%rax)
L9347:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L26984:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L26984
  jmp    L23669
  nopl   0x0(%rax,%rax,1)
L33778:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L26464:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L19151
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L19151
  nopl   (%rax)
L10844:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L10844
  cmp    %r14d,-0x60(%rsp)
  je     L18889
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L18889
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L18889
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L18889:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L22718
  mov    %eax,%r12d
  jmp    L26464
  nopl   (%rax)
L19151:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L4750:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L4750
  jmp    L18889
  nopl   0x0(%rax,%rax,1)
L22718:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L2828:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L39738
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L39738
  nopl   (%rax)
L35312:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L35312
  cmp    %r14d,-0x60(%rsp)
  je     L15344
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L15344
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L15344
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L15344:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L37176
  mov    %eax,%r12d
  jmp    L2828
  nopl   (%rax)
L39738:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L20308:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L20308
  jmp    L15344
  nopl   0x0(%rax,%rax,1)
L37176:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L19524:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L30104
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L30104
  nopl   (%rax)
L16716:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L16716
  cmp    %r14d,-0x60(%rsp)
  je     L38277
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L38277
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L38277
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L38277:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L23066
  mov    %eax,%r12d
  jmp    L19524
  nopl   (%rax)
L30104:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L37522:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L37522
  jmp    L38277
  nopl   0x0(%rax,%rax,1)
L23066:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L1525:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L34240
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L34240
  nopl   (%rax)
L29509:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L29509
  cmp    %r14d,-0x60(%rsp)
  je     L36008
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L36008
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L36008
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L36008:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L8055
  mov    %eax,%r12d
  jmp    L1525
  nopl   (%rax)
L34240:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L17518:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L17518
  jmp    L36008
  nopl   0x0(%rax,%rax,1)
L8055:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L13895:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L7143
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L7143
  nopl   (%rax)
L4592:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L4592
  cmp    %r14d,-0x60(%rsp)
  je     L25749
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L25749
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L25749
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L25749:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L21479
  mov    %eax,%r12d
  jmp    L13895
  nopl   (%rax)
L7143:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L36248:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L36248
  jmp    L25749
  nopl   0x0(%rax,%rax,1)
L21479:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L33791:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L23709
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L23709
  nopl   (%rax)
L10531:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L10531
  cmp    %r14d,-0x60(%rsp)
  je     L8674
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L8674
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L8674
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L8674:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L17160
  mov    %eax,%r12d
  jmp    L33791
  nopl   (%rax)
L23709:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L15361:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L15361
  jmp    L8674
  nopl   0x0(%rax,%rax,1)
L17160:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L36290:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L21467
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L21467
  nopl   (%rax)
L12541:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L12541
  cmp    %r14d,-0x60(%rsp)
  je     L8425
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L8425
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L8425
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L8425:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L17851
  mov    %eax,%r12d
  jmp    L36290
  nopl   (%rax)
L21467:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L35304:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L35304
  jmp    L8425
  nopl   0x0(%rax,%rax,1)
L17851:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L25196:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L12818
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L12818
  nopl   (%rax)
L1265:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L1265
  cmp    %r14d,-0x60(%rsp)
  je     L21103
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L21103
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L21103
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L21103:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L16114
  mov    %eax,%r12d
  jmp    L25196
  nopl   (%rax)
L12818:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L30386:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L30386
  jmp    L21103
  nopl   0x0(%rax,%rax,1)
L16114:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L23611:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L24977
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L24977
  nopl   (%rax)
L23672:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L23672
  cmp    %r14d,-0x60(%rsp)
  je     L29869
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L29869
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L29869
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L29869:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L16549
  mov    %eax,%r12d
  jmp    L23611
  nopl   (%rax)
L24977:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L34004:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L34004
  jmp    L29869
  nopl   0x0(%rax,%rax,1)
L16549:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L3631:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L9594
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L9594
  nopl   (%rax)
L28979:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L28979
  cmp    %r14d,-0x60(%rsp)
  je     L16398
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L16398
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L16398
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L16398:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L9961
  mov    %eax,%r12d
  jmp    L3631
  nopl   (%rax)
L9594:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L29305:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L29305
  jmp    L16398
  nopl   0x0(%rax,%rax,1)
L9961:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L7880:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L5170
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L5170
  nopl   (%rax)
L1561:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L1561
  cmp    %r14d,-0x60(%rsp)
  je     L17847
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L17847
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L17847
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L17847:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L2237
  mov    %eax,%r12d
  jmp    L7880
  nopl   (%rax)
L5170:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L26932:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L26932
  jmp    L17847
  nopl   0x0(%rax,%rax,1)
L2237:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L20447:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L31217
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L31217
  nopl   (%rax)
L26147:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L26147
  cmp    %r14d,-0x60(%rsp)
  je     L29885
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L29885
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L29885
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L29885:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L18042
  mov    %eax,%r12d
  jmp    L20447
  nopl   (%rax)
L31217:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L16109:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L16109
  jmp    L29885
  nopl   0x0(%rax,%rax,1)
L18042:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L7679:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L14585
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L14585
  nopl   (%rax)
L25433:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L25433
  cmp    %r14d,-0x60(%rsp)
  je     L16401
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L16401
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L16401
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L16401:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L39517
  mov    %eax,%r12d
  jmp    L7679
  nopl   (%rax)
L14585:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L27777:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L27777
  jmp    L16401
  nopl   0x0(%rax,%rax,1)
L39517:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L14097:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L22240
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L22240
  nopl   (%rax)
L2019:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L2019
  cmp    %r14d,-0x60(%rsp)
  je     L33483
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L33483
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L33483
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L33483:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L10643
  mov    %eax,%r12d
  jmp    L14097
  nopl   (%rax)
L22240:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L9872:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L9872
  jmp    L33483
  nopl   0x0(%rax,%rax,1)
L10643:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L32919:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L19839
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L19839
  nopl   (%rax)
L12282:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L12282
  cmp    %r14d,-0x60(%rsp)
  je     L18036
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L18036
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L18036
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L18036:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L14517
  mov    %eax,%r12d
  jmp    L32919
  nopl   (%rax)
L19839:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L18486:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L18486
  jmp    L18036
  nopl   0x0(%rax,%rax,1)
L14517:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L10039:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L38979
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L38979
  nopl   (%rax)
L14859:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L14859
  cmp    %r14d,-0x60(%rsp)
  je     L37639
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L37639
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L37639
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L37639:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L3830
  mov    %eax,%r12d
  jmp    L10039
  nopl   (%rax)
L38979:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L16221:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L16221
  jmp    L37639
  nopl   0x0(%rax,%rax,1)
L3830:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L2964:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L25483
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L25483
  nopl   (%rax)
L12691:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L12691
  cmp    %r14d,-0x60(%rsp)
  je     L19257
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L19257
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L19257
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L19257:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L13791
  mov    %eax,%r12d
  jmp    L2964
  nopl   (%rax)
L25483:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L27950:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L27950
  jmp    L19257
  nopl   0x0(%rax,%rax,1)
L13791:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L19427:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L7903
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L7903
  nopl   (%rax)
L36529:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L36529
  cmp    %r14d,-0x60(%rsp)
  je     L4137
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L4137
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L4137
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L4137:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L31497
  mov    %eax,%r12d
  jmp    L19427
  nopl   (%rax)
L7903:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L33242:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L33242
  jmp    L4137
  nopl   0x0(%rax,%rax,1)
L31497:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L38528:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L5102
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L5102
  nopl   (%rax)
L25900:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L25900
  cmp    %r14d,-0x60(%rsp)
  je     L33055
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L33055
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L33055
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L33055:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L11759
  mov    %eax,%r12d
  jmp    L38528
  nopl   (%rax)
L5102:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L10323:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L10323
  jmp    L33055
  nopl   0x0(%rax,%rax,1)
L11759:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L22966:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L15060
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L15060
  nopl   (%rax)
L16316:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L16316
  cmp    %r14d,-0x60(%rsp)
  je     L24627
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L24627
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L24627
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L24627:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L28971
  mov    %eax,%r12d
  jmp    L22966
  nopl   (%rax)
L15060:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L38009:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L38009
  jmp    L24627
  nopl   0x0(%rax,%rax,1)
L28971:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L1898:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L38272
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L38272
  nopl   (%rax)
L39735:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L39735
  cmp    %r14d,-0x60(%rsp)
  je     L5292
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L5292
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L5292
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L5292:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L3805
  mov    %eax,%r12d
  jmp    L1898
  nopl   (%rax)
L38272:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L6326:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L6326
  jmp    L5292
  nopl   0x0(%rax,%rax,1)
L3805:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L858:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L38392
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L38392
  nopl   (%rax)
L20764:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L20764
  cmp    %r14d,-0x60(%rsp)
  je     L11686
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L11686
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L11686
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L11686:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L10676
  mov    %eax,%r12d
  jmp    L858
  nopl   (%rax)
L38392:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L14013:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L14013
  jmp    L11686
  nopl   0x0(%rax,%rax,1)
L10676:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L15496:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L21917
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L21917
  nopl   (%rax)
L35441:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L35441
  cmp    %r14d,-0x60(%rsp)
  je     L8046
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L8046
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L8046
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L8046:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L17425
  mov    %eax,%r12d
  jmp    L15496
  nopl   (%rax)
L21917:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L20802:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L20802
  jmp    L8046
  nopl   0x0(%rax,%rax,1)
L17425:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L26299:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L33865
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L33865
  nopl   (%rax)
L24978:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L24978
  cmp    %r14d,-0x60(%rsp)
  je     L9529
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L9529
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L9529
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L9529:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L29348
  mov    %eax,%r12d
  jmp    L26299
  nopl   (%rax)
L33865:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L19975:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L19975
  jmp    L9529
  nopl   0x0(%rax,%rax,1)
L29348:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L18506:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L1145
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L1145
  nopl   (%rax)
L14391:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L14391
  cmp    %r14d,-0x60(%rsp)
  je     L6049
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L6049
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L6049
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L6049:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L2146
  mov    %eax,%r12d
  jmp    L18506
  nopl   (%rax)
L1145:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L33086:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L33086
  jmp    L6049
  nopl   0x0(%rax,%rax,1)
L2146:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L10278:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L5126
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L5126
  nopl   (%rax)
L33131:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L33131
  cmp    %r14d,-0x60(%rsp)
  je     L22438
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L22438
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L22438
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L22438:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L15187
  mov    %eax,%r12d
  jmp    L10278
  nopl   (%rax)
L5126:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L26414:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L26414
  jmp    L22438
  nopl   0x0(%rax,%rax,1)
L15187:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L9489:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L2603
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L2603
  nopl   (%rax)
L22520:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L22520
  cmp    %r14d,-0x60(%rsp)
  je     L22575
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L22575
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L22575
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L22575:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L7803
  mov    %eax,%r12d
  jmp    L9489
  nopl   (%rax)
L2603:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L21111:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L21111
  jmp    L22575
  nopl   0x0(%rax,%rax,1)
L7803:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L29087:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L19633
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L19633
  nopl   (%rax)
L12101:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L12101
  cmp    %r14d,-0x60(%rsp)
  je     L37370
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L37370
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L37370
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L37370:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L14485
  mov    %eax,%r12d
  jmp    L29087
  nopl   (%rax)
L19633:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L26911:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L26911
  jmp    L37370
  nopl   0x0(%rax,%rax,1)
L14485:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L3725:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L27972
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L27972
  nopl   (%rax)
L35868:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L35868
  cmp    %r14d,-0x60(%rsp)
  je     L14662
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L14662
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L14662
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L14662:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L14498
  mov    %eax,%r12d
  jmp    L3725
  nopl   (%rax)
L27972:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L16007:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L16007
  jmp    L14662
  nopl   0x0(%rax,%rax,1)
L14498:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L13476:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L24299
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L24299
  nopl   (%rax)
L15277:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L15277
  cmp    %r14d,-0x60(%rsp)
  je     L18241
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L18241
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L18241
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L18241:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L39891
  mov    %eax,%r12d
  jmp    L13476
  nopl   (%rax)
L24299:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L29574:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L29574
  jmp    L18241
  nopl   0x0(%rax,%rax,1)
L39891:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L30183:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L27896
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L27896
  nopl   (%rax)
L11512:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L11512
  cmp    %r14d,-0x60(%rsp)
  je     L22630
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L22630
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L22630
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L22630:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L15039
  mov    %eax,%r12d
  jmp    L30183
  nopl   (%rax)
L27896:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L516:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L516
  jmp    L22630
  nopl   0x0(%rax,%rax,1)
L15039:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L38288:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L18093
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L18093
  nopl   (%rax)
L12398:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L12398
  cmp    %r14d,-0x60(%rsp)
  je     L16834
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L16834
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L16834
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L16834:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L2861
  mov    %eax,%r12d
  jmp    L38288
  nopl   (%rax)
L18093:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L5005:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L5005
  jmp    L16834
  nopl   0x0(%rax,%rax,1)
L2861:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L10269:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L28615
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L28615
  nopl   (%rax)
L21949:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L21949
  cmp    %r14d,-0x60(%rsp)
  je     L26357
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L26357
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L26357
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L26357:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L13297
  mov    %eax,%r12d
  jmp    L10269
  nopl   (%rax)
L28615:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L2955:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L2955
  jmp    L26357
  nopl   0x0(%rax,%rax,1)
L13297:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L18709:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L20233
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L20233
  nopl   (%rax)
L39085:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L39085
  cmp    %r14d,-0x60(%rsp)
  je     L20415
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L20415
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L20415
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L20415:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L38665
  mov    %eax,%r12d
  jmp    L18709
  nopl   (%rax)
L20233:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L14103:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L14103
  jmp    L20415
  nopl   0x0(%rax,%rax,1)
L38665:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L34509:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L29549
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L29549
  nopl   (%rax)
L21841:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L21841
  cmp    %r14d,-0x60(%rsp)
  je     L5973
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L5973
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L5973
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L5973:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L12836
  mov    %eax,%r12d
  jmp    L34509
  nopl   (%rax)
L29549:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L15119:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L15119
  jmp    L5973
  nopl   0x0(%rax,%rax,1)
L12836:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L17321:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L7078
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L7078
  nopl   (%rax)
L36612:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L36612
  cmp    %r14d,-0x60(%rsp)
  je     L30432
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L30432
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L30432
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L30432:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L15948
  mov    %eax,%r12d
  jmp    L17321
  nopl   (%rax)
L7078:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L22726:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L22726
  jmp    L30432
  nopl   0x0(%rax,%rax,1)
L15948:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L5560:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L927
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L927
  nopl   (%rax)
L12901:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L12901
  cmp    %r14d,-0x60(%rsp)
  je     L5085
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L5085
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L5085
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L5085:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L13020
  mov    %eax,%r12d
  jmp    L5560
  nopl   (%rax)
L927:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L24610:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L24610
  jmp    L5085
  nopl   0x0(%rax,%rax,1)
L13020:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L38564:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L3050
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L3050
  nopl   (%rax)
L39928:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L39928
  cmp    %r14d,-0x60(%rsp)
  je     L31039
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L31039
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L31039
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L31039:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L2167
  mov    %eax,%r12d
  jmp    L38564
  nopl   (%rax)
L3050:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L15810:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L15810
  jmp    L31039
  nopl   0x0(%rax,%rax,1)
L2167:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L28531:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L33064
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L33064
  nopl   (%rax)
L5306:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L5306
  cmp    %r14d,-0x60(%rsp)
  je     L15006
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L15006
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L15006
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L15006:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L10730
  mov    %eax,%r12d
  jmp    L28531
  nopl   (%rax)
L33064:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L27895:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L27895
  jmp    L15006
  nopl   0x0(%rax,%rax,1)
L10730:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L30593:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L38607
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L38607
  nopl   (%rax)
L6474:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L6474
  cmp    %r14d,-0x60(%rsp)
  je     L27668
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L27668
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L27668
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L27668:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L20924
  mov    %eax,%r12d
  jmp    L30593
  nopl   (%rax)
L38607:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L39475:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L39475
  jmp    L27668
  nopl   0x0(%rax,%rax,1)
L20924:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L35150:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L11909
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L11909
  nopl   (%rax)
L37756:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L37756
  cmp    %r14d,-0x60(%rsp)
  je     L12039
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L12039
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L12039
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L12039:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L35234
  mov    %eax,%r12d
  jmp    L35150
  nopl   (%rax)
L11909:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L33478:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L33478
  jmp    L12039
  nopl   0x0(%rax,%rax,1)
L35234:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L29986:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L14749
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L14749
  nopl   (%rax)
L13027:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L13027
  cmp    %r14d,-0x60(%rsp)
  je     L39709
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L39709
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L39709
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L39709:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L15636
  mov    %eax,%r12d
  jmp    L29986
  nopl   (%rax)
L14749:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L13788:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L13788
  jmp    L39709
  nopl   0x0(%rax,%rax,1)
L15636:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L7602:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L32757
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L32757
  nopl   (%rax)
L13131:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L13131
  cmp    %r14d,-0x60(%rsp)
  je     L23126
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L23126
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L23126
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L23126:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L16369
  mov    %eax,%r12d
  jmp    L7602
  nopl   (%rax)
L32757:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L39211:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L39211
  jmp    L23126
  nopl   0x0(%rax,%rax,1)
L16369:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L27755:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L21781
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L21781
  nopl   (%rax)
L13968:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L13968
  cmp    %r14d,-0x60(%rsp)
  je     L8408
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L8408
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L8408
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L8408:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L26967
  mov    %eax,%r12d
  jmp    L27755
  nopl   (%rax)
L21781:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L1872:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L1872
  jmp    L8408
  nopl   0x0(%rax,%rax,1)
L26967:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L26409:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L15995
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L15995
  nopl   (%rax)
L19872:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L19872
  cmp    %r14d,-0x60(%rsp)
  je     L1292
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L1292
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L1292
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L1292:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L26791
  mov    %eax,%r12d
  jmp    L26409
  nopl   (%rax)
L15995:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L2290:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L2290
  jmp    L1292
  nopl   0x0(%rax,%rax,1)
L26791:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L28877:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L37121
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L37121
  nopl   (%rax)
L37528:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L37528
  cmp    %r14d,-0x60(%rsp)
  je     L4577
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L4577
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L4577
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L4577:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L15283
  mov    %eax,%r12d
  jmp    L28877
  nopl   (%rax)
L37121:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L39323:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L39323
  jmp    L4577
  nopl   0x0(%rax,%rax,1)
L15283:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L25259:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L16959
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L16959
  nopl   (%rax)
L13549:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L13549
  cmp    %r14d,-0x60(%rsp)
  je     L2551
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L2551
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L2551
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L2551:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L17549
  mov    %eax,%r12d
  jmp    L25259
  nopl   (%rax)
L16959:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L37515:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L37515
  jmp    L2551
  nopl   0x0(%rax,%rax,1)
L17549:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L1025:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L6387
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L6387
  nopl   (%rax)
L18170:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L18170
  cmp    %r14d,-0x60(%rsp)
  je     L37943
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L37943
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L37943
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L37943:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L21517
  mov    %eax,%r12d
  jmp    L1025
  nopl   (%rax)
L6387:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L26046:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L26046
  jmp    L37943
  nopl   0x0(%rax,%rax,1)
L21517:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L24749:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L14909
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L14909
  nopl   (%rax)
L34507:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L34507
  cmp    %r14d,-0x60(%rsp)
  je     L15245
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L15245
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L15245
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L15245:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L30974
  mov    %eax,%r12d
  jmp    L24749
  nopl   (%rax)
L14909:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L20115:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L20115
  jmp    L15245
  nopl   0x0(%rax,%rax,1)
L30974:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L21749:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L7076
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L7076
  nopl   (%rax)
L6673:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L6673
  cmp    %r14d,-0x60(%rsp)
  je     L419
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L419
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L419
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L419:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L25892
  mov    %eax,%r12d
  jmp    L21749
  nopl   (%rax)
L7076:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L13235:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L13235
  jmp    L419
  nopl   0x0(%rax,%rax,1)
L25892:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L6313:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L19511
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L19511
  nopl   (%rax)
L36899:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L36899
  cmp    %r14d,-0x60(%rsp)
  je     L39820
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L39820
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L39820
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L39820:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L13863
  mov    %eax,%r12d
  jmp    L6313
  nopl   (%rax)
L19511:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L15655:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L15655
  jmp    L39820
  nopl   0x0(%rax,%rax,1)
L13863:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L34210:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L8800
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L8800
  nopl   (%rax)
L24889:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L24889
  cmp    %r14d,-0x60(%rsp)
  je     L3903
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L3903
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L3903
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L3903:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L35344
  mov    %eax,%r12d
  jmp    L34210
  nopl   (%rax)
L8800:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L5631:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L5631
  jmp    L3903
  nopl   0x0(%rax,%rax,1)
L35344:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L22609:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L30555
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L30555
  nopl   (%rax)
L22472:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L22472
  cmp    %r14d,-0x60(%rsp)
  je     L30553
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L30553
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L30553
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L30553:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L23771
  mov    %eax,%r12d
  jmp    L22609
  nopl   (%rax)
L30555:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L28463:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L28463
  jmp    L30553
  nopl   0x0(%rax,%rax,1)
L23771:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L28683:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L7082
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L7082
  nopl   (%rax)
L36044:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L36044
  cmp    %r14d,-0x60(%rsp)
  je     L1201
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L1201
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L1201
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L1201:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L4376
  mov    %eax,%r12d
  jmp    L28683
  nopl   (%rax)
L7082:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L29452:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L29452
  jmp    L1201
  nopl   0x0(%rax,%rax,1)
L4376:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L21916:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L40001
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L40001
  nopl   (%rax)
L35899:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L35899
  cmp    %r14d,-0x60(%rsp)
  je     L22950
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L22950
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L22950
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L22950:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L5890
  mov    %eax,%r12d
  jmp    L21916
  nopl   (%rax)
L40001:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L25178:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L25178
  jmp    L22950
  nopl   0x0(%rax,%rax,1)
L5890:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L18950:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L36881
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L36881
  nopl   (%rax)
L36075:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L36075
  cmp    %r14d,-0x60(%rsp)
  je     L16155
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L16155
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L16155
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L16155:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L21658
  mov    %eax,%r12d
  jmp    L18950
  nopl   (%rax)
L36881:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L35834:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L35834
  jmp    L16155
  nopl   0x0(%rax,%rax,1)
L21658:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L15445:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L10654
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L10654
  nopl   (%rax)
L1363:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L1363
  cmp    %r14d,-0x60(%rsp)
  je     L21795
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L21795
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L21795
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L21795:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L22593
  mov    %eax,%r12d
  jmp    L15445
  nopl   (%rax)
L10654:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L11325:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L11325
  jmp    L21795
  nopl   0x0(%rax,%rax,1)
L22593:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L5002:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L38532
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L38532
  nopl   (%rax)
L29461:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L29461
  cmp    %r14d,-0x60(%rsp)
  je     L13794
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L13794
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L13794
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L13794:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L19210
  mov    %eax,%r12d
  jmp    L5002
  nopl   (%rax)
L38532:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L4706:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L4706
  jmp    L13794
  nopl   0x0(%rax,%rax,1)
L19210:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L28177:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L27877
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L27877
  nopl   (%rax)
L7972:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L7972
  cmp    %r14d,-0x60(%rsp)
  je     L18545
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L18545
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L18545
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L18545:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L13823
  mov    %eax,%r12d
  jmp    L28177
  nopl   (%rax)
L27877:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L39974:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L39974
  jmp    L18545
  nopl   0x0(%rax,%rax,1)
L13823:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L16924:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L30379
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L30379
  nopl   (%rax)
L12562:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L12562
  cmp    %r14d,-0x60(%rsp)
  je     L24051
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L24051
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L24051
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L24051:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L29596
  mov    %eax,%r12d
  jmp    L16924
  nopl   (%rax)
L30379:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L1041:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L1041
  jmp    L24051
  nopl   0x0(%rax,%rax,1)
L29596:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L7225:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L30751
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L30751
  nopl   (%rax)
L15971:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L15971
  cmp    %r14d,-0x60(%rsp)
  je     L11787
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L11787
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L11787
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L11787:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L22077
  mov    %eax,%r12d
  jmp    L7225
  nopl   (%rax)
L30751:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L3596:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L3596
  jmp    L11787
  nopl   0x0(%rax,%rax,1)
L22077:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L11913:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L36364
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L36364
  nopl   (%rax)
L34896:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L34896
  cmp    %r14d,-0x60(%rsp)
  je     L9737
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L9737
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L9737
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L9737:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L22862
  mov    %eax,%r12d
  jmp    L11913
  nopl   (%rax)
L36364:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L1047:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L1047
  jmp    L9737
  nopl   0x0(%rax,%rax,1)
L22862:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L5888:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L1656
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L1656
  nopl   (%rax)
L21169:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L21169
  cmp    %r14d,-0x60(%rsp)
  je     L36873
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L36873
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L36873
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L36873:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L20948
  mov    %eax,%r12d
  jmp    L5888
  nopl   (%rax)
L1656:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L25566:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L25566
  jmp    L36873
  nopl   0x0(%rax,%rax,1)
L20948:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L16679:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L3825
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L3825
  nopl   (%rax)
L2464:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L2464
  cmp    %r14d,-0x60(%rsp)
  je     L20821
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L20821
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L20821
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L20821:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L34575
  mov    %eax,%r12d
  jmp    L16679
  nopl   (%rax)
L3825:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L32302:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L32302
  jmp    L20821
  nopl   0x0(%rax,%rax,1)
L34575:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L9457:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L37366
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L37366
  nopl   (%rax)
L8850:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L8850
  cmp    %r14d,-0x60(%rsp)
  je     L29105
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L29105
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L29105
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L29105:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L29694
  mov    %eax,%r12d
  jmp    L9457
  nopl   (%rax)
L37366:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L18620:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L18620
  jmp    L29105
  nopl   0x0(%rax,%rax,1)
L29694:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L22868:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L3363
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L3363
  nopl   (%rax)
L6638:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L6638
  cmp    %r14d,-0x60(%rsp)
  je     L28879
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L28879
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L28879
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L28879:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L12161
  mov    %eax,%r12d
  jmp    L22868
  nopl   (%rax)
L3363:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L28768:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L28768
  jmp    L28879
  nopl   0x0(%rax,%rax,1)
L12161:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L1224:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L5744
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L5744
  nopl   (%rax)
L38368:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L38368
  cmp    %r14d,-0x60(%rsp)
  je     L35653
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L35653
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L35653
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L35653:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L10848
  mov    %eax,%r12d
  jmp    L1224
  nopl   (%rax)
L5744:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L31745:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L31745
  jmp    L35653
  nopl   0x0(%rax,%rax,1)
L10848:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L26613:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L35614
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L35614
  nopl   (%rax)
L26965:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L26965
  cmp    %r14d,-0x60(%rsp)
  je     L179
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L179
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L179
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L179:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L28556
  mov    %eax,%r12d
  jmp    L26613
  nopl   (%rax)
L35614:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L14225:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L14225
  jmp    L179
  nopl   0x0(%rax,%rax,1)
L28556:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L36553:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L12016
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L12016
  nopl   (%rax)
L34521:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L34521
  cmp    %r14d,-0x60(%rsp)
  je     L33232
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L33232
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L33232
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L33232:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L39535
  mov    %eax,%r12d
  jmp    L36553
  nopl   (%rax)
L12016:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L18326:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L18326
  jmp    L33232
  nopl   0x0(%rax,%rax,1)
L39535:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L11448:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L11115
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L11115
  nopl   (%rax)
L23614:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L23614
  cmp    %r14d,-0x60(%rsp)
  je     L17634
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L17634
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L17634
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L17634:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L35398
  mov    %eax,%r12d
  jmp    L11448
  nopl   (%rax)
L11115:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L919:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L919
  jmp    L17634
  nopl   0x0(%rax,%rax,1)
L35398:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L24047:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L23613
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L23613
  nopl   (%rax)
L17396:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L17396
  cmp    %r14d,-0x60(%rsp)
  je     L7197
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L7197
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L7197
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L7197:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L20969
  mov    %eax,%r12d
  jmp    L24047
  nopl   (%rax)
L23613:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L36941:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L36941
  jmp    L7197
  nopl   0x0(%rax,%rax,1)
L20969:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L58:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L24708
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L24708
  nopl   (%rax)
L9731:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L9731
  cmp    %r14d,-0x60(%rsp)
  je     L16815
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L16815
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L16815
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L16815:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L16121
  mov    %eax,%r12d
  jmp    L58
  nopl   (%rax)
L24708:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L28503:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L28503
  jmp    L16815
  nopl   0x0(%rax,%rax,1)
L16121:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L7043:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L12080
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L12080
  nopl   (%rax)
L8687:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L8687
  cmp    %r14d,-0x60(%rsp)
  je     L7484
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L7484
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L7484
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L7484:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L14854
  mov    %eax,%r12d
  jmp    L7043
  nopl   (%rax)
L12080:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L14896:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L14896
  jmp    L7484
  nopl   0x0(%rax,%rax,1)
L14854:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L9323:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L1695
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L1695
  nopl   (%rax)
L32972:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L32972
  cmp    %r14d,-0x60(%rsp)
  je     L13355
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L13355
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L13355
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L13355:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L32907
  mov    %eax,%r12d
  jmp    L9323
  nopl   (%rax)
L1695:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L20435:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L20435
  jmp    L13355
  nopl   0x0(%rax,%rax,1)
L32907:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L28394:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L26718
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L26718
  nopl   (%rax)
L10846:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L10846
  cmp    %r14d,-0x60(%rsp)
  je     L34996
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L34996
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L34996
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L34996:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L12081
  mov    %eax,%r12d
  jmp    L28394
  nopl   (%rax)
L26718:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L33135:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L33135
  jmp    L34996
  nopl   0x0(%rax,%rax,1)
L12081:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L11203:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L21242
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L21242
  nopl   (%rax)
L80:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L80
  cmp    %r14d,-0x60(%rsp)
  je     L4960
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L4960
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L4960
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L4960:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L26801
  mov    %eax,%r12d
  jmp    L11203
  nopl   (%rax)
L21242:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L8329:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L8329
  jmp    L4960
  nopl   0x0(%rax,%rax,1)
L26801:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L31383:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L4244
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L4244
  nopl   (%rax)
L16392:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L16392
  cmp    %r14d,-0x60(%rsp)
  je     L14907
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L14907
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L14907
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L14907:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L32132
  mov    %eax,%r12d
  jmp    L31383
  nopl   (%rax)
L4244:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L27521:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L27521
  jmp    L14907
  nopl   0x0(%rax,%rax,1)
L32132:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L18804:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L36812
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L36812
  nopl   (%rax)
L27819:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L27819
  cmp    %r14d,-0x60(%rsp)
  je     L29323
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L29323
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L29323
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L29323:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L27698
  mov    %eax,%r12d
  jmp    L18804
  nopl   (%rax)
L36812:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L37918:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L37918
  jmp    L29323
  nopl   0x0(%rax,%rax,1)
L27698:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L3456:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L4414
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L4414
  nopl   (%rax)
L29466:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L29466
  cmp    %r14d,-0x60(%rsp)
  je     L13653
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L13653
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L13653
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L13653:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L3326
  mov    %eax,%r12d
  jmp    L3456
  nopl   (%rax)
L4414:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L35557:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L35557
  jmp    L13653
  nopl   0x0(%rax,%rax,1)
L3326:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L19234:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L22169
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L22169
  nopl   (%rax)
L28976:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L28976
  cmp    %r14d,-0x60(%rsp)
  je     L8036
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L8036
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L8036
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L8036:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L36221
  mov    %eax,%r12d
  jmp    L19234
  nopl   (%rax)
L22169:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L1158:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L1158
  jmp    L8036
  nopl   0x0(%rax,%rax,1)
L36221:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L34992:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L35852
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L35852
  nopl   (%rax)
L15831:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L15831
  cmp    %r14d,-0x60(%rsp)
  je     L1583
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L1583
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L1583
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L1583:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L4644
  mov    %eax,%r12d
  jmp    L34992
  nopl   (%rax)
L35852:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L5898:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L5898
  jmp    L1583
  nopl   0x0(%rax,%rax,1)
L4644:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L23304:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L16752
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L16752
  nopl   (%rax)
L26832:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L26832
  cmp    %r14d,-0x60(%rsp)
  je     L32816
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L32816
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L32816
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L32816:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L23920
  mov    %eax,%r12d
  jmp    L23304
  nopl   (%rax)
L16752:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L4191:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L4191
  jmp    L32816
  nopl   0x0(%rax,%rax,1)
L23920:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L23711:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L35202
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L35202
  nopl   (%rax)
L28783:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L28783
  cmp    %r14d,-0x60(%rsp)
  je     L21874
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L21874
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L21874
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L21874:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L19119
  mov    %eax,%r12d
  jmp    L23711
  nopl   (%rax)
L35202:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L7888:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L7888
  jmp    L21874
  nopl   0x0(%rax,%rax,1)
L19119:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L13442:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L39605
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L39605
  nopl   (%rax)
L24906:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L24906
  cmp    %r14d,-0x60(%rsp)
  je     L17655
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L17655
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L17655
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L17655:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L28038
  mov    %eax,%r12d
  jmp    L13442
  nopl   (%rax)
L39605:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L32211:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L32211
  jmp    L17655
  nopl   0x0(%rax,%rax,1)
L28038:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L19255:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L6726
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L6726
  nopl   (%rax)
L24321:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L24321
  cmp    %r14d,-0x60(%rsp)
  je     L1318
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L1318
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L1318
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L1318:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L12370
  mov    %eax,%r12d
  jmp    L19255
  nopl   (%rax)
L6726:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L14553:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L14553
  jmp    L1318
  nopl   0x0(%rax,%rax,1)
L12370:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L22808:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L26690
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L26690
  nopl   (%rax)
L1209:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L1209
  cmp    %r14d,-0x60(%rsp)
  je     L19430
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L19430
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L19430
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L19430:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L8070
  mov    %eax,%r12d
  jmp    L22808
  nopl   (%rax)
L26690:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L22258:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L22258
  jmp    L19430
  nopl   0x0(%rax,%rax,1)
L8070:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L29422:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L11729
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L11729
  nopl   (%rax)
L18496:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L18496
  cmp    %r14d,-0x60(%rsp)
  je     L20961
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L20961
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L20961
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L20961:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L27726
  mov    %eax,%r12d
  jmp    L29422
  nopl   (%rax)
L11729:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L38730:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L38730
  jmp    L20961
  nopl   0x0(%rax,%rax,1)
L27726:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L16063:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L12684
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L12684
  nopl   (%rax)
L8253:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L8253
  cmp    %r14d,-0x60(%rsp)
  je     L12856
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L12856
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L12856
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L12856:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L29108
  mov    %eax,%r12d
  jmp    L16063
  nopl   (%rax)
L12684:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L37991:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L37991
  jmp    L12856
  nopl   0x0(%rax,%rax,1)
L29108:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L20338:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L15709
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L15709
  nopl   (%rax)
L9561:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L9561
  cmp    %r14d,-0x60(%rsp)
  je     L25567
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L25567
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L25567
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L25567:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L27870
  mov    %eax,%r12d
  jmp    L20338
  nopl   (%rax)
L15709:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L5661:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L5661
  jmp    L25567
  nopl   0x0(%rax,%rax,1)
L27870:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L20857:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L15322
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L15322
  nopl   (%rax)
L38370:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L38370
  cmp    %r14d,-0x60(%rsp)
  je     L6293
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L6293
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L6293
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L6293:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L33545
  mov    %eax,%r12d
  jmp    L20857
  nopl   (%rax)
L15322:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L16071:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L16071
  jmp    L6293
  nopl   0x0(%rax,%rax,1)
L33545:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L31286:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L2526
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L2526
  nopl   (%rax)
L25176:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L25176
  cmp    %r14d,-0x60(%rsp)
  je     L23942
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L23942
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L23942
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L23942:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L2918
  mov    %eax,%r12d
  jmp    L31286
  nopl   (%rax)
L2526:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L5252:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L5252
  jmp    L23942
  nopl   0x0(%rax,%rax,1)
L2918:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L27315:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L27670
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L27670
  nopl   (%rax)
L32771:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L32771
  cmp    %r14d,-0x60(%rsp)
  je     L38129
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L38129
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L38129
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L38129:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L14197
  mov    %eax,%r12d
  jmp    L27315
  nopl   (%rax)
L27670:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L19545:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L19545
  jmp    L38129
  nopl   0x0(%rax,%rax,1)
L14197:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L34585:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L20406
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L20406
  nopl   (%rax)
L25826:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L25826
  cmp    %r14d,-0x60(%rsp)
  je     L8424
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L8424
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L8424
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L8424:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L12322
  mov    %eax,%r12d
  jmp    L34585
  nopl   (%rax)
L20406:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L6301:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L6301
  jmp    L8424
  nopl   0x0(%rax,%rax,1)
L12322:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L35985:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L7831
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L7831
  nopl   (%rax)
L9234:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L9234
  cmp    %r14d,-0x60(%rsp)
  je     L31585
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L31585
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L31585
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L31585:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L13819
  mov    %eax,%r12d
  jmp    L35985
  nopl   (%rax)
L7831:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L19608:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L19608
  jmp    L31585
  nopl   0x0(%rax,%rax,1)
L13819:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L6278:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L23811
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L23811
  nopl   (%rax)
L553:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L553
  cmp    %r14d,-0x60(%rsp)
  je     L12336
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L12336
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L12336
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L12336:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L15113
  mov    %eax,%r12d
  jmp    L6278
  nopl   (%rax)
L23811:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L11349:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L11349
  jmp    L12336
  nopl   0x0(%rax,%rax,1)
L15113:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L29249:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L34226
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L34226
  nopl   (%rax)
L26401:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L26401
  cmp    %r14d,-0x60(%rsp)
  je     L38644
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L38644
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L38644
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L38644:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L24840
  mov    %eax,%r12d
  jmp    L29249
  nopl   (%rax)
L34226:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L16388:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L16388
  jmp    L38644
  nopl   0x0(%rax,%rax,1)
L24840:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L12926:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L36201
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L36201
  nopl   (%rax)
L39435:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L39435
  cmp    %r14d,-0x60(%rsp)
  je     L3891
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L3891
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L3891
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L3891:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L39544
  mov    %eax,%r12d
  jmp    L12926
  nopl   (%rax)
L36201:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L26648:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L26648
  jmp    L3891
  nopl   0x0(%rax,%rax,1)
L39544:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L38839:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L18307
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L18307
  nopl   (%rax)
L21938:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L21938
  cmp    %r14d,-0x60(%rsp)
  je     L5687
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L5687
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L5687
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L5687:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L20217
  mov    %eax,%r12d
  jmp    L38839
  nopl   (%rax)
L18307:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L36905:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L36905
  jmp    L5687
  nopl   0x0(%rax,%rax,1)
L20217:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L12234:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L17176
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L17176
  nopl   (%rax)
L13181:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L13181
  cmp    %r14d,-0x60(%rsp)
  je     L30979
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L30979
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L30979
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L30979:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L22994
  mov    %eax,%r12d
  jmp    L12234
  nopl   (%rax)
L17176:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L12554:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L12554
  jmp    L30979
  nopl   0x0(%rax,%rax,1)
L22994:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L10014:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L6228
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L6228
  nopl   (%rax)
L690:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L690
  cmp    %r14d,-0x60(%rsp)
  je     L18084
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L18084
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L18084
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L18084:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L28580
  mov    %eax,%r12d
  jmp    L10014
  nopl   (%rax)
L6228:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L27234:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L27234
  jmp    L18084
  nopl   0x0(%rax,%rax,1)
L28580:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L27653:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L20708
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L20708
  nopl   (%rax)
L2858:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L2858
  cmp    %r14d,-0x60(%rsp)
  je     L39778
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L39778
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L39778
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L39778:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L31521
  mov    %eax,%r12d
  jmp    L27653
  nopl   (%rax)
L20708:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L3698:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L3698
  jmp    L39778
  nopl   0x0(%rax,%rax,1)
L31521:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L31259:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L30079
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L30079
  nopl   (%rax)
L35513:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L35513
  cmp    %r14d,-0x60(%rsp)
  je     L15547
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L15547
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L15547
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L15547:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L32389
  mov    %eax,%r12d
  jmp    L31259
  nopl   (%rax)
L30079:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L7488:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L7488
  jmp    L15547
  nopl   0x0(%rax,%rax,1)
L32389:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L19124:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L17726
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L17726
  nopl   (%rax)
L30832:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L30832
  cmp    %r14d,-0x60(%rsp)
  je     L33714
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L33714
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L33714
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L33714:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L1038
  mov    %eax,%r12d
  jmp    L19124
  nopl   (%rax)
L17726:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L40003:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L40003
  jmp    L33714
  nopl   0x0(%rax,%rax,1)
L1038:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L21118:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L742
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L742
  nopl   (%rax)
L18902:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L18902
  cmp    %r14d,-0x60(%rsp)
  je     L35997
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L35997
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L35997
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L35997:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L33296
  mov    %eax,%r12d
  jmp    L21118
  nopl   (%rax)
L742:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L26365:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L26365
  jmp    L35997
  nopl   0x0(%rax,%rax,1)
L33296:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L17348:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L32320
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L32320
  nopl   (%rax)
L4764:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L4764
  cmp    %r14d,-0x60(%rsp)
  je     L16515
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L16515
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L16515
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L16515:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L4749
  mov    %eax,%r12d
  jmp    L17348
  nopl   (%rax)
L32320:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L9704:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L9704
  jmp    L16515
  nopl   0x0(%rax,%rax,1)
L4749:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L30028:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L34317
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L34317
  nopl   (%rax)
L23904:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L23904
  cmp    %r14d,-0x60(%rsp)
  je     L7793
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L7793
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L7793
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L7793:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L8276
  mov    %eax,%r12d
  jmp    L30028
  nopl   (%rax)
L34317:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L21356:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L21356
  jmp    L7793
  nopl   0x0(%rax,%rax,1)
L8276:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L38993:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L5205
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L5205
  nopl   (%rax)
L31447:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L31447
  cmp    %r14d,-0x60(%rsp)
  je     L8703
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L8703
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L8703
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L8703:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L36929
  mov    %eax,%r12d
  jmp    L38993
  nopl   (%rax)
L5205:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L32416:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L32416
  jmp    L8703
  nopl   0x0(%rax,%rax,1)
L36929:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L10201:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L11087
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L11087
  nopl   (%rax)
L12511:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L12511
  cmp    %r14d,-0x60(%rsp)
  je     L13264
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L13264
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L13264
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L13264:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L35800
  mov    %eax,%r12d
  jmp    L10201
  nopl   (%rax)
L11087:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L15808:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L15808
  jmp    L13264
  nopl   0x0(%rax,%rax,1)
L35800:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L8456:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L7855
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L7855
  nopl   (%rax)
L23769:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L23769
  cmp    %r14d,-0x60(%rsp)
  je     L6666
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L6666
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L6666
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L6666:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L1659
  mov    %eax,%r12d
  jmp    L8456
  nopl   (%rax)
L7855:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L39229:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L39229
  jmp    L6666
  nopl   0x0(%rax,%rax,1)
L1659:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L35316:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L39053
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L39053
  nopl   (%rax)
L18916:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L18916
  cmp    %r14d,-0x60(%rsp)
  je     L25510
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L25510
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L25510
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L25510:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L22949
  mov    %eax,%r12d
  jmp    L35316
  nopl   (%rax)
L39053:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L11016:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L11016
  jmp    L25510
  nopl   0x0(%rax,%rax,1)
L22949:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L940:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L20990
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L20990
  nopl   (%rax)
L22479:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L22479
  cmp    %r14d,-0x60(%rsp)
  je     L1039
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L1039
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L1039
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L1039:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L25874
  mov    %eax,%r12d
  jmp    L940
  nopl   (%rax)
L20990:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L38989:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L38989
  jmp    L1039
  nopl   0x0(%rax,%rax,1)
L25874:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L13219:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L39988
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L39988
  nopl   (%rax)
L33309:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L33309
  cmp    %r14d,-0x60(%rsp)
  je     L21357
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L21357
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L21357
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L21357:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L35309
  mov    %eax,%r12d
  jmp    L13219
  nopl   (%rax)
L39988:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L25136:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L25136
  jmp    L21357
  nopl   0x0(%rax,%rax,1)
L35309:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L29500:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L16879
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L16879
  nopl   (%rax)
L15014:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L15014
  cmp    %r14d,-0x60(%rsp)
  je     L3848
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L3848
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L3848
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L3848:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L25748
  mov    %eax,%r12d
  jmp    L29500
  nopl   (%rax)
L16879:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L15767:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L15767
  jmp    L3848
  nopl   0x0(%rax,%rax,1)
L25748:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L23351:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L33793
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L33793
  nopl   (%rax)
L33463:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L33463
  cmp    %r14d,-0x60(%rsp)
  je     L19497
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L19497
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L19497
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L19497:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L24867
  mov    %eax,%r12d
  jmp    L23351
  nopl   (%rax)
L33793:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L23998:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L23998
  jmp    L19497
  nopl   0x0(%rax,%rax,1)
L24867:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L2073:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L34137
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L34137
  nopl   (%rax)
L23714:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L23714
  cmp    %r14d,-0x60(%rsp)
  je     L3715
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L3715
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L3715
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L3715:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L25935
  mov    %eax,%r12d
  jmp    L2073
  nopl   (%rax)
L34137:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L36051:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L36051
  jmp    L3715
  nopl   0x0(%rax,%rax,1)
L25935:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L18008:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L26105
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L26105
  nopl   (%rax)
L6078:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L6078
  cmp    %r14d,-0x60(%rsp)
  je     L17045
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L17045
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L17045
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L17045:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L18975
  mov    %eax,%r12d
  jmp    L18008
  nopl   (%rax)
L26105:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L17220:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L17220
  jmp    L17045
  nopl   0x0(%rax,%rax,1)
L18975:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L18401:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L20919
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L20919
  nopl   (%rax)
L34558:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L34558
  cmp    %r14d,-0x60(%rsp)
  je     L28405
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L28405
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L28405
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L28405:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L8889
  mov    %eax,%r12d
  jmp    L18401
  nopl   (%rax)
L20919:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L1411:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L1411
  jmp    L28405
  nopl   0x0(%rax,%rax,1)
L8889:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L25239:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L1238
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L1238
  nopl   (%rax)
L10682:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L10682
  cmp    %r14d,-0x60(%rsp)
  je     L6952
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L6952
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L6952
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L6952:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L28620
  mov    %eax,%r12d
  jmp    L25239
  nopl   (%rax)
L1238:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L38663:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L38663
  jmp    L6952
  nopl   0x0(%rax,%rax,1)
L28620:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L34935:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L26997
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L26997
  nopl   (%rax)
L23187:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L23187
  cmp    %r14d,-0x60(%rsp)
  je     L20684
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L20684
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L20684
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L20684:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L20095
  mov    %eax,%r12d
  jmp    L34935
  nopl   (%rax)
L26997:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L4059:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L4059
  jmp    L20684
  nopl   0x0(%rax,%rax,1)
L20095:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L11183:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L31561
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L31561
  nopl   (%rax)
L29603:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L29603
  cmp    %r14d,-0x60(%rsp)
  je     L4427
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L4427
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L4427
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L4427:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L8446
  mov    %eax,%r12d
  jmp    L11183
  nopl   (%rax)
L31561:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L22835:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L22835
  jmp    L4427
  nopl   0x0(%rax,%rax,1)
L8446:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L8891:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L18838
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L18838
  nopl   (%rax)
L9305:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L9305
  cmp    %r14d,-0x60(%rsp)
  je     L35010
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L35010
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L35010
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L35010:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L187
  mov    %eax,%r12d
  jmp    L8891
  nopl   (%rax)
L18838:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L34355:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L34355
  jmp    L35010
  nopl   0x0(%rax,%rax,1)
L187:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L29415:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L17212
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L17212
  nopl   (%rax)
L39733:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L39733
  cmp    %r14d,-0x60(%rsp)
  je     L19869
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L19869
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L19869
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L19869:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L16651
  mov    %eax,%r12d
  jmp    L29415
  nopl   (%rax)
L17212:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L13787:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L13787
  jmp    L19869
  nopl   0x0(%rax,%rax,1)
L16651:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L18468:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L31786
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L31786
  nopl   (%rax)
L14474:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L14474
  cmp    %r14d,-0x60(%rsp)
  je     L13342
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L13342
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L13342
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L13342:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L15469
  mov    %eax,%r12d
  jmp    L18468
  nopl   (%rax)
L31786:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L1678:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L1678
  jmp    L13342
  nopl   0x0(%rax,%rax,1)
L15469:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L7083:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L33663
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L33663
  nopl   (%rax)
L16861:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L16861
  cmp    %r14d,-0x60(%rsp)
  je     L35644
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L35644
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L35644
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L35644:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L8857
  mov    %eax,%r12d
  jmp    L7083
  nopl   (%rax)
L33663:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L26830:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L26830
  jmp    L35644
  nopl   0x0(%rax,%rax,1)
L8857:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L24120:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L3320
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L3320
  nopl   (%rax)
L35137:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L35137
  cmp    %r14d,-0x60(%rsp)
  je     L25947
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L25947
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L25947
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L25947:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L6572
  mov    %eax,%r12d
  jmp    L24120
  nopl   (%rax)
L3320:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L32785:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L32785
  jmp    L25947
  nopl   0x0(%rax,%rax,1)
L6572:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L23559:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L8619
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L8619
  nopl   (%rax)
L24716:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L24716
  cmp    %r14d,-0x60(%rsp)
  je     L19740
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L19740
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L19740
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L19740:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L7187
  mov    %eax,%r12d
  jmp    L23559
  nopl   (%rax)
L8619:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L1449:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L1449
  jmp    L19740
  nopl   0x0(%rax,%rax,1)
L7187:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L18801:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L7302
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L7302
  nopl   (%rax)
L22384:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L22384
  cmp    %r14d,-0x60(%rsp)
  je     L13048
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L13048
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L13048
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L13048:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L2915
  mov    %eax,%r12d
  jmp    L18801
  nopl   (%rax)
L7302:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L19964:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L19964
  jmp    L13048
  nopl   0x0(%rax,%rax,1)
L2915:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L19047:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L9231
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L9231
  nopl   (%rax)
L25230:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L25230
  cmp    %r14d,-0x60(%rsp)
  je     L24370
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L24370
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L24370
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L24370:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L17970
  mov    %eax,%r12d
  jmp    L19047
  nopl   (%rax)
L9231:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L1486:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L1486
  jmp    L24370
  nopl   0x0(%rax,%rax,1)
L17970:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L10373:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L39346
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L39346
  nopl   (%rax)
L23671:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L23671
  cmp    %r14d,-0x60(%rsp)
  je     L10128
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L10128
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L10128
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L10128:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L17401
  mov    %eax,%r12d
  jmp    L10373
  nopl   (%rax)
L39346:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L26352:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L26352
  jmp    L10128
  nopl   0x0(%rax,%rax,1)
L17401:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L33351:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L37406
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L37406
  nopl   (%rax)
L745:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L745
  cmp    %r14d,-0x60(%rsp)
  je     L8773
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L8773
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L8773
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L8773:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L32275
  mov    %eax,%r12d
  jmp    L33351
  nopl   (%rax)
L37406:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L22284:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L22284
  jmp    L8773
  nopl   0x0(%rax,%rax,1)
L32275:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L22555:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L12521
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L12521
  nopl   (%rax)
L32376:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L32376
  cmp    %r14d,-0x60(%rsp)
  je     L32794
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L32794
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L32794
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L32794:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L5059
  mov    %eax,%r12d
  jmp    L22555
  nopl   (%rax)
L12521:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L24206:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L24206
  jmp    L32794
  nopl   0x0(%rax,%rax,1)
L5059:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L22497:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L16091
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L16091
  nopl   (%rax)
L9891:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L9891
  cmp    %r14d,-0x60(%rsp)
  je     L666
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L666
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L666
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L666:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L6093
  mov    %eax,%r12d
  jmp    L22497
  nopl   (%rax)
L16091:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L500:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L500
  jmp    L666
  nopl   0x0(%rax,%rax,1)
L6093:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L8646:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L27606
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L27606
  nopl   (%rax)
L34496:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L34496
  cmp    %r14d,-0x60(%rsp)
  je     L33761
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L33761
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L33761
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L33761:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L32832
  mov    %eax,%r12d
  jmp    L8646
  nopl   (%rax)
L27606:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L1150:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L1150
  jmp    L33761
  nopl   0x0(%rax,%rax,1)
L32832:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L13361:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L29362
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L29362
  nopl   (%rax)
L75:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L75
  cmp    %r14d,-0x60(%rsp)
  je     L27395
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L27395
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L27395
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L27395:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L33932
  mov    %eax,%r12d
  jmp    L13361
  nopl   (%rax)
L29362:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L23542:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L23542
  jmp    L27395
  nopl   0x0(%rax,%rax,1)
L33932:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L30138:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L27184
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L27184
  nopl   (%rax)
L24442:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L24442
  cmp    %r14d,-0x60(%rsp)
  je     L6741
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L6741
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L6741
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L6741:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L26056
  mov    %eax,%r12d
  jmp    L30138
  nopl   (%rax)
L27184:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L8563:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L8563
  jmp    L6741
  nopl   0x0(%rax,%rax,1)
L26056:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L33048:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L35066
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L35066
  nopl   (%rax)
L2604:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L2604
  cmp    %r14d,-0x60(%rsp)
  je     L1515
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L1515
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L1515
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L1515:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L22424
  mov    %eax,%r12d
  jmp    L33048
  nopl   (%rax)
L35066:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L36701:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L36701
  jmp    L1515
  nopl   0x0(%rax,%rax,1)
L22424:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L2614:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L24270
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L24270
  nopl   (%rax)
L6915:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L6915
  cmp    %r14d,-0x60(%rsp)
  je     L11227
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L11227
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L11227
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L11227:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L36950
  mov    %eax,%r12d
  jmp    L2614
  nopl   (%rax)
L24270:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L12559:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L12559
  jmp    L11227
  nopl   0x0(%rax,%rax,1)
L36950:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L3795:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L29075
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L29075
  nopl   (%rax)
L8482:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L8482
  cmp    %r14d,-0x60(%rsp)
  je     L34046
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L34046
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L34046
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L34046:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L18151
  mov    %eax,%r12d
  jmp    L3795
  nopl   (%rax)
L29075:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L31546:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L31546
  jmp    L34046
  nopl   0x0(%rax,%rax,1)
L18151:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L28008:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L33218
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L33218
  nopl   (%rax)
L10175:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L10175
  cmp    %r14d,-0x60(%rsp)
  je     L1831
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L1831
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L1831
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L1831:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L32390
  mov    %eax,%r12d
  jmp    L28008
  nopl   (%rax)
L33218:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L19829:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L19829
  jmp    L1831
  nopl   0x0(%rax,%rax,1)
L32390:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L27679:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L12149
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L12149
  nopl   (%rax)
L24403:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L24403
  cmp    %r14d,-0x60(%rsp)
  je     L38576
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L38576
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L38576
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L38576:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L27629
  mov    %eax,%r12d
  jmp    L27679
  nopl   (%rax)
L12149:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L26164:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L26164
  jmp    L38576
  nopl   0x0(%rax,%rax,1)
L27629:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L19232:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L5329
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L5329
  nopl   (%rax)
L22389:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L22389
  cmp    %r14d,-0x60(%rsp)
  je     L31346
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L31346
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L31346
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L31346:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L36058
  mov    %eax,%r12d
  jmp    L19232
  nopl   (%rax)
L5329:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L23993:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L23993
  jmp    L31346
  nopl   0x0(%rax,%rax,1)
L36058:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L14938:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L37844
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L37844
  nopl   (%rax)
L39293:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L39293
  cmp    %r14d,-0x60(%rsp)
  je     L18005
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L18005
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L18005
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L18005:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L34130
  mov    %eax,%r12d
  jmp    L14938
  nopl   (%rax)
L37844:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L4344:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L4344
  jmp    L18005
  nopl   0x0(%rax,%rax,1)
L34130:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L27485:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L9394
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L9394
  nopl   (%rax)
L29826:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L29826
  cmp    %r14d,-0x60(%rsp)
  je     L22536
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L22536
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L22536
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L22536:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L17081
  mov    %eax,%r12d
  jmp    L27485
  nopl   (%rax)
L9394:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L7066:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L7066
  jmp    L22536
  nopl   0x0(%rax,%rax,1)
L17081:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L21469:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L26812
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L26812
  nopl   (%rax)
L34554:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L34554
  cmp    %r14d,-0x60(%rsp)
  je     L11762
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L11762
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L11762
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L11762:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L12820
  mov    %eax,%r12d
  jmp    L21469
  nopl   (%rax)
L26812:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L36815:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L36815
  jmp    L11762
  nopl   0x0(%rax,%rax,1)
L12820:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L23013:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L24166
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L24166
  nopl   (%rax)
L12799:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L12799
  cmp    %r14d,-0x60(%rsp)
  je     L967
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L967
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L967
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L967:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L5253
  mov    %eax,%r12d
  jmp    L23013
  nopl   (%rax)
L24166:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L6472:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L6472
  jmp    L967
  nopl   0x0(%rax,%rax,1)
L5253:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L9041:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L22948
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L22948
  nopl   (%rax)
L17901:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L17901
  cmp    %r14d,-0x60(%rsp)
  je     L4133
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L4133
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L4133
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L4133:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L23838
  mov    %eax,%r12d
  jmp    L9041
  nopl   (%rax)
L22948:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L25797:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L25797
  jmp    L4133
  nopl   0x0(%rax,%rax,1)
L23838:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L39879:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L8904
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L8904
  nopl   (%rax)
L6273:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L6273
  cmp    %r14d,-0x60(%rsp)
  je     L26035
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L26035
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L26035
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L26035:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L37584
  mov    %eax,%r12d
  jmp    L39879
  nopl   (%rax)
L8904:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L15712:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L15712
  jmp    L26035
  nopl   0x0(%rax,%rax,1)
L37584:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L38356:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L22754
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L22754
  nopl   (%rax)
L18599:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L18599
  cmp    %r14d,-0x60(%rsp)
  je     L11823
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L11823
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L11823
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L11823:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L33365
  mov    %eax,%r12d
  jmp    L38356
  nopl   (%rax)
L22754:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L7606:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L7606
  jmp    L11823
  nopl   0x0(%rax,%rax,1)
L33365:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L17010:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L18979
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L18979
  nopl   (%rax)
L13942:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L13942
  cmp    %r14d,-0x60(%rsp)
  je     L35162
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L35162
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L35162
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L35162:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L26656
  mov    %eax,%r12d
  jmp    L17010
  nopl   (%rax)
L18979:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L38909:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L38909
  jmp    L35162
  nopl   0x0(%rax,%rax,1)
L26656:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L4255:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L35788
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L35788
  nopl   (%rax)
L4575:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L4575
  cmp    %r14d,-0x60(%rsp)
  je     L4452
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L4452
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L4452
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L4452:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L17546
  mov    %eax,%r12d
  jmp    L4255
  nopl   (%rax)
L35788:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L15449:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L15449
  jmp    L4452
  nopl   0x0(%rax,%rax,1)
L17546:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L27061:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L14767
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L14767
  nopl   (%rax)
L10539:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L10539
  cmp    %r14d,-0x60(%rsp)
  je     L29751
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L29751
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L29751
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L29751:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L19342
  mov    %eax,%r12d
  jmp    L27061
  nopl   (%rax)
L14767:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L18448:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L18448
  jmp    L29751
  nopl   0x0(%rax,%rax,1)
L19342:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L542:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L25958
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L25958
  nopl   (%rax)
L37299:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L37299
  cmp    %r14d,-0x60(%rsp)
  je     L32835
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L32835
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L32835
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L32835:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L14308
  mov    %eax,%r12d
  jmp    L542
  nopl   (%rax)
L25958:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L38700:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L38700
  jmp    L32835
  nopl   0x0(%rax,%rax,1)
L14308:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L33357:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L12990
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L12990
  nopl   (%rax)
L9879:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L9879
  cmp    %r14d,-0x60(%rsp)
  je     L26366
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L26366
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L26366
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L26366:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L1527
  mov    %eax,%r12d
  jmp    L33357
  nopl   (%rax)
L12990:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L13295:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L13295
  jmp    L26366
  nopl   0x0(%rax,%rax,1)
L1527:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L4552:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L15454
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L15454
  nopl   (%rax)
L16294:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L16294
  cmp    %r14d,-0x60(%rsp)
  je     L4270
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L4270
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L4270
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L4270:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L38329
  mov    %eax,%r12d
  jmp    L4552
  nopl   (%rax)
L15454:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L34857:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L34857
  jmp    L4270
  nopl   0x0(%rax,%rax,1)
L38329:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L27501:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L1513
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L1513
  nopl   (%rax)
L34548:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L34548
  cmp    %r14d,-0x60(%rsp)
  je     L3131
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L3131
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L3131
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L3131:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L14977
  mov    %eax,%r12d
  jmp    L27501
  nopl   (%rax)
L1513:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L3191:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L3191
  jmp    L3131
  nopl   0x0(%rax,%rax,1)
L14977:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L7013:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L29274
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L29274
  nopl   (%rax)
L16805:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L16805
  cmp    %r14d,-0x60(%rsp)
  je     L26411
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L26411
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L26411
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L26411:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L35729
  mov    %eax,%r12d
  jmp    L7013
  nopl   (%rax)
L29274:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L15976:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L15976
  jmp    L26411
  nopl   0x0(%rax,%rax,1)
L35729:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L11391:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L23725
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L23725
  nopl   (%rax)
L30506:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L30506
  cmp    %r14d,-0x60(%rsp)
  je     L36437
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L36437
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L36437
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L36437:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L3942
  mov    %eax,%r12d
  jmp    L11391
  nopl   (%rax)
L23725:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L28627:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L28627
  jmp    L36437
  nopl   0x0(%rax,%rax,1)
L3942:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L39087:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L1810
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L1810
  nopl   (%rax)
L15478:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L15478
  cmp    %r14d,-0x60(%rsp)
  je     L36467
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L36467
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L36467
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L36467:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L17920
  mov    %eax,%r12d
  jmp    L39087
  nopl   (%rax)
L1810:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L39412:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L39412
  jmp    L36467
  nopl   0x0(%rax,%rax,1)
L17920:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L7234:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L33816
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L33816
  nopl   (%rax)
L32952:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L32952
  cmp    %r14d,-0x60(%rsp)
  je     L8663
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L8663
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L8663
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L8663:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L16785
  mov    %eax,%r12d
  jmp    L7234
  nopl   (%rax)
L33816:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L23934:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L23934
  jmp    L8663
  nopl   0x0(%rax,%rax,1)
L16785:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L17579:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L11957
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L11957
  nopl   (%rax)
L17025:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L17025
  cmp    %r14d,-0x60(%rsp)
  je     L13742
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L13742
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L13742
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L13742:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L11716
  mov    %eax,%r12d
  jmp    L17579
  nopl   (%rax)
L11957:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L25804:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L25804
  jmp    L13742
  nopl   0x0(%rax,%rax,1)
L11716:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L8478:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L34631
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L34631
  nopl   (%rax)
L10337:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L10337
  cmp    %r14d,-0x60(%rsp)
  je     L36427
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L36427
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L36427
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L36427:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L10424
  mov    %eax,%r12d
  jmp    L8478
  nopl   (%rax)
L34631:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L20007:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L20007
  jmp    L36427
  nopl   0x0(%rax,%rax,1)
L10424:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L7795:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L35746
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L35746
  nopl   (%rax)
L16375:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L16375
  cmp    %r14d,-0x60(%rsp)
  je     L700
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L700
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L700
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L700:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L10783
  mov    %eax,%r12d
  jmp    L7795
  nopl   (%rax)
L35746:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L6675:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L6675
  jmp    L700
  nopl   0x0(%rax,%rax,1)
L10783:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L2509:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L2030
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L2030
  nopl   (%rax)
L11789:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L11789
  cmp    %r14d,-0x60(%rsp)
  je     L19449
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L19449
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L19449
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L19449:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L24185
  mov    %eax,%r12d
  jmp    L2509
  nopl   (%rax)
L2030:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L4153:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L4153
  jmp    L19449
  nopl   0x0(%rax,%rax,1)
L24185:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L4387:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L36434
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L36434
  nopl   (%rax)
L34939:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L34939
  cmp    %r14d,-0x60(%rsp)
  je     L33170
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L33170
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L33170
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L33170:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L22657
  mov    %eax,%r12d
  jmp    L4387
  nopl   (%rax)
L36434:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L24861:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L24861
  jmp    L33170
  nopl   0x0(%rax,%rax,1)
L22657:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L5684:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L34069
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L34069
  nopl   (%rax)
L20094:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L20094
  cmp    %r14d,-0x60(%rsp)
  je     L19947
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L19947
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L19947
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L19947:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L14994
  mov    %eax,%r12d
  jmp    L5684
  nopl   (%rax)
L34069:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L15835:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L15835
  jmp    L19947
  nopl   0x0(%rax,%rax,1)
L14994:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L32099:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L38010
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L38010
  nopl   (%rax)
L7245:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L7245
  cmp    %r14d,-0x60(%rsp)
  je     L35751
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L35751
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L35751
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L35751:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L28337
  mov    %eax,%r12d
  jmp    L32099
  nopl   (%rax)
L38010:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L30710:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L30710
  jmp    L35751
  nopl   0x0(%rax,%rax,1)
L28337:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L15495:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L24324
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L24324
  nopl   (%rax)
L6066:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L6066
  cmp    %r14d,-0x60(%rsp)
  je     L37798
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L37798
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L37798
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L37798:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L17600
  mov    %eax,%r12d
  jmp    L15495
  nopl   (%rax)
L24324:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L28865:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L28865
  jmp    L37798
  nopl   0x0(%rax,%rax,1)
L17600:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L22870:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rsi
  lea    -0x4(%rbx),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L20689
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L20689
  nopl   (%rax)
L30219:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L30219
  cmp    %r14d,-0x60(%rsp)
  je     L28191
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L28191
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L28191
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L28191:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L15099
  mov    %eax,%r12d
  jmp    L22870
  nopl   (%rax)
L20689:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L17149:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L17149
  jmp    L28191
  nopl   0x0(%rax,%rax,1)
L15099:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L4040:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L6178
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L6178
  nopl   (%rax)
L37448:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L37448
  cmp    %r14d,-0x60(%rsp)
  je     L22804
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L22804
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L22804
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L22804:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L20584
  mov    %eax,%r12d
  jmp    L4040
  nopl   (%rax)
L6178:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L10030:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L10030
  jmp    L22804
  nopl   0x0(%rax,%rax,1)
L20584:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L3155:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L4138
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L4138
  nopl   (%rax)
L26204:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L26204
  cmp    %r14d,-0x60(%rsp)
  je     L33645
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L33645
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L33645
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L33645:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L4171
  mov    %eax,%r12d
  jmp    L3155
  nopl   (%rax)
L4138:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L31393:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L31393
  jmp    L33645
  nopl   0x0(%rax,%rax,1)
L4171:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L29255:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L28682
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L28682
  nopl   (%rax)
L30305:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L30305
  cmp    %r14d,-0x60(%rsp)
  je     L7256
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L7256
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L7256
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L7256:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L20152
  mov    %eax,%r12d
  jmp    L29255
  nopl   (%rax)
L28682:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L30733:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L30733
  jmp    L7256
  nopl   0x0(%rax,%rax,1)
L20152:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L30697:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L13649
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L13649
  nopl   (%rax)
L2002:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L2002
  cmp    %r14d,-0x60(%rsp)
  je     L7746
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L7746
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L7746
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L7746:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L23624
  mov    %eax,%r12d
  jmp    L30697
  nopl   (%rax)
L13649:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L29609:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L29609
  jmp    L7746
  nopl   0x0(%rax,%rax,1)
L23624:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L35077:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rsi
  lea    -0x4(%rbx),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L9602
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L9602
  nopl   (%rax)
L12240:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L12240
  cmp    %r14d,-0x60(%rsp)
  je     L4284
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L4284
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L4284
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L4284:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L32727
  mov    %eax,%r12d
  jmp    L35077
  nopl   (%rax)
L9602:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L39569:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L39569
  jmp    L4284
  nopl   0x0(%rax,%rax,1)
L32727:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L23924:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L17959
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L17959
  nopl   (%rax)
L11496:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L11496
  cmp    %r14d,-0x60(%rsp)
  je     L33739
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L33739
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L33739
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L33739:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L12672
  mov    %eax,%r12d
  jmp    L23924
  nopl   (%rax)
L17959:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L22217:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L22217
  jmp    L33739
  nopl   0x0(%rax,%rax,1)
L12672:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L17547:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L183
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L183
  nopl   (%rax)
L36414:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L36414
  cmp    %r14d,-0x60(%rsp)
  je     L5334
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L5334
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L5334
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L5334:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L249
  mov    %eax,%r12d
  jmp    L17547
  nopl   (%rax)
L183:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L3207:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L3207
  jmp    L5334
  nopl   0x0(%rax,%rax,1)
L249:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L24870:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L10545
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L10545
  nopl   (%rax)
L22229:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L22229
  cmp    %r14d,-0x60(%rsp)
  je     L1721
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L1721
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L1721
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L1721:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L5667
  mov    %eax,%r12d
  jmp    L24870
  nopl   (%rax)
L10545:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L27076:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L27076
  jmp    L1721
  nopl   0x0(%rax,%rax,1)
L5667:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L16877:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L704
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L704
  nopl   (%rax)
L30481:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L30481
  cmp    %r14d,-0x60(%rsp)
  je     L32759
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L32759
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L32759
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L32759:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L32566
  mov    %eax,%r12d
  jmp    L16877
  nopl   (%rax)
L704:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L28320:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L28320
  jmp    L32759
  nopl   0x0(%rax,%rax,1)
L32566:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L2719:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rsi
  lea    -0x4(%rbx),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L31721
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L31721
  nopl   (%rax)
L20817:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L20817
  cmp    %r14d,-0x60(%rsp)
  je     L27499
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L27499
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L27499
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L27499:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L36533
  mov    %eax,%r12d
  jmp    L2719
  nopl   (%rax)
L31721:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L7966:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L7966
  jmp    L27499
  nopl   0x0(%rax,%rax,1)
L36533:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L1394:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L25074
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L25074
  nopl   (%rax)
L15859:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L15859
  cmp    %r14d,-0x60(%rsp)
  je     L5554
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L5554
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L5554
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L5554:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L24675
  mov    %eax,%r12d
  jmp    L1394
  nopl   (%rax)
L25074:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L20865:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L20865
  jmp    L5554
  nopl   0x0(%rax,%rax,1)
L24675:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L18175:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L11797
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L11797
  nopl   (%rax)
L30396:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L30396
  cmp    %r14d,-0x60(%rsp)
  je     L35893
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L35893
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L35893
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L35893:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L23366
  mov    %eax,%r12d
  jmp    L18175
  nopl   (%rax)
L11797:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L21215:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L21215
  jmp    L35893
  nopl   0x0(%rax,%rax,1)
L23366:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L10464:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L6953
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L6953
  nopl   (%rax)
L28055:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L28055
  cmp    %r14d,-0x60(%rsp)
  je     L15279
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L15279
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L15279
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L15279:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L34038
  mov    %eax,%r12d
  jmp    L10464
  nopl   (%rax)
L6953:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L15367:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L15367
  jmp    L15279
  nopl   0x0(%rax,%rax,1)
L34038:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L37921:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L30793
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L30793
  nopl   (%rax)
L37281:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L37281
  cmp    %r14d,-0x60(%rsp)
  je     L5781
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L5781
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L5781
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L5781:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L27232
  mov    %eax,%r12d
  jmp    L37921
  nopl   (%rax)
L30793:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L37000:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L37000
  jmp    L5781
  nopl   0x0(%rax,%rax,1)
L27232:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L35183:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rsi
  lea    -0x4(%rbx),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L19843
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L19843
  nopl   (%rax)
L16157:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L16157
  cmp    %r14d,-0x60(%rsp)
  je     L16934
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L16934
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L16934
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L16934:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L28696
  mov    %eax,%r12d
  jmp    L35183
  nopl   (%rax)
L19843:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L30501:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L30501
  jmp    L16934
  nopl   0x0(%rax,%rax,1)
L28696:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L12301:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L22595
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L22595
  nopl   (%rax)
L5222:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L5222
  cmp    %r14d,-0x60(%rsp)
  je     L13578
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L13578
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L13578
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L13578:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L36804
  mov    %eax,%r12d
  jmp    L12301
  nopl   (%rax)
L22595:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L4703:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L4703
  jmp    L13578
  nopl   0x0(%rax,%rax,1)
L36804:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L5837:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L15781
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L15781
  nopl   (%rax)
L15350:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L15350
  cmp    %r14d,-0x60(%rsp)
  je     L17410
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L17410
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L17410
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L17410:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L20531
  mov    %eax,%r12d
  jmp    L5837
  nopl   (%rax)
L15781:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L11843:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L11843
  jmp    L17410
  nopl   0x0(%rax,%rax,1)
L20531:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L25832:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L3354
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L3354
  nopl   (%rax)
L23183:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L23183
  cmp    %r14d,-0x60(%rsp)
  je     L1766
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L1766
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L1766
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L1766:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L23849
  mov    %eax,%r12d
  jmp    L25832
  nopl   (%rax)
L3354:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L1229:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L1229
  jmp    L1766
  nopl   0x0(%rax,%rax,1)
L23849:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L8497:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L16381
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L16381
  nopl   (%rax)
L7309:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L7309
  cmp    %r14d,-0x60(%rsp)
  je     L21589
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L21589
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L21589
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L21589:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L27579
  mov    %eax,%r12d
  jmp    L8497
  nopl   (%rax)
L16381:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L35945:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L35945
  jmp    L21589
  nopl   0x0(%rax,%rax,1)
L27579:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L4907:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rsi
  lea    -0x4(%rbx),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L15852
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L15852
  nopl   (%rax)
L17543:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L17543
  cmp    %r14d,-0x60(%rsp)
  je     L20756
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L20756
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L20756
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L20756:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L38675
  mov    %eax,%r12d
  jmp    L4907
  nopl   (%rax)
L15852:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L35073:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L35073
  jmp    L20756
  nopl   0x0(%rax,%rax,1)
L38675:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L38045:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L15264
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L15264
  nopl   (%rax)
L33891:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L33891
  cmp    %r14d,-0x60(%rsp)
  je     L28151
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L28151
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L28151
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L28151:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L22953
  mov    %eax,%r12d
  jmp    L38045
  nopl   (%rax)
L15264:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L24586:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L24586
  jmp    L28151
  nopl   0x0(%rax,%rax,1)
L22953:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L7334:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L31143
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L31143
  nopl   (%rax)
L13753:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L13753
  cmp    %r14d,-0x60(%rsp)
  je     L31241
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L31241
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L31241
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L31241:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L18418
  mov    %eax,%r12d
  jmp    L7334
  nopl   (%rax)
L31143:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L27015:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L27015
  jmp    L31241
  nopl   0x0(%rax,%rax,1)
L18418:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L4222:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L38510
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L38510
  nopl   (%rax)
L8393:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L8393
  cmp    %r14d,-0x60(%rsp)
  je     L3881
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L3881
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L3881
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L3881:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L21481
  mov    %eax,%r12d
  jmp    L4222
  nopl   (%rax)
L38510:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L8763:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L8763
  jmp    L3881
  nopl   0x0(%rax,%rax,1)
L21481:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L27355:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L5782
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L5782
  nopl   (%rax)
L14926:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L14926
  cmp    %r14d,-0x60(%rsp)
  je     L34488
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L34488
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L34488
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L34488:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L21820
  mov    %eax,%r12d
  jmp    L27355
  nopl   (%rax)
L5782:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L25075:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L25075
  jmp    L34488
  nopl   0x0(%rax,%rax,1)
L21820:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L20753:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rsi
  lea    -0x4(%rbx),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L8660
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L8660
  nopl   (%rax)
L22539:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L22539
  cmp    %r14d,-0x60(%rsp)
  je     L38988
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L38988
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L38988
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L38988:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L14285
  mov    %eax,%r12d
  jmp    L20753
  nopl   (%rax)
L8660:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L20046:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L20046
  jmp    L38988
  nopl   0x0(%rax,%rax,1)
L14285:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L32367:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L635
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L635
  nopl   (%rax)
L29459:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L29459
  cmp    %r14d,-0x60(%rsp)
  je     L3359
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L3359
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L3359
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L3359:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L14420
  mov    %eax,%r12d
  jmp    L32367
  nopl   (%rax)
L635:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L5499:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L5499
  jmp    L3359
  nopl   0x0(%rax,%rax,1)
L14420:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L31301:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L7329
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L7329
  nopl   (%rax)
L10023:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L10023
  cmp    %r14d,-0x60(%rsp)
  je     L37572
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L37572
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L37572
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L37572:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L35021
  mov    %eax,%r12d
  jmp    L31301
  nopl   (%rax)
L7329:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L29169:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L29169
  jmp    L37572
  nopl   0x0(%rax,%rax,1)
L35021:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L1615:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L8623
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L8623
  nopl   (%rax)
L5586:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L5586
  cmp    %r14d,-0x60(%rsp)
  je     L22785
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L22785
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L22785
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L22785:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L4948
  mov    %eax,%r12d
  jmp    L1615
  nopl   (%rax)
L8623:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L7843:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L7843
  jmp    L22785
  nopl   0x0(%rax,%rax,1)
L4948:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L12512:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L19890
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L19890
  nopl   (%rax)
L22313:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L22313
  cmp    %r14d,-0x60(%rsp)
  je     L37015
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L37015
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L37015
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L37015:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L31118
  mov    %eax,%r12d
  jmp    L12512
  nopl   (%rax)
L19890:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L23422:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L23422
  jmp    L37015
  nopl   0x0(%rax,%rax,1)
L31118:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L34420:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rsi
  lea    -0x4(%rbx),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L29392
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L29392
  nopl   (%rax)
L7513:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L7513
  cmp    %r14d,-0x60(%rsp)
  je     L31807
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L31807
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L31807
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L31807:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L32070
  mov    %eax,%r12d
  jmp    L34420
  nopl   (%rax)
L29392:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L14927:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L14927
  jmp    L31807
  nopl   0x0(%rax,%rax,1)
L32070:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L1876:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L21179
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L21179
  nopl   (%rax)
L12940:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L12940
  cmp    %r14d,-0x60(%rsp)
  je     L17441
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L17441
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L17441
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L17441:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L18153
  mov    %eax,%r12d
  jmp    L1876
  nopl   (%rax)
L21179:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L22140:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L22140
  jmp    L17441
  nopl   0x0(%rax,%rax,1)
L18153:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L26011:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L13426
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L13426
  nopl   (%rax)
L3390:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L3390
  cmp    %r14d,-0x60(%rsp)
  je     L35901
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L35901
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L35901
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L35901:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L6220
  mov    %eax,%r12d
  jmp    L26011
  nopl   (%rax)
L13426:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L28732:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L28732
  jmp    L35901
  nopl   0x0(%rax,%rax,1)
L6220:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L16667:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L18208
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L18208
  nopl   (%rax)
L6219:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L6219
  cmp    %r14d,-0x60(%rsp)
  je     L1848
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L1848
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L1848
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L1848:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L6440
  mov    %eax,%r12d
  jmp    L16667
  nopl   (%rax)
L18208:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L8572:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L8572
  jmp    L1848
  nopl   0x0(%rax,%rax,1)
L6440:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L31464:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L32352
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L32352
  nopl   (%rax)
L18397:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L18397
  cmp    %r14d,-0x60(%rsp)
  je     L15200
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L15200
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L15200
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L15200:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L3147
  mov    %eax,%r12d
  jmp    L31464
  nopl   (%rax)
L32352:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L34472:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L34472
  jmp    L15200
  nopl   0x0(%rax,%rax,1)
L3147:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L14914:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rsi
  lea    -0x4(%rbx),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L21300
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L21300
  nopl   (%rax)
L26730:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L26730
  cmp    %r14d,-0x60(%rsp)
  je     L5659
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L5659
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L5659
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L5659:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L12011
  mov    %eax,%r12d
  jmp    L14914
  nopl   (%rax)
L21300:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L7639:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L7639
  jmp    L5659
  nopl   0x0(%rax,%rax,1)
L12011:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L24783:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L37828
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L37828
  nopl   (%rax)
L26509:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L26509
  cmp    %r14d,-0x60(%rsp)
  je     L5602
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L5602
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L5602
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L5602:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L5110
  mov    %eax,%r12d
  jmp    L24783
  nopl   (%rax)
L37828:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L19056:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L19056
  jmp    L5602
  nopl   0x0(%rax,%rax,1)
L5110:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L2832:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L10766
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L10766
  nopl   (%rax)
L35286:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L35286
  cmp    %r14d,-0x60(%rsp)
  je     L36179
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L36179
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L36179
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L36179:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L14350
  mov    %eax,%r12d
  jmp    L2832
  nopl   (%rax)
L10766:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L9152:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L9152
  jmp    L36179
  nopl   0x0(%rax,%rax,1)
L14350:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L25673:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L17369
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L17369
  nopl   (%rax)
L25229:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L25229
  cmp    %r14d,-0x60(%rsp)
  je     L35208
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L35208
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L35208
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L35208:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L7529
  mov    %eax,%r12d
  jmp    L25673
  nopl   (%rax)
L17369:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L39954:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L39954
  jmp    L35208
  nopl   0x0(%rax,%rax,1)
L7529:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L5724:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L28523
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L28523
  nopl   (%rax)
L14016:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L14016
  cmp    %r14d,-0x60(%rsp)
  je     L29411
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L29411
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L29411
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L29411:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L35515
  mov    %eax,%r12d
  jmp    L5724
  nopl   (%rax)
L28523:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L29741:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L29741
  jmp    L29411
  nopl   0x0(%rax,%rax,1)
L35515:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L25675:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rsi
  lea    -0x4(%rbx),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L34663
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L34663
  nopl   (%rax)
L170:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L170
  cmp    %r14d,-0x60(%rsp)
  je     L8883
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L8883
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L8883
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L8883:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L24820
  mov    %eax,%r12d
  jmp    L25675
  nopl   (%rax)
L34663:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L3843:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L3843
  jmp    L8883
  nopl   0x0(%rax,%rax,1)
L24820:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L39017:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L2194
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L2194
  nopl   (%rax)
L3743:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L3743
  cmp    %r14d,-0x60(%rsp)
  je     L26377
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L26377
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L26377
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L26377:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L14128
  mov    %eax,%r12d
  jmp    L39017
  nopl   (%rax)
L2194:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L33382:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L33382
  jmp    L26377
  nopl   0x0(%rax,%rax,1)
L14128:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L14992:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L24873
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L24873
  nopl   (%rax)
L23801:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L23801
  cmp    %r14d,-0x60(%rsp)
  je     L32868
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L32868
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L32868
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L32868:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L1879
  mov    %eax,%r12d
  jmp    L14992
  nopl   (%rax)
L24873:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L7877:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L7877
  jmp    L32868
  nopl   0x0(%rax,%rax,1)
L1879:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L30415:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L39539
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L39539
  nopl   (%rax)
L22882:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L22882
  cmp    %r14d,-0x60(%rsp)
  je     L5980
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L5980
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L5980
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L5980:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L574
  mov    %eax,%r12d
  jmp    L30415
  nopl   (%rax)
L39539:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L14237:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L14237
  jmp    L5980
  nopl   0x0(%rax,%rax,1)
L574:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L19140:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L38404
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L38404
  nopl   (%rax)
L3602:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L3602
  cmp    %r14d,-0x60(%rsp)
  je     L21398
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L21398
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L21398
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L21398:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L25394
  mov    %eax,%r12d
  jmp    L19140
  nopl   (%rax)
L38404:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L27258:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L27258
  jmp    L21398
  nopl   0x0(%rax,%rax,1)
L25394:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L3115:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rsi
  lea    -0x4(%rbx),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L25953
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L25953
  nopl   (%rax)
L15949:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L15949
  cmp    %r14d,-0x60(%rsp)
  je     L11392
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L11392
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L11392
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L11392:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L7981
  mov    %eax,%r12d
  jmp    L3115
  nopl   (%rax)
L25953:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L28730:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L28730
  jmp    L11392
  nopl   0x0(%rax,%rax,1)
L7981:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L11680:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L1000
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L1000
  nopl   (%rax)
L24424:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L24424
  cmp    %r14d,-0x60(%rsp)
  je     L25964
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L25964
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L25964
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L25964:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L19802
  mov    %eax,%r12d
  jmp    L11680
  nopl   (%rax)
L1000:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L33896:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L33896
  jmp    L25964
  nopl   0x0(%rax,%rax,1)
L19802:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L11263:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L5235
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L5235
  nopl   (%rax)
L30369:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L30369
  cmp    %r14d,-0x60(%rsp)
  je     L12758
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L12758
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L12758
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L12758:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L1974
  mov    %eax,%r12d
  jmp    L11263
  nopl   (%rax)
L5235:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L14641:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L14641
  jmp    L12758
  nopl   0x0(%rax,%rax,1)
L1974:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L29226:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L15980
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L15980
  nopl   (%rax)
L35502:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L35502
  cmp    %r14d,-0x60(%rsp)
  je     L37437
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L37437
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L37437
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L37437:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L142
  mov    %eax,%r12d
  jmp    L29226
  nopl   (%rax)
L15980:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L35896:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L35896
  jmp    L37437
  nopl   0x0(%rax,%rax,1)
L142:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L29801:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L16368
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L16368
  nopl   (%rax)
L14745:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L14745
  cmp    %r14d,-0x60(%rsp)
  je     L7525
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L7525
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L7525
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L7525:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L31455
  mov    %eax,%r12d
  jmp    L29801
  nopl   (%rax)
L16368:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L7260:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L7260
  jmp    L7525
  nopl   0x0(%rax,%rax,1)
L31455:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L21582:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rsi
  lea    -0x4(%rbx),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L7263
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L7263
  nopl   (%rax)
L8693:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L8693
  cmp    %r14d,-0x60(%rsp)
  je     L21186
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L21186
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L21186
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L21186:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L27794
  mov    %eax,%r12d
  jmp    L21582
  nopl   (%rax)
L7263:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L10488:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L10488
  jmp    L21186
  nopl   0x0(%rax,%rax,1)
L27794:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L21322:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L20603
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L20603
  nopl   (%rax)
L32360:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L32360
  cmp    %r14d,-0x60(%rsp)
  je     L29727
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L29727
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L29727
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L29727:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L6700
  mov    %eax,%r12d
  jmp    L21322
  nopl   (%rax)
L20603:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L35221:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L35221
  jmp    L29727
  nopl   0x0(%rax,%rax,1)
L6700:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L26697:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L11264
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L11264
  nopl   (%rax)
L18147:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L18147
  cmp    %r14d,-0x60(%rsp)
  je     L39283
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L39283
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L39283
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L39283:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L35249
  mov    %eax,%r12d
  jmp    L26697
  nopl   (%rax)
L11264:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L3546:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L3546
  jmp    L39283
  nopl   0x0(%rax,%rax,1)
L35249:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L19381:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L38875
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L38875
  nopl   (%rax)
L1387:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L1387
  cmp    %r14d,-0x60(%rsp)
  je     L20249
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L20249
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L20249
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L20249:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L3169
  mov    %eax,%r12d
  jmp    L19381
  nopl   (%rax)
L38875:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L27312:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L27312
  jmp    L20249
  nopl   0x0(%rax,%rax,1)
L3169:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L137:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L11419
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L11419
  nopl   (%rax)
L25685:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L25685
  cmp    %r14d,-0x60(%rsp)
  je     L38863
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L38863
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L38863
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L38863:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L25053
  mov    %eax,%r12d
  jmp    L137
  nopl   (%rax)
L11419:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L12552:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L12552
  jmp    L38863
  nopl   0x0(%rax,%rax,1)
L25053:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L29154:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rsi
  lea    -0x4(%rbx),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L24065
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L24065
  nopl   (%rax)
L32174:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L32174
  cmp    %r14d,-0x60(%rsp)
  je     L21474
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L21474
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L21474
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L21474:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L21746
  mov    %eax,%r12d
  jmp    L29154
  nopl   (%rax)
L24065:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L13916:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L13916
  jmp    L21474
  nopl   0x0(%rax,%rax,1)
L21746:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L26191:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L34578
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L34578
  nopl   (%rax)
L27547:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L27547
  cmp    %r14d,-0x60(%rsp)
  je     L10090
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L10090
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L10090
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L10090:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L37643
  mov    %eax,%r12d
  jmp    L26191
  nopl   (%rax)
L34578:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L10422:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L10422
  jmp    L10090
  nopl   0x0(%rax,%rax,1)
L37643:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L9785:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L28433
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L28433
  nopl   (%rax)
L25616:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L25616
  cmp    %r14d,-0x60(%rsp)
  je     L9528
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L9528
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L9528
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L9528:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L5761
  mov    %eax,%r12d
  jmp    L9785
  nopl   (%rax)
L28433:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L22281:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L22281
  jmp    L9528
  nopl   0x0(%rax,%rax,1)
L5761:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L17994:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L25737
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L25737
  nopl   (%rax)
L9391:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L9391
  cmp    %r14d,-0x60(%rsp)
  je     L32809
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L32809
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L32809
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L32809:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L37598
  mov    %eax,%r12d
  jmp    L17994
  nopl   (%rax)
L25737:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L25121:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L25121
  jmp    L32809
  nopl   0x0(%rax,%rax,1)
L37598:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L12648:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L38845
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L38845
  nopl   (%rax)
L24682:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L24682
  cmp    %r14d,-0x60(%rsp)
  je     L5184
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L5184
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L5184
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L5184:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L2675
  mov    %eax,%r12d
  jmp    L12648
  nopl   (%rax)
L38845:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L38950:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L38950
  jmp    L5184
  nopl   0x0(%rax,%rax,1)
L2675:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L16377:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rsi
  lea    -0x4(%rbx),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L23393
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L23393
  nopl   (%rax)
L38524:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L38524
  cmp    %r14d,-0x60(%rsp)
  je     L37931
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L37931
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L37931
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L37931:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L10140
  mov    %eax,%r12d
  jmp    L16377
  nopl   (%rax)
L23393:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L17052:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L17052
  jmp    L37931
  nopl   0x0(%rax,%rax,1)
L10140:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L37420:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L30410
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L30410
  nopl   (%rax)
L34482:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L34482
  cmp    %r14d,-0x60(%rsp)
  je     L28227
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L28227
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L28227
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L28227:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L5442
  mov    %eax,%r12d
  jmp    L37420
  nopl   (%rax)
L30410:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L12882:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L12882
  jmp    L28227
  nopl   0x0(%rax,%rax,1)
L5442:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L6136:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L262
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L262
  nopl   (%rax)
L7286:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L7286
  cmp    %r14d,-0x60(%rsp)
  je     L7167
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L7167
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L7167
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L7167:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L30132
  mov    %eax,%r12d
  jmp    L6136
  nopl   (%rax)
L262:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L4886:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L4886
  jmp    L7167
  nopl   0x0(%rax,%rax,1)
L30132:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L20483:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L21699
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L21699
  nopl   (%rax)
L15032:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L15032
  cmp    %r14d,-0x60(%rsp)
  je     L17259
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L17259
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L17259
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L17259:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L1636
  mov    %eax,%r12d
  jmp    L20483
  nopl   (%rax)
L21699:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L7383:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L7383
  jmp    L17259
  nopl   0x0(%rax,%rax,1)
L1636:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L38190:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L25537
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L25537
  nopl   (%rax)
L30545:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L30545
  cmp    %r14d,-0x60(%rsp)
  je     L27274
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L27274
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L27274
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L27274:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L37718
  mov    %eax,%r12d
  jmp    L38190
  nopl   (%rax)
L25537:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L7196:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L7196
  jmp    L27274
  nopl   0x0(%rax,%rax,1)
L37718:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L12098:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rsi
  lea    -0x4(%rbx),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L18977
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L18977
  nopl   (%rax)
L655:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L655
  cmp    %r14d,-0x60(%rsp)
  je     L31041
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L31041
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L31041
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L31041:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L9986
  mov    %eax,%r12d
  jmp    L12098
  nopl   (%rax)
L18977:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L35650:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L35650
  jmp    L31041
  nopl   0x0(%rax,%rax,1)
L9986:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L1523:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L30052
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L30052
  nopl   (%rax)
L10157:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L10157
  cmp    %r14d,-0x60(%rsp)
  je     L796
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L796
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L796
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L796:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L35336
  mov    %eax,%r12d
  jmp    L1523
  nopl   (%rax)
L30052:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L27071:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L27071
  jmp    L796
  nopl   0x0(%rax,%rax,1)
L35336:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L32536:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L23379
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L23379
  nopl   (%rax)
L9374:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L9374
  cmp    %r14d,-0x60(%rsp)
  je     L4888
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L4888
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L4888
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L4888:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L19217
  mov    %eax,%r12d
  jmp    L32536
  nopl   (%rax)
L23379:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L35292:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L35292
  jmp    L4888
  nopl   0x0(%rax,%rax,1)
L19217:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L38899:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L28606
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L28606
  nopl   (%rax)
L38629:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L38629
  cmp    %r14d,-0x60(%rsp)
  je     L22884
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L22884
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L22884
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L22884:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L24902
  mov    %eax,%r12d
  jmp    L38899
  nopl   (%rax)
L28606:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L6551:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L6551
  jmp    L22884
  nopl   0x0(%rax,%rax,1)
L24902:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L13750:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L1171
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L1171
  nopl   (%rax)
L28919:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L28919
  cmp    %r14d,-0x60(%rsp)
  je     L33667
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L33667
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L33667
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L33667:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L4232
  mov    %eax,%r12d
  jmp    L13750
  nopl   (%rax)
L1171:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L37912:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L37912
  jmp    L33667
  nopl   0x0(%rax,%rax,1)
L4232:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L13821:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L24385
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L24385
  nopl   (%rax)
L16844:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L16844
  cmp    %r14d,-0x60(%rsp)
  je     L2571
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L2571
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L2571
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L2571:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L34627
  mov    %eax,%r12d
  jmp    L13821
  nopl   (%rax)
L24385:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L38650:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L38650
  jmp    L2571
  nopl   0x0(%rax,%rax,1)
L34627:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L20449:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L19638
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L19638
  nopl   (%rax)
L6025:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L6025
  cmp    %r14d,-0x60(%rsp)
  je     L30082
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L30082
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L30082
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L30082:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L16980
  mov    %eax,%r12d
  jmp    L20449
  nopl   (%rax)
L19638:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L20956:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L20956
  jmp    L30082
  nopl   0x0(%rax,%rax,1)
L16980:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L13815:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L38061
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L38061
  nopl   (%rax)
L3811:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L3811
  cmp    %r14d,-0x60(%rsp)
  je     L32456
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L32456
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L32456
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L32456:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L1688
  mov    %eax,%r12d
  jmp    L13815
  nopl   (%rax)
L38061:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L17788:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L17788
  jmp    L32456
  nopl   0x0(%rax,%rax,1)
L1688:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L37901:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L39399
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L39399
  nopl   (%rax)
L36079:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L36079
  cmp    %r14d,-0x60(%rsp)
  je     L15909
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L15909
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L15909
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L15909:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L34124
  mov    %eax,%r12d
  jmp    L37901
  nopl   (%rax)
L39399:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L4900:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L4900
  jmp    L15909
  nopl   0x0(%rax,%rax,1)
L34124:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L17870:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L9750
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L9750
  nopl   (%rax)
L16278:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L16278
  cmp    %r14d,-0x60(%rsp)
  je     L5283
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L5283
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L5283
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L5283:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L23463
  mov    %eax,%r12d
  jmp    L17870
  nopl   (%rax)
L9750:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L29906:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L29906
  jmp    L5283
  nopl   0x0(%rax,%rax,1)
L23463:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L9315:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L35750
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L35750
  nopl   (%rax)
L9388:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L9388
  cmp    %r14d,-0x60(%rsp)
  je     L20422
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L20422
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L20422
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L20422:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L26442
  mov    %eax,%r12d
  jmp    L9315
  nopl   (%rax)
L35750:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L17016:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L17016
  jmp    L20422
  nopl   0x0(%rax,%rax,1)
L26442:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L25490:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L31087
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L31087
  nopl   (%rax)
L2594:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L2594
  cmp    %r14d,-0x60(%rsp)
  je     L11588
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L11588
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L11588
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L11588:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L24994
  mov    %eax,%r12d
  jmp    L25490
  nopl   (%rax)
L31087:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L27811:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L27811
  jmp    L11588
  nopl   0x0(%rax,%rax,1)
L24994:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L804:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L16888
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L16888
  nopl   (%rax)
L30170:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L30170
  cmp    %r14d,-0x60(%rsp)
  je     L5743
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L5743
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L5743
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L5743:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L30522
  mov    %eax,%r12d
  jmp    L804
  nopl   (%rax)
L16888:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L13683:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L13683
  jmp    L5743
  nopl   0x0(%rax,%rax,1)
L30522:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L31784:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L14227
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L14227
  nopl   (%rax)
L28379:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L28379
  cmp    %r14d,-0x60(%rsp)
  je     L18786
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L18786
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L18786
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L18786:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L2827
  mov    %eax,%r12d
  jmp    L31784
  nopl   (%rax)
L14227:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L30868:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L30868
  jmp    L18786
  nopl   0x0(%rax,%rax,1)
L2827:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L30608:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L33063
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L33063
  nopl   (%rax)
L28804:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L28804
  cmp    %r14d,-0x60(%rsp)
  je     L13123
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L13123
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L13123
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L13123:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L28966
  mov    %eax,%r12d
  jmp    L30608
  nopl   (%rax)
L33063:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L21627:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L21627
  jmp    L13123
  nopl   0x0(%rax,%rax,1)
L28966:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L37327:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L22523
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L22523
  nopl   (%rax)
L38647:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L38647
  cmp    %r14d,-0x60(%rsp)
  je     L21513
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L21513
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L21513
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L21513:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L25929
  mov    %eax,%r12d
  jmp    L37327
  nopl   (%rax)
L22523:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L24557:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L24557
  jmp    L21513
  nopl   0x0(%rax,%rax,1)
L25929:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L27210:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L14314
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L14314
  nopl   (%rax)
L14371:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L14371
  cmp    %r14d,-0x60(%rsp)
  je     L27875
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L27875
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L27875
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L27875:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L29810
  mov    %eax,%r12d
  jmp    L27210
  nopl   (%rax)
L14314:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L24352:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L24352
  jmp    L27875
  nopl   0x0(%rax,%rax,1)
L29810:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L14656:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L34779
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L34779
  nopl   (%rax)
L3072:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L3072
  cmp    %r14d,-0x60(%rsp)
  je     L15462
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L15462
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L15462
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L15462:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L2004
  mov    %eax,%r12d
  jmp    L14656
  nopl   (%rax)
L34779:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L29634:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L29634
  jmp    L15462
  nopl   0x0(%rax,%rax,1)
L2004:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L14833:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L9058
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L9058
  nopl   (%rax)
L36629:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L36629
  cmp    %r14d,-0x60(%rsp)
  je     L15290
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L15290
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L15290
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L15290:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L10869
  mov    %eax,%r12d
  jmp    L14833
  nopl   (%rax)
L9058:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L23043:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L23043
  jmp    L15290
  nopl   0x0(%rax,%rax,1)
L10869:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L3397:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L6969
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L6969
  nopl   (%rax)
L10252:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L10252
  cmp    %r14d,-0x60(%rsp)
  je     L39774
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L39774
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L39774
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L39774:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L17802
  mov    %eax,%r12d
  jmp    L3397
  nopl   (%rax)
L6969:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L29196:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L29196
  jmp    L39774
  nopl   0x0(%rax,%rax,1)
L17802:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L10484:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L20065
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L20065
  nopl   (%rax)
L29502:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L29502
  cmp    %r14d,-0x60(%rsp)
  je     L38308
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L38308
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L38308
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L38308:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L15174
  mov    %eax,%r12d
  jmp    L10484
  nopl   (%rax)
L20065:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L33600:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L33600
  jmp    L38308
  nopl   0x0(%rax,%rax,1)
L15174:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L26466:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L23010
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L23010
  nopl   (%rax)
L37684:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L37684
  cmp    %r14d,-0x60(%rsp)
  je     L12508
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L12508
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L12508
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L12508:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L20023
  mov    %eax,%r12d
  jmp    L26466
  nopl   (%rax)
L23010:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L25501:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L25501
  jmp    L12508
  nopl   0x0(%rax,%rax,1)
L20023:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L27514:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L24431
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L24431
  nopl   (%rax)
L7914:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L7914
  cmp    %r14d,-0x60(%rsp)
  je     L29608
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L29608
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L29608
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L29608:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L9007
  mov    %eax,%r12d
  jmp    L27514
  nopl   (%rax)
L24431:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L9033:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L9033
  jmp    L29608
  nopl   0x0(%rax,%rax,1)
L9007:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L16615:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L17206
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L17206
  nopl   (%rax)
L27229:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L27229
  cmp    %r14d,-0x60(%rsp)
  je     L1161
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L1161
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L1161
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L1161:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L10948
  mov    %eax,%r12d
  jmp    L16615
  nopl   (%rax)
L17206:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L13405:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L13405
  jmp    L1161
  nopl   0x0(%rax,%rax,1)
L10948:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L12169:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L19543
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L19543
  nopl   (%rax)
L11663:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L11663
  cmp    %r14d,-0x60(%rsp)
  je     L11218
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L11218
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L11218
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L11218:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L33264
  mov    %eax,%r12d
  jmp    L12169
  nopl   (%rax)
L19543:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L30664:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L30664
  jmp    L11218
  nopl   0x0(%rax,%rax,1)
L33264:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L2488:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L2498
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L2498
  nopl   (%rax)
L33127:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L33127
  cmp    %r14d,-0x60(%rsp)
  je     L5699
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L5699
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L5699
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L5699:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L25360
  mov    %eax,%r12d
  jmp    L2488
  nopl   (%rax)
L2498:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L14846:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L14846
  jmp    L5699
  nopl   0x0(%rax,%rax,1)
L25360:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L6245:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L16833
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L16833
  nopl   (%rax)
L16611:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L16611
  cmp    %r14d,-0x60(%rsp)
  je     L24830
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L24830
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L24830
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L24830:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L37932
  mov    %eax,%r12d
  jmp    L6245
  nopl   (%rax)
L16833:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L28374:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L28374
  jmp    L24830
  nopl   0x0(%rax,%rax,1)
L37932:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L22927:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L32238
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L32238
  nopl   (%rax)
L865:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L865
  cmp    %r14d,-0x60(%rsp)
  je     L35491
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L35491
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L35491
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L35491:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L8180
  mov    %eax,%r12d
  jmp    L22927
  nopl   (%rax)
L32238:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L530:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L530
  jmp    L35491
  nopl   0x0(%rax,%rax,1)
L8180:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L33585:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L19705
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L19705
  nopl   (%rax)
L19034:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L19034
  cmp    %r14d,-0x60(%rsp)
  je     L29433
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L29433
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L29433
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L29433:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L23237
  mov    %eax,%r12d
  jmp    L33585
  nopl   (%rax)
L19705:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L34068:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L34068
  jmp    L29433
  nopl   0x0(%rax,%rax,1)
L23237:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L7233:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L35702
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L35702
  nopl   (%rax)
L31205:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L31205
  cmp    %r14d,-0x60(%rsp)
  je     L32998
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L32998
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L32998
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L32998:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L14288
  mov    %eax,%r12d
  jmp    L7233
  nopl   (%rax)
L35702:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L24373:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L24373
  jmp    L32998
  nopl   0x0(%rax,%rax,1)
L14288:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L29122:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L18530
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L18530
  nopl   (%rax)
L2224:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L2224
  cmp    %r14d,-0x60(%rsp)
  je     L34637
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L34637
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L34637
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L34637:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L19554
  mov    %eax,%r12d
  jmp    L29122
  nopl   (%rax)
L18530:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L20951:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L20951
  jmp    L34637
  nopl   0x0(%rax,%rax,1)
L19554:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L31139:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L8287
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L8287
  nopl   (%rax)
L22261:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L22261
  cmp    %r14d,-0x60(%rsp)
  je     L31696
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L31696
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L31696
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L31696:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L14326
  mov    %eax,%r12d
  jmp    L31139
  nopl   (%rax)
L8287:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L6751:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L6751
  jmp    L31696
  nopl   0x0(%rax,%rax,1)
L14326:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L6630:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L14685
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L14685
  nopl   (%rax)
L26129:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L26129
  cmp    %r14d,-0x60(%rsp)
  je     L22174
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L22174
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L22174
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L22174:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L30722
  mov    %eax,%r12d
  jmp    L6630
  nopl   (%rax)
L14685:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L16144:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L16144
  jmp    L22174
  nopl   0x0(%rax,%rax,1)
L30722:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L21576:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L5255
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L5255
  nopl   (%rax)
L25198:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L25198
  cmp    %r14d,-0x60(%rsp)
  je     L5859
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L5859
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L5859
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L5859:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L10696
  mov    %eax,%r12d
  jmp    L21576
  nopl   (%rax)
L5255:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L8815:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L8815
  jmp    L5859
  nopl   0x0(%rax,%rax,1)
L10696:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L35990:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L4510
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L4510
  nopl   (%rax)
L5473:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L5473
  cmp    %r14d,-0x60(%rsp)
  je     L12467
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L12467
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L12467
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L12467:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L12035
  mov    %eax,%r12d
  jmp    L35990
  nopl   (%rax)
L4510:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L32288:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L32288
  jmp    L12467
  nopl   0x0(%rax,%rax,1)
L12035:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L23737:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L20662
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L20662
  nopl   (%rax)
L694:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L694
  cmp    %r14d,-0x60(%rsp)
  je     L6702
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L6702
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L6702
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L6702:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L30911
  mov    %eax,%r12d
  jmp    L23737
  nopl   (%rax)
L20662:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L39128:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L39128
  jmp    L6702
  nopl   0x0(%rax,%rax,1)
L30911:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L22683:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L26542
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L26542
  nopl   (%rax)
L25548:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L25548
  cmp    %r14d,-0x60(%rsp)
  je     L11842
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L11842
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L11842
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L11842:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L2696
  mov    %eax,%r12d
  jmp    L22683
  nopl   (%rax)
L26542:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L32329:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L32329
  jmp    L11842
  nopl   0x0(%rax,%rax,1)
L2696:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L1701:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L14998
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L14998
  nopl   (%rax)
L6337:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L6337
  cmp    %r14d,-0x60(%rsp)
  je     L38206
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L38206
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L38206
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L38206:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L4494
  mov    %eax,%r12d
  jmp    L1701
  nopl   (%rax)
L14998:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L6375:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L6375
  jmp    L38206
  nopl   0x0(%rax,%rax,1)
L4494:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L10243:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L10626
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L10626
  nopl   (%rax)
L16215:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L16215
  cmp    %r14d,-0x60(%rsp)
  je     L15799
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L15799
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L15799
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L15799:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L32597
  mov    %eax,%r12d
  jmp    L10243
  nopl   (%rax)
L10626:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L36125:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L36125
  jmp    L15799
  nopl   0x0(%rax,%rax,1)
L32597:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L34960:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L34413
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L34413
  nopl   (%rax)
L21298:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L21298
  cmp    %r14d,-0x60(%rsp)
  je     L3694
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L3694
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L3694
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L3694:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L10036
  mov    %eax,%r12d
  jmp    L34960
  nopl   (%rax)
L34413:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L34866:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L34866
  jmp    L3694
  nopl   0x0(%rax,%rax,1)
L10036:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L22381:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L26719
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L26719
  nopl   (%rax)
L14770:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L14770
  cmp    %r14d,-0x60(%rsp)
  je     L14242
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L14242
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L14242
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L14242:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L26970
  mov    %eax,%r12d
  jmp    L22381
  nopl   (%rax)
L26719:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L4527:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L4527
  jmp    L14242
  nopl   0x0(%rax,%rax,1)
L26970:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L34821:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L24620
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L24620
  nopl   (%rax)
L12305:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L12305
  cmp    %r14d,-0x60(%rsp)
  je     L9053
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L9053
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L9053
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L9053:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L21232
  mov    %eax,%r12d
  jmp    L34821
  nopl   (%rax)
L24620:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L24604:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L24604
  jmp    L9053
  nopl   0x0(%rax,%rax,1)
L21232:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L24241:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L2508
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L2508
  nopl   (%rax)
L2441:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L2441
  cmp    %r14d,-0x60(%rsp)
  je     L10731
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L10731
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L10731
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L10731:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L13418
  mov    %eax,%r12d
  jmp    L24241
  nopl   (%rax)
L2508:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L8911:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L8911
  jmp    L10731
  nopl   0x0(%rax,%rax,1)
L13418:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L6862:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L895
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L895
  nopl   (%rax)
L6922:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L6922
  cmp    %r14d,-0x60(%rsp)
  je     L4209
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L4209
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L4209
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L4209:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L33608
  mov    %eax,%r12d
  jmp    L6862
  nopl   (%rax)
L895:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L10287:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L10287
  jmp    L4209
  nopl   0x0(%rax,%rax,1)
L33608:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L30393:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L30218
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L30218
  nopl   (%rax)
L28197:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L28197
  cmp    %r14d,-0x60(%rsp)
  je     L15834
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L15834
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L15834
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L15834:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L29279
  mov    %eax,%r12d
  jmp    L30393
  nopl   (%rax)
L30218:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L17816:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L17816
  jmp    L15834
  nopl   0x0(%rax,%rax,1)
L29279:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbx
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbp
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L27018:
  mov    %rdi,%rax
  lea    -0x4(%rbp),%rcx
  lea    -0x4(%rbx),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L24756
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L24756
  nopl   (%rax)
L4106:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L4106
  cmp    %r14d,-0x60(%rsp)
  je     L7893
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L7893
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L7893
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L7893:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbp
  add    %r10,%rbx
  cmp    %r12d,%r15d
  jle    L39824
  mov    %eax,%r12d
  jmp    L27018
  nopl   (%rax)
L24756:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L687:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L687
  jmp    L7893
  nopl   0x0(%rax,%rax,1)
L39824:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L19143:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L13296
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L13296
  nopl   (%rax)
L23186:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L23186
  cmp    %r14d,-0x60(%rsp)
  je     L33956
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L33956
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L33956
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L33956:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L23893
  mov    %eax,%r12d
  jmp    L19143
  nopl   (%rax)
L13296:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L31257:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L31257
  jmp    L33956
  nopl   0x0(%rax,%rax,1)
L23893:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L31415:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L25779
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L25779
  nopl   (%rax)
L31065:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L31065
  cmp    %r14d,-0x60(%rsp)
  je     L18696
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L18696
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L18696
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L18696:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L6680
  mov    %eax,%r12d
  jmp    L31415
  nopl   (%rax)
L25779:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L2483:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L2483
  jmp    L18696
  nopl   0x0(%rax,%rax,1)
L6680:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L6849:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L12330
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L12330
  nopl   (%rax)
L7472:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L7472
  cmp    %r14d,-0x60(%rsp)
  je     L2978
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L2978
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L2978
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L2978:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L2903
  mov    %eax,%r12d
  jmp    L6849
  nopl   (%rax)
L12330:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L31113:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L31113
  jmp    L2978
  nopl   0x0(%rax,%rax,1)
L2903:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L1147:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L32479
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L32479
  nopl   (%rax)
L17036:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L17036
  cmp    %r14d,-0x60(%rsp)
  je     L3956
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L3956
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L3956
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L3956:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L2869
  mov    %eax,%r12d
  jmp    L1147
  nopl   (%rax)
L32479:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L1674:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L1674
  jmp    L3956
  nopl   0x0(%rax,%rax,1)
L2869:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L35816:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L29187
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L29187
  nopl   (%rax)
L13587:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L13587
  cmp    %r14d,-0x60(%rsp)
  je     L15555
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L15555
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L15555
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L15555:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L6880
  mov    %eax,%r12d
  jmp    L35816
  nopl   (%rax)
L29187:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L3610:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L3610
  jmp    L15555
  nopl   0x0(%rax,%rax,1)
L6880:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L14212:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L39114
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L39114
  nopl   (%rax)
L1439:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L1439
  cmp    %r14d,-0x60(%rsp)
  je     L22547
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L22547
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L22547
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L22547:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L26119
  mov    %eax,%r12d
  jmp    L14212
  nopl   (%rax)
L39114:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L18392:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L18392
  jmp    L22547
  nopl   0x0(%rax,%rax,1)
L26119:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L18001:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L29331
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L29331
  nopl   (%rax)
L19917:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L19917
  cmp    %r14d,-0x60(%rsp)
  je     L34569
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L34569
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L34569
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L34569:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L487
  mov    %eax,%r12d
  jmp    L18001
  nopl   (%rax)
L29331:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L34431:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L34431
  jmp    L34569
  nopl   0x0(%rax,%rax,1)
L487:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L31325:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L1193
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L1193
  nopl   (%rax)
L4177:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L4177
  cmp    %r14d,-0x60(%rsp)
  je     L36428
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L36428
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L36428
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L36428:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L36749
  mov    %eax,%r12d
  jmp    L31325
  nopl   (%rax)
L1193:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L8761:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L8761
  jmp    L36428
  nopl   0x0(%rax,%rax,1)
L36749:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L10182:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L36331
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L36331
  nopl   (%rax)
L37265:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L37265
  cmp    %r14d,-0x60(%rsp)
  je     L29750
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L29750
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L29750
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L29750:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L5127
  mov    %eax,%r12d
  jmp    L10182
  nopl   (%rax)
L36331:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L4582:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L4582
  jmp    L29750
  nopl   0x0(%rax,%rax,1)
L5127:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L13672:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L15358
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L15358
  nopl   (%rax)
L5941:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L5941
  cmp    %r14d,-0x60(%rsp)
  je     L24646
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L24646
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L24646
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L24646:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L32093
  mov    %eax,%r12d
  jmp    L13672
  nopl   (%rax)
L15358:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L32897:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L32897
  jmp    L24646
  nopl   0x0(%rax,%rax,1)
L32093:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L20952:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L36115
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L36115
  nopl   (%rax)
L26575:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L26575
  cmp    %r14d,-0x60(%rsp)
  je     L7356
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L7356
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L7356
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L7356:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L33383
  mov    %eax,%r12d
  jmp    L20952
  nopl   (%rax)
L36115:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L1348:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L1348
  jmp    L7356
  nopl   0x0(%rax,%rax,1)
L33383:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L19082:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L9401
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L9401
  nopl   (%rax)
L36398:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L36398
  cmp    %r14d,-0x60(%rsp)
  je     L13455
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L13455
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L13455
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L13455:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L20545
  mov    %eax,%r12d
  jmp    L19082
  nopl   (%rax)
L9401:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L7553:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L7553
  jmp    L13455
  nopl   0x0(%rax,%rax,1)
L20545:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L1494:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L33690
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L33690
  nopl   (%rax)
L9972:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L9972
  cmp    %r14d,-0x60(%rsp)
  je     L34775
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L34775
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L34775
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L34775:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L8929
  mov    %eax,%r12d
  jmp    L1494
  nopl   (%rax)
L33690:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L1860:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L1860
  jmp    L34775
  nopl   0x0(%rax,%rax,1)
L8929:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L8753:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L36770
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L36770
  nopl   (%rax)
L29732:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L29732
  cmp    %r14d,-0x60(%rsp)
  je     L22300
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L22300
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L22300
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L22300:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L3672
  mov    %eax,%r12d
  jmp    L8753
  nopl   (%rax)
L36770:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L32508:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L32508
  jmp    L22300
  nopl   0x0(%rax,%rax,1)
L3672:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L6704:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L35915
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L35915
  nopl   (%rax)
L15804:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L15804
  cmp    %r14d,-0x60(%rsp)
  je     L2699
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L2699
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L2699
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L2699:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L38073
  mov    %eax,%r12d
  jmp    L6704
  nopl   (%rax)
L35915:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L33626:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L33626
  jmp    L2699
  nopl   0x0(%rax,%rax,1)
L38073:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L36459:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L20016
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L20016
  nopl   (%rax)
L8485:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L8485
  cmp    %r14d,-0x60(%rsp)
  je     L31448
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L31448
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L31448
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L31448:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L26171
  mov    %eax,%r12d
  jmp    L36459
  nopl   (%rax)
L20016:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L16847:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L16847
  jmp    L31448
  nopl   0x0(%rax,%rax,1)
L26171:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L34906:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L3451
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L3451
  nopl   (%rax)
L30778:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L30778
  cmp    %r14d,-0x60(%rsp)
  je     L20092
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L20092
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L20092
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L20092:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L31754
  mov    %eax,%r12d
  jmp    L34906
  nopl   (%rax)
L3451:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L36285:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L36285
  jmp    L20092
  nopl   0x0(%rax,%rax,1)
L31754:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L16644:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L30589
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L30589
  nopl   (%rax)
L9195:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L9195
  cmp    %r14d,-0x60(%rsp)
  je     L15934
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L15934
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L15934
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L15934:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L16358
  mov    %eax,%r12d
  jmp    L16644
  nopl   (%rax)
L30589:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L13197:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L13197
  jmp    L15934
  nopl   0x0(%rax,%rax,1)
L16358:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L37685:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L10283
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L10283
  nopl   (%rax)
L23517:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L23517
  cmp    %r14d,-0x60(%rsp)
  je     L5836
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L5836
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L5836
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L5836:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L32614
  mov    %eax,%r12d
  jmp    L37685
  nopl   (%rax)
L10283:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L6988:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L6988
  jmp    L5836
  nopl   0x0(%rax,%rax,1)
L32614:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L35571:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L39592
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L39592
  nopl   (%rax)
L25791:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L25791
  cmp    %r14d,-0x60(%rsp)
  je     L7653
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L7653
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L7653
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L7653:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L29969
  mov    %eax,%r12d
  jmp    L35571
  nopl   (%rax)
L39592:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L21525:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L21525
  jmp    L7653
  nopl   0x0(%rax,%rax,1)
L29969:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L33008:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L12195
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L12195
  nopl   (%rax)
L39461:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L39461
  cmp    %r14d,-0x60(%rsp)
  je     L39698
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L39698
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L39698
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L39698:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L38768
  mov    %eax,%r12d
  jmp    L33008
  nopl   (%rax)
L12195:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L39158:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L39158
  jmp    L39698
  nopl   0x0(%rax,%rax,1)
L38768:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L19973:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L28432
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L28432
  nopl   (%rax)
L29058:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L29058
  cmp    %r14d,-0x60(%rsp)
  je     L15467
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L15467
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L15467
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L15467:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L33445
  mov    %eax,%r12d
  jmp    L19973
  nopl   (%rax)
L28432:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L20645:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L20645
  jmp    L15467
  nopl   0x0(%rax,%rax,1)
L33445:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L33274:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L23606
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L23606
  nopl   (%rax)
L23112:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L23112
  cmp    %r14d,-0x60(%rsp)
  je     L30550
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L30550
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L30550
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L30550:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L7626
  mov    %eax,%r12d
  jmp    L33274
  nopl   (%rax)
L23606:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L13948:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L13948
  jmp    L30550
  nopl   0x0(%rax,%rax,1)
L7626:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L1975:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L11088
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L11088
  nopl   (%rax)
L20407:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L20407
  cmp    %r14d,-0x60(%rsp)
  je     L4802
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L4802
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L4802
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L4802:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L30786
  mov    %eax,%r12d
  jmp    L1975
  nopl   (%rax)
L11088:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L16150:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L16150
  jmp    L4802
  nopl   0x0(%rax,%rax,1)
L30786:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L4872:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L38155
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L38155
  nopl   (%rax)
L16139:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L16139
  cmp    %r14d,-0x60(%rsp)
  je     L33360
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L33360
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L33360
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L33360:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L11903
  mov    %eax,%r12d
  jmp    L4872
  nopl   (%rax)
L38155:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L11122:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L11122
  jmp    L33360
  nopl   0x0(%rax,%rax,1)
L11903:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L2971:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L28622
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L28622
  nopl   (%rax)
L14966:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L14966
  cmp    %r14d,-0x60(%rsp)
  je     L39602
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L39602
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L39602
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L39602:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L3534
  mov    %eax,%r12d
  jmp    L2971
  nopl   (%rax)
L28622:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L12673:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L12673
  jmp    L39602
  nopl   0x0(%rax,%rax,1)
L3534:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L17556:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L16514
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L16514
  nopl   (%rax)
L21371:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L21371
  cmp    %r14d,-0x60(%rsp)
  je     L5772
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L5772
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L5772
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L5772:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L18800
  mov    %eax,%r12d
  jmp    L17556
  nopl   (%rax)
L16514:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L12580:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L12580
  jmp    L5772
  nopl   0x0(%rax,%rax,1)
L18800:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L4185:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L7456
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L7456
  nopl   (%rax)
L2633:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L2633
  cmp    %r14d,-0x60(%rsp)
  je     L38691
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L38691
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L38691
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L38691:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L2221
  mov    %eax,%r12d
  jmp    L4185
  nopl   (%rax)
L7456:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L29859:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L29859
  jmp    L38691
  nopl   0x0(%rax,%rax,1)
L2221:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L33079:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L34974
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L34974
  nopl   (%rax)
L32044:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L32044
  cmp    %r14d,-0x60(%rsp)
  je     L30655
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L30655
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L30655
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L30655:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L17249
  mov    %eax,%r12d
  jmp    L33079
  nopl   (%rax)
L34974:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L20591:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L20591
  jmp    L30655
  nopl   0x0(%rax,%rax,1)
L17249:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L10516:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L8101
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L8101
  nopl   (%rax)
L29522:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L29522
  cmp    %r14d,-0x60(%rsp)
  je     L17943
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L17943
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L17943
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L17943:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L13659
  mov    %eax,%r12d
  jmp    L10516
  nopl   (%rax)
L8101:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L11084:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L11084
  jmp    L17943
  nopl   0x0(%rax,%rax,1)
L13659:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L8775:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L1204
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L1204
  nopl   (%rax)
L14116:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L14116
  cmp    %r14d,-0x60(%rsp)
  je     L33953
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L33953
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L33953
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L33953:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L27047
  mov    %eax,%r12d
  jmp    L8775
  nopl   (%rax)
L1204:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L40004:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L40004
  jmp    L33953
  nopl   0x0(%rax,%rax,1)
L27047:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L17471:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L10463
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L10463
  nopl   (%rax)
L3668:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L3668
  cmp    %r14d,-0x60(%rsp)
  je     L11260
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L11260
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L11260
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L11260:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L17803
  mov    %eax,%r12d
  jmp    L17471
  nopl   (%rax)
L10463:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L16560:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L16560
  jmp    L11260
  nopl   0x0(%rax,%rax,1)
L17803:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L37347:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L26859
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L26859
  nopl   (%rax)
L35409:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L35409
  cmp    %r14d,-0x60(%rsp)
  je     L7204
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L7204
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L7204
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L7204:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L27659
  mov    %eax,%r12d
  jmp    L37347
  nopl   (%rax)
L26859:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L22788:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L22788
  jmp    L7204
  nopl   0x0(%rax,%rax,1)
L27659:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L2533:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L8052
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L8052
  nopl   (%rax)
L30758:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L30758
  cmp    %r14d,-0x60(%rsp)
  je     L1687
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L1687
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L1687
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L1687:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L21486
  mov    %eax,%r12d
  jmp    L2533
  nopl   (%rax)
L8052:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L27202:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L27202
  jmp    L1687
  nopl   0x0(%rax,%rax,1)
L21486:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L28501:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L3194
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L3194
  nopl   (%rax)
L35333:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L35333
  cmp    %r14d,-0x60(%rsp)
  je     L11492
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L11492
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L11492
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L11492:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L17701
  mov    %eax,%r12d
  jmp    L28501
  nopl   (%rax)
L3194:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L20933:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L20933
  jmp    L11492
  nopl   0x0(%rax,%rax,1)
L17701:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L19460:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L21862
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L21862
  nopl   (%rax)
L593:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L593
  cmp    %r14d,-0x60(%rsp)
  je     L25016
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L25016
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L25016
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L25016:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L34157
  mov    %eax,%r12d
  jmp    L19460
  nopl   (%rax)
L21862:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L30763:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L30763
  jmp    L25016
  nopl   0x0(%rax,%rax,1)
L34157:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L39046:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L12894
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L12894
  nopl   (%rax)
L22115:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L22115
  cmp    %r14d,-0x60(%rsp)
  je     L20592
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L20592
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L20592
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L20592:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L28973
  mov    %eax,%r12d
  jmp    L39046
  nopl   (%rax)
L12894:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L17854:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L17854
  jmp    L20592
  nopl   0x0(%rax,%rax,1)
L28973:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L37479:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L13001
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L13001
  nopl   (%rax)
L3221:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L3221
  cmp    %r14d,-0x60(%rsp)
  je     L21355
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L21355
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L21355
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L21355:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L1065
  mov    %eax,%r12d
  jmp    L37479
  nopl   (%rax)
L13001:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L21456:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L21456
  jmp    L21355
  nopl   0x0(%rax,%rax,1)
L1065:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L4671:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L10595
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L10595
  nopl   (%rax)
L17948:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L17948
  cmp    %r14d,-0x60(%rsp)
  je     L1020
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L1020
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L1020
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L1020:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L21729
  mov    %eax,%r12d
  jmp    L4671
  nopl   (%rax)
L10595:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L17730:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L17730
  jmp    L1020
  nopl   0x0(%rax,%rax,1)
L21729:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L36686:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L11976
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L11976
  nopl   (%rax)
L25282:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L25282
  cmp    %r14d,-0x60(%rsp)
  je     L19834
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L19834
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L19834
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L19834:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L675
  mov    %eax,%r12d
  jmp    L36686
  nopl   (%rax)
L11976:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L13803:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L13803
  jmp    L19834
  nopl   0x0(%rax,%rax,1)
L675:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L29268:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L21224
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L21224
  nopl   (%rax)
L19646:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L19646
  cmp    %r14d,-0x60(%rsp)
  je     L562
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L562
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L562
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L562:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L29568
  mov    %eax,%r12d
  jmp    L29268
  nopl   (%rax)
L21224:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L4002:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L4002
  jmp    L562
  nopl   0x0(%rax,%rax,1)
L29568:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L37045:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L21449
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L21449
  nopl   (%rax)
L4524:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L4524
  cmp    %r14d,-0x60(%rsp)
  je     L13734
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L13734
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L13734
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L13734:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L28193
  mov    %eax,%r12d
  jmp    L37045
  nopl   (%rax)
L21449:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L30208:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L30208
  jmp    L13734
  nopl   0x0(%rax,%rax,1)
L28193:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L31788:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L3836
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L3836
  nopl   (%rax)
L23280:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L23280
  cmp    %r14d,-0x60(%rsp)
  je     L34126
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L34126
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L34126
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L34126:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L38488
  mov    %eax,%r12d
  jmp    L31788
  nopl   (%rax)
L3836:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L8860:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L8860
  jmp    L34126
  nopl   0x0(%rax,%rax,1)
L38488:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L9668:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L14140
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L14140
  nopl   (%rax)
L21898:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L21898
  cmp    %r14d,-0x60(%rsp)
  je     L12137
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L12137
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L12137
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L12137:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L29862
  mov    %eax,%r12d
  jmp    L9668
  nopl   (%rax)
L14140:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L12423:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L12423
  jmp    L12137
  nopl   0x0(%rax,%rax,1)
L29862:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L4891:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L29186
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L29186
  nopl   (%rax)
L39365:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L39365
  cmp    %r14d,-0x60(%rsp)
  je     L23541
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L23541
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L23541
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L23541:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L16060
  mov    %eax,%r12d
  jmp    L4891
  nopl   (%rax)
L29186:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L5511:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L5511
  jmp    L23541
  nopl   0x0(%rax,%rax,1)
L16060:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L15124:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L23071
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L23071
  nopl   (%rax)
L2142:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L2142
  cmp    %r14d,-0x60(%rsp)
  je     L18606
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L18606
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L18606
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L18606:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L29983
  mov    %eax,%r12d
  jmp    L15124
  nopl   (%rax)
L23071:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L20776:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L20776
  jmp    L18606
  nopl   0x0(%rax,%rax,1)
L29983:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L38189:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L33310
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L33310
  nopl   (%rax)
L497:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L497
  cmp    %r14d,-0x60(%rsp)
  je     L25707
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L25707
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L25707
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L25707:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L17318
  mov    %eax,%r12d
  jmp    L38189
  nopl   (%rax)
L33310:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L18943:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L18943
  jmp    L25707
  nopl   0x0(%rax,%rax,1)
L17318:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L6662:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L8053
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L8053
  nopl   (%rax)
L24210:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L24210
  cmp    %r14d,-0x60(%rsp)
  je     L7401
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L7401
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L7401
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L7401:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L6169
  mov    %eax,%r12d
  jmp    L6662
  nopl   (%rax)
L8053:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L8685:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L8685
  jmp    L7401
  nopl   0x0(%rax,%rax,1)
L6169:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L22099:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L19013
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L19013
  nopl   (%rax)
L9482:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L9482
  cmp    %r14d,-0x60(%rsp)
  je     L21026
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L21026
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L21026
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L21026:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L12337
  mov    %eax,%r12d
  jmp    L22099
  nopl   (%rax)
L19013:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L7907:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L7907
  jmp    L21026
  nopl   0x0(%rax,%rax,1)
L12337:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L16211:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L25575
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L25575
  nopl   (%rax)
L20151:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L20151
  cmp    %r14d,-0x60(%rsp)
  je     L4518
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L4518
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L4518
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L4518:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L15033
  mov    %eax,%r12d
  jmp    L16211
  nopl   (%rax)
L25575:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L27992:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L27992
  jmp    L4518
  nopl   0x0(%rax,%rax,1)
L15033:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L523:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L35692
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L35692
  nopl   (%rax)
L31717:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L31717
  cmp    %r14d,-0x60(%rsp)
  je     L31775
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L31775
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L31775
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L31775:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L11780
  mov    %eax,%r12d
  jmp    L523
  nopl   (%rax)
L35692:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L2336:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L2336
  jmp    L31775
  nopl   0x0(%rax,%rax,1)
L11780:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L19081:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L37754
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L37754
  nopl   (%rax)
L25861:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L25861
  cmp    %r14d,-0x60(%rsp)
  je     L12057
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L12057
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L12057
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L12057:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L9009
  mov    %eax,%r12d
  jmp    L19081
  nopl   (%rax)
L37754:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L38609:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L38609
  jmp    L12057
  nopl   0x0(%rax,%rax,1)
L9009:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L33358:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L3268
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L3268
  nopl   (%rax)
L10724:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L10724
  cmp    %r14d,-0x60(%rsp)
  je     L12503
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L12503
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L12503
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L12503:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L32387
  mov    %eax,%r12d
  jmp    L33358
  nopl   (%rax)
L3268:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L23945:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L23945
  jmp    L12503
  nopl   0x0(%rax,%rax,1)
L32387:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L11150:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L12479
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L12479
  nopl   (%rax)
L23506:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L23506
  cmp    %r14d,-0x60(%rsp)
  je     L26338
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L26338
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L26338
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L26338:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L17677
  mov    %eax,%r12d
  jmp    L11150
  nopl   (%rax)
L12479:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L36269:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L36269
  jmp    L26338
  nopl   0x0(%rax,%rax,1)
L17677:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L5311:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L29665
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L29665
  nopl   (%rax)
L16070:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L16070
  cmp    %r14d,-0x60(%rsp)
  je     L17190
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L17190
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L17190
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L17190:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L25976
  mov    %eax,%r12d
  jmp    L5311
  nopl   (%rax)
L29665:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L21613:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L21613
  jmp    L17190
  nopl   0x0(%rax,%rax,1)
L25976:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L15793:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L25624
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L25624
  nopl   (%rax)
L6249:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L6249
  cmp    %r14d,-0x60(%rsp)
  je     L29496
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L29496
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L29496
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L29496:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L21331
  mov    %eax,%r12d
  jmp    L15793
  nopl   (%rax)
L25624:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L32085:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L32085
  jmp    L29496
  nopl   0x0(%rax,%rax,1)
L21331:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L3265:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L37322
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L37322
  nopl   (%rax)
L24759:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L24759
  cmp    %r14d,-0x60(%rsp)
  je     L36070
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L36070
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L36070
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L36070:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L26175
  mov    %eax,%r12d
  jmp    L3265
  nopl   (%rax)
L37322:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L14278:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L14278
  jmp    L36070
  nopl   0x0(%rax,%rax,1)
L26175:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L18826:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L10242
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L10242
  nopl   (%rax)
L34167:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L34167
  cmp    %r14d,-0x60(%rsp)
  je     L20511
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L20511
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L20511
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L20511:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L29722
  mov    %eax,%r12d
  jmp    L18826
  nopl   (%rax)
L10242:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L7012:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L7012
  jmp    L20511
  nopl   0x0(%rax,%rax,1)
L29722:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L14703:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L23061
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L23061
  nopl   (%rax)
L18519:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L18519
  cmp    %r14d,-0x60(%rsp)
  je     L25497
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L25497
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L25497
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L25497:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L8030
  mov    %eax,%r12d
  jmp    L14703
  nopl   (%rax)
L23061:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L32258:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L32258
  jmp    L25497
  nopl   0x0(%rax,%rax,1)
L8030:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L3608:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L34091
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L34091
  nopl   (%rax)
L22746:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L22746
  cmp    %r14d,-0x60(%rsp)
  je     L31212
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L31212
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L31212
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L31212:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L4987
  mov    %eax,%r12d
  jmp    L3608
  nopl   (%rax)
L34091:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L12888:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L12888
  jmp    L31212
  nopl   0x0(%rax,%rax,1)
L4987:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L21152:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L24482
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L24482
  nopl   (%rax)
L10716:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L10716
  cmp    %r14d,-0x60(%rsp)
  je     L19650
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L19650
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L19650
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L19650:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L21798
  mov    %eax,%r12d
  jmp    L21152
  nopl   (%rax)
L24482:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L29824:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L29824
  jmp    L19650
  nopl   0x0(%rax,%rax,1)
L21798:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L27295:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L828
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L828
  nopl   (%rax)
L38704:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L38704
  cmp    %r14d,-0x60(%rsp)
  je     L35389
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L35389
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L35389
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L35389:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L39251
  mov    %eax,%r12d
  jmp    L27295
  nopl   (%rax)
L828:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L3655:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L3655
  jmp    L35389
  nopl   0x0(%rax,%rax,1)
L39251:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L25011:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L30160
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L30160
  nopl   (%rax)
L6594:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L6594
  cmp    %r14d,-0x60(%rsp)
  je     L16855
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L16855
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L16855
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L16855:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L3304
  mov    %eax,%r12d
  jmp    L25011
  nopl   (%rax)
L30160:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L8543:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L8543
  jmp    L16855
  nopl   0x0(%rax,%rax,1)
L3304:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L15055:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L1723
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L1723
  nopl   (%rax)
L28266:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L28266
  cmp    %r14d,-0x60(%rsp)
  je     L4046
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L4046
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L4046
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L4046:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L13682
  mov    %eax,%r12d
  jmp    L15055
  nopl   (%rax)
L1723:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L23367:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L23367
  jmp    L4046
  nopl   0x0(%rax,%rax,1)
L13682:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L26518:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L9530
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L9530
  nopl   (%rax)
L9268:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L9268
  cmp    %r14d,-0x60(%rsp)
  je     L36304
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L36304
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L36304
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L36304:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L32913
  mov    %eax,%r12d
  jmp    L26518
  nopl   (%rax)
L9530:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L6420:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L6420
  jmp    L36304
  nopl   0x0(%rax,%rax,1)
L32913:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L12839:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L11370
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L11370
  nopl   (%rax)
L16672:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L16672
  cmp    %r14d,-0x60(%rsp)
  je     L21628
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L21628
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L21628
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L21628:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L30831
  mov    %eax,%r12d
  jmp    L12839
  nopl   (%rax)
L11370:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L30061:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L30061
  jmp    L21628
  nopl   0x0(%rax,%rax,1)
L30831:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L29340:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L22315
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L22315
  nopl   (%rax)
L5172:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L5172
  cmp    %r14d,-0x60(%rsp)
  je     L13954
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L13954
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L13954
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L13954:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L20911
  mov    %eax,%r12d
  jmp    L29340
  nopl   (%rax)
L22315:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L30251:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L30251
  jmp    L13954
  nopl   0x0(%rax,%rax,1)
L20911:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L5097:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L26484
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L26484
  nopl   (%rax)
L12732:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L12732
  cmp    %r14d,-0x60(%rsp)
  je     L20035
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L20035
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L20035
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L20035:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L23891
  mov    %eax,%r12d
  jmp    L5097
  nopl   (%rax)
L26484:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L16863:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L16863
  jmp    L20035
  nopl   0x0(%rax,%rax,1)
L23891:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L157:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L15286
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L15286
  nopl   (%rax)
L38295:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L38295
  cmp    %r14d,-0x60(%rsp)
  je     L27483
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L27483
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L27483
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L27483:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L32337
  mov    %eax,%r12d
  jmp    L157
  nopl   (%rax)
L15286:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L19478:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L19478
  jmp    L27483
  nopl   0x0(%rax,%rax,1)
L32337:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L21777:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L3321
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L3321
  nopl   (%rax)
L37237:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L37237
  cmp    %r14d,-0x60(%rsp)
  je     L14913
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L14913
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L14913
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L14913:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L18414
  mov    %eax,%r12d
  jmp    L21777
  nopl   (%rax)
L3321:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L24053:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L24053
  jmp    L14913
  nopl   0x0(%rax,%rax,1)
L18414:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L20061:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L3204
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L3204
  nopl   (%rax)
L32630:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L32630
  cmp    %r14d,-0x60(%rsp)
  je     L4962
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L4962
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L4962
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L4962:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L15912
  mov    %eax,%r12d
  jmp    L20061
  nopl   (%rax)
L3204:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L17623:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L17623
  jmp    L4962
  nopl   0x0(%rax,%rax,1)
L15912:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L27645:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L36078
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L36078
  nopl   (%rax)
L9453:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L9453
  cmp    %r14d,-0x60(%rsp)
  je     L10522
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L10522
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L10522
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L10522:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L1501
  mov    %eax,%r12d
  jmp    L27645
  nopl   (%rax)
L36078:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L25637:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L25637
  jmp    L10522
  nopl   0x0(%rax,%rax,1)
L1501:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L15037:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L15369
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L15369
  nopl   (%rax)
L29332:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L29332
  cmp    %r14d,-0x60(%rsp)
  je     L33414
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L33414
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L33414
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L33414:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L37987
  mov    %eax,%r12d
  jmp    L15037
  nopl   (%rax)
L15369:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L39895:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L39895
  jmp    L33414
  nopl   0x0(%rax,%rax,1)
L37987:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L16999:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L26359
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L26359
  nopl   (%rax)
L22442:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L22442
  cmp    %r14d,-0x60(%rsp)
  je     L5271
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L5271
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L5271
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L5271:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L18248
  mov    %eax,%r12d
  jmp    L16999
  nopl   (%rax)
L26359:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L28271:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L28271
  jmp    L5271
  nopl   0x0(%rax,%rax,1)
L18248:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L17775:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L17550
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L17550
  nopl   (%rax)
L22498:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L22498
  cmp    %r14d,-0x60(%rsp)
  je     L36577
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L36577
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L36577
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L36577:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L12874
  mov    %eax,%r12d
  jmp    L17775
  nopl   (%rax)
L17550:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L17329:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L17329
  jmp    L36577
  nopl   0x0(%rax,%rax,1)
L12874:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L12353:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L17643
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L17643
  nopl   (%rax)
L2574:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L2574
  cmp    %r14d,-0x60(%rsp)
  je     L30116
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L30116
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L30116
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L30116:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L26441
  mov    %eax,%r12d
  jmp    L12353
  nopl   (%rax)
L17643:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L22151:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L22151
  jmp    L30116
  nopl   0x0(%rax,%rax,1)
L26441:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L14101:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L11625
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L11625
  nopl   (%rax)
L36772:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L36772
  cmp    %r14d,-0x60(%rsp)
  je     L28878
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L28878
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L28878
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L28878:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L34287
  mov    %eax,%r12d
  jmp    L14101
  nopl   (%rax)
L11625:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L22277:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L22277
  jmp    L28878
  nopl   0x0(%rax,%rax,1)
L34287:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L9796:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L9202
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L9202
  nopl   (%rax)
L1576:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L1576
  cmp    %r14d,-0x60(%rsp)
  je     L34890
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L34890
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L34890
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L34890:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L7523
  mov    %eax,%r12d
  jmp    L9796
  nopl   (%rax)
L9202:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L8626:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L8626
  jmp    L34890
  nopl   0x0(%rax,%rax,1)
L7523:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L15086:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L36004
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L36004
  nopl   (%rax)
L3395:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L3395
  cmp    %r14d,-0x60(%rsp)
  je     L3598
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L3598
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L3598
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L3598:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L2006
  mov    %eax,%r12d
  jmp    L15086
  nopl   (%rax)
L36004:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L27213:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L27213
  jmp    L3598
  nopl   0x0(%rax,%rax,1)
L2006:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L20806:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L35185
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L35185
  nopl   (%rax)
L30493:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L30493
  cmp    %r14d,-0x60(%rsp)
  je     L36420
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L36420
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L36420
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L36420:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L9763
  mov    %eax,%r12d
  jmp    L20806
  nopl   (%rax)
L35185:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L17377:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L17377
  jmp    L36420
  nopl   0x0(%rax,%rax,1)
L9763:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L17202:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L13889
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L13889
  nopl   (%rax)
L10503:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L10503
  cmp    %r14d,-0x60(%rsp)
  je     L20777
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L20777
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L20777
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L20777:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L30250
  mov    %eax,%r12d
  jmp    L17202
  nopl   (%rax)
L13889:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L23082:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L23082
  jmp    L20777
  nopl   0x0(%rax,%rax,1)
L30250:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L14139:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L33454
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L33454
  nopl   (%rax)
L7088:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L7088
  cmp    %r14d,-0x60(%rsp)
  je     L26594
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L26594
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L26594
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L26594:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L4897
  mov    %eax,%r12d
  jmp    L14139
  nopl   (%rax)
L33454:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L31845:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L31845
  jmp    L26594
  nopl   0x0(%rax,%rax,1)
L4897:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L30698:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L39274
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L39274
  nopl   (%rax)
L38400:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L38400
  cmp    %r14d,-0x60(%rsp)
  je     L7230
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L7230
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L7230
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L7230:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L16245
  mov    %eax,%r12d
  jmp    L30698
  nopl   (%rax)
L39274:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L2472:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L2472
  jmp    L7230
  nopl   0x0(%rax,%rax,1)
L16245:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L22653:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L33022
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L33022
  nopl   (%rax)
L12006:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L12006
  cmp    %r14d,-0x60(%rsp)
  je     L31715
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L31715
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L31715
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L31715:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L18271
  mov    %eax,%r12d
  jmp    L22653
  nopl   (%rax)
L33022:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L5884:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L5884
  jmp    L31715
  nopl   0x0(%rax,%rax,1)
L18271:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L35512:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L13952
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L13952
  nopl   (%rax)
L13259:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L13259
  cmp    %r14d,-0x60(%rsp)
  je     L28666
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L28666
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L28666
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L28666:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L26212
  mov    %eax,%r12d
  jmp    L35512
  nopl   (%rax)
L13952:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L23149:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L23149
  jmp    L28666
  nopl   0x0(%rax,%rax,1)
L26212:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L31526:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L26390
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L26390
  nopl   (%rax)
L21482:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L21482
  cmp    %r14d,-0x60(%rsp)
  je     L22184
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L22184
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L22184
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L22184:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L32344
  mov    %eax,%r12d
  jmp    L31526
  nopl   (%rax)
L26390:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L34233:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L34233
  jmp    L22184
  nopl   0x0(%rax,%rax,1)
L32344:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L37289:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L30895
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L30895
  nopl   (%rax)
L2329:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L2329
  cmp    %r14d,-0x60(%rsp)
  je     L12054
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L12054
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L12054
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L12054:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L5515
  mov    %eax,%r12d
  jmp    L37289
  nopl   (%rax)
L30895:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L1400:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L1400
  jmp    L12054
  nopl   0x0(%rax,%rax,1)
L5515:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L16291:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L23836
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L23836
  nopl   (%rax)
L27272:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L27272
  cmp    %r14d,-0x60(%rsp)
  je     L19323
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L19323
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L19323
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L19323:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L20385
  mov    %eax,%r12d
  jmp    L16291
  nopl   (%rax)
L23836:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L28535:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L28535
  jmp    L19323
  nopl   0x0(%rax,%rax,1)
L20385:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L22293:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L17709
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L17709
  nopl   (%rax)
L1189:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L1189
  cmp    %r14d,-0x60(%rsp)
  je     L32986
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L32986
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L32986
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L32986:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L10808
  mov    %eax,%r12d
  jmp    L22293
  nopl   (%rax)
L17709:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L35001:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L35001
  jmp    L32986
  nopl   0x0(%rax,%rax,1)
L10808:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L11669:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L36648
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L36648
  nopl   (%rax)
L24968:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L24968
  cmp    %r14d,-0x60(%rsp)
  je     L39451
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L39451
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L39451
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L39451:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L5802
  mov    %eax,%r12d
  jmp    L11669
  nopl   (%rax)
L36648:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L12682:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L12682
  jmp    L39451
  nopl   0x0(%rax,%rax,1)
L5802:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L21350:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L11308
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L11308
  nopl   (%rax)
L36582:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L36582
  cmp    %r14d,-0x60(%rsp)
  je     L1651
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L1651
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L1651
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L1651:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L15410
  mov    %eax,%r12d
  jmp    L21350
  nopl   (%rax)
L11308:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L12449:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L12449
  jmp    L1651
  nopl   0x0(%rax,%rax,1)
L15410:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L27242:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L2579
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L2579
  nopl   (%rax)
L36196:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L36196
  cmp    %r14d,-0x60(%rsp)
  je     L2914
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L2914
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L2914
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L2914:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L7900
  mov    %eax,%r12d
  jmp    L27242
  nopl   (%rax)
L2579:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L35067:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L35067
  jmp    L2914
  nopl   0x0(%rax,%rax,1)
L7900:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L29161:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L33796
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L33796
  nopl   (%rax)
L9654:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L9654
  cmp    %r14d,-0x60(%rsp)
  je     L849
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L849
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L849
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L849:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L37401
  mov    %eax,%r12d
  jmp    L29161
  nopl   (%rax)
L33796:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L27939:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L27939
  jmp    L849
  nopl   0x0(%rax,%rax,1)
L37401:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L23827:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L1555
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L1555
  nopl   (%rax)
L35807:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L35807
  cmp    %r14d,-0x60(%rsp)
  je     L2272
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L2272
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L2272
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L2272:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L39570
  mov    %eax,%r12d
  jmp    L23827
  nopl   (%rax)
L1555:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L32293:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L32293
  jmp    L2272
  nopl   0x0(%rax,%rax,1)
L39570:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L25498:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L6438
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L6438
  nopl   (%rax)
L17509:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L17509
  cmp    %r14d,-0x60(%rsp)
  je     L2813
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L2813
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L2813
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L2813:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L31965
  mov    %eax,%r12d
  jmp    L25498
  nopl   (%rax)
L6438:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L1649:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L1649
  jmp    L2813
  nopl   0x0(%rax,%rax,1)
L31965:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L26567:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L4301
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L4301
  nopl   (%rax)
L33568:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L33568
  cmp    %r14d,-0x60(%rsp)
  je     L28190
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L28190
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L28190
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L28190:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L15576
  mov    %eax,%r12d
  jmp    L26567
  nopl   (%rax)
L4301:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L36578:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L36578
  jmp    L28190
  nopl   0x0(%rax,%rax,1)
L15576:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L3934:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L12243
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L12243
  nopl   (%rax)
L11932:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L11932
  cmp    %r14d,-0x60(%rsp)
  je     L25720
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L25720
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L25720
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L25720:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L8219
  mov    %eax,%r12d
  jmp    L3934
  nopl   (%rax)
L12243:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L4791:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L4791
  jmp    L25720
  nopl   0x0(%rax,%rax,1)
L8219:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L20410:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L39180
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L39180
  nopl   (%rax)
L33676:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L33676
  cmp    %r14d,-0x60(%rsp)
  je     L22975
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L22975
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L22975
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L22975:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L29620
  mov    %eax,%r12d
  jmp    L20410
  nopl   (%rax)
L39180:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L8189:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L8189
  jmp    L22975
  nopl   0x0(%rax,%rax,1)
L29620:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L21413:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L16760
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L16760
  nopl   (%rax)
L22812:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L22812
  cmp    %r14d,-0x60(%rsp)
  je     L20506
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L20506
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L20506
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L20506:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L36713
  mov    %eax,%r12d
  jmp    L21413
  nopl   (%rax)
L16760:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L27416:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L27416
  jmp    L20506
  nopl   0x0(%rax,%rax,1)
L36713:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L3019:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L9229
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L9229
  nopl   (%rax)
L24540:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L24540
  cmp    %r14d,-0x60(%rsp)
  je     L34179
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L34179
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L34179
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L34179:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L15029
  mov    %eax,%r12d
  jmp    L3019
  nopl   (%rax)
L9229:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L16820:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L16820
  jmp    L34179
  nopl   0x0(%rax,%rax,1)
L15029:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L15307:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L22143
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L22143
  nopl   (%rax)
L13077:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L13077
  cmp    %r14d,-0x60(%rsp)
  je     L37537
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L37537
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L37537
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L37537:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L1156
  mov    %eax,%r12d
  jmp    L15307
  nopl   (%rax)
L22143:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L6631:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L6631
  jmp    L37537
  nopl   0x0(%rax,%rax,1)
L1156:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L19909:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L1488
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L1488
  nopl   (%rax)
L12388:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L12388
  cmp    %r14d,-0x60(%rsp)
  je     L4681
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L4681
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L4681
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L4681:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L1747
  mov    %eax,%r12d
  jmp    L19909
  nopl   (%rax)
L1488:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L32719:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L32719
  jmp    L4681
  nopl   0x0(%rax,%rax,1)
L1747:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L25848:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L17331
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L17331
  nopl   (%rax)
L36417:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L36417
  cmp    %r14d,-0x60(%rsp)
  je     L20917
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L20917
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L20917
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L20917:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L11887
  mov    %eax,%r12d
  jmp    L25848
  nopl   (%rax)
L17331:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L31264:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L31264
  jmp    L20917
  nopl   0x0(%rax,%rax,1)
L11887:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L26445:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L30996
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L30996
  nopl   (%rax)
L7258:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L7258
  cmp    %r14d,-0x60(%rsp)
  je     L26755
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L26755
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L26755
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L26755:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L31180
  mov    %eax,%r12d
  jmp    L26445
  nopl   (%rax)
L30996:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L23597:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L23597
  jmp    L26755
  nopl   0x0(%rax,%rax,1)
L31180:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L24437:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rcx
  lea    -0x4(%rbp),%rsi
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L28336
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L28336
  nopl   (%rax)
L36912:
  movdqu (%rcx,%rax,1),%xmm0
  movdqu (%rcx,%rax,1),%xmm2
  movdqu (%rsi,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L36912
  cmp    %r14d,-0x60(%rsp)
  je     L2717
  mov    -0x30(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L2717
  mov    -0x28(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L2717
  mov    -0x20(%rsp),%rdx
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L2717:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L38401
  mov    %eax,%r12d
  jmp    L24437
  nopl   (%rax)
L28336:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L20457:
  mov    (%rcx,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rsi,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L20457
  jmp    L2717
  nopl   0x0(%rax,%rax,1)
L38401:
  movslq %r14d,%rax
  movd   %r9d,%xmm7
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm7,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L10789:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L36029
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L36029
  nopl   (%rax)
L37817:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm5
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L37817
  cmp    %r14d,-0x60(%rsp)
  je     L27967
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L27967
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L27967
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L27967:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L17140
  mov    %eax,%r12d
  jmp    L10789
  nopl   (%rax)
L36029:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L32204:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L32204
  jmp    L27967
  nopl   0x0(%rax,%rax,1)
L17140:
  movslq %r14d,%rax
  movd   %r9d,%xmm5
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm5,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L37371:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L30932
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L30932
  nopl   (%rax)
L39007:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm6
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm6,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L39007
  cmp    %r14d,-0x60(%rsp)
  je     L5381
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L5381
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L5381
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L5381:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L35757
  mov    %eax,%r12d
  jmp    L37371
  nopl   (%rax)
L30932:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L2318:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L2318
  jmp    L5381
  nopl   0x0(%rax,%rax,1)
L35757:
  movslq %r14d,%rax
  movd   %r9d,%xmm6
  mov    -0x50(%rsp),%rbp
  xor    %r12d,%r12d
  mov    %rax,-0x30(%rsp)
  movslq -0x5c(%rsp),%rax
  pshufd $0x0,%xmm6,%xmm3
  movdqa %xmm3,%xmm4
  mov    -0x58(%rsp),%rbx
  mov    -0x48(%rsp),%rdi
  mov    %rax,-0x28(%rsp)
  movslq -0x38(%rsp),%rax
  psrlq  $0x20,%xmm4
  mov    %rax,-0x20(%rsp)
  nopl   0x0(%rax)
L34473:
  mov    %rdi,%rax
  lea    -0x4(%rbx),%rsi
  lea    -0x4(%rbp),%rcx
  sub    %rbp,%rax
  cmp    $0x8,%rax
  mov    %rdi,%rax
  seta   %dl
  sub    %rbx,%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L29009
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L29009
  nopl   (%rax)
L28465:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm7
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  pmuludq %xmm4,%xmm0
  movdqa %xmm0,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm7,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L28465
  cmp    %r14d,-0x60(%rsp)
  je     L7816
  mov    -0x30(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L7816
  mov    -0x28(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  cmp    -0x38(%rsp),%r11d
  jle    L7816
  mov    -0x20(%rsp),%rdx
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
L7816:
  lea    0x1(%r12),%eax
  add    %r10,%rdi
  add    %r10,%rbx
  add    %r10,%rbp
  cmp    %r12d,%r15d
  jle    L37957
  mov    %eax,%r12d
  jmp    L34473
  nopl   (%rax)
L29009:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L604:
  mov    (%rsi,%rdx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rdi,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L604
  jmp    L7816
  nopl   0x0(%rax,%rax,1)
L37957:
  movslq -0x38(%rsp),%rax
  movd   %r9d,%xmm7
  xor    %edi,%edi
  movslq %r14d,%rbx
  pshufd $0x0,%xmm7,%xmm3
  movslq -0x5c(%rsp),%rbp
  mov    %rax,-0x30(%rsp)
  movdqa %xmm3,%xmm4
  psrlq  $0x20,%xmm4
  nopw   0x0(%rax,%rax,1)
L19175:
  mov    -0x58(%rsp),%rax
  lea    -0x4(%rax),%rsi
  mov    -0x50(%rsp),%rax
  lea    -0x4(%rax),%rcx
  mov    -0x40(%rsp),%rax
  sub    -0x50(%rsp),%rax
  cmp    $0x8,%rax
  mov    -0x40(%rsp),%rax
  seta   %dl
  sub    -0x58(%rsp),%rax
  cmp    $0x8,%rax
  seta   %al
  test   %al,%dl
  je     L7239
  xor    %eax,%eax
  test   %r13b,%r13b
  je     L7239
  nopw   0x0(%rax,%rax,1)
L2733:
  movdqu (%rsi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm2
  movdqu (%rcx,%rax,1),%xmm5
  mov    -0x40(%rsp),%rdx
  psrlq  $0x20,%xmm0
  pmuludq %xmm3,%xmm2
  movdqa %xmm0,%xmm1
  pmuludq %xmm4,%xmm1
  pshufd $0x8,%xmm2,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm0
  paddd  %xmm5,%xmm0
  movups %xmm0,(%rdx,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L2733
  cmp    %r14d,-0x60(%rsp)
  je     L11785
  mov    (%rsi,%rbx,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rbx,4),%eax
  mov    %eax,(%rdx,%rbx,4)
  cmp    -0x5c(%rsp),%r11d
  jle    L11785
  mov    (%rsi,%rbp,4),%eax
  imul   %r9d,%eax
  add    (%rcx,%rbp,4),%eax
  mov    %eax,(%rdx,%rbp,4)
  cmp    -0x38(%rsp),%r11d
  jle    L11785
  mov    -0x30(%rsp),%rdx
  mov    %r9d,%eax
  imul   (%rsi,%rdx,4),%eax
  mov    -0x40(%rsp),%rsi
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%rsi,%rdx,4)
L11785:
  add    %r10,-0x40(%rsp)
  lea    0x1(%rdi),%eax
  add    %r10,-0x58(%rsp)
  add    %r10,-0x50(%rsp)
  cmp    %edi,%r15d
  jle    L6
  mov    %eax,%edi
  jmp    L19175
  nopl   0x0(%rax)
L7239:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L20517:
  mov    (%rsi,%rdx,4),%eax
  mov    -0x40(%rsp),%r12
  imul   %r9d,%eax
  add    (%rcx,%rdx,4),%eax
  mov    %eax,(%r12,%rdx,4)
  add    $0x1,%rdx
  cmp    %edx,%r11d
  jg     L20517
  jmp    L11785
```

assistant: ```c
int multiply(int n, int a, int tab1[n][n], int tab2[n][n], int tab3[n][n]) {
  int i, j, k;
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      tab3[i][j] = a * tab1[i][j] + tab2[i][j];
    }
  }
  return tab3[n / 2][n / 2];
}
```