user: 这段汇编代码用C语言表示是什么样的?

```asm
<fir3>:
  endbr64
  test   %r8d,%r8d
  jle    L37
  push   %rbp
  mov    %rdx,%r10
  movslq %r8d,%rdx
  mov    %rsi,%rax
  push   %rbx
  lea    (%r10,%rdx,2),%rdx
  mov    %rdi,%rbx
  lea    0x40(%rax),%rdi
  mov    %r9d,%ecx
  lea    -0x1(%r8),%esi
  sub    $0x4e0,%rsp
  cmp    %rdx,%rax
  setae  %dl
  cmp    %rdi,%r10
  setae  %dil
  or     %dil,%dl
  lea    0x2(%rbx),%rdi
  je     L5
  mov    %r10,%rdx
  sub    %rdi,%rdx
  cmp    $0x4a,%rdx
  seta   %r9b
  cmp    $0x6,%esi
  seta   %dl
  test   %dl,%r9b
  je     L5
  movzwl (%rax),%edx
  mov    %r8d,%edi
  mov    %r10,%rsi
  shr    $0x3,%edi
  movd   %edx,%xmm0
  movzwl 0x2(%rax),%edx
  sub    $0x1,%edi
  punpcklwd %xmm0,%xmm0
  shl    $0x4,%rdi
  pshufd $0x0,%xmm0,%xmm6
  movd   %edx,%xmm0
  movzwl 0x4(%rax),%edx
  lea    0x10(%rbx,%rdi,1),%r9
  punpcklwd %xmm0,%xmm0
  movaps %xmm6,0x2d8(%rsp)
  movslq %ecx,%rdi
  pshufd $0x0,%xmm0,%xmm6
  movd   %edx,%xmm0
  movzwl 0x6(%rax),%edx
  punpcklwd %xmm0,%xmm0
  movaps %xmm6,0x2e8(%rsp)
  pshufd $0x0,%xmm0,%xmm6
  movd   %edx,%xmm0
  movzwl 0x8(%rax),%edx
  punpcklwd %xmm0,%xmm0
  movaps %xmm6,0x2f8(%rsp)
  pshufd $0x0,%xmm0,%xmm6
  movd   %edx,%xmm0
  movzwl 0xa(%rax),%edx
  punpcklwd %xmm0,%xmm0
  movaps %xmm6,0x308(%rsp)
  pshufd $0x0,%xmm0,%xmm6
  movd   %edx,%xmm0
  movzwl 0xc(%rax),%edx
  punpcklwd %xmm0,%xmm0
  movaps %xmm6,0x318(%rsp)
  pshufd $0x0,%xmm0,%xmm6
  movd   %edx,%xmm0
  movzwl 0xe(%rax),%edx
  punpcklwd %xmm0,%xmm0
  movaps %xmm6,0x328(%rsp)
  pshufd $0x0,%xmm0,%xmm6
  movd   %edx,%xmm0
  movzwl 0x10(%rax),%edx
  punpcklwd %xmm0,%xmm0
  movaps %xmm6,0x338(%rsp)
  pshufd $0x0,%xmm0,%xmm6
  movd   %edx,%xmm0
  movzwl 0x12(%rax),%edx
  punpcklwd %xmm0,%xmm0
  movaps %xmm6,0x348(%rsp)
  pshufd $0x0,%xmm0,%xmm6
  movd   %edx,%xmm0
  movzwl 0x14(%rax),%edx
  punpcklwd %xmm0,%xmm0
  movaps %xmm6,0x358(%rsp)
  pshufd $0x0,%xmm0,%xmm6
  movd   %edx,%xmm0
  movzwl 0x16(%rax),%edx
  punpcklwd %xmm0,%xmm0
  movaps %xmm6,0x368(%rsp)
  pshufd $0x0,%xmm0,%xmm6
  movd   %edx,%xmm0
  movzwl 0x18(%rax),%edx
  punpcklwd %xmm0,%xmm0
  movaps %xmm6,0x378(%rsp)
  pshufd $0x0,%xmm0,%xmm6
  movd   %edx,%xmm0
  movzwl 0x1a(%rax),%edx
  punpcklwd %xmm0,%xmm0
  movaps %xmm6,0x388(%rsp)
  pshufd $0x0,%xmm0,%xmm6
  movd   %edx,%xmm0
  movzwl 0x1c(%rax),%edx
  punpcklwd %xmm0,%xmm0
  movaps %xmm6,0x398(%rsp)
  pshufd $0x0,%xmm0,%xmm6
  movd   %edx,%xmm0
  movzwl 0x1e(%rax),%edx
  punpcklwd %xmm0,%xmm0
  movaps %xmm6,0x3a8(%rsp)
  pshufd $0x0,%xmm0,%xmm6
  movd   %edx,%xmm0
  punpcklwd %xmm0,%xmm0
  movaps %xmm6,0x3b8(%rsp)
  pshufd $0x0,%xmm0,%xmm6
  movaps %xmm6,0x3c8(%rsp)
  movzwl 0x20(%rax),%edx
  movd   %edx,%xmm0
  movzwl 0x22(%rax),%edx
  punpcklwd %xmm0,%xmm0
  pshufd $0x0,%xmm0,%xmm6
  movd   %edx,%xmm0
  movzwl 0x24(%rax),%edx
  punpcklwd %xmm0,%xmm0
  movaps %xmm6,0x3d8(%rsp)
  pshufd $0x0,%xmm0,%xmm6
  movd   %edx,%xmm0
  movzwl 0x26(%rax),%edx
  punpcklwd %xmm0,%xmm0
  movaps %xmm6,0x3e8(%rsp)
  pshufd $0x0,%xmm0,%xmm6
  movd   %edx,%xmm0
  movzwl 0x28(%rax),%edx
  punpcklwd %xmm0,%xmm0
  movaps %xmm6,0x3f8(%rsp)
  pshufd $0x0,%xmm0,%xmm4
  movd   %edx,%xmm0
  movzwl 0x2a(%rax),%edx
  punpcklwd %xmm0,%xmm0
  movaps %xmm4,0x408(%rsp)
  pshufd $0x0,%xmm0,%xmm6
  movd   %edx,%xmm0
  movzwl 0x2c(%rax),%edx
  punpcklwd %xmm0,%xmm0
  movaps %xmm6,0x418(%rsp)
  pshufd $0x0,%xmm0,%xmm4
  movd   %edx,%xmm0
  movzwl 0x2e(%rax),%edx
  punpcklwd %xmm0,%xmm0
  movaps %xmm4,0x428(%rsp)
  pshufd $0x0,%xmm0,%xmm6
  movd   %edx,%xmm0
  movzwl 0x30(%rax),%edx
  punpcklwd %xmm0,%xmm0
  movaps %xmm6,0x438(%rsp)
  pshufd $0x0,%xmm0,%xmm4
  movd   %edx,%xmm0
  movzwl 0x32(%rax),%edx
  punpcklwd %xmm0,%xmm0
  movaps %xmm4,0x448(%rsp)
  pshufd $0x0,%xmm0,%xmm6
  movd   %edx,%xmm0
  movzwl 0x34(%rax),%edx
  punpcklwd %xmm0,%xmm0
  movaps %xmm6,0x458(%rsp)
  pshufd $0x0,%xmm0,%xmm4
  movd   %edx,%xmm0
  movzwl 0x36(%rax),%edx
  punpcklwd %xmm0,%xmm0
  movaps %xmm4,0x468(%rsp)
  pshufd $0x0,%xmm0,%xmm6
  movd   %edx,%xmm0
  movzwl 0x38(%rax),%edx
  punpcklwd %xmm0,%xmm0
  movaps %xmm6,0x478(%rsp)
  pshufd $0x0,%xmm0,%xmm4
  movd   %edx,%xmm0
  movzwl 0x3a(%rax),%edx
  punpcklwd %xmm0,%xmm0
  movaps %xmm4,0x488(%rsp)
  pshufd $0x0,%xmm0,%xmm6
  movd   %edx,%xmm0
  movzwl 0x3c(%rax),%edx
  punpcklwd %xmm0,%xmm0
  movaps %xmm6,0x498(%rsp)
  pshufd $0x0,%xmm0,%xmm4
  movd   %edx,%xmm0
  movzwl 0x3e(%rax),%edx
  punpcklwd %xmm0,%xmm0
  movaps %xmm4,0x4a8(%rsp)
  pshufd $0x0,%xmm0,%xmm6
  movd   %edx,%xmm0
  mov    %rbx,%rdx
  punpcklwd %xmm0,%xmm0
  movaps %xmm6,0x4b8(%rsp)
  pshufd $0x0,%xmm0,%xmm4
  movaps %xmm4,0x4c8(%rsp)
  nopw   0x0(%rax,%rax,1)
L54:
  movdqu (%rdx),%xmm6
  movdqu (%rdx),%xmm7
  add    $0x10,%rdx
  add    $0x10,%rsi
  movdqa 0x2d8(%rsp),%xmm4
  movdqu -0xa(%rdx),%xmm3
  movdqa 0x2e8(%rsp),%xmm5
  movdqu -0x8(%rdx),%xmm9
  pmullw %xmm4,%xmm6
  pmulhw %xmm4,%xmm7
  movdqu -0xe(%rdx),%xmm4
  movdqa 0x2f8(%rsp),%xmm2
  movdqa 0x308(%rsp),%xmm11
  movdqu -0x8(%rdx),%xmm12
  pmulhw %xmm5,%xmm4
  movdqu -0x6(%rdx),%xmm8
  movdqa 0x318(%rsp),%xmm10
  movdqa 0x328(%rsp),%xmm13
  pmulhw %xmm11,%xmm3
  movdqa 0x338(%rsp),%xmm15
  pmullw %xmm10,%xmm9
  pmulhw %xmm10,%xmm12
  movdqu -0x6(%rdx),%xmm10
  movdqa %xmm6,%xmm0
  movaps %xmm7,-0x68(%rsp)
  pmulhw %xmm13,%xmm8
  punpcklwd %xmm7,%xmm0
  movdqu -0xe(%rdx),%xmm7
  pmullw %xmm13,%xmm10
  movaps %xmm6,-0x78(%rsp)
  movaps %xmm4,-0x48(%rsp)
  pmullw %xmm5,%xmm7
  movdqu -0xc(%rdx),%xmm5
  movaps %xmm9,0x8(%rsp)
  pmulhw %xmm2,%xmm5
  movaps %xmm12,0x18(%rsp)
  movaps %xmm10,0x28(%rsp)
  movaps %xmm8,0x38(%rsp)
  movdqa %xmm7,%xmm1
  movaps %xmm7,-0x58(%rsp)
  punpcklwd %xmm4,%xmm1
  movdqu -0xc(%rdx),%xmm4
  movaps %xmm5,-0x28(%rsp)
  paddd  %xmm0,%xmm1
  pmullw %xmm2,%xmm4
  movdqa %xmm4,%xmm2
  movaps %xmm4,-0x38(%rsp)
  punpcklwd %xmm5,%xmm2
  movdqu -0xa(%rdx),%xmm5
  pmullw %xmm11,%xmm5
  movdqa %xmm3,%xmm11
  movaps %xmm11,-0x8(%rsp)
  movdqa %xmm5,%xmm3
  movaps %xmm5,-0x18(%rsp)
  punpcklwd %xmm11,%xmm3
  movdqu -0x4(%rdx),%xmm11
  movdqu -0x4(%rdx),%xmm13
  movdqa %xmm3,%xmm0
  movdqu 0x6(%rdx),%xmm4
  movdqa 0x348(%rsp),%xmm6
  pmullw %xmm15,%xmm11
  pmulhw %xmm15,%xmm13
  paddd  %xmm2,%xmm0
  movdqu -0x2(%rdx),%xmm15
  movdqa %xmm9,%xmm2
  paddd  %xmm0,%xmm1
  movdqa %xmm10,%xmm0
  movdqa 0x358(%rsp),%xmm10
  punpcklwd %xmm12,%xmm2
  pmulhw %xmm6,%xmm15
  punpcklwd %xmm8,%xmm0
  movdqa 0x368(%rsp),%xmm9
  paddd  %xmm2,%xmm0
  movdqa 0x378(%rsp),%xmm2
  paddd  %xmm0,%xmm1
  movdqa %xmm11,%xmm12
  movaps %xmm13,0x58(%rsp)
  punpcklwd %xmm13,%xmm12
  movdqu -0x2(%rdx),%xmm13
  movaps %xmm11,0x48(%rsp)
  movdqa 0x388(%rsp),%xmm11
  movaps %xmm15,0x78(%rsp)
  pmullw %xmm6,%xmm13
  movdqu (%rdx),%xmm6
  pmullw %xmm11,%xmm4
  pmulhw %xmm10,%xmm6
  movdqa %xmm13,%xmm8
  movdqa %xmm4,%xmm5
  movaps %xmm13,0x68(%rsp)
  punpcklwd %xmm15,%xmm8
  movdqu (%rdx),%xmm15
  movaps %xmm4,0xd8(%rsp)
  movaps %xmm6,0x98(%rsp)
  movdqa %xmm8,%xmm0
  pmullw %xmm10,%xmm15
  movdqu 0x2(%rdx),%xmm10
  paddd  %xmm12,%xmm0
  movdqa 0x398(%rsp),%xmm12
  paddd  %xmm0,%xmm1
  pmulhw %xmm9,%xmm10
  movaps %xmm15,0x88(%rsp)
  movdqa %xmm15,%xmm14
  punpcklwd %xmm6,%xmm14
  movdqu 0x2(%rdx),%xmm6
  movaps %xmm10,0xb8(%rsp)
  pmullw %xmm9,%xmm6
  movdqu 0x4(%rdx),%xmm9
  pmullw %xmm2,%xmm9
  movaps %xmm6,0xa8(%rsp)
  movdqa %xmm6,%xmm7
  punpcklwd %xmm10,%xmm7
  movdqa %xmm9,%xmm15
  movdqu 0x4(%rdx),%xmm9
  movdqa %xmm7,%xmm0
  movdqa %xmm15,%xmm3
  paddd  %xmm14,%xmm0
  pmulhw %xmm2,%xmm9
  movdqu 0x6(%rdx),%xmm2
  pmulhw %xmm11,%xmm2
  movdqu 0x8(%rdx),%xmm11
  pmulhw %xmm12,%xmm11
  movaps %xmm9,0xc8(%rsp)
  punpcklwd %xmm9,%xmm3
  punpcklwd %xmm2,%xmm5
  movaps %xmm2,0xe8(%rsp)
  movdqa %xmm5,%xmm2
  movaps %xmm11,0x108(%rsp)
  paddd  %xmm3,%xmm2
  movdqu 0x8(%rdx),%xmm3
  paddd  %xmm2,%xmm0
  pmullw %xmm12,%xmm3
  movaps %xmm3,0xf8(%rsp)
  movdqu 0xa(%rdx),%xmm12
  movdqa 0x3a8(%rsp),%xmm13
  punpcklwd %xmm11,%xmm3
  movdqu 0xa(%rdx),%xmm8
  movdqu 0xc(%rdx),%xmm10
  pmullw %xmm13,%xmm12
  movdqu 0x12(%rdx),%xmm4
  movdqa 0x3c8(%rsp),%xmm7
  movdqa 0x3d8(%rsp),%xmm6
  pmulhw %xmm13,%xmm8
  movdqa 0x3b8(%rsp),%xmm13
  movdqa 0x3e8(%rsp),%xmm5
  pmulhw %xmm13,%xmm10
  pmulhw %xmm5,%xmm4
  movaps %xmm12,0x118(%rsp)
  movdqa %xmm12,%xmm2
  movaps %xmm8,0x128(%rsp)
  punpcklwd %xmm8,%xmm2
  movdqu 0xc(%rdx),%xmm8
  paddd  %xmm3,%xmm2
  movdqa 0x3f8(%rsp),%xmm3
  pmullw %xmm13,%xmm8
  movdqu 0xe(%rdx),%xmm13
  paddd  %xmm2,%xmm0
  movaps %xmm10,0x148(%rsp)
  movaps %xmm4,0x1a8(%rsp)
  pmulhw %xmm7,%xmm13
  movaps %xmm8,0x138(%rsp)
  movdqa %xmm8,%xmm9
  punpcklwd %xmm10,%xmm9
  movdqu 0xe(%rdx),%xmm10
  movaps %xmm13,0x168(%rsp)
  pmullw %xmm7,%xmm10
  movdqu 0x12(%rdx),%xmm7
  pmullw %xmm5,%xmm7
  movdqu 0x14(%rdx),%xmm5
  pmullw %xmm3,%xmm5
  movaps %xmm10,0x158(%rsp)
  movdqa %xmm10,%xmm11
  punpcklwd %xmm13,%xmm11
  movdqu 0x10(%rdx),%xmm13
  movdqa %xmm11,%xmm2
  movaps %xmm7,0x198(%rsp)
  paddd  %xmm9,%xmm2
  pmullw %xmm6,%xmm13
  movdqu 0x16(%rdx),%xmm9
  paddd  %xmm2,%xmm0
  movaps %xmm5,0x1b8(%rsp)
  paddd  %xmm0,%xmm1
  movdqu 0x10(%rdx),%xmm0
  pmulhw %xmm6,%xmm0
  movaps %xmm13,0x178(%rsp)
  movdqa %xmm0,%xmm6
  movdqa %xmm13,%xmm0
  punpcklwd %xmm6,%xmm0
  movaps %xmm6,0x188(%rsp)
  movdqa %xmm7,%xmm6
  movdqa 0x408(%rsp),%xmm7
  punpcklwd %xmm4,%xmm6
  movdqa %xmm5,%xmm4
  movdqa %xmm6,%xmm2
  pmullw %xmm7,%xmm9
  paddd  %xmm0,%xmm2
  movdqu 0x14(%rdx),%xmm0
  pmulhw %xmm3,%xmm0
  movaps %xmm0,0x1c8(%rsp)
  movdqu 0x16(%rdx),%xmm12
  punpcklwd %xmm0,%xmm4
  movdqu 0x18(%rdx),%xmm3
  movdqa %xmm9,%xmm0
  movdqu 0x22(%rdx),%xmm6
  movdqa 0x428(%rsp),%xmm5
  movaps %xmm9,0x1d8(%rsp)
  pmulhw %xmm7,%xmm12
  movdqu 0x22(%rdx),%xmm8
  movdqa 0x418(%rsp),%xmm7
  movdqa 0x438(%rsp),%xmm9
  movdqa 0x448(%rsp),%xmm14
  movdqa 0x468(%rsp),%xmm10
  pmullw %xmm7,%xmm3
  pmullw %xmm10,%xmm6
  pmulhw %xmm10,%xmm8
  movaps %xmm12,0x1e8(%rsp)
  punpcklwd %xmm12,%xmm0
  paddd  %xmm4,%xmm0
  movdqa %xmm3,%xmm13
  movdqu 0x18(%rdx),%xmm3
  paddd  %xmm0,%xmm2
  pmulhw %xmm7,%xmm3
  movdqa %xmm13,%xmm7
  movdqa %xmm6,%xmm10
  movaps %xmm8,0x258(%rsp)
  punpcklwd %xmm8,%xmm10
  punpcklwd %xmm3,%xmm7
  movaps %xmm3,0x1f8(%rsp)
  movdqa %xmm7,%xmm4
  movdqu 0x1a(%rdx),%xmm7
  pmullw %xmm5,%xmm7
  movdqa %xmm7,%xmm0
  movdqu 0x1a(%rdx),%xmm7
  pmulhw %xmm5,%xmm7
  movdqa %xmm0,%xmm5
  punpcklwd %xmm7,%xmm5
  movaps %xmm7,0x208(%rsp)
  movdqa %xmm5,%xmm3
  movdqu 0x1c(%rdx),%xmm5
  paddd  %xmm4,%xmm3
  pmullw %xmm9,%xmm5
  paddd  %xmm3,%xmm2
  movdqa %xmm5,%xmm12
  movdqu 0x1c(%rdx),%xmm5
  pmulhw %xmm9,%xmm5
  movdqa %xmm12,%xmm9
  punpcklwd %xmm5,%xmm9
  movaps %xmm5,0x218(%rsp)
  movdqa %xmm9,%xmm4
  movdqu 0x1e(%rdx),%xmm9
  pmullw %xmm14,%xmm9
  movdqa %xmm9,%xmm7
  movdqu 0x1e(%rdx),%xmm9
  pmulhw %xmm14,%xmm9
  movdqa %xmm7,%xmm14
  movaps %xmm9,0x228(%rsp)
  punpcklwd %xmm9,%xmm14
  movdqa %xmm14,%xmm3
  movdqa 0x458(%rsp),%xmm14
  paddd  %xmm4,%xmm3
  movdqa 0x478(%rsp),%xmm4
  paddd  %xmm3,%xmm2
  movdqa %xmm10,%xmm3
  paddd  %xmm2,%xmm1
  movdqu 0x20(%rdx),%xmm2
  movaps %xmm1,0x238(%rsp)
  pmullw %xmm14,%xmm2
  movdqa %xmm2,%xmm11
  movdqu 0x20(%rdx),%xmm2
  pmulhw %xmm14,%xmm2
  movdqa %xmm2,%xmm14
  movdqa %xmm11,%xmm2
  movaps %xmm14,0x248(%rsp)
  punpcklwd %xmm14,%xmm2
  paddd  %xmm2,%xmm3
  movdqu 0x24(%rdx),%xmm2
  pmullw %xmm4,%xmm2
  movdqa %xmm2,%xmm10
  movdqu 0x24(%rdx),%xmm2
  movdqa %xmm10,%xmm5
  pmulhw %xmm4,%xmm2
  punpcklwd %xmm2,%xmm5
  movaps %xmm2,0x268(%rsp)
  movdqu 0x26(%rdx),%xmm4
  movdqa 0x488(%rsp),%xmm2
  movdqu 0x26(%rdx),%xmm9
  movdqu 0x2a(%rdx),%xmm14
  movdqa 0x4c8(%rsp),%xmm1
  pmullw %xmm2,%xmm4
  pmulhw %xmm2,%xmm9
  movdqa %xmm4,%xmm2
  movaps %xmm9,0x278(%rsp)
  punpcklwd %xmm9,%xmm2
  paddd  %xmm5,%xmm2
  movdqu 0x28(%rdx),%xmm5
  paddd  %xmm2,%xmm3
  movdqa 0x498(%rsp),%xmm2
  pmullw %xmm2,%xmm5
  movdqa %xmm5,%xmm9
  movdqu 0x28(%rdx),%xmm5
  pmulhw %xmm2,%xmm5
  movdqa %xmm9,%xmm2
  punpcklwd %xmm5,%xmm2
  movaps %xmm5,0x288(%rsp)
  movdqa 0x4a8(%rsp),%xmm5
  movdqa %xmm2,%xmm8
  movdqu 0x2a(%rdx),%xmm2
  pmulhw %xmm5,%xmm14
  pmullw %xmm5,%xmm2
  movaps %xmm14,0x298(%rsp)
  movdqa %xmm2,%xmm5
  punpcklwd %xmm14,%xmm5
  movdqa 0x4b8(%rsp),%xmm14
  paddd  %xmm8,%xmm5
  movdqu 0x2c(%rdx),%xmm8
  paddd  %xmm5,%xmm3
  movdqu 0x2c(%rdx),%xmm5
  pmullw %xmm14,%xmm8
  pmulhw %xmm14,%xmm5
  movdqa %xmm8,%xmm14
  punpcklwd %xmm5,%xmm14
  movaps %xmm5,0x2a8(%rsp)
  movdqu 0x2e(%rdx),%xmm5
  movaps %xmm14,0x2b8(%rsp)
  movdqu 0x2e(%rdx),%xmm14
  pmullw %xmm1,%xmm5
  pmulhw %xmm1,%xmm14
  movdqa %xmm5,%xmm1
  movaps %xmm14,0x2c8(%rsp)
  punpcklwd %xmm14,%xmm1
  movdqa %xmm1,%xmm14
  paddd  0x2b8(%rsp),%xmm14
  movdqa 0x238(%rsp),%xmm1
  paddd  %xmm14,%xmm3
  movdqa -0x38(%rsp),%xmm14
  punpckhwd -0x28(%rsp),%xmm14
  paddd  %xmm3,%xmm1
  movq   %rdi,%xmm3
  psrad  %xmm3,%xmm1
  movdqa -0x58(%rsp),%xmm3
  punpckhwd -0x48(%rsp),%xmm3
  movaps %xmm1,0x238(%rsp)
  movdqa -0x78(%rsp),%xmm1
  punpckhwd -0x68(%rsp),%xmm1
  paddd  %xmm1,%xmm3
  movdqa -0x18(%rsp),%xmm1
  punpckhwd -0x8(%rsp),%xmm1
  paddd  %xmm14,%xmm1
  movdqa 0x8(%rsp),%xmm14
  punpckhwd 0x18(%rsp),%xmm14
  punpckhwd 0xc8(%rsp),%xmm15
  paddd  %xmm3,%xmm1
  movdqa 0x28(%rsp),%xmm3
  punpckhwd 0x1f8(%rsp),%xmm13
  punpckhwd 0x38(%rsp),%xmm3
  paddd  %xmm14,%xmm3
  movdqa 0x48(%rsp),%xmm14
  punpckhwd 0x58(%rsp),%xmm14
  paddd  %xmm1,%xmm3
  movdqa 0x68(%rsp),%xmm1
  punpckhwd 0x78(%rsp),%xmm1
  paddd  %xmm14,%xmm1
  movdqa 0x88(%rsp),%xmm14
  punpckhwd 0x98(%rsp),%xmm14
  paddd  %xmm1,%xmm3
  movdqa 0xa8(%rsp),%xmm1
  punpckhwd 0xb8(%rsp),%xmm1
  paddd  %xmm14,%xmm1
  movdqa 0xd8(%rsp),%xmm14
  punpckhwd 0xe8(%rsp),%xmm14
  paddd  %xmm15,%xmm14
  movdqa 0xf8(%rsp),%xmm15
  punpckhwd 0x108(%rsp),%xmm15
  paddd  %xmm1,%xmm14
  movdqa 0x118(%rsp),%xmm1
  punpckhwd 0x128(%rsp),%xmm1
  paddd  %xmm15,%xmm1
  movdqa 0x138(%rsp),%xmm15
  punpckhwd 0x148(%rsp),%xmm15
  paddd  %xmm14,%xmm1
  movdqa 0x158(%rsp),%xmm14
  punpckhwd 0x168(%rsp),%xmm14
  paddd  %xmm15,%xmm14
  movdqa 0x1d8(%rsp),%xmm15
  punpckhwd 0x1e8(%rsp),%xmm15
  paddd  %xmm14,%xmm1
  movdqa 0x198(%rsp),%xmm14
  punpckhwd 0x1a8(%rsp),%xmm14
  paddd  %xmm3,%xmm1
  movdqa 0x178(%rsp),%xmm3
  punpckhwd 0x188(%rsp),%xmm3
  paddd  %xmm3,%xmm14
  movdqa 0x1b8(%rsp),%xmm3
  punpckhwd 0x1c8(%rsp),%xmm3
  punpckhwd 0x208(%rsp),%xmm0
  punpckhwd 0x248(%rsp),%xmm11
  punpckhwd 0x258(%rsp),%xmm6
  paddd  %xmm3,%xmm15
  punpckhwd 0x268(%rsp),%xmm10
  punpckhwd 0x278(%rsp),%xmm4
  paddd  %xmm14,%xmm15
  punpckhwd 0x218(%rsp),%xmm12
  punpckhwd 0x228(%rsp),%xmm7
  paddd  %xmm11,%xmm6
  paddd  %xmm13,%xmm0
  punpckhwd 0x288(%rsp),%xmm9
  paddd  %xmm10,%xmm4
  punpckhwd 0x298(%rsp),%xmm2
  punpckhwd 0x2a8(%rsp),%xmm8
  paddd  %xmm6,%xmm4
  paddd  %xmm15,%xmm0
  movdqa 0x238(%rsp),%xmm6
  punpckhwd 0x2c8(%rsp),%xmm5
  paddd  %xmm12,%xmm7
  paddd  %xmm9,%xmm2
  paddd  %xmm4,%xmm2
  paddd  %xmm7,%xmm0
  movq   %rdi,%xmm4
  paddd  %xmm8,%xmm5
  paddd  %xmm1,%xmm0
  movdqa %xmm6,%xmm1
  paddd  %xmm5,%xmm2
  paddd  %xmm2,%xmm0
  movdqa %xmm6,%xmm2
  psrad  %xmm4,%xmm0
  punpcklwd %xmm0,%xmm2
  punpckhwd %xmm0,%xmm1
  movdqa %xmm2,%xmm0
  punpcklwd %xmm1,%xmm2
  punpckhwd %xmm1,%xmm0
  punpcklwd %xmm0,%xmm2
  movups %xmm2,-0x10(%rsi)
  cmp    %r9,%rdx
  jne    L54
  mov    %r8d,%r11d
  and    $0xfffffff8,%r11d
  test   $0x7,%r8b
  je     L63
  lea    (%rbx,%r11,2),%rdx
  cs nopw 0x0(%rax,%rax,1)
L4:
  movswl 0x6(%rdx),%edi
  movswl 0x6(%rax),%esi
  movswl 0x4(%rdx),%r9d
  movswl (%rdx),%ebx
  imul   %edi,%esi
  movswl 0x4(%rax),%edi
  movswl 0x10(%rdx),%ebp
  imul   %r9d,%edi
  movswl 0x2(%rdx),%r9d
  add    %edi,%esi
  movswl 0x2(%rax),%edi
  imul   %r9d,%edi
  movswl (%rax),%r9d
  imul   %ebx,%r9d
  movswl 0x8(%rdx),%ebx
  add    %r9d,%edi
  movswl 0xa(%rdx),%r9d
  add    %edi,%esi
  movswl 0xa(%rax),%edi
  imul   %r9d,%edi
  movswl 0x8(%rax),%r9d
  imul   %ebx,%r9d
  movswl 0xc(%rdx),%ebx
  add    %r9d,%edi
  movswl 0xe(%rdx),%r9d
  add    %edi,%esi
  movswl 0xe(%rax),%edi
  imul   %r9d,%edi
  movswl 0xc(%rax),%r9d
  imul   %ebx,%r9d
  movswl 0x14(%rdx),%ebx
  add    %r9d,%edi
  movswl 0x16(%rdx),%r9d
  add    %edi,%esi
  movswl 0x16(%rax),%edi
  imul   %r9d,%edi
  movswl 0x14(%rax),%r9d
  imul   %ebx,%r9d
  movswl 0x12(%rdx),%ebx
  add    %r9d,%edi
  movswl 0x12(%rax),%r9d
  imul   %ebx,%r9d
  movswl 0x10(%rax),%ebx
  imul   %ebp,%ebx
  movswl 0x18(%rdx),%ebp
  add    %ebx,%r9d
  movswl 0x1a(%rdx),%ebx
  add    %r9d,%edi
  movswl 0x1a(%rax),%r9d
  imul   %ebx,%r9d
  movswl 0x18(%rax),%ebx
  imul   %ebp,%ebx
  movswl 0x1c(%rdx),%ebp
  add    %ebx,%r9d
  movswl 0x1e(%rdx),%ebx
  add    %r9d,%edi
  movswl 0x1e(%rax),%r9d
  imul   %ebx,%r9d
  movswl 0x1c(%rax),%ebx
  imul   %ebp,%ebx
  add    %ebx,%r9d
  add    %r9d,%edi
  add    %edi,%esi
  movswl 0x26(%rax),%edi
  movswl 0x26(%rdx),%r9d
  movswl 0x24(%rdx),%ebx
  movswl 0x20(%rdx),%ebp
  imul   %r9d,%edi
  movswl 0x24(%rax),%r9d
  imul   %ebx,%r9d
  movswl 0x22(%rdx),%ebx
  add    %r9d,%edi
  movswl 0x22(%rax),%r9d
  imul   %ebx,%r9d
  movswl 0x20(%rax),%ebx
  imul   %ebp,%ebx
  movswl 0x28(%rdx),%ebp
  add    %ebx,%r9d
  movswl 0x2a(%rdx),%ebx
  add    %r9d,%edi
  movswl 0x2a(%rax),%r9d
  imul   %ebx,%r9d
  movswl 0x28(%rax),%ebx
  imul   %ebp,%ebx
  movswl 0x2c(%rdx),%ebp
  add    %ebx,%r9d
  movswl 0x2e(%rdx),%ebx
  add    %r9d,%edi
  movswl 0x2e(%rax),%r9d
  imul   %ebx,%r9d
  movswl 0x2c(%rax),%ebx
  imul   %ebp,%ebx
  movswl 0x36(%rax),%ebp
  add    %ebx,%r9d
  movswl 0x30(%rdx),%ebx
  add    %r9d,%edi
  movswl 0x32(%rdx),%r9d
  add    %edi,%esi
  movswl 0x32(%rax),%edi
  imul   %r9d,%edi
  movswl 0x30(%rax),%r9d
  imul   %ebx,%r9d
  movswl 0x34(%rax),%ebx
  add    %r9d,%edi
  movswl 0x34(%rdx),%r9d
  imul   %ebx,%r9d
  movswl 0x36(%rdx),%ebx
  imul   %ebp,%ebx
  movswl 0x3a(%rax),%ebp
  add    %ebx,%r9d
  movswl 0x38(%rax),%ebx
  add    %r9d,%edi
  movswl 0x38(%rdx),%r9d
  imul   %ebx,%r9d
  movswl 0x3a(%rdx),%ebx
  imul   %ebp,%ebx
  movswl 0x3e(%rax),%ebp
  add    %ebx,%r9d
  movswl 0x3c(%rax),%ebx
  add    %r9d,%edi
  movswl 0x3c(%rdx),%r9d
  imul   %ebx,%r9d
  movswl 0x3e(%rdx),%ebx
  imul   %ebp,%ebx
  add    %ebx,%r9d
  add    %r9d,%edi
  add    %edi,%esi
  sar    %cl,%esi
  mov    %si,(%r10,%r11,2)
  add    $0x1,%r11
  add    $0x2,%rdx
  cmp    %r11d,%r8d
  jg     L4
L63:
  add    $0x4e0,%rsp
  pop    %rbx
  pop    %rbp
  ret
  nopw   0x0(%rax,%rax,1)
L5:
  mov    %rbx,%rdx
  lea    (%rdi,%rsi,2),%r8
  nop
L55:
  movswl 0x16(%rdx),%edi
  movswl 0x16(%rax),%esi
  movswl 0x14(%rdx),%r9d
  movswl 0x10(%rdx),%r11d
  imul   %edi,%esi
  movswl 0x14(%rax),%edi
  movswl (%rdx),%ebx
  imul   %r9d,%edi
  movswl 0x12(%rdx),%r9d
  add    %edi,%esi
  movswl 0x12(%rax),%edi
  imul   %r9d,%edi
  movswl 0x10(%rax),%r9d
  imul   %r11d,%r9d
  movswl 0x18(%rdx),%r11d
  add    %r9d,%edi
  movswl 0x1a(%rdx),%r9d
  add    %edi,%esi
  movswl 0x1a(%rax),%edi
  imul   %r9d,%edi
  movswl 0x18(%rax),%r9d
  imul   %r11d,%r9d
  movswl 0x1c(%rdx),%r11d
  add    %r9d,%edi
  movswl 0x1e(%rdx),%r9d
  add    %edi,%esi
  movswl 0x1e(%rax),%edi
  imul   %r9d,%edi
  movswl 0x1c(%rax),%r9d
  imul   %r11d,%r9d
  movswl 0x4(%rdx),%r11d
  add    %r9d,%edi
  movswl 0x6(%rdx),%r9d
  add    %edi,%esi
  movswl 0x6(%rax),%edi
  imul   %r9d,%edi
  movswl 0x4(%rax),%r9d
  imul   %r11d,%r9d
  movswl 0x2(%rdx),%r11d
  add    %r9d,%edi
  movswl 0x2(%rax),%r9d
  imul   %r11d,%r9d
  movswl (%rax),%r11d
  imul   %ebx,%r11d
  movswl 0x8(%rdx),%ebx
  add    %r11d,%r9d
  movswl 0xa(%rdx),%r11d
  add    %r9d,%edi
  movswl 0xa(%rax),%r9d
  imul   %r11d,%r9d
  movswl 0x8(%rax),%r11d
  imul   %ebx,%r11d
  movswl 0xc(%rdx),%ebx
  add    %r11d,%r9d
  movswl 0xe(%rdx),%r11d
  add    %r9d,%edi
  movswl 0xe(%rax),%r9d
  imul   %r11d,%r9d
  movswl 0xc(%rax),%r11d
  imul   %ebx,%r11d
  add    %r11d,%r9d
  add    %r9d,%edi
  add    %edi,%esi
  movswl 0x26(%rax),%edi
  movswl 0x26(%rdx),%r9d
  movswl 0x24(%rdx),%r11d
  movswl 0x20(%rdx),%ebx
  imul   %r9d,%edi
  movswl 0x24(%rax),%r9d
  imul   %r11d,%r9d
  movswl 0x22(%rdx),%r11d
  add    %r9d,%edi
  movswl 0x22(%rax),%r9d
  imul   %r11d,%r9d
  movswl 0x20(%rax),%r11d
  imul   %ebx,%r11d
  movswl 0x28(%rdx),%ebx
  add    %r11d,%r9d
  movswl 0x2a(%rdx),%r11d
  add    %r9d,%edi
  movswl 0x2a(%rax),%r9d
  imul   %r11d,%r9d
  movswl 0x28(%rax),%r11d
  imul   %ebx,%r11d
  movswl 0x2c(%rdx),%ebx
  add    %r11d,%r9d
  movswl 0x2e(%rdx),%r11d
  add    %r9d,%edi
  movswl 0x2e(%rax),%r9d
  imul   %r11d,%r9d
  movswl 0x2c(%rax),%r11d
  imul   %ebx,%r11d
  movswl 0x30(%rdx),%ebx
  add    %r11d,%r9d
  movswl 0x34(%rdx),%r11d
  add    %r9d,%edi
  movswl 0x36(%rdx),%r9d
  add    %edi,%esi
  movswl 0x36(%rax),%edi
  imul   %r9d,%edi
  movswl 0x34(%rax),%r9d
  imul   %r11d,%r9d
  movswl 0x32(%rdx),%r11d
  add    %r9d,%edi
  movswl 0x32(%rax),%r9d
  imul   %r11d,%r9d
  movswl 0x30(%rax),%r11d
  imul   %ebx,%r11d
  movswl 0x38(%rdx),%ebx
  add    %r11d,%r9d
  movswl 0x3a(%rdx),%r11d
  add    %r9d,%edi
  movswl 0x3a(%rax),%r9d
  imul   %r11d,%r9d
  movswl 0x38(%rax),%r11d
  imul   %ebx,%r11d
  movswl 0x3c(%rdx),%ebx
  add    %r11d,%r9d
  movswl 0x3e(%rdx),%r11d
  add    %r9d,%edi
  movswl 0x3e(%rax),%r9d
  imul   %r11d,%r9d
  movswl 0x3c(%rax),%r11d
  imul   %ebx,%r11d
  add    %r11d,%r9d
  add    %r9d,%edi
  add    %edi,%esi
  sar    %cl,%esi
  add    $0x2,%rdx
  add    $0x2,%r10
  mov    %si,-0x2(%r10)
  cmp    %r8,%rdx
  jne    L55
  add    $0x4e0,%rsp
  pop    %rbx
  pop    %rbp
  ret
  nopl   0x0(%rax,%rax,1)
L37:
  ret
```

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