user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<nnp_conv1x1_upto_2x4__scalar>:
  endbr64
  mov    %rdx,%r11
  mov    %rcx,%rdx
  shl    $0x2,%rcx
  push   %r15
  lea    (%r8,%rcx,1),%r10
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    0x38(%rsp),%rax
  movss  (%r9),%xmm0
  cmp    $0x1,%edi
  jle    L794
  movss  0x4(%r9),%xmm1
  cmp    $0x1,%esi
  jle    L242
  shl    $0x2,%r11
  add    %r11,%r9
  movss  (%r9),%xmm2
  movss  0x4(%r9),%xmm4
  cmp    $0x2,%esi
  je     L589
  add    %r11,%r9
  movss  (%r9),%xmm3
  movss  0x4(%r9),%xmm5
  cmp    $0x3,%esi
  je     L357
  add    %r11,%r9
  xor    %esi,%esi
  movss  (%r9),%xmm10
  movss  0x4(%r9),%xmm9
  lea    (%rax,%rcx,1),%r9
  lea    (%r9,%rcx,1),%rdi
  add    %rdi,%rcx
  nopl   0x0(%rax,%rax,1)
L282:
  movss  (%r8,%rsi,4),%xmm6
  movaps %xmm0,%xmm13
  movss  (%rcx,%rsi,4),%xmm7
  movaps %xmm1,%xmm8
  mulss  %xmm6,%xmm13
  movaps %xmm6,%xmm12
  movaps %xmm6,%xmm11
  mulss  %xmm10,%xmm6
  addss  (%rax,%rsi,4),%xmm13
  mulss  %xmm2,%xmm12
  mulss  %xmm3,%xmm11
  addss  (%r9,%rsi,4),%xmm12
  addss  (%rdi,%rsi,4),%xmm11
  addss  %xmm6,%xmm7
  movss  (%r10,%rsi,4),%xmm6
  mulss  %xmm6,%xmm8
  addss  %xmm13,%xmm8
  movss  %xmm8,(%rax,%rsi,4)
  movaps %xmm4,%xmm8
  mulss  %xmm6,%xmm8
  addss  %xmm12,%xmm8
  movss  %xmm8,(%r9,%rsi,4)
  movaps %xmm5,%xmm8
  mulss  %xmm6,%xmm8
  mulss  %xmm9,%xmm6
  addss  %xmm11,%xmm8
  addss  %xmm7,%xmm6
  movss  %xmm8,(%rdi,%rsi,4)
  movss  %xmm6,(%rcx,%rsi,4)
  add    $0x1,%rsi
  cmp    %rsi,%rdx
  jne    L282
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L242:
  lea    0x4(%r8),%rdi
  mov    %rax,%rsi
  sub    %rdi,%rsi
  cmp    $0x8,%rsi
  seta   %dil
  cmp    $0x1,%rdx
  setne  %sil
  test   %sil,%dil
  je     L753
  lea    0x4(%r8,%rcx,1),%rsi
  mov    %rax,%rcx
  sub    %rsi,%rcx
  cmp    $0x8,%rcx
  jbe    L753
  lea    -0x1(%rdx),%rcx
  cmp    $0x2,%rcx
  jbe    L327
  lea    -0x4(%rdx),%rdi
  movaps %xmm0,%xmm5
  movaps %xmm1,%xmm4
  xor    %ecx,%ecx
  shr    $0x2,%rdi
  xor    %esi,%esi
  shufps $0x0,%xmm5,%xmm5
  shufps $0x0,%xmm4,%xmm4
  add    $0x1,%rdi
  nopl   0x0(%rax)
L803:
  movups (%r8,%rcx,1),%xmm2
  movups (%r10,%rcx,1),%xmm3
  add    $0x1,%rsi
  movups (%rax,%rcx,1),%xmm7
  mulps  %xmm5,%xmm2
  mulps  %xmm4,%xmm3
  addps  %xmm7,%xmm2
  addps  %xmm3,%xmm2
  movups %xmm2,(%rax,%rcx,1)
  add    $0x10,%rcx
  cmp    %rsi,%rdi
  ja     L803
  lea    0x0(,%rdi,4),%r9
  shl    $0x4,%rdi
  lea    (%r8,%rdi,1),%rsi
  add    %rdi,%r10
  lea    (%rax,%rdi,1),%rcx
  cmp    %r9,%rdx
  je     L129
  mov    %rdx,%rdi
  sub    %r9,%rdi
  cmp    $0x1,%rdi
  je     L604
L408:
  movaps %xmm1,%xmm3
  movaps %xmm0,%xmm4
  lea    (%rax,%r9,4),%rax
  add    %r9,%rdx
  movq   (%r8,%rdx,4),%xmm2
  shufps $0xe0,%xmm3,%xmm3
  shufps $0xe0,%xmm4,%xmm4
  mov    %rdi,%rdx
  and    $0xfffffffffffffffe,%rdx
  mulps  %xmm3,%xmm2
  movq   (%r8,%r9,4),%xmm3
  mulps  %xmm4,%xmm3
  movq   (%rax),%xmm4
  addps  %xmm4,%xmm3
  addps  %xmm3,%xmm2
  movlps %xmm2,(%rax)
  lea    0x0(,%rdx,4),%rax
  add    %rax,%rsi
  add    %rax,%r10
  add    %rax,%rcx
  cmp    %rdi,%rdx
  je     L129
L604:
  mulss  (%r10),%xmm1
  mulss  (%rsi),%xmm0
  addss  (%rcx),%xmm0
  addss  %xmm0,%xmm1
  movss  %xmm1,(%rcx)
L129:
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L794:
  cmp    $0x1,%esi
  jle    L141
  lea    0x0(,%r11,4),%rbx
  add    %rbx,%r9
  movss  (%r9),%xmm2
  cmp    $0x2,%esi
  je     L811
  add    %rbx,%r9
  movss  (%r9),%xmm3
  cmp    $0x3,%esi
  je     L357
  lea    0x10(%rcx),%r15
  lea    (%rax,%rcx,1),%rsi
  movss  (%r9,%r11,4),%xmm7
  lea    0x10(%rax),%rbx
  test   %r15,%r15
  lea    0x4(%r8),%r12
  setle  %r11b
  cmp    %rbx,%rsi
  mov    %rbx,-0x18(%rsp)
  lea    (%rsi,%rcx,1),%rdi
  setae  %bl
  lea    0x0(,%rdx,8),%r13
  lea    (%rdi,%rcx,1),%r9
  or     %ebx,%r11d
  mov    %rsi,%rbx
  lea    (%rcx,%r13,1),%rbp
  sub    %r12,%rbx
  lea    0x10(%rbp),%r14
  lea    (%rax,%rbp,1),%r10
  cmp    $0x8,%rbx
  mov    %r14,-0x20(%rsp)
  lea    0x10(%r13),%r14
  seta   %bl
  and    %r11d,%ebx
  cmp    $0x1,%rdx
  setne  %r11b
  and    %r11d,%ebx
  mov    %rax,%r11
  sub    %r12,%r11
  cmp    $0x8,%r11
  seta   %r11b
  and    %r11d,%ebx
  cmp    %rcx,%r14
  setle  %r11b
  cmp    %r15,%r13
  setge  -0x9(%rsp)
  or     -0x9(%rsp),%r11b
  and    %ebx,%r11d
  mov    %rdi,%rbx
  sub    %r12,%rbx
  cmp    $0x8,%rbx
  seta   %bl
  and    %ebx,%r11d
  test   %r14,%r14
  setle  %bl
  cmp    -0x18(%rsp),%rdi
  setae  -0x9(%rsp)
  or     -0x9(%rsp),%bl
  and    %r11d,%ebx
  cmp    %r13,-0x20(%rsp)
  setle  %r11b
  cmp    %rbp,%r14
  mov    -0x20(%rsp),%r14
  setle  %r13b
  or     %r13d,%r11d
  and    %ebx,%r11d
  cmp    %rcx,%r14
  setle  %bl
  cmp    %r15,%rbp
  mov    %r10,%r15
  setge  %r13b
  sub    %r12,%r15
  or     %r13d,%ebx
  and    %ebx,%r11d
  cmp    $0x8,%r15
  seta   %bl
  test   %bl,%r11b
  je     L82
  test   %r14,%r14
  setle  %r11b
  cmp    -0x18(%rsp),%r10
  setae  %bl
  or     %bl,%r11b
  je     L82
  lea    -0x1(%rdx),%r11
  cmp    $0x2,%r11
  jbe    L784
  lea    -0x4(%rdx),%r12
  movaps %xmm0,%xmm11
  movaps %xmm2,%xmm10
  xor    %r11d,%r11d
  shr    $0x2,%r12
  movaps %xmm3,%xmm9
  movaps %xmm7,%xmm8
  xor    %ebx,%ebx
  add    $0x1,%r12
  shufps $0x0,%xmm11,%xmm11
  shufps $0x0,%xmm10,%xmm10
  shufps $0x0,%xmm9,%xmm9
  shufps $0x0,%xmm8,%xmm8
  nopl   0x0(%rax)
L760:
  movups (%r8,%r11,1),%xmm1
  movups (%rsi,%r11,1),%xmm6
  add    $0x1,%rbx
  movups (%rdi,%r11,1),%xmm5
  movups (%r10,%r11,1),%xmm14
  movaps %xmm1,%xmm4
  movups (%rax,%r11,1),%xmm15
  mulps  %xmm10,%xmm4
  addps  %xmm4,%xmm6
  movaps %xmm1,%xmm4
  mulps  %xmm9,%xmm4
  addps  %xmm4,%xmm5
  movaps %xmm1,%xmm4
  mulps  %xmm8,%xmm4
  mulps  %xmm11,%xmm1
  addps  %xmm14,%xmm4
  addps  %xmm15,%xmm1
  movups %xmm1,(%rax,%r11,1)
  movups %xmm6,(%rsi,%r11,1)
  movups %xmm5,(%rdi,%r11,1)
  movups %xmm4,(%r10,%r11,1)
  add    $0x10,%r11
  cmp    %r12,%rbx
  jb     L760
  lea    0x0(,%r12,4),%r13
  shl    $0x4,%r12
  lea    (%r8,%r12,1),%rbx
  lea    (%rax,%r12,1),%r10
  add    %r12,%rsi
  add    %r12,%rdi
  add    %r12,%r9
  cmp    %r13,%rdx
  je     L129
  mov    %rdx,%r12
  sub    %r13,%r12
  cmp    $0x1,%r12
  je     L553
L171:
  movq   (%r8,%r13,4),%xmm1
  movaps %xmm2,%xmm5
  add    %r13,%rdx
  movaps %xmm7,%xmm8
  shufps $0xe0,%xmm5,%xmm5
  shl    $0x2,%rdx
  shufps $0xe0,%xmm8,%xmm8
  lea    0x0(,%r13,4),%r11
  mulps  %xmm1,%xmm5
  lea    (%rax,%rdx,1),%r15
  lea    (%rax,%r11,1),%r14
  add    %rcx,%rdx
  movq   (%r15),%xmm4
  add    %rax,%rdx
  add    %rbp,%r11
  movaps %xmm0,%xmm9
  mulps  %xmm1,%xmm8
  add    %r11,%rax
  shufps $0xe0,%xmm9,%xmm9
  addps  %xmm5,%xmm4
  movaps %xmm3,%xmm5
  shufps $0xe0,%xmm5,%xmm5
  mulps  %xmm1,%xmm5
  mulps  %xmm9,%xmm1
  movaps %xmm4,%xmm6
  movq   (%rdx),%xmm4
  addps  %xmm4,%xmm5
  movq   (%rax),%xmm4
  addps  %xmm8,%xmm4
  movq   (%r14),%xmm8
  addps  %xmm1,%xmm8
  movlps %xmm8,(%r14)
  movlps %xmm6,(%r15)
  movlps %xmm5,(%rdx)
  mov    %r12,%rdx
  and    $0xfffffffffffffffe,%rdx
  movlps %xmm4,(%rax)
  lea    0x0(,%rdx,4),%rax
  add    %rax,%rbx
  add    %rax,%r10
  add    %rax,%rsi
  add    %rax,%rdi
  add    %rax,%r9
  cmp    %rdx,%r12
  je     L129
L553:
  movss  (%rbx),%xmm1
  movss  (%rsi),%xmm6
  movss  (%rdi),%xmm5
  movss  (%r9),%xmm4
  mulss  %xmm1,%xmm0
  mulss  %xmm1,%xmm2
  addss  (%r10),%xmm0
  mulss  %xmm1,%xmm3
  mulss  %xmm7,%xmm1
  movss  %xmm0,(%r10)
  addss  %xmm6,%xmm2
  addss  %xmm5,%xmm3
  addss  %xmm4,%xmm1
  movss  %xmm2,(%rsi)
  movss  %xmm3,(%rdi)
  movss  %xmm1,(%r9)
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L811:
  lea    (%rax,%rcx,1),%rsi
  add    $0x10,%rcx
  lea    0x10(%rax),%r9
  test   %rcx,%rcx
  lea    0x4(%r8),%rdi
  setle  %cl
  cmp    %r9,%rsi
  setae  %r9b
  or     %r9d,%ecx
  mov    %rsi,%r9
  sub    %rdi,%r9
  cmp    $0x8,%r9
  seta   %r9b
  and    %r9d,%ecx
  cmp    $0x1,%rdx
  setne  %r9b
  test   %r9b,%cl
  je     L580
  mov    %rax,%rcx
  sub    %rdi,%rcx
  cmp    $0x8,%rcx
  jbe    L580
  lea    -0x1(%rdx),%rcx
  cmp    $0x2,%rcx
  jbe    L445
  lea    -0x4(%rdx),%r9
  movaps %xmm0,%xmm5
  movaps %xmm2,%xmm4
  xor    %ecx,%ecx
  shr    $0x2,%r9
  xor    %edi,%edi
  shufps $0x0,%xmm5,%xmm5
  shufps $0x0,%xmm4,%xmm4
  add    $0x1,%r9
  nopl   0x0(%rax,%rax,1)
L87:
  movups (%r8,%rcx,1),%xmm1
  movups (%rsi,%rcx,1),%xmm3
  add    $0x1,%rdi
  movups (%rax,%rcx,1),%xmm7
  mulps  %xmm4,%xmm1
  addps  %xmm1,%xmm3
  movups (%r8,%rcx,1),%xmm1
  mulps  %xmm5,%xmm1
  addps  %xmm7,%xmm1
  movups %xmm1,(%rax,%rcx,1)
  movups %xmm3,(%rsi,%rcx,1)
  add    $0x10,%rcx
  cmp    %rdi,%r9
  ja     L87
  lea    0x0(,%r9,4),%r10
  shl    $0x4,%r9
  lea    (%r8,%r9,1),%rdi
  lea    (%rax,%r9,1),%rcx
  add    %r9,%rsi
  cmp    %r10,%rdx
  je     L129
  mov    %rdx,%r9
  sub    %r10,%r9
  cmp    $0x1,%r9
  je     L325
L742:
  movq   (%r8,%r10,4),%xmm5
  movaps %xmm2,%xmm3
  add    %r10,%rdx
  movaps %xmm0,%xmm4
  shufps $0xe0,%xmm3,%xmm3
  lea    (%rax,%r10,4),%r11
  shufps $0xe0,%xmm4,%xmm4
  lea    (%rax,%rdx,4),%rax
  mulps  %xmm5,%xmm3
  movq   (%rax),%xmm1
  mov    %r9,%rdx
  mulps  %xmm5,%xmm4
  and    $0xfffffffffffffffe,%rdx
  addps  %xmm3,%xmm1
  movq   (%r11),%xmm3
  addps  %xmm4,%xmm3
  movlps %xmm3,(%r11)
  movlps %xmm1,(%rax)
  lea    0x0(,%rdx,4),%rax
  add    %rax,%rdi
  add    %rax,%rcx
  add    %rax,%rsi
  cmp    %r9,%rdx
  je     L129
L325:
  movss  (%rdi),%xmm1
  movss  (%rsi),%xmm3
  mulss  %xmm1,%xmm0
  mulss  %xmm2,%xmm1
  addss  (%rcx),%xmm0
  movss  %xmm0,(%rcx)
  addss  %xmm3,%xmm1
  movss  %xmm1,(%rsi)
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  xchg   %ax,%ax
L357:
  lea    (%rax,%rcx,1),%r9
  lea    (%r9,%rcx,1),%r11
  cmp    $0x1,%edi
  jle    L174
  lea    0x10(%rcx),%r14
  lea    0x10(%rax),%rbp
  test   %r14,%r14
  lea    0x4(%r8),%rdi
  lea    0x4(%r8,%rcx,1),%rbx
  setle  %sil
  cmp    %rbp,%r9
  lea    0x0(,%rdx,8),%r13
  setae  %r15b
  lea    0x10(%r13),%r12
  or     %r15d,%esi
  mov    %r9,%r15
  sub    %rdi,%r15
  cmp    $0x8,%r15
  seta   %r15b
  and    %r15d,%esi
  cmp    $0x1,%rdx
  setne  %r15b
  and    %r15d,%esi
  mov    %rax,%r15
  sub    %rdi,%r15
  cmp    $0x8,%r15
  seta   %r15b
  and    %r15d,%esi
  mov    %r11,%r15
  sub    %rbx,%r15
  cmp    $0x8,%r15
  seta   %r15b
  and    %r15d,%esi
  cmp    %rcx,%r12
  setle  %r15b
  cmp    %r13,%r14
  setle  %r13b
  or     %r15d,%r13d
  and    %r13d,%esi
  mov    %r11,%r13
  sub    %rdi,%r13
  cmp    $0x8,%r13
  seta   %dil
  and    %edi,%esi
  test   %r12,%r12
  setle  %dil
  cmp    %rbp,%r11
  setae  %bpl
  or     %ebp,%edi
  and    %edi,%esi
  mov    %r9,%rdi
  sub    %rbx,%rdi
  cmp    $0x8,%rdi
  seta   %dil
  test   %dil,%sil
  je     L537
  mov    %rax,%rsi
  sub    %rbx,%rsi
  cmp    $0x8,%rsi
  jbe    L537
  lea    -0x1(%rdx),%rsi
  cmp    $0x2,%rsi
  jbe    L291
  lea    -0x4(%rdx),%rbx
  movaps %xmm5,%xmm7
  movaps %xmm0,%xmm15
  xor    %esi,%esi
  shr    $0x2,%rbx
  movaps %xmm2,%xmm14
  movaps %xmm3,%xmm13
  xor    %edi,%edi
  movaps %xmm1,%xmm12
  movaps %xmm4,%xmm11
  shufps $0x0,%xmm7,%xmm7
  movss  %xmm0,-0x20(%rsp)
  add    $0x1,%rbx
  movaps %xmm7,%xmm0
  shufps $0x0,%xmm15,%xmm15
  shufps $0x0,%xmm14,%xmm14
  shufps $0x0,%xmm13,%xmm13
  shufps $0x0,%xmm12,%xmm12
  shufps $0x0,%xmm11,%xmm11
  nopl   (%rax)
L687:
  movups (%r8,%rsi,1),%xmm8
  movups (%r10,%rsi,1),%xmm7
  add    $0x1,%rdi
  movups (%r9,%rsi,1),%xmm10
  movaps %xmm8,%xmm6
  movaps %xmm7,%xmm9
  mulps  %xmm14,%xmm6
  mulps  %xmm11,%xmm9
  addps  %xmm10,%xmm6
  movups (%r11,%rsi,1),%xmm10
  addps  %xmm9,%xmm6
  movaps %xmm8,%xmm9
  mulps  %xmm13,%xmm9
  mulps  %xmm15,%xmm8
  addps  %xmm9,%xmm10
  movaps %xmm7,%xmm9
  mulps  %xmm0,%xmm9
  mulps  %xmm12,%xmm7
  addps  %xmm10,%xmm9
  movups (%rax,%rsi,1),%xmm10
  addps  %xmm10,%xmm8
  addps  %xmm7,%xmm8
  movups %xmm8,(%rax,%rsi,1)
  movups %xmm6,(%r9,%rsi,1)
  movups %xmm9,(%r11,%rsi,1)
  add    $0x10,%rsi
  cmp    %rdi,%rbx
  ja     L687
  lea    0x0(,%rbx,4),%rbp
  shl    $0x4,%rbx
  movss  -0x20(%rsp),%xmm0
  lea    (%r8,%rbx,1),%rdi
  add    %rbx,%r10
  lea    (%rax,%rbx,1),%rsi
  add    %rbx,%r9
  add    %rbx,%r11
  cmp    %rbp,%rdx
  je     L129
  mov    %rdx,%rbx
  sub    %rbp,%rbx
  cmp    $0x1,%rbx
  je     L246
L676:
  movq   (%r8,%rbp,4),%xmm11
  movaps %xmm2,%xmm6
  add    %rbp,%rdx
  movaps %xmm3,%xmm7
  shufps $0xe0,%xmm6,%xmm6
  shufps $0xe0,%xmm7,%xmm7
  lea    (%rax,%rbp,4),%r12
  movaps %xmm0,%xmm9
  mulps  %xmm11,%xmm6
  movq   (%r8,%rdx,4),%xmm10
  shufps $0xe0,%xmm9,%xmm9
  lea    0x0(,%rdx,4),%r14
  lea    (%rax,%r14,1),%r13
  mulps  %xmm11,%xmm7
  add    %rcx,%r14
  mov    %rbx,%rdx
  movq   0x0(%r13),%xmm8
  mulps  %xmm11,%xmm9
  add    %r14,%rax
  and    $0xfffffffffffffffe,%rdx
  addps  %xmm6,%xmm8
  movaps %xmm4,%xmm6
  shufps $0xe0,%xmm6,%xmm6
  mulps  %xmm10,%xmm6
  addps  %xmm6,%xmm8
  movq   (%rax),%xmm6
  addps  %xmm7,%xmm6
  movaps %xmm5,%xmm7
  shufps $0xe0,%xmm7,%xmm7
  mulps  %xmm10,%xmm7
  addps  %xmm7,%xmm6
  movq   (%r12),%xmm7
  addps  %xmm9,%xmm7
  movaps %xmm1,%xmm9
  shufps $0xe0,%xmm9,%xmm9
  mulps  %xmm10,%xmm9
  addps  %xmm9,%xmm7
  movlps %xmm7,(%r12)
  movlps %xmm8,0x0(%r13)
  movlps %xmm6,(%rax)
  lea    0x0(,%rdx,4),%rax
  add    %rax,%rdi
  add    %rax,%r10
  add    %rax,%rsi
  add    %rax,%r9
  add    %rax,%r11
  cmp    %rbx,%rdx
  je     L129
L246:
  movss  (%rdi),%xmm6
  mulss  %xmm6,%xmm0
  mulss  %xmm6,%xmm2
  addss  (%rsi),%xmm0
  mulss  %xmm3,%xmm6
  movss  (%r10),%xmm3
  addss  (%r9),%xmm2
  addss  (%r11),%xmm6
  mulss  %xmm3,%xmm1
  mulss  %xmm3,%xmm4
  mulss  %xmm5,%xmm3
  addss  %xmm0,%xmm1
  addss  %xmm2,%xmm4
  addss  %xmm6,%xmm3
  movss  %xmm1,(%rsi)
  movss  %xmm4,(%r9)
  movss  %xmm3,(%r11)
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopw   0x0(%rax,%rax,1)
L141:
  lea    0x4(%r8),%rsi
  mov    %rax,%rcx
  sub    %rsi,%rcx
  cmp    $0x8,%rcx
  jbe    L363
  cmp    $0x1,%rdx
  je     L363
  lea    -0x1(%rdx),%rcx
  cmp    $0x2,%rcx
  jbe    L324
  lea    -0x4(%rdx),%rcx
  movaps %xmm0,%xmm2
  xor    %esi,%esi
  xor    %edi,%edi
  shr    $0x2,%rcx
  shufps $0x0,%xmm2,%xmm2
  add    $0x1,%rcx
  nopl   0x0(%rax,%rax,1)
L528:
  movups (%r8,%rsi,1),%xmm1
  movups (%rax,%rsi,1),%xmm5
  add    $0x1,%rdi
  mulps  %xmm2,%xmm1
  addps  %xmm5,%xmm1
  movups %xmm1,(%rax,%rsi,1)
  add    $0x10,%rsi
  cmp    %rdi,%rcx
  ja     L528
  lea    0x0(,%rcx,4),%rdi
  shl    $0x4,%rcx
  lea    (%r8,%rcx,1),%rsi
  add    %rax,%rcx
  cmp    %rdi,%rdx
  je     L129
  sub    %rdi,%rdx
  cmp    $0x1,%rdx
  je     L819
L402:
  movq   (%r8,%rdi,4),%xmm1
  movaps %xmm0,%xmm2
  lea    (%rax,%rdi,4),%rax
  shufps $0xe0,%xmm2,%xmm2
  mulps  %xmm2,%xmm1
  movq   (%rax),%xmm2
  addps  %xmm2,%xmm1
  movlps %xmm1,(%rax)
  mov    %rdx,%rax
  and    $0xfffffffffffffffe,%rax
  lea    0x0(,%rax,4),%rdi
  add    %rdi,%rsi
  add    %rdi,%rcx
  cmp    %rdx,%rax
  je     L129
L819:
  mulss  (%rsi),%xmm0
  addss  (%rcx),%xmm0
  movss  %xmm0,(%rcx)
  jmp    L129
  nopw   0x0(%rax,%rax,1)
L589:
  lea    (%rax,%rcx,1),%rsi
  lea    0x4(%r8,%rcx,1),%r9
  add    $0x10,%rcx
  test   %rcx,%rcx
  lea    0x10(%rax),%r11
  lea    0x4(%r8),%rdi
  setle  %cl
  cmp    %r11,%rsi
  setae  %r11b
  or     %r11d,%ecx
  mov    %rsi,%r11
  sub    %rdi,%r11
  cmp    $0x8,%r11
  seta   %r11b
  and    %r11d,%ecx
  cmp    $0x1,%rdx
  setne  %r11b
  and    %r11d,%ecx
  mov    %rax,%r11
  sub    %rdi,%r11
  cmp    $0x8,%r11
  seta   %dil
  and    %edi,%ecx
  mov    %rsi,%rdi
  sub    %r9,%rdi
  cmp    $0x8,%rdi
  seta   %dil
  test   %dil,%cl
  je     L420
  mov    %rax,%rcx
  sub    %r9,%rcx
  cmp    $0x8,%rcx
  jbe    L420
  lea    -0x1(%rdx),%rcx
  cmp    $0x2,%rcx
  jbe    L469
  lea    -0x4(%rdx),%r9
  movaps %xmm0,%xmm10
  movaps %xmm2,%xmm9
  xor    %ecx,%ecx
  shr    $0x2,%r9
  movaps %xmm1,%xmm8
  movaps %xmm4,%xmm7
  xor    %edi,%edi
  add    $0x1,%r9
  shufps $0x0,%xmm10,%xmm10
  shufps $0x0,%xmm9,%xmm9
  shufps $0x0,%xmm8,%xmm8
  shufps $0x0,%xmm7,%xmm7
L720:
  movups (%r8,%rcx,1),%xmm3
  movups (%rsi,%rcx,1),%xmm5
  add    $0x1,%rdi
  movups (%rax,%rcx,1),%xmm6
  mulps  %xmm9,%xmm3
  addps  %xmm5,%xmm3
  movups (%r10,%rcx,1),%xmm5
  mulps  %xmm7,%xmm5
  addps  %xmm5,%xmm3
  movups (%r8,%rcx,1),%xmm5
  mulps  %xmm10,%xmm5
  addps  %xmm6,%xmm5
  movups (%r10,%rcx,1),%xmm6
  mulps  %xmm8,%xmm6
  addps  %xmm6,%xmm5
  movups %xmm5,(%rax,%rcx,1)
  movups %xmm3,(%rsi,%rcx,1)
  add    $0x10,%rcx
  cmp    %rdi,%r9
  ja     L720
  lea    0x0(,%r9,4),%rdi
  shl    $0x4,%r9
  lea    (%r8,%r9,1),%r11
  add    %r9,%r10
  lea    (%rax,%r9,1),%rcx
  add    %r9,%rsi
  cmp    %rdi,%rdx
  je     L129
  mov    %rdx,%r9
  sub    %rdi,%r9
  cmp    $0x1,%r9
  je     L243
L260:
  movq   (%r8,%rdi,4),%xmm8
  movaps %xmm2,%xmm5
  add    %rdi,%rdx
  lea    (%rax,%rdi,4),%rbx
  shufps $0xe0,%xmm5,%xmm5
  lea    (%rax,%rdx,4),%rax
  movq   (%r8,%rdx,4),%xmm7
  movaps %xmm0,%xmm6
  mulps  %xmm8,%xmm5
  movq   (%rax),%xmm3
  shufps $0xe0,%xmm6,%xmm6
  mov    %r9,%rdx
  mulps  %xmm8,%xmm6
  and    $0xfffffffffffffffe,%rdx
  addps  %xmm5,%xmm3
  movaps %xmm4,%xmm5
  shufps $0xe0,%xmm5,%xmm5
  mulps  %xmm7,%xmm5
  addps  %xmm5,%xmm3
  movq   (%rbx),%xmm5
  addps  %xmm6,%xmm5
  movaps %xmm1,%xmm6
  shufps $0xe0,%xmm6,%xmm6
  mulps  %xmm7,%xmm6
  addps  %xmm6,%xmm5
  movlps %xmm5,(%rbx)
  movlps %xmm3,(%rax)
  lea    0x0(,%rdx,4),%rax
  add    %rax,%r11
  add    %rax,%r10
  add    %rax,%rcx
  add    %rax,%rsi
  cmp    %rdx,%r9
  je     L129
L243:
  movss  (%r11),%xmm3
  mulss  %xmm3,%xmm0
  mulss  %xmm2,%xmm3
  movss  (%r10),%xmm2
  addss  (%rcx),%xmm0
  addss  (%rsi),%xmm3
  mulss  %xmm2,%xmm1
  mulss  %xmm4,%xmm2
  addss  %xmm0,%xmm1
  addss  %xmm3,%xmm2
  movss  %xmm1,(%rcx)
  movss  %xmm2,(%rsi)
  jmp    L129
L174:
  lea    0x10(%rcx),%r12
  lea    0x10(%rax),%rbx
  test   %r12,%r12
  lea    0x4(%r8),%rdi
  lea    0x0(,%rdx,8),%r10
  setle  %sil
  cmp    %rbx,%r9
  lea    0x10(%r10),%rbp
  setae  %r13b
  or     %r13d,%esi
  mov    %r9,%r13
  sub    %rdi,%r13
  cmp    $0x8,%r13
  seta   %r13b
  and    %r13d,%esi
  cmp    $0x1,%rdx
  setne  %r13b
  and    %r13d,%esi
  mov    %rax,%r13
  sub    %rdi,%r13
  cmp    $0x8,%r13
  seta   %r13b
  and    %r13d,%esi
  cmp    %rcx,%rbp
  setle  %r13b
  cmp    %r10,%r12
  setle  %r10b
  or     %r13d,%r10d
  and    %r10d,%esi
  mov    %r11,%r10
  sub    %rdi,%r10
  cmp    $0x8,%r10
  seta   %dil
  test   %dil,%sil
  je     L424
  test   %rbp,%rbp
  setle  %sil
  cmp    %rbx,%r11
  setae  %dil
  or     %dil,%sil
  je     L424
  lea    -0x1(%rdx),%rsi
  cmp    $0x2,%rsi
  jbe    L292
  lea    -0x4(%rdx),%r10
  movaps %xmm0,%xmm8
  movaps %xmm2,%xmm7
  xor    %esi,%esi
  shr    $0x2,%r10
  movaps %xmm3,%xmm6
  xor    %edi,%edi
  shufps $0x0,%xmm8,%xmm8
  add    $0x1,%r10
  shufps $0x0,%xmm7,%xmm7
  shufps $0x0,%xmm6,%xmm6
  xchg   %ax,%ax
L805:
  movups (%r8,%rsi,1),%xmm1
  movups (%r9,%rsi,1),%xmm5
  add    $0x1,%rdi
  movups (%r11,%rsi,1),%xmm14
  movups (%rax,%rsi,1),%xmm15
  movaps %xmm1,%xmm4
  mulps  %xmm7,%xmm4
  addps  %xmm4,%xmm5
  movaps %xmm1,%xmm4
  mulps  %xmm6,%xmm4
  mulps  %xmm8,%xmm1
  addps  %xmm14,%xmm4
  addps  %xmm15,%xmm1
  movups %xmm1,(%rax,%rsi,1)
  movups %xmm5,(%r9,%rsi,1)
  movups %xmm4,(%r11,%rsi,1)
  add    $0x10,%rsi
  cmp    %rdi,%r10
  ja     L805
  lea    0x0(,%r10,4),%rbx
  shl    $0x4,%r10
  lea    (%r8,%r10,1),%rdi
  lea    (%rax,%r10,1),%rsi
  add    %r10,%r9
  add    %r10,%r11
  cmp    %rbx,%rdx
  je     L129
  mov    %rdx,%r10
  sub    %rbx,%r10
  cmp    $0x1,%r10
  je     L367
L276:
  movq   (%r8,%rbx,4),%xmm7
  movaps %xmm2,%xmm4
  add    %rbx,%rdx
  movaps %xmm3,%xmm5
  shufps $0xe0,%xmm4,%xmm4
  shl    $0x2,%rdx
  shufps $0xe0,%xmm5,%xmm5
  movaps %xmm0,%xmm6
  mulps  %xmm7,%xmm4
  lea    (%rax,%rdx,1),%r12
  add    %rcx,%rdx
  shufps $0xe0,%xmm6,%xmm6
  mulps  %xmm7,%xmm5
  movq   (%r12),%xmm1
  add    %rax,%rdx
  lea    (%rax,%rbx,4),%rbp
  mulps  %xmm7,%xmm6
  addps  %xmm1,%xmm4
  movq   (%rdx),%xmm1
  addps  %xmm5,%xmm1
  movq   0x0(%rbp),%xmm5
  addps  %xmm6,%xmm5
  movlps %xmm5,0x0(%rbp)
  movlps %xmm4,(%r12)
  movlps %xmm1,(%rdx)
  mov    %r10,%rdx
  and    $0xfffffffffffffffe,%rdx
  lea    0x0(,%rdx,4),%rax
  add    %rax,%rdi
  add    %rax,%rsi
  add    %rax,%r9
  add    %rax,%r11
  cmp    %r10,%rdx
  je     L129
L367:
  movss  (%rdi),%xmm1
  movss  (%r9),%xmm5
  movss  (%r11),%xmm4
  mulss  %xmm1,%xmm0
  mulss  %xmm1,%xmm2
  addss  (%rsi),%xmm0
  mulss  %xmm3,%xmm1
  movss  %xmm0,(%rsi)
  addss  %xmm5,%xmm2
  addss  %xmm4,%xmm1
  movss  %xmm2,(%r9)
  movss  %xmm1,(%r11)
  jmp    L129
L753:
  xor    %ecx,%ecx
  nopl   0x0(%rax)
L431:
  movss  (%r10,%rcx,4),%xmm2
  movss  (%r8,%rcx,4),%xmm3
  mulss  %xmm1,%xmm2
  mulss  %xmm0,%xmm3
  addss  (%rax,%rcx,4),%xmm3
  addss  %xmm3,%xmm2
  movss  %xmm2,(%rax,%rcx,4)
  add    $0x1,%rcx
  cmp    %rcx,%rdx
  jne    L431
  jmp    L129
L580:
  xor    %ecx,%ecx
  nopw   0x0(%rax,%rax,1)
L709:
  movss  (%r8,%rcx,4),%xmm1
  movaps %xmm0,%xmm3
  movss  (%rsi,%rcx,4),%xmm4
  mulss  %xmm1,%xmm3
  mulss  %xmm2,%xmm1
  addss  (%rax,%rcx,4),%xmm3
  movss  %xmm3,(%rax,%rcx,4)
  addss  %xmm4,%xmm1
  movss  %xmm1,(%rsi,%rcx,4)
  add    $0x1,%rcx
  cmp    %rcx,%rdx
  jne    L709
  jmp    L129
L424:
  xor    %ecx,%ecx
  nopl   0x0(%rax)
L95:
  movss  (%r8,%rcx,4),%xmm1
  movaps %xmm0,%xmm4
  movss  (%r9,%rcx,4),%xmm6
  movss  (%r11,%rcx,4),%xmm5
  mulss  %xmm1,%xmm4
  addss  (%rax,%rcx,4),%xmm4
  movss  %xmm4,(%rax,%rcx,4)
  movaps %xmm2,%xmm4
  mulss  %xmm1,%xmm4
  mulss  %xmm3,%xmm1
  addss  %xmm6,%xmm4
  addss  %xmm5,%xmm1
  movss  %xmm4,(%r9,%rcx,4)
  movss  %xmm1,(%r11,%rcx,4)
  add    $0x1,%rcx
  cmp    %rcx,%rdx
  jne    L95
  jmp    L129
L363:
  xor    %ecx,%ecx
  nopw   0x0(%rax,%rax,1)
L707:
  movss  (%r8,%rcx,4),%xmm1
  mulss  %xmm0,%xmm1
  addss  (%rax,%rcx,4),%xmm1
  movss  %xmm1,(%rax,%rcx,4)
  add    $0x1,%rcx
  cmp    %rcx,%rdx
  jne    L707
  jmp    L129
L82:
  xor    %ecx,%ecx
  nopl   0x0(%rax)
L7:
  movss  (%r8,%rcx,4),%xmm1
  movaps %xmm0,%xmm4
  movss  (%rdi,%rcx,4),%xmm6
  movss  (%rsi,%rcx,4),%xmm8
  movss  (%r9,%rcx,4),%xmm5
  mulss  %xmm1,%xmm4
  addss  (%rax,%rcx,4),%xmm4
  movss  %xmm4,(%rax,%rcx,4)
  movaps %xmm2,%xmm4
  mulss  %xmm1,%xmm4
  addss  %xmm8,%xmm4
  movss  %xmm4,(%rsi,%rcx,4)
  movaps %xmm3,%xmm4
  mulss  %xmm1,%xmm4
  mulss  %xmm7,%xmm1
  addss  %xmm6,%xmm4
  addss  %xmm5,%xmm1
  movss  %xmm4,(%rdi,%rcx,4)
  movss  %xmm1,(%r9,%rcx,4)
  add    $0x1,%rcx
  cmp    %rcx,%rdx
  jne    L7
  jmp    L129
L327:
  mov    %r8,%rsi
  mov    %rax,%rcx
  mov    %rdx,%rdi
  xor    %r9d,%r9d
  jmp    L408
L537:
  xor    %ecx,%ecx
L559:
  movss  (%r8,%rcx,4),%xmm6
  movaps %xmm0,%xmm10
  movaps %xmm2,%xmm9
  movss  (%r11,%rcx,4),%xmm7
  movaps %xmm1,%xmm8
  mulss  %xmm6,%xmm10
  mulss  %xmm6,%xmm9
  addss  (%rax,%rcx,4),%xmm10
  mulss  %xmm3,%xmm6
  addss  (%r9,%rcx,4),%xmm9
  addss  %xmm6,%xmm7
  movss  (%r10,%rcx,4),%xmm6
  mulss  %xmm6,%xmm8
  addss  %xmm10,%xmm8
  movss  %xmm8,(%rax,%rcx,4)
  movaps %xmm4,%xmm8
  mulss  %xmm6,%xmm8
  mulss  %xmm5,%xmm6
  addss  %xmm9,%xmm8
  addss  %xmm7,%xmm6
  movss  %xmm8,(%r9,%rcx,4)
  movss  %xmm6,(%r11,%rcx,4)
  add    $0x1,%rcx
  cmp    %rcx,%rdx
  jne    L559
  jmp    L129
L420:
  xor    %ecx,%ecx
  xchg   %ax,%ax
L27:
  movss  (%r8,%rcx,4),%xmm3
  movaps %xmm0,%xmm7
  movss  (%rsi,%rcx,4),%xmm5
  movaps %xmm1,%xmm6
  mulss  %xmm3,%xmm7
  mulss  %xmm2,%xmm3
  addss  (%rax,%rcx,4),%xmm7
  addss  %xmm3,%xmm5
  movss  (%r10,%rcx,4),%xmm3
  mulss  %xmm3,%xmm6
  mulss  %xmm4,%xmm3
  addss  %xmm7,%xmm6
  addss  %xmm5,%xmm3
  movss  %xmm6,(%rax,%rcx,4)
  movss  %xmm3,(%rsi,%rcx,4)
  add    $0x1,%rcx
  cmp    %rcx,%rdx
  jne    L27
  jmp    L129
L324:
  mov    %r8,%rsi
  mov    %rax,%rcx
  xor    %edi,%edi
  jmp    L402
L784:
  mov    %rdx,%r12
  mov    %rax,%r10
  mov    %r8,%rbx
  xor    %r13d,%r13d
  jmp    L171
L469:
  mov    %rdx,%r9
  mov    %rax,%rcx
  mov    %r8,%r11
  xor    %edi,%edi
  jmp    L260
L291:
  mov    %rdx,%rbx
  mov    %rax,%rsi
  mov    %r8,%rdi
  xor    %ebp,%ebp
  jmp    L676
L292:
  mov    %rdx,%r10
  mov    %rax,%rsi
  mov    %r8,%rdi
  xor    %ebx,%ebx
  jmp    L276
L445:
  mov    %rdx,%r9
  mov    %rax,%rcx
  mov    %r8,%rdi
  xor    %r10d,%r10d
  jmp    L742
```

assistant: ```c
void nnp_conv1x1_upto_2x4__scalar(uint32_t input_channels_subblock_size, uint32_t output_channels_subblock_size, size_t input_channels, size_t image_size, const float *input, const float *kernel, float *output) {
  const float *pinput0 = input;
  const float *pinput1 = input + image_size;
  float kernel00, kernel01, kernel10, kernel11, kernel20, kernel21, kernel30, kernel31;
  kernel00 = kernel[0];
  if (input_channels_subblock_size > 1) {
    kernel01 = kernel[1];
  }
  if (output_channels_subblock_size > 1) {
    kernel += input_channels;
    kernel10 = kernel[0];
    if (input_channels_subblock_size > 1) {
      kernel11 = kernel[1];
    }
    if (output_channels_subblock_size > 2) {
      kernel += input_channels;
      kernel20 = kernel[0];
      if (input_channels_subblock_size > 1) {
        kernel21 = kernel[1];
      }
      if (output_channels_subblock_size > 3) {
        kernel += input_channels;
        kernel30 = kernel[0];
        if (input_channels_subblock_size > 1) {
          kernel31 = kernel[1];
        }
      }
    }
  }
  float *poutput0 = output;
  float *poutput1 = poutput0 + image_size;
  float *poutput2 = poutput1 + image_size;
  float *poutput3 = poutput2 + image_size;
  do {
    float output0, output1, output2, output3;
    output0 = *poutput0;
    if (output_channels_subblock_size > 1) {
      output1 = *poutput1;
      if (output_channels_subblock_size > 2) {
        output2 = *poutput2;
        if (output_channels_subblock_size > 3) {
          output3 = *poutput3;
        }
      }
    }
    const float input0 = *pinput0++;
    output0 += kernel00 * input0;
    output1 += kernel10 * input0;
    output2 += kernel20 * input0;
    output3 += kernel30 * input0;
    if (input_channels_subblock_size > 1) {
      const float input1 = *pinput1++;
      output0 += kernel01 * input1;
      output1 += kernel11 * input1;
      output2 += kernel21 * input1;
      output3 += kernel31 * input1;
    }
    *poutput0++ = output0;
    if (output_channels_subblock_size > 1) {
      *poutput1++ = output1;
      if (output_channels_subblock_size > 2) {
        *poutput2++ = output2;
        if (output_channels_subblock_size > 3) {
          *poutput3++ = output3;
        }
      }
    }
  } while (--image_size != 0);
}
```