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

```asm
<upsample_component_line_linear>:
  endbr64
  push   %r15
  mov    %rdi,%r15
  push   %r14
  mov    %ecx,%r14d
  push   %r13
  mov    %rsi,%r13
  push   %r12
  mov    %r8d,%r12d
  push   %rbp
  push   %rbx
  sub    $0x158,%rsp
  mov    0x190(%rsp),%rbx
  mov    0x198(%rsp),%rbp
  test   %ecx,%ecx
  jle    L237
  movzbl (%rdi),%esi
  mov    %ecx,%edx
  mov    %r13,%rdi
  mov    %r9d,0x8(%rsp)
  call   <memset@plt>
  mov    0x8(%rsp),%r9d
L237:
  test   %r9d,%r9d
  jle    L216
  test   %r12d,%r12d
  jle    L216
  lea    -0x1(%r9),%esi
  movslq %r12d,%rdi
  mov    %r12d,%r10d
  mov    %r15,%rax
  add    %r15,%rsi
  mov    %rdi,0x8(%rsp)
  and    $0xfffffff0,%r10d
  movslq %r14d,%rdx
  mov    %rsi,0x18(%rsp)
  mov    %r14d,%ecx
  add    %r13,%rdx
  pxor   %xmm12,%xmm12
  lea    0x0(,%rdi,4),%rsi
  pxor   %xmm2,%xmm2
  lea    (%rbx,%rsi,1),%rdi
  mov    %rdi,0x10(%rsp)
  lea    0x0(%rbp,%rsi,1),%rdi
  mov    %r12d,%esi
  shr    $0x4,%esi
  mov    %rdi,0x20(%rsp)
  lea    -0x1(%rsi),%edi
  mov    %r10d,%esi
  shl    $0x2,%rsi
  add    $0x1,%rdi
  lea    (%rbx,%rsi,1),%r15
  add    %rbp,%rsi
  shl    $0x4,%rdi
  mov    %rsi,0x30(%rsp)
  lea    0x1(%r10),%esi
  mov    %r15,0x28(%rsp)
  mov    %rsi,%r15
  shl    $0x2,%rsi
  lea    (%rbx,%rsi,1),%r14
  add    %rbp,%rsi
  mov    %rsi,0x48(%rsp)
  lea    0x2(%r10),%esi
  mov    %esi,0x3c(%rsp)
  shl    $0x2,%rsi
  mov    %r14,0x40(%rsp)
  lea    (%rbx,%rsi,1),%r14
  add    %rbp,%rsi
  mov    %rsi,0x58(%rsp)
  lea    0x3(%r10),%esi
  mov    %esi,0x60(%rsp)
  shl    $0x2,%rsi
  mov    %r14,0x50(%rsp)
  lea    (%rbx,%rsi,1),%r14
  add    %rbp,%rsi
  mov    %rsi,0x70(%rsp)
  lea    0x4(%r10),%esi
  mov    %esi,0x64(%rsp)
  shl    $0x2,%rsi
  mov    %r14,0x68(%rsp)
  lea    (%rbx,%rsi,1),%r14
  add    %rbp,%rsi
  mov    %rsi,0x80(%rsp)
  lea    0x5(%r10),%esi
  mov    %esi,0x88(%rsp)
  shl    $0x2,%rsi
  mov    %r14,0x78(%rsp)
  lea    (%rbx,%rsi,1),%r14
  add    %rbp,%rsi
  mov    %rsi,0x98(%rsp)
  lea    0x6(%r10),%esi
  mov    %esi,0x8c(%rsp)
  shl    $0x2,%rsi
  mov    %r14,0x90(%rsp)
  lea    (%rbx,%rsi,1),%r14
  add    %rbp,%rsi
  mov    %rsi,0xa8(%rsp)
  lea    0x7(%r10),%esi
  mov    %esi,0xb0(%rsp)
  shl    $0x2,%rsi
  mov    %r14,0xa0(%rsp)
  lea    (%rbx,%rsi,1),%r14
  add    %rbp,%rsi
  mov    %rsi,0xc0(%rsp)
  lea    0x8(%r10),%esi
  mov    %esi,0xb4(%rsp)
  shl    $0x2,%rsi
  lea    (%rbx,%rsi,1),%r11
  add    %rbp,%rsi
  mov    %r14,0xb8(%rsp)
  mov    %rsi,0xd0(%rsp)
  lea    0x9(%r10),%esi
  mov    %esi,0xd8(%rsp)
  shl    $0x2,%rsi
  lea    (%rbx,%rsi,1),%r14
  add    %rbp,%rsi
  mov    %r11,0xc8(%rsp)
  mov    %rsi,0xe8(%rsp)
  lea    0xa(%r10),%esi
  mov    %r14,0xe0(%rsp)
  mov    %esi,0xdc(%rsp)
  shl    $0x2,%rsi
  movdqa D9(%rip),%xmm5
  lea    (%rbx,%rsi,1),%r11
  add    %rbp,%rsi
  mov    %rsi,0xf8(%rsp)
  lea    0xb(%r10),%esi
  mov    %esi,0x100(%rsp)
  shl    $0x2,%rsi
  lea    (%rbx,%rsi,1),%r14
  add    %rbp,%rsi
  mov    %r11,0xf0(%rsp)
  mov    %rsi,0x110(%rsp)
  lea    0xc(%r10),%esi
  mov    %esi,0x104(%rsp)
  shl    $0x2,%rsi
  lea    (%rbx,%rsi,1),%r11
  add    %rbp,%rsi
  mov    %r14,0x108(%rsp)
  mov    %rsi,0x120(%rsp)
  lea    0xd(%r10),%esi
  mov    %esi,0x128(%rsp)
  shl    $0x2,%rsi
  lea    (%rbx,%rsi,1),%r14
  add    %rbp,%rsi
  mov    %r11,0x118(%rsp)
  mov    %rsi,0x138(%rsp)
  lea    0xe(%r10),%esi
  mov    %esi,0x12c(%rsp)
  shl    $0x2,%rsi
  lea    (%rbx,%rsi,1),%r11
  add    %rbp,%rsi
  mov    %r14,0x130(%rsp)
  mov    %r12d,%r14d
  mov    %rsi,0x148(%rsp)
  lea    -0x1(%r12),%esi
  mov    %r11,0x140(%rsp)
  mov    %esi,0x38(%rsp)
  nopl   0x0(%rax,%rax,1)
L89:
  mov    0x8(%rsp),%rsi
  lea    (%rdx,%rsi,1),%r8
  lea    0x2(%rax),%rsi
  cmp    %rsi,%rdx
  setae  %r9b
  cmp    %rax,%r8
  setbe  %sil
  or     %esi,%r9d
  cmp    %r8,%rbx
  setae  %sil
  cmp    %rdx,0x10(%rsp)
  setbe  %r11b
  or     %r11d,%esi
  and    %r9d,%esi
  cmpl   $0xe,0x38(%rsp)
  seta   %r9b
  test   %r9b,%sil
  je     L77
  cmp    %rdx,0x20(%rsp)
  setbe  %r9b
  cmp    %r8,%rbp
  setae  %sil
  or     %r9b,%sil
  je     L77
  movzbl (%rax),%esi
  movd   %esi,%xmm4
  movzbl 0x1(%rax),%esi
  punpcklbw %xmm4,%xmm4
  movd   %esi,%xmm3
  punpcklwd %xmm4,%xmm4
  xor    %esi,%esi
  punpcklbw %xmm3,%xmm3
  pshufd $0x0,%xmm4,%xmm4
  punpcklwd %xmm3,%xmm3
  movdqa %xmm4,%xmm11
  punpckhbw %xmm12,%xmm4
  pshufd $0x0,%xmm3,%xmm3
  punpcklbw %xmm12,%xmm11
  movdqa %xmm4,%xmm7
  movdqa %xmm3,%xmm10
  punpckhbw %xmm12,%xmm3
  movdqa %xmm11,%xmm9
  punpcklbw %xmm12,%xmm10
  movdqa %xmm3,%xmm6
  punpcklwd %xmm2,%xmm9
  movdqa %xmm10,%xmm8
  punpcklwd %xmm2,%xmm7
  punpcklwd %xmm2,%xmm6
  cvtdq2ps %xmm9,%xmm9
  punpcklwd %xmm2,%xmm8
  cvtdq2ps %xmm7,%xmm7
  cvtdq2ps %xmm6,%xmm6
  cvtdq2ps %xmm8,%xmm8
  nopw   0x0(%rax,%rax,1)
L204:
  movups (%rbx,%rsi,4),%xmm0
  movups 0x0(%rbp,%rsi,4),%xmm1
  movdqa %xmm10,%xmm13
  movdqa %xmm3,%xmm14
  movups 0x10(%rbx,%rsi,4),%xmm15
  punpckhwd %xmm2,%xmm13
  punpckhwd %xmm2,%xmm14
  mulps  %xmm8,%xmm1
  cvtdq2ps %xmm13,%xmm13
  cvtdq2ps %xmm14,%xmm14
  mulps  %xmm9,%xmm0
  addps  %xmm1,%xmm0
  movdqa %xmm11,%xmm1
  punpckhwd %xmm2,%xmm1
  cvtdq2ps %xmm1,%xmm1
  mulps  %xmm15,%xmm1
  movups 0x10(%rbp,%rsi,4),%xmm15
  cvttps2dq %xmm0,%xmm0
  mulps  %xmm15,%xmm13
  movups 0x30(%rbx,%rsi,4),%xmm15
  addps  %xmm13,%xmm1
  movdqa %xmm0,%xmm13
  cvttps2dq %xmm1,%xmm1
  punpcklwd %xmm1,%xmm0
  punpckhwd %xmm1,%xmm13
  movdqa %xmm0,%xmm1
  punpcklwd %xmm13,%xmm0
  punpckhwd %xmm13,%xmm1
  movups 0x20(%rbp,%rsi,4),%xmm13
  punpcklwd %xmm1,%xmm0
  movups 0x20(%rbx,%rsi,4),%xmm1
  mulps  %xmm6,%xmm13
  pand   %xmm5,%xmm0
  mulps  %xmm7,%xmm1
  addps  %xmm13,%xmm1
  movdqa %xmm4,%xmm13
  punpckhwd %xmm2,%xmm13
  cvtdq2ps %xmm13,%xmm13
  mulps  %xmm15,%xmm13
  movups 0x30(%rbp,%rsi,4),%xmm15
  cvttps2dq %xmm1,%xmm1
  mulps  %xmm15,%xmm14
  addps  %xmm14,%xmm13
  movdqa %xmm1,%xmm14
  cvttps2dq %xmm13,%xmm13
  punpcklwd %xmm13,%xmm1
  punpckhwd %xmm13,%xmm14
  movdqa %xmm1,%xmm13
  punpcklwd %xmm14,%xmm1
  punpckhwd %xmm14,%xmm13
  punpcklwd %xmm13,%xmm1
  pand   %xmm5,%xmm1
  packuswb %xmm1,%xmm0
  movups %xmm0,(%rdx,%rsi,1)
  add    $0x10,%rsi
  cmp    %rsi,%rdi
  jne    L204
  cmp    %r10d,%r12d
  je     L16
  movzbl (%rax),%esi
  pxor   %xmm0,%xmm0
  pxor   %xmm1,%xmm1
  lea    (%rcx,%r10,1),%edx
  movslq %edx,%rdx
  cvtsi2ss %esi,%xmm0
  mov    0x28(%rsp),%rsi
  mulss  (%rsi),%xmm0
  movzbl 0x1(%rax),%esi
  cvtsi2ss %esi,%xmm1
  mov    0x30(%rsp),%rsi
  mulss  (%rsi),%xmm1
  addss  %xmm1,%xmm0
  cvttss2si %xmm0,%esi
  mov    %sil,0x0(%r13,%rdx,1)
  cmp    %r15d,%r12d
  jle    L16
  movzbl (%rax),%esi
  pxor   %xmm0,%xmm0
  pxor   %xmm1,%xmm1
  lea    (%rcx,%r15,1),%edx
  movslq %edx,%rdx
  cvtsi2ss %esi,%xmm0
  mov    0x40(%rsp),%rsi
  mulss  (%rsi),%xmm0
  movzbl 0x1(%rax),%esi
  cvtsi2ss %esi,%xmm1
  mov    0x48(%rsp),%rsi
  mulss  (%rsi),%xmm1
  addss  %xmm1,%xmm0
  cvttss2si %xmm0,%esi
  mov    %sil,0x0(%r13,%rdx,1)
  mov    0x3c(%rsp),%edx
  cmp    %edx,%r12d
  jle    L16
  movzbl (%rax),%esi
  pxor   %xmm0,%xmm0
  pxor   %xmm1,%xmm1
  add    %ecx,%edx
  movslq %edx,%rdx
  cvtsi2ss %esi,%xmm0
  mov    0x50(%rsp),%rsi
  mulss  (%rsi),%xmm0
  movzbl 0x1(%rax),%esi
  cvtsi2ss %esi,%xmm1
  mov    0x58(%rsp),%rsi
  mulss  (%rsi),%xmm1
  addss  %xmm1,%xmm0
  cvttss2si %xmm0,%esi
  mov    %sil,0x0(%r13,%rdx,1)
  mov    0x60(%rsp),%edx
  cmp    %edx,%r12d
  jle    L16
  movzbl (%rax),%esi
  pxor   %xmm0,%xmm0
  pxor   %xmm1,%xmm1
  add    %ecx,%edx
  movslq %edx,%rdx
  cvtsi2ss %esi,%xmm0
  mov    0x68(%rsp),%rsi
  mulss  (%rsi),%xmm0
  movzbl 0x1(%rax),%esi
  cvtsi2ss %esi,%xmm1
  mov    0x70(%rsp),%rsi
  mulss  (%rsi),%xmm1
  addss  %xmm1,%xmm0
  cvttss2si %xmm0,%esi
  mov    %sil,0x0(%r13,%rdx,1)
  mov    0x64(%rsp),%edx
  cmp    %edx,%r12d
  jle    L16
  movzbl (%rax),%esi
  pxor   %xmm0,%xmm0
  pxor   %xmm1,%xmm1
  add    %ecx,%edx
  movslq %edx,%rdx
  cvtsi2ss %esi,%xmm0
  mov    0x78(%rsp),%rsi
  mulss  (%rsi),%xmm0
  movzbl 0x1(%rax),%esi
  cvtsi2ss %esi,%xmm1
  mov    0x80(%rsp),%rsi
  mulss  (%rsi),%xmm1
  addss  %xmm1,%xmm0
  cvttss2si %xmm0,%esi
  mov    %sil,0x0(%r13,%rdx,1)
  mov    0x88(%rsp),%edx
  cmp    %edx,%r12d
  jle    L16
  movzbl (%rax),%esi
  pxor   %xmm0,%xmm0
  pxor   %xmm1,%xmm1
  add    %ecx,%edx
  movslq %edx,%rdx
  cvtsi2ss %esi,%xmm0
  mov    0x90(%rsp),%rsi
  mulss  (%rsi),%xmm0
  movzbl 0x1(%rax),%esi
  cvtsi2ss %esi,%xmm1
  mov    0x98(%rsp),%rsi
  mulss  (%rsi),%xmm1
  addss  %xmm1,%xmm0
  cvttss2si %xmm0,%esi
  mov    %sil,0x0(%r13,%rdx,1)
  mov    0x8c(%rsp),%edx
  cmp    %edx,%r12d
  jle    L16
  movzbl (%rax),%esi
  pxor   %xmm0,%xmm0
  pxor   %xmm1,%xmm1
  add    %ecx,%edx
  movslq %edx,%rdx
  cvtsi2ss %esi,%xmm0
  mov    0xa0(%rsp),%rsi
  mulss  (%rsi),%xmm0
  movzbl 0x1(%rax),%esi
  cvtsi2ss %esi,%xmm1
  mov    0xa8(%rsp),%rsi
  mulss  (%rsi),%xmm1
  addss  %xmm1,%xmm0
  cvttss2si %xmm0,%esi
  mov    %sil,0x0(%r13,%rdx,1)
  mov    0xb0(%rsp),%edx
  cmp    %edx,%r12d
  jle    L16
  movzbl (%rax),%esi
  pxor   %xmm0,%xmm0
  pxor   %xmm1,%xmm1
  add    %ecx,%edx
  movslq %edx,%rdx
  cvtsi2ss %esi,%xmm0
  mov    0xb8(%rsp),%rsi
  mulss  (%rsi),%xmm0
  movzbl 0x1(%rax),%esi
  cvtsi2ss %esi,%xmm1
  mov    0xc0(%rsp),%rsi
  mulss  (%rsi),%xmm1
  addss  %xmm1,%xmm0
  cvttss2si %xmm0,%esi
  mov    %sil,0x0(%r13,%rdx,1)
  mov    0xb4(%rsp),%edx
  cmp    %edx,%r12d
  jle    L16
  movzbl (%rax),%esi
  pxor   %xmm0,%xmm0
  pxor   %xmm1,%xmm1
  add    %ecx,%edx
  movslq %edx,%rdx
  cvtsi2ss %esi,%xmm0
  mov    0xc8(%rsp),%rsi
  mulss  (%rsi),%xmm0
  movzbl 0x1(%rax),%esi
  cvtsi2ss %esi,%xmm1
  mov    0xd0(%rsp),%rsi
  mulss  (%rsi),%xmm1
  addss  %xmm1,%xmm0
  cvttss2si %xmm0,%esi
  mov    %sil,0x0(%r13,%rdx,1)
  mov    0xd8(%rsp),%edx
  cmp    %edx,%r12d
  jle    L16
  movzbl (%rax),%esi
  pxor   %xmm0,%xmm0
  pxor   %xmm1,%xmm1
  add    %ecx,%edx
  movslq %edx,%rdx
  cvtsi2ss %esi,%xmm0
  mov    0xe0(%rsp),%rsi
  mulss  (%rsi),%xmm0
  movzbl 0x1(%rax),%esi
  cvtsi2ss %esi,%xmm1
  mov    0xe8(%rsp),%rsi
  mulss  (%rsi),%xmm1
  addss  %xmm1,%xmm0
  cvttss2si %xmm0,%esi
  mov    %sil,0x0(%r13,%rdx,1)
  mov    0xdc(%rsp),%edx
  cmp    %edx,%r12d
  jle    L16
  movzbl (%rax),%esi
  pxor   %xmm0,%xmm0
  pxor   %xmm1,%xmm1
  add    %ecx,%edx
  movslq %edx,%rdx
  cvtsi2ss %esi,%xmm0
  mov    0xf0(%rsp),%rsi
  mulss  (%rsi),%xmm0
  movzbl 0x1(%rax),%esi
  cvtsi2ss %esi,%xmm1
  mov    0xf8(%rsp),%rsi
  mulss  (%rsi),%xmm1
  addss  %xmm1,%xmm0
  cvttss2si %xmm0,%esi
  mov    %sil,0x0(%r13,%rdx,1)
  mov    0x100(%rsp),%edx
  cmp    %edx,%r12d
  jle    L16
  movzbl (%rax),%esi
  pxor   %xmm0,%xmm0
  pxor   %xmm1,%xmm1
  add    %ecx,%edx
  movslq %edx,%rdx
  cvtsi2ss %esi,%xmm0
  mov    0x108(%rsp),%rsi
  mulss  (%rsi),%xmm0
  movzbl 0x1(%rax),%esi
  cvtsi2ss %esi,%xmm1
  mov    0x110(%rsp),%rsi
  mulss  (%rsi),%xmm1
  addss  %xmm1,%xmm0
  cvttss2si %xmm0,%esi
  mov    %sil,0x0(%r13,%rdx,1)
  mov    0x104(%rsp),%edx
  cmp    %edx,%r12d
  jle    L16
  movzbl (%rax),%esi
  pxor   %xmm0,%xmm0
  pxor   %xmm1,%xmm1
  add    %ecx,%edx
  movslq %edx,%rdx
  cvtsi2ss %esi,%xmm0
  mov    0x118(%rsp),%rsi
  mulss  (%rsi),%xmm0
  movzbl 0x1(%rax),%esi
  cvtsi2ss %esi,%xmm1
  mov    0x120(%rsp),%rsi
  mulss  (%rsi),%xmm1
  addss  %xmm1,%xmm0
  cvttss2si %xmm0,%esi
  mov    %sil,0x0(%r13,%rdx,1)
  mov    0x128(%rsp),%edx
  cmp    %edx,%r12d
  jle    L16
  movzbl (%rax),%esi
  pxor   %xmm0,%xmm0
  pxor   %xmm1,%xmm1
  add    %ecx,%edx
  movslq %edx,%rdx
  cvtsi2ss %esi,%xmm0
  mov    0x130(%rsp),%rsi
  mulss  (%rsi),%xmm0
  movzbl 0x1(%rax),%esi
  cvtsi2ss %esi,%xmm1
  mov    0x138(%rsp),%rsi
  mulss  (%rsi),%xmm1
  addss  %xmm1,%xmm0
  cvttss2si %xmm0,%esi
  mov    %sil,0x0(%r13,%rdx,1)
  mov    0x12c(%rsp),%edx
  cmp    %edx,%r12d
  jle    L16
  movzbl (%rax),%esi
  pxor   %xmm0,%xmm0
  pxor   %xmm1,%xmm1
  add    %ecx,%edx
  movslq %edx,%rdx
  cvtsi2ss %esi,%xmm0
  mov    0x140(%rsp),%rsi
  mulss  (%rsi),%xmm0
  movzbl 0x1(%rax),%esi
  cvtsi2ss %esi,%xmm1
  mov    0x148(%rsp),%rsi
  mulss  (%rsi),%xmm1
  addss  %xmm1,%xmm0
  cvttss2si %xmm0,%esi
  mov    %sil,0x0(%r13,%rdx,1)
  xchg   %ax,%ax
L16:
  mov    %r8,%rdx
  lea    0x1(%rax),%rsi
  add    %r12d,%ecx
  cmp    0x18(%rsp),%rax
  je     L216
  mov    %rsi,%rax
  jmp    L89
  nopl   0x0(%rax)
L77:
  xor    %esi,%esi
  nopw   0x0(%rax,%rax,1)
L100:
  movzbl (%rax),%r9d
  pxor   %xmm0,%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2ss %r9d,%xmm0
  movzbl 0x1(%rax),%r9d
  mulss  (%rbx,%rsi,4),%xmm0
  cvtsi2ss %r9d,%xmm1
  mulss  0x0(%rbp,%rsi,4),%xmm1
  addss  %xmm1,%xmm0
  cvttss2si %xmm0,%r9d
  mov    %r9b,(%rdx,%rsi,1)
  add    $0x1,%rsi
  cmp    %rsi,%r14
  jne    L100
  jmp    L16
  cs nopw 0x0(%rax,%rax,1)
L216:
  add    $0x158,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

tool_calls: name: disassemble_data
arguments: tag: D9
datatype: byte[16]

tool: {"D9": [0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00]}

assistant: ```c
void upsample_component_line_linear(unsigned char *x_in_buff, unsigned char *x_out_buff, const int width, const int xpos, const int xstep, const int compressed_width, const float *x_pixel_percent1, const float *x_pixel_percent2) {
  int i, k;
  int base_write_pos;
  float tpix;
  if (xpos > 0)
    memset(x_out_buff, *x_in_buff, xpos);
  for (i = 0; i < compressed_width; i++) {
    base_write_pos = (i * xstep) + xpos;
    for (k = 0; k < xstep; k++) {
      tpix = (x_in_buff[i] * x_pixel_percent1[k]) + (x_in_buff[i + 1] * x_pixel_percent2[k]);
      x_out_buff[base_write_pos + k] = (unsigned char)tpix;
    }
  }
}
```