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

```asm
<rgba8_to_RGBA>:
  endbr64
  test   %r9d,%r9d
  je     L65
  mov    %rdx,%r10
  mov    %rcx,%rdx
  push   %r12
  mov    %r8,%rax
  lea    0x4(%rdx),%r12
  lea    -0x1(%r9),%r11d
  push   %rbp
  sub    %r12,%rax
  lea    0x4(%r10),%rbp
  push   %rbx
  lea    0x4(%rsi),%rbx
  cmp    $0x38,%rax
  lea    0x3f(%rdi),%rcx
  seta   %al
  cmp    $0xe,%r11d
  seta   %r12b
  and    %r12d,%eax
  mov    %rdx,%r12
  sub    %rbp,%r12
  cmp    $0x38,%r12
  seta   %r12b
  and    %r12d,%eax
  mov    %r8,%r12
  sub    %rbp,%r12
  cmp    $0x38,%r12
  seta   %bpl
  and    %ebp,%eax
  mov    %r10,%rbp
  sub    %rbx,%rbp
  cmp    $0x38,%rbp
  seta   %bpl
  and    %ebp,%eax
  mov    %rdx,%rbp
  sub    %rbx,%rbp
  cmp    $0x38,%rbp
  seta   %bpl
  and    %ebp,%eax
  mov    %r8,%rbp
  sub    %rbx,%rbp
  cmp    $0x38,%rbp
  seta   %bl
  and    %ebx,%eax
  mov    %rcx,%rbx
  sub    %rsi,%rbx
  cmp    $0x7e,%rbx
  seta   %bl
  and    %ebx,%eax
  mov    %rcx,%rbx
  sub    %r10,%rbx
  cmp    $0x7e,%rbx
  seta   %bl
  sub    %rdx,%rcx
  and    %ebx,%eax
  cmp    $0x7e,%rcx
  seta   %cl
  test   %cl,%al
  je     L47
  mov    %rdi,%rax
  not    %rax
  add    %r8,%rax
  cmp    $0x3e,%rax
  jbe    L47
  mov    %r9d,%ecx
  movaps D29(%rip),%xmm4
  xor    %eax,%eax
  pxor   %xmm6,%xmm6
  shr    $0x4,%ecx
  movdqa D7(%rip),%xmm7
  pxor   %xmm3,%xmm3
  shl    $0x6,%rcx
  nopl   0x0(%rax)
L35:
  movdqu (%rdi,%rax,1),%xmm2
  movdqu 0x10(%rdi,%rax,1),%xmm1
  movdqa %xmm7,%xmm10
  movdqu 0x10(%rdi,%rax,1),%xmm5
  movdqu 0x20(%rdi,%rax,1),%xmm8
  pand   %xmm7,%xmm1
  pand   %xmm7,%xmm2
  movdqu 0x30(%rdi,%rax,1),%xmm0
  movdqu 0x30(%rdi,%rax,1),%xmm9
  packuswb %xmm1,%xmm2
  movdqu (%rdi,%rax,1),%xmm1
  psrlw  $0x8,%xmm5
  pand   %xmm7,%xmm8
  pand   %xmm7,%xmm0
  psrlw  $0x8,%xmm9
  psrlw  $0x8,%xmm1
  packuswb %xmm0,%xmm8
  movdqa %xmm7,%xmm0
  packuswb %xmm5,%xmm1
  movdqu 0x20(%rdi,%rax,1),%xmm5
  pand   %xmm2,%xmm0
  pand   %xmm8,%xmm10
  psrlw  $0x8,%xmm2
  psrlw  $0x8,%xmm8
  psrlw  $0x8,%xmm5
  packuswb %xmm8,%xmm2
  packuswb %xmm9,%xmm5
  movdqa %xmm0,%xmm9
  movdqa %xmm7,%xmm0
  packuswb %xmm10,%xmm9
  movdqa %xmm7,%xmm10
  pand   %xmm1,%xmm0
  pand   %xmm5,%xmm10
  psrlw  $0x8,%xmm1
  movdqa %xmm0,%xmm8
  psrlw  $0x8,%xmm5
  movdqa %xmm9,%xmm0
  packuswb %xmm10,%xmm8
  packuswb %xmm5,%xmm1
  movdqa %xmm9,%xmm5
  punpckhbw %xmm6,%xmm0
  punpcklbw %xmm6,%xmm5
  movdqa %xmm5,%xmm9
  punpckhwd %xmm3,%xmm5
  cvtdq2ps %xmm5,%xmm5
  mulps  %xmm4,%xmm5
  punpcklwd %xmm3,%xmm9
  cvtdq2ps %xmm9,%xmm9
  mulps  %xmm4,%xmm9
  movups %xmm5,0x10(%rsi,%rax,1)
  movdqa %xmm0,%xmm5
  punpcklwd %xmm3,%xmm5
  movups %xmm9,(%rsi,%rax,1)
  cvtdq2ps %xmm5,%xmm5
  mulps  %xmm4,%xmm5
  movups %xmm5,0x20(%rsi,%rax,1)
  movdqa %xmm0,%xmm5
  movdqa %xmm8,%xmm0
  punpckhwd %xmm3,%xmm5
  punpckhbw %xmm6,%xmm0
  cvtdq2ps %xmm5,%xmm5
  mulps  %xmm4,%xmm5
  movups %xmm5,0x30(%rsi,%rax,1)
  movdqa %xmm8,%xmm5
  punpcklbw %xmm6,%xmm5
  movdqa %xmm5,%xmm8
  punpckhwd %xmm3,%xmm5
  cvtdq2ps %xmm5,%xmm5
  mulps  %xmm4,%xmm5
  punpcklwd %xmm3,%xmm8
  cvtdq2ps %xmm8,%xmm8
  mulps  %xmm4,%xmm8
  movups %xmm5,0x10(%r10,%rax,1)
  movdqa %xmm0,%xmm5
  punpckhwd %xmm3,%xmm0
  punpcklwd %xmm3,%xmm5
  cvtdq2ps %xmm0,%xmm0
  movups %xmm8,(%r10,%rax,1)
  cvtdq2ps %xmm5,%xmm5
  mulps  %xmm4,%xmm5
  mulps  %xmm4,%xmm0
  movups %xmm5,0x20(%r10,%rax,1)
  movdqa %xmm2,%xmm5
  punpckhbw %xmm6,%xmm2
  punpcklbw %xmm6,%xmm5
  movups %xmm0,0x30(%r10,%rax,1)
  movdqa %xmm2,%xmm0
  movdqa %xmm5,%xmm2
  punpckhwd %xmm3,%xmm5
  punpcklwd %xmm3,%xmm2
  cvtdq2ps %xmm5,%xmm5
  cvtdq2ps %xmm2,%xmm2
  mulps  %xmm4,%xmm2
  mulps  %xmm4,%xmm5
  movups %xmm2,(%rdx,%rax,1)
  movdqa %xmm0,%xmm2
  punpckhwd %xmm3,%xmm0
  punpcklwd %xmm3,%xmm2
  cvtdq2ps %xmm0,%xmm0
  movups %xmm5,0x10(%rdx,%rax,1)
  cvtdq2ps %xmm2,%xmm2
  mulps  %xmm4,%xmm2
  mulps  %xmm4,%xmm0
  movups %xmm2,0x20(%rdx,%rax,1)
  movdqa %xmm1,%xmm2
  punpcklbw %xmm6,%xmm2
  movups %xmm0,0x30(%rdx,%rax,1)
  movdqa %xmm1,%xmm0
  movdqa %xmm2,%xmm1
  punpckhbw %xmm6,%xmm0
  punpckhwd %xmm3,%xmm2
  punpcklwd %xmm3,%xmm1
  cvtdq2ps %xmm2,%xmm2
  cvtdq2ps %xmm1,%xmm1
  mulps  %xmm4,%xmm1
  mulps  %xmm4,%xmm2
  movups %xmm1,(%r8,%rax,1)
  movdqa %xmm0,%xmm1
  punpckhwd %xmm3,%xmm0
  punpcklwd %xmm3,%xmm1
  cvtdq2ps %xmm0,%xmm0
  movups %xmm2,0x10(%r8,%rax,1)
  mulps  %xmm4,%xmm0
  cvtdq2ps %xmm1,%xmm1
  mulps  %xmm4,%xmm1
  movups %xmm0,0x30(%r8,%rax,1)
  movups %xmm1,0x20(%r8,%rax,1)
  add    $0x40,%rax
  cmp    %rcx,%rax
  jne    L35
  mov    %r9d,%ebx
  and    $0xfffffff0,%ebx
  mov    %ebx,%eax
  sub    %ebx,%r11d
  shl    $0x2,%rax
  add    %rax,%rdi
  add    %rax,%rsi
  lea    (%r10,%rax,1),%rcx
  add    %rax,%rdx
  add    %rax,%r8
  cmp    %ebx,%r9d
  je     L19
  movss  D29(%rip),%xmm0
  lea    0x4(,%r11,4),%r9
  xor    %eax,%eax
  nopw   0x0(%rax,%rax,1)
L51:
  movzbl (%rdi,%rax,1),%r10d
  pxor   %xmm1,%xmm1
  cvtsi2ss %r10d,%xmm1
  mulss  %xmm0,%xmm1
  movss  %xmm1,(%rsi,%rax,1)
  movzbl 0x1(%rdi,%rax,1),%r10d
  pxor   %xmm1,%xmm1
  cvtsi2ss %r10d,%xmm1
  mulss  %xmm0,%xmm1
  movss  %xmm1,(%rcx,%rax,1)
  movzbl 0x2(%rdi,%rax,1),%r10d
  pxor   %xmm1,%xmm1
  cvtsi2ss %r10d,%xmm1
  mulss  %xmm0,%xmm1
  movss  %xmm1,(%rdx,%rax,1)
  movzbl 0x3(%rdi,%rax,1),%r10d
  pxor   %xmm1,%xmm1
  cvtsi2ss %r10d,%xmm1
  mulss  %xmm0,%xmm1
  movss  %xmm1,(%r8,%rax,1)
  add    $0x4,%rax
  cmp    %r9,%rax
  jne    L51
L19:
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
  xchg   %ax,%ax
L47:
  movss  D29(%rip),%xmm0
  mov    %r9d,%r9d
  xor    %eax,%eax
  nopl   (%rax)
L42:
  movzbl (%rdi,%rax,4),%ecx
  pxor   %xmm1,%xmm1
  cvtsi2ss %ecx,%xmm1
  mulss  %xmm0,%xmm1
  movss  %xmm1,(%rsi,%rax,4)
  movzbl 0x1(%rdi,%rax,4),%ecx
  pxor   %xmm1,%xmm1
  cvtsi2ss %ecx,%xmm1
  mulss  %xmm0,%xmm1
  movss  %xmm1,(%r10,%rax,4)
  movzbl 0x2(%rdi,%rax,4),%ecx
  pxor   %xmm1,%xmm1
  cvtsi2ss %ecx,%xmm1
  mulss  %xmm0,%xmm1
  movss  %xmm1,(%rdx,%rax,4)
  movzbl 0x3(%rdi,%rax,4),%ecx
  pxor   %xmm1,%xmm1
  cvtsi2ss %ecx,%xmm1
  mulss  %xmm0,%xmm1
  movss  %xmm1,(%r8,%rax,4)
  add    $0x1,%rax
  cmp    %rax,%r9
  jne    L42
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
  nopw   0x0(%rax,%rax,1)
L65:
  ret
```

tool_calls: name: parse_data
arguments: label: D29
type: byte[16]
name: parse_data
arguments: label: D7
type: byte[16]

tool: {"D29": [0x80,0x80,0x80,0x3b,0x80,0x80,0x80,0x3b,0x80,0x80,0x80,0x3b,0x80,0x80,0x80,0x3b]}

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

assistant: ```c
void rgba8_to_RGBA(unsigned char *row, float *R, float *G, float *B, float *A, int w) {
  while (w--) {
    *R++ = *row++ * .0039215686f;
    *G++ = *row++ * .0039215686f;
    *B++ = *row++ * .0039215686f;
    *A++ = *row++ * .0039215686f;
  }
}
```