user: What would the C source look like for the assembly code provided here:

```asm
<kernel_strmv_u_t_8_lib8>:
  endbr64
  mov    %rcx,%r11
  cmp    $0x7,%edi
  jle    L2
  shl    $0x3,%edx
  sub    $0x8,%edi
  pxor   %xmm6,%xmm6
  mov    %rsi,%rax
  movslq %edx,%r10
  shr    $0x3,%edi
  mov    %rcx,%rdx
  movaps %xmm6,%xmm13
  shl    $0x2,%r10
  add    $0x1,%edi
  xor    %ecx,%ecx
  movss  %xmm6,-0x28(%rsp)
  movaps %xmm6,%xmm15
  movss  %xmm6,-0x2c(%rsp)
  movaps %xmm6,%xmm14
  movaps %xmm6,%xmm12
  movss  %xmm6,-0x30(%rsp)
  movaps %xmm6,%xmm10
  nopl   (%rax)
L44:
  movups (%rdx),%xmm8
  movups (%rax),%xmm1
  add    $0x1,%ecx
  add    $0x20,%rdx
  movups -0x10(%rdx),%xmm0
  movups 0x10(%rax),%xmm7
  mulps  %xmm8,%xmm1
  movups 0x30(%rax),%xmm6
  movups 0x40(%rax),%xmm4
  mulps  %xmm0,%xmm7
  movups 0xb0(%rax),%xmm11
  mulps  %xmm0,%xmm6
  mulps  %xmm8,%xmm4
  mulps  %xmm0,%xmm11
  movaps %xmm1,%xmm2
  movaps %xmm1,%xmm3
  addss  %xmm13,%xmm2
  shufps $0x55,%xmm1,%xmm3
  movaps %xmm6,%xmm5
  unpckhps %xmm6,%xmm5
  addss  %xmm3,%xmm2
  movaps %xmm1,%xmm3
  movss  %xmm5,-0x10(%rsp)
  movups 0x50(%rax),%xmm5
  unpckhps %xmm1,%xmm3
  shufps $0xff,%xmm1,%xmm1
  mulps  %xmm0,%xmm5
  addss  %xmm3,%xmm2
  addss  %xmm2,%xmm1
  movaps %xmm7,%xmm2
  shufps $0x55,%xmm7,%xmm2
  addss  %xmm7,%xmm1
  addss  %xmm2,%xmm1
  movaps %xmm1,%xmm13
  movaps %xmm7,%xmm1
  unpckhps %xmm7,%xmm1
  shufps $0xff,%xmm7,%xmm7
  movss  %xmm1,-0xc(%rsp)
  movups 0x20(%rax),%xmm1
  addss  -0xc(%rsp),%xmm13
  mulps  %xmm8,%xmm1
  addss  %xmm7,%xmm13
  movaps %xmm1,%xmm2
  movaps %xmm1,%xmm3
  addss  %xmm12,%xmm2
  shufps $0x55,%xmm1,%xmm3
  movups 0xe0(%rax),%xmm12
  addss  %xmm3,%xmm2
  movaps %xmm1,%xmm3
  unpckhps %xmm1,%xmm3
  shufps $0xff,%xmm1,%xmm1
  addss  %xmm3,%xmm2
  movaps %xmm4,%xmm3
  shufps $0x55,%xmm4,%xmm3
  addss  %xmm2,%xmm1
  movaps %xmm6,%xmm2
  shufps $0x55,%xmm6,%xmm2
  addss  %xmm6,%xmm1
  shufps $0xff,%xmm6,%xmm6
  addss  %xmm2,%xmm1
  movaps %xmm4,%xmm2
  addss  %xmm14,%xmm2
  movss  %xmm1,-0x14(%rsp)
  movaps %xmm4,%xmm1
  addss  %xmm2,%xmm3
  movaps %xmm4,%xmm2
  shufps $0xff,%xmm4,%xmm1
  unpckhps %xmm4,%xmm2
  movaps %xmm5,%xmm4
  unpckhps %xmm5,%xmm4
  addss  %xmm2,%xmm3
  movaps %xmm1,%xmm2
  movss  %xmm4,-0x24(%rsp)
  movaps %xmm5,%xmm1
  movups 0x60(%rax),%xmm4
  addss  %xmm3,%xmm2
  mulps  %xmm8,%xmm4
  addss  %xmm2,%xmm1
  movaps %xmm5,%xmm2
  shufps $0x55,%xmm5,%xmm2
  shufps $0xff,%xmm5,%xmm5
  addss  %xmm1,%xmm2
  movaps %xmm4,%xmm1
  movups 0x70(%rax),%xmm4
  movaps %xmm1,%xmm3
  shufps $0x55,%xmm1,%xmm3
  mulps  %xmm0,%xmm4
  movaps %xmm2,%xmm14
  movaps %xmm1,%xmm2
  addss  %xmm15,%xmm2
  addss  %xmm2,%xmm3
  movaps %xmm1,%xmm2
  unpckhps %xmm1,%xmm2
  shufps $0xff,%xmm1,%xmm1
  addss  %xmm2,%xmm3
  movaps %xmm1,%xmm2
  movaps %xmm4,%xmm1
  addss  %xmm3,%xmm2
  movaps %xmm4,%xmm3
  unpckhps %xmm4,%xmm3
  movaps %xmm3,%xmm15
  movups 0x80(%rax),%xmm3
  addss  %xmm2,%xmm1
  movaps %xmm4,%xmm2
  mulps  %xmm8,%xmm3
  shufps $0x55,%xmm4,%xmm2
  shufps $0xff,%xmm4,%xmm4
  addss  %xmm1,%xmm2
  movss  %xmm2,-0x20(%rsp)
  movss  -0x30(%rsp),%xmm2
  movaps %xmm3,%xmm1
  movups 0x90(%rax),%xmm3
  movaps %xmm1,%xmm9
  addss  %xmm1,%xmm2
  shufps $0x55,%xmm1,%xmm9
  mulps  %xmm0,%xmm3
  addss  %xmm2,%xmm9
  movaps %xmm1,%xmm2
  unpckhps %xmm1,%xmm2
  shufps $0xff,%xmm1,%xmm1
  addss  %xmm2,%xmm9
  movaps %xmm1,%xmm2
  movaps %xmm3,%xmm1
  addss  %xmm9,%xmm2
  movss  -0x2c(%rsp),%xmm9
  addss  %xmm2,%xmm1
  movaps %xmm3,%xmm2
  shufps $0x55,%xmm3,%xmm2
  addss  %xmm1,%xmm2
  movaps %xmm3,%xmm1
  unpckhps %xmm3,%xmm1
  shufps $0xff,%xmm3,%xmm3
  movss  %xmm1,-0x30(%rsp)
  movups 0xa0(%rax),%xmm1
  movss  %xmm2,-0x1c(%rsp)
  movaps %xmm11,%xmm2
  mulps  %xmm8,%xmm1
  addss  %xmm1,%xmm9
  movaps %xmm1,%xmm11
  shufps $0x55,%xmm1,%xmm11
  addss  %xmm9,%xmm11
  movaps %xmm1,%xmm9
  unpckhps %xmm1,%xmm9
  shufps $0xff,%xmm1,%xmm1
  addss  %xmm9,%xmm11
  movaps %xmm1,%xmm9
  movaps %xmm2,%xmm1
  addss  %xmm11,%xmm9
  movups 0xc0(%rax),%xmm11
  mulps  %xmm8,%xmm11
  addss  %xmm9,%xmm1
  mulps  %xmm12,%xmm8
  movaps %xmm2,%xmm9
  movups 0xf0(%rax),%xmm12
  shufps $0x55,%xmm2,%xmm9
  addss  %xmm1,%xmm9
  movaps %xmm2,%xmm1
  addss  %xmm11,%xmm10
  unpckhps %xmm2,%xmm1
  shufps $0xff,%xmm2,%xmm2
  movss  %xmm1,-0x2c(%rsp)
  movups 0xd0(%rax),%xmm1
  add    %r10,%rax
  movss  %xmm9,-0x18(%rsp)
  movaps %xmm11,%xmm9
  shufps $0x55,%xmm11,%xmm11
  addss  %xmm10,%xmm11
  mulps  %xmm0,%xmm1
  movaps %xmm9,%xmm10
  mulps  %xmm12,%xmm0
  unpckhps %xmm9,%xmm10
  shufps $0xff,%xmm9,%xmm9
  movaps %xmm8,%xmm12
  shufps $0x55,%xmm8,%xmm12
  addss  %xmm10,%xmm11
  movaps %xmm9,%xmm10
  movaps %xmm1,%xmm9
  addss  %xmm11,%xmm10
  movaps %xmm1,%xmm11
  shufps $0x55,%xmm1,%xmm11
  addss  %xmm10,%xmm9
  movaps %xmm1,%xmm10
  unpckhps %xmm1,%xmm10
  shufps $0xff,%xmm1,%xmm1
  addss  %xmm9,%xmm11
  movss  -0x28(%rsp),%xmm9
  addss  %xmm8,%xmm9
  addss  %xmm11,%xmm10
  addss  %xmm9,%xmm12
  movaps %xmm8,%xmm9
  unpckhps %xmm8,%xmm9
  shufps $0xff,%xmm8,%xmm8
  addss  %xmm1,%xmm10
  addss  %xmm9,%xmm12
  movaps %xmm8,%xmm9
  movaps %xmm0,%xmm8
  addss  %xmm12,%xmm9
  movss  -0x14(%rsp),%xmm12
  addss  -0x10(%rsp),%xmm12
  addss  -0x20(%rsp),%xmm15
  addss  -0x24(%rsp),%xmm14
  addss  %xmm9,%xmm8
  movaps %xmm0,%xmm9
  addss  %xmm6,%xmm12
  shufps $0x55,%xmm0,%xmm9
  addss  %xmm4,%xmm15
  movss  -0x30(%rsp),%xmm4
  addss  -0x1c(%rsp),%xmm4
  addss  %xmm5,%xmm14
  addss  %xmm8,%xmm9
  movaps %xmm0,%xmm8
  unpckhps %xmm0,%xmm8
  addss  %xmm3,%xmm4
  movss  -0x2c(%rsp),%xmm3
  shufps $0xff,%xmm0,%xmm0
  addss  -0x18(%rsp),%xmm3
  addss  %xmm9,%xmm8
  movss  %xmm4,-0x30(%rsp)
  addss  %xmm2,%xmm3
  addss  %xmm0,%xmm8
  movss  %xmm3,-0x2c(%rsp)
  movss  %xmm8,-0x28(%rsp)
  cmp    %edi,%ecx
  jb     L44
  imul   %rdi,%r10
  shl    $0x5,%rdi
  movaps %xmm15,%xmm5
  add    %rdi,%r11
  movaps %xmm10,%xmm15
  add    %r10,%rsi
L8:
  movss  (%r11),%xmm3
  movss  0x60(%rsi),%xmm6
  movss  0x4(%r11),%xmm2
  movss  0x64(%rsi),%xmm10
  mulss  %xmm3,%xmm6
  movss  0x40(%rsi),%xmm8
  mov    0x14(%r11),%eax
  mulss  %xmm2,%xmm10
  movss  0xa0(%rsi),%xmm7
  movups 0x10(%r11),%xmm1
  mulss  %xmm3,%xmm8
  movss  0x8(%r11),%xmm4
  movd   %eax,%xmm11
  movss  0xc0(%rsi),%xmm9
  mulss  %xmm3,%xmm7
  movss  0xc(%r11),%xmm0
  addss  -0x2c(%rsp),%xmm7
  mulss  %xmm3,%xmm9
  addss  %xmm5,%xmm6
  movss  0x80(%rsi),%xmm5
  mulss  %xmm3,%xmm5
  addss  %xmm14,%xmm8
  movss  0xe0(%rsi),%xmm14
  addss  %xmm6,%xmm10
  movss  0x84(%rsi),%xmm6
  addss  -0x30(%rsp),%xmm5
  addss  %xmm15,%xmm9
  mulss  %xmm3,%xmm14
  movss  0xcc(%rsi),%xmm15
  mulss  %xmm2,%xmm6
  addss  -0x28(%rsp),%xmm14
  mulss  %xmm0,%xmm15
  mulss  0x20(%rsi),%xmm3
  addss  %xmm5,%xmm6
  movss  0xa4(%rsi),%xmm5
  mulss  %xmm2,%xmm5
  addss  %xmm12,%xmm3
  unpcklps %xmm3,%xmm13
  addss  %xmm7,%xmm5
  movss  0xc4(%rsi),%xmm7
  mulss  %xmm2,%xmm7
  addss  %xmm9,%xmm7
  movss  0xe4(%rsi),%xmm9
  mulss  %xmm2,%xmm9
  mulss  0x44(%rsi),%xmm2
  addss  %xmm9,%xmm14
  movss  0x88(%rsi),%xmm9
  addss  %xmm8,%xmm2
  mulss  %xmm4,%xmm9
  addss  %xmm6,%xmm9
  movss  0xa8(%rsi),%xmm6
  mulss  %xmm4,%xmm6
  addss  %xmm5,%xmm6
  movss  0xc8(%rsi),%xmm5
  mulss  %xmm4,%xmm5
  addss  %xmm7,%xmm5
  movss  0xe8(%rsi),%xmm7
  mulss  %xmm4,%xmm7
  addss  %xmm5,%xmm15
  movss  0xec(%rsi),%xmm5
  mulss  %xmm0,%xmm5
  addss  %xmm7,%xmm14
  movss  0xac(%rsi),%xmm7
  mulss  %xmm0,%xmm7
  addss  %xmm14,%xmm5
  movss  0xf0(%rsi),%xmm14
  mulss  %xmm1,%xmm14
  addss  %xmm6,%xmm7
  movss  0xd0(%rsi),%xmm6
  mulss  %xmm1,%xmm6
  addss  %xmm5,%xmm14
  movd   %eax,%xmm5
  mulss  0xf4(%rsi),%xmm5
  mulss  0x68(%rsi),%xmm4
  movss  0x48(%rsi),%xmm3
  mulss  0x8c(%rsi),%xmm0
  mulss  0xd4(%rsi),%xmm11
  addss  %xmm15,%xmm6
  addss  %xmm14,%xmm5
  addss  %xmm10,%xmm4
  addss  %xmm9,%xmm0
  addss  %xmm6,%xmm11
  unpcklps %xmm4,%xmm2
  movss  0x24(%rsi),%xmm4
  movlhps %xmm2,%xmm13
  movss  0x6c(%rsi),%xmm2
  unpcklps %xmm2,%xmm3
  movss  (%rsi),%xmm2
  unpcklps %xmm4,%xmm2
  movss  0xb4(%rsi),%xmm4
  movlhps %xmm3,%xmm2
  movups (%r11),%xmm3
  mulps  %xmm3,%xmm2
  movaps %xmm1,%xmm3
  unpckhps %xmm1,%xmm3
  mulss  0xf8(%rsi),%xmm3
  addps  %xmm2,%xmm13
  movss  0xb0(%rsi),%xmm2
  mulss  %xmm1,%xmm2
  addss  %xmm5,%xmm3
  unpcklps %xmm3,%xmm11
  movss  0xd8(%rsi),%xmm3
  addss  %xmm7,%xmm2
  unpcklps %xmm2,%xmm0
  movss  0xfc(%rsi),%xmm2
  movlhps %xmm11,%xmm0
  unpcklps %xmm2,%xmm3
  movss  0x90(%rsi),%xmm2
  unpcklps %xmm4,%xmm2
  movlhps %xmm3,%xmm2
  mulps  %xmm2,%xmm1
  addps  %xmm1,%xmm0
  test   %r9d,%r9d
  je     L15
  movups (%r8),%xmm2
  movups 0x10(%r8),%xmm1
  cmp    $0x1,%r9d
  je     L35
  subps  %xmm13,%xmm2
  subps  %xmm0,%xmm1
  movaps %xmm2,%xmm13
  movaps %xmm1,%xmm0
L15:
  movups %xmm13,(%r8)
  movups %xmm0,0x10(%r8)
  ret
  nopl   0x0(%rax)
L35:
  addps  %xmm2,%xmm13
  addps  %xmm1,%xmm0
  movups %xmm13,(%r8)
  movups %xmm0,0x10(%r8)
  ret
  nopl   0x0(%rax)
L2:
  pxor   %xmm0,%xmm0
  movaps %xmm0,%xmm13
  movss  %xmm0,-0x28(%rsp)
  movaps %xmm0,%xmm15
  movaps %xmm0,%xmm5
  movss  %xmm0,-0x2c(%rsp)
  movaps %xmm0,%xmm14
  movaps %xmm0,%xmm12
  movss  %xmm0,-0x30(%rsp)
  jmp    L8
```

assistant: ```c
void kernel_strmv_u_t_8_lib8(int kmax, float *A, int sda, float *x, float *y, int alg) {
  const int lda = 8;
  const int bs = 8;
  int k;
  float x_0, x_1, x_2, x_3, y_0 = 0, y_1 = 0, y_2 = 0, y_3 = 0, y_4 = 0, y_5 = 0, y_6 = 0, y_7 = 0;
  k = 0;
  for (; k < kmax - 7; k += 8) {
    x_0 = x[0];
    x_1 = x[1];
    x_2 = x[2];
    x_3 = x[3];
    y_0 += A[0 + lda * 0] * x_0;
    y_1 += A[0 + lda * 1] * x_0;
    y_2 += A[0 + lda * 2] * x_0;
    y_3 += A[0 + lda * 3] * x_0;
    y_4 += A[0 + lda * 4] * x_0;
    y_5 += A[0 + lda * 5] * x_0;
    y_6 += A[0 + lda * 6] * x_0;
    y_7 += A[0 + lda * 7] * x_0;
    y_0 += A[1 + lda * 0] * x_1;
    y_1 += A[1 + lda * 1] * x_1;
    y_2 += A[1 + lda * 2] * x_1;
    y_3 += A[1 + lda * 3] * x_1;
    y_4 += A[1 + lda * 4] * x_1;
    y_5 += A[1 + lda * 5] * x_1;
    y_6 += A[1 + lda * 6] * x_1;
    y_7 += A[1 + lda * 7] * x_1;
    y_0 += A[2 + lda * 0] * x_2;
    y_1 += A[2 + lda * 1] * x_2;
    y_2 += A[2 + lda * 2] * x_2;
    y_3 += A[2 + lda * 3] * x_2;
    y_4 += A[2 + lda * 4] * x_2;
    y_5 += A[2 + lda * 5] * x_2;
    y_6 += A[2 + lda * 6] * x_2;
    y_7 += A[2 + lda * 7] * x_2;
    y_0 += A[3 + lda * 0] * x_3;
    y_1 += A[3 + lda * 1] * x_3;
    y_2 += A[3 + lda * 2] * x_3;
    y_3 += A[3 + lda * 3] * x_3;
    y_4 += A[3 + lda * 4] * x_3;
    y_5 += A[3 + lda * 5] * x_3;
    y_6 += A[3 + lda * 6] * x_3;
    y_7 += A[3 + lda * 7] * x_3;
    x_0 = x[4];
    x_1 = x[5];
    x_2 = x[6];
    x_3 = x[7];
    y_0 += A[4 + lda * 0] * x_0;
    y_1 += A[4 + lda * 1] * x_0;
    y_2 += A[4 + lda * 2] * x_0;
    y_3 += A[4 + lda * 3] * x_0;
    y_4 += A[4 + lda * 4] * x_0;
    y_5 += A[4 + lda * 5] * x_0;
    y_6 += A[4 + lda * 6] * x_0;
    y_7 += A[4 + lda * 7] * x_0;
    y_0 += A[5 + lda * 0] * x_1;
    y_1 += A[5 + lda * 1] * x_1;
    y_2 += A[5 + lda * 2] * x_1;
    y_3 += A[5 + lda * 3] * x_1;
    y_4 += A[5 + lda * 4] * x_1;
    y_5 += A[5 + lda * 5] * x_1;
    y_6 += A[5 + lda * 6] * x_1;
    y_7 += A[5 + lda * 7] * x_1;
    y_0 += A[6 + lda * 0] * x_2;
    y_1 += A[6 + lda * 1] * x_2;
    y_2 += A[6 + lda * 2] * x_2;
    y_3 += A[6 + lda * 3] * x_2;
    y_4 += A[6 + lda * 4] * x_2;
    y_5 += A[6 + lda * 5] * x_2;
    y_6 += A[6 + lda * 6] * x_2;
    y_7 += A[6 + lda * 7] * x_2;
    y_0 += A[7 + lda * 0] * x_3;
    y_1 += A[7 + lda * 1] * x_3;
    y_2 += A[7 + lda * 2] * x_3;
    y_3 += A[7 + lda * 3] * x_3;
    y_4 += A[7 + lda * 4] * x_3;
    y_5 += A[7 + lda * 5] * x_3;
    y_6 += A[7 + lda * 6] * x_3;
    y_7 += A[7 + lda * 7] * x_3;
    A += sda * bs;
    x += 8;
  }
  x_0 = x[0];
  x_1 = x[1];
  x_2 = x[2];
  x_3 = x[3];
  y_0 += A[0 + lda * 0] * x_0;
  y_1 += A[0 + lda * 1] * x_0;
  y_2 += A[0 + lda * 2] * x_0;
  y_3 += A[0 + lda * 3] * x_0;
  y_4 += A[0 + lda * 4] * x_0;
  y_5 += A[0 + lda * 5] * x_0;
  y_6 += A[0 + lda * 6] * x_0;
  y_7 += A[0 + lda * 7] * x_0;
  y_1 += A[1 + lda * 1] * x_1;
  y_2 += A[1 + lda * 2] * x_1;
  y_3 += A[1 + lda * 3] * x_1;
  y_4 += A[1 + lda * 4] * x_1;
  y_5 += A[1 + lda * 5] * x_1;
  y_6 += A[1 + lda * 6] * x_1;
  y_7 += A[1 + lda * 7] * x_1;
  y_2 += A[2 + lda * 2] * x_2;
  y_3 += A[2 + lda * 3] * x_2;
  y_4 += A[2 + lda * 4] * x_2;
  y_5 += A[2 + lda * 5] * x_2;
  y_6 += A[2 + lda * 6] * x_2;
  y_7 += A[2 + lda * 7] * x_2;
  y_3 += A[3 + lda * 3] * x_3;
  y_4 += A[3 + lda * 4] * x_3;
  y_5 += A[3 + lda * 5] * x_3;
  y_6 += A[3 + lda * 6] * x_3;
  y_7 += A[3 + lda * 7] * x_3;
  x_0 = x[4];
  x_1 = x[5];
  x_2 = x[6];
  x_3 = x[7];
  y_4 += A[4 + lda * 4] * x_0;
  y_5 += A[4 + lda * 5] * x_0;
  y_6 += A[4 + lda * 6] * x_0;
  y_7 += A[4 + lda * 7] * x_0;
  y_5 += A[5 + lda * 5] * x_1;
  y_6 += A[5 + lda * 6] * x_1;
  y_7 += A[5 + lda * 7] * x_1;
  y_6 += A[6 + lda * 6] * x_2;
  y_7 += A[6 + lda * 7] * x_2;
  y_7 += A[7 + lda * 7] * x_3;
  if (alg == 0) {
    y[0] = y_0;
    y[1] = y_1;
    y[2] = y_2;
    y[3] = y_3;
    y[4] = y_4;
    y[5] = y_5;
    y[6] = y_6;
    y[7] = y_7;
  } else if (alg == 1) {
    y[0] += y_0;
    y[1] += y_1;
    y[2] += y_2;
    y[3] += y_3;
    y[4] += y_4;
    y[5] += y_5;
    y[6] += y_6;
    y[7] += y_7;
  } else {
    y[0] -= y_0;
    y[1] -= y_1;
    y[2] -= y_2;
    y[3] -= y_3;
    y[4] -= y_4;
    y[5] -= y_5;
    y[6] -= y_6;
    y[7] -= y_7;
  }
}
```