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

```asm
<bitrv2_128>:
  endbr64
  push   %r14
  mov    %rdi,%rax
  mov    $0x8,%r11d
  xor    %r10d,%r10d
  push   %r13
  lea    D4(%rip),%r13
  push   %r12
  mov    %r13,%r12
  push   %rbp
  push   %rbx
L10:
  lea    (%r10,%r11,1),%edx
  mov    %rdx,%r10
  lea    (%rax,%rdx,4),%rdi
  lea    0x1(%rdx),%edx
  lea    (%rax,%rdx,4),%rsi
  lea    0x8(%r10),%edx
  movss  (%rdi),%xmm1
  lea    (%rax,%rdx,4),%rcx
  lea    0x9(%r10),%edx
  movss  (%rsi),%xmm0
  lea    (%rax,%rdx,4),%rdx
  movss  (%rcx),%xmm3
  movss  (%rdx),%xmm2
  movss  %xmm3,(%rdi)
  movss  %xmm2,(%rsi)
  movss  %xmm1,(%rcx)
  movss  %xmm0,(%rdx)
  cmp    $0xe,%r11d
  je     L39
  mov    0x4(%r12),%r10d
  lea    -0x6(%r11),%ebp
  mov    %r13,%r9
  xor    %edx,%edx
  mov    %r10d,%ecx
  lea    -0x8(%r10,%r11,1),%ebx
L4:
  mov    %ecx,%esi
  add    %ebp,%edx
  add    $0x4,%r9
  lea    (%rax,%rsi,4),%r14
  lea    0x1(%rcx),%esi
  lea    (%rax,%rsi,4),%r8
  mov    %edx,%esi
  movss  (%r14),%xmm1
  lea    (%rax,%rsi,4),%rdi
  lea    0x1(%rdx),%esi
  movss  (%r8),%xmm0
  lea    (%rax,%rsi,4),%rsi
  movss  (%rdi),%xmm3
  movss  (%rsi),%xmm2
  movss  %xmm3,(%r14)
  movss  %xmm2,(%r8)
  movss  %xmm1,(%rdi)
  movss  %xmm0,(%rsi)
  lea    0x8(%rcx),%esi
  lea    (%rax,%rsi,4),%r14
  lea    0x9(%rcx),%esi
  lea    (%rax,%rsi,4),%r8
  lea    0x10(%rdx),%esi
  movss  (%r14),%xmm1
  lea    (%rax,%rsi,4),%rdi
  lea    0x11(%rdx),%esi
  movss  (%r8),%xmm0
  lea    (%rax,%rsi,4),%rsi
  movss  (%rdi),%xmm3
  movss  (%rsi),%xmm2
  movss  %xmm3,(%r14)
  movss  %xmm2,(%r8)
  movss  %xmm1,(%rdi)
  movss  %xmm0,(%rsi)
  lea    0x10(%rcx),%esi
  lea    (%rax,%rsi,4),%r14
  lea    0x11(%rcx),%esi
  lea    (%rax,%rsi,4),%r8
  lea    0x8(%rdx),%esi
  movss  (%r14),%xmm1
  lea    (%rax,%rsi,4),%rdi
  lea    0x9(%rdx),%esi
  movss  (%r8),%xmm0
  lea    (%rax,%rsi,4),%rsi
  movss  (%rdi),%xmm3
  movss  (%rsi),%xmm2
  movss  %xmm3,(%r14)
  movss  %xmm2,(%r8)
  movss  %xmm1,(%rdi)
  movss  %xmm0,(%rsi)
  lea    0x18(%rcx),%esi
  lea    (%rax,%rsi,4),%r8
  lea    0x19(%rcx),%esi
  lea    (%rax,%rsi,4),%rdi
  lea    0x18(%rdx),%esi
  add    $0x19,%edx
  movss  (%r8),%xmm1
  lea    (%rax,%rsi,4),%rsi
  lea    (%rax,%rdx,4),%rdx
  movss  (%rdi),%xmm0
  movss  (%rsi),%xmm3
  movss  (%rdx),%xmm2
  movss  %xmm3,(%r8)
  movss  %xmm2,(%rdi)
  movss  %xmm1,(%rsi)
  movss  %xmm0,(%rdx)
  cmp    %ecx,%ebx
  je     L19
  mov    (%r9),%edx
  add    $0x2,%ecx
  jmp    L4
  nopl   (%rax)
L19:
  add    $0x2,%r11d
  add    $0x4,%r12
  jmp    L10
  nopl   (%rax)
L39:
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
```

tool_calls: name: extract_symbolic_data
arguments: label: D4
data_type: string

tool: 

assistant: ```c
void bitrv2_128(float *a) {
  unsigned int j, j1, k, k1;
  float xr, xi, yr, yi;
  static const int ip[4] = {0, 64, 32, 96};
  for (k = 0; k < 4; k++) {
    for (j = 0; j < k; j++) {
      j1 = 2 * j + ip[k];
      k1 = 2 * k + ip[j];
      xr = a[j1 + 0];
      xi = a[j1 + 1];
      yr = a[k1 + 0];
      yi = a[k1 + 1];
      a[j1 + 0] = yr;
      a[j1 + 1] = yi;
      a[k1 + 0] = xr;
      a[k1 + 1] = xi;
      j1 += 8;
      k1 += 16;
      xr = a[j1 + 0];
      xi = a[j1 + 1];
      yr = a[k1 + 0];
      yi = a[k1 + 1];
      a[j1 + 0] = yr;
      a[j1 + 1] = yi;
      a[k1 + 0] = xr;
      a[k1 + 1] = xi;
      j1 += 8;
      k1 -= 8;
      xr = a[j1 + 0];
      xi = a[j1 + 1];
      yr = a[k1 + 0];
      yi = a[k1 + 1];
      a[j1 + 0] = yr;
      a[j1 + 1] = yi;
      a[k1 + 0] = xr;
      a[k1 + 1] = xi;
      j1 += 8;
      k1 += 16;
      xr = a[j1 + 0];
      xi = a[j1 + 1];
      yr = a[k1 + 0];
      yi = a[k1 + 1];
      a[j1 + 0] = yr;
      a[j1 + 1] = yi;
      a[k1 + 0] = xr;
      a[k1 + 1] = xi;
    }
    j1 = 2 * k + 8 + ip[k];
    k1 = j1 + 8;
    xr = a[j1 + 0];
    xi = a[j1 + 1];
    yr = a[k1 + 0];
    yi = a[k1 + 1];
    a[j1 + 0] = yr;
    a[j1 + 1] = yi;
    a[k1 + 0] = xr;
    a[k1 + 1] = xi;
  }
}
```