user: Please show me the C implementation that matches the assembly code listed below:

```asm
<calculoButterflyLoopBloco>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x60,%rsp
  mov    %rdi,-0x28(%rbp)
  mov    %rsi,-0x30(%rbp)
  mov    %rdx,-0x38(%rbp)
  mov    %rcx,-0x40(%rbp)
  movsd  %xmm0,-0x48(%rbp)
  movsd  %xmm1,-0x50(%rbp)
  mov    %r8,-0x58(%rbp)
  movq   $0x1,-0x10(%rbp)
  mov    -0x30(%rbp),%rax
  mov    %rax,-0x18(%rbp)
  jmp    L14
L1:
  mov    -0x18(%rbp),%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x8(%rbp)
  mov    -0x8(%rbp),%rdi
  mov    -0x18(%rbp),%rcx
  mov    -0x38(%rbp),%rdx
  mov    -0x40(%rbp),%rsi
  movsd  -0x48(%rbp),%xmm0
  mov    -0x50(%rbp),%rax
  mov    %rdi,%r8
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  lea    D9(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    -0x8(%rbp),%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  cvtss2sd %xmm0,%xmm0
  mulsd  -0x48(%rbp),%xmm0
  mov    -0x8(%rbp),%rax
  add    $0x1,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  cvtss2sd %xmm1,%xmm1
  mulsd  -0x50(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x20(%rbp)
  mov    -0x8(%rbp),%rax
  add    $0x1,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  cvtss2sd %xmm0,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x48(%rbp),%xmm1
  mov    -0x8(%rbp),%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  cvtss2sd %xmm0,%xmm0
  mulsd  -0x50(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x1c(%rbp)
  mov    -0x18(%rbp),%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  mov    -0x8(%rbp),%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  subss  -0x20(%rbp),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x1,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  mov    -0x8(%rbp),%rax
  add    $0x1,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  subss  -0x1c(%rbp),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  mov    -0x18(%rbp),%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  addss  -0x20(%rbp),%xmm0
  movss  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x1,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  mov    -0x18(%rbp),%rax
  add    $0x1,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  addss  -0x1c(%rbp),%xmm0
  movss  %xmm0,(%rax)
  addq   $0x1,-0x10(%rbp)
  mov    -0x40(%rbp),%rax
  add    %rax,-0x18(%rbp)
L14:
  mov    -0x10(%rbp),%rax
  cmp    -0x58(%rbp),%rax
  jbe    L1
  nop
  nop
  leave
  ret
```

tool_calls: name: read_data
arguments: tag: D9
data_type: string

tool: D9:           >>> FOR 2 -> wi:%f wr:%f istep:%lu mmax:%lu i:%lu j:%lu


assistant: ```c
void calculoButterflyLoopBloco(float data[], unsigned long m, unsigned long mmax, unsigned long istep, double wr, double wi, unsigned long tamBloco) {
  float tempr, tempi;
  unsigned long j, i, bloco;
  bloco = 1;
  for (i = m; bloco <= tamBloco; i += istep) {
    j = i + mmax;
    printf("          >>> FOR 2 -> wi:%f wr:%f istep:%lu mmax:%lu i:%lu j:%lu\n", wi, wr, istep, mmax, i, j);
    tempr = wr * data[j] - wi * data[j + 1];
    tempi = wr * data[j + 1] + wi * data[j];
    data[j] = data[i] - tempr;
    data[j + 1] = data[i + 1] - tempi;
    data[i] += tempr;
    data[i + 1] += tempi;
    bloco++;
  }
}
```