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

```asm
<cftexp2>:
  endbr64
  push   %r15
  mov    %edi,%r15d
  push   %r14
  sar    $0x2,%r15d
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x48,%rsp
  mov    %rcx,0x30(%rsp)
  mov    %edi,%ecx
  sar    %ecx
  mov    %rsi,0x18(%rsp)
  mov    %edx,0x28(%rsp)
  mov    %ecx,0x4(%rsp)
  cmp    $0x203,%edi
  jle    L136
  movslq %ecx,%r13
  shl    $0x3,%r13
  nopw   0x0(%rax,%rax,1)
L12:
  cmp    %r15d,0x4(%rsp)
  jle    L97
  mov    0x28(%rsp),%ecx
  mov    %r15d,%edx
  mov    0x30(%rsp),%rdi
  mov    %r15d,0x10(%rsp)
  sar    %edx
  mov    %ecx,%eax
  sub    %edx,%eax
  cltq
  lea    (%rdi,%rax,8),%r12
  mov    %ecx,%eax
  sub    %r15d,%eax
  cltq
  lea    (%rdi,%rax,8),%rbp
  nopl   0x0(%rax,%rax,1)
L60:
  mov    0x10(%rsp),%eax
  mov    %eax,%ebx
  add    %eax,%eax
  mov    %eax,0x8(%rsp)
  sub    %r15d,%ebx
  cmp    %ebx,0x4(%rsp)
  jle    L47
  movslq 0x8(%rsp),%r14
  mov    0x18(%rsp),%rdi
  movslq %ebx,%rax
  mov    %rbp,0x20(%rsp)
  mov    %ebx,%ebp
  lea    0x0(,%r14,8),%rcx
  lea    (%rdi,%rax,8),%r14
  mov    %rcx,%rbx
  nopl   0x0(%rax,%rax,1)
L84:
  mov    %r14,%rsi
  mov    %r12,%rdx
  mov    %r15d,%edi
  call   <cftmdl1@plt>
  lea    0x0(%r13,%r14,1),%rsi
  mov    %r12,%rdx
  mov    %r15d,%edi
  call   <cftmdl1@plt>
  add    %rbx,%r14
  add    0x8(%rsp),%ebp
  cmp    %ebp,0x4(%rsp)
  jg     L84
  mov    0x20(%rsp),%rbp
L47:
  mov    0x8(%rsp),%ebx
  sub    %r15d,%ebx
  cmp    %ebx,0x4(%rsp)
  jle    L81
  mov    0x10(%rsp),%eax
  mov    0x18(%rsp),%rcx
  movslq %ebx,%rdx
  mov    %r12,0x20(%rsp)
  mov    %ebx,%r12d
  shl    $0x2,%eax
  movslq %eax,%r14
  mov    %eax,0x8(%rsp)
  lea    0x0(,%r14,8),%rax
  lea    (%rcx,%rdx,8),%r14
  mov    %r14,%rbx
  mov    %rax,%r14
  nopl   (%rax)
L16:
  mov    %rbx,%rsi
  mov    %rbp,%rdx
  mov    %r15d,%edi
  call   <cftmdl2@plt>
  lea    0x0(%r13,%rbx,1),%rsi
  mov    %rbp,%rdx
  mov    %r15d,%edi
  call   <cftmdl2@plt>
  add    %r14,%rbx
  add    0x8(%rsp),%r12d
  cmp    %r12d,0x4(%rsp)
  jg     L16
  mov    0x20(%rsp),%r12
L81:
  shll   $0x2,0x10(%rsp)
  mov    0x10(%rsp),%eax
  cmp    %eax,0x4(%rsp)
  jg     L60
L97:
  sar    $0x2,%r15d
  cmp    $0x80,%r15d
  jg     L12
L136:
  mov    0x4(%rsp),%edi
  cmp    %r15d,%edi
  jle    L101
  mov    0x28(%rsp),%ebp
  mov    %r15d,%edx
  mov    0x30(%rsp),%r12
  mov    %r15d,0x30(%rsp)
  sar    %edx
  mov    %ebp,%eax
  sub    %edx,%eax
  cltq
  lea    (%r12,%rax,8),%r13
  mov    %ebp,%eax
  sub    %r15d,%eax
  cltq
  lea    (%r12,%rax,8),%r14
  movslq %edi,%rax
  shl    $0x3,%rax
  mov    %rax,0x8(%rsp)
  nopw   0x0(%rax,%rax,1)
L52:
  mov    0x30(%rsp),%eax
  mov    %eax,%r8d
  add    %eax,%eax
  mov    %eax,0x20(%rsp)
  sub    %r15d,%r8d
  cmp    %r8d,0x4(%rsp)
  jle    L40
  movslq 0x20(%rsp),%rax
  mov    0x18(%rsp),%rcx
  mov    %r14,0x38(%rsp)
  shl    $0x3,%rax
  mov    %rax,0x28(%rsp)
  movslq %r8d,%rax
  lea    (%rcx,%rax,8),%rbx
  mov    %rbx,%r14
  mov    %r8d,%ebx
L58:
  mov    %r14,%rsi
  mov    %r13,%rdx
  mov    %r15d,%edi
  call   <cftmdl1@plt>
  mov    %r12,%rcx
  mov    %r14,%rsi
  mov    %ebp,%edx
  mov    %r15d,%edi
  call   <cftfx41@plt>
  mov    0x8(%rsp),%rax
  mov    %r13,%rdx
  mov    %r15d,%edi
  lea    (%rax,%r14,1),%rsi
  mov    %rsi,0x10(%rsp)
  call   <cftmdl1@plt>
  mov    0x10(%rsp),%rsi
  mov    %r12,%rcx
  mov    %ebp,%edx
  mov    %r15d,%edi
  call   <cftfx41@plt>
  add    0x20(%rsp),%ebx
  add    0x28(%rsp),%r14
  cmp    %ebx,0x4(%rsp)
  jg     L58
  mov    0x38(%rsp),%r14
L40:
  mov    0x20(%rsp),%r8d
  sub    %r15d,%r8d
  cmp    %r8d,0x4(%rsp)
  jle    L122
  mov    0x30(%rsp),%eax
  mov    0x18(%rsp),%rcx
  mov    %r13,0x38(%rsp)
  shl    $0x2,%eax
  mov    %eax,0x20(%rsp)
  cltq
  shl    $0x3,%rax
  mov    %rax,0x28(%rsp)
  movslq %r8d,%rax
  lea    (%rcx,%rax,8),%rbx
  mov    %rbx,%r13
  mov    %r8d,%ebx
  nopl   (%rax)
L96:
  mov    %r13,%rsi
  mov    %r14,%rdx
  mov    %r15d,%edi
  call   <cftmdl2@plt>
  mov    %r12,%rcx
  mov    %r13,%rsi
  mov    %ebp,%edx
  mov    %r15d,%edi
  call   <cftfx42@plt>
  mov    0x8(%rsp),%rax
  mov    %r14,%rdx
  mov    %r15d,%edi
  lea    0x0(%r13,%rax,1),%rsi
  mov    %rsi,0x10(%rsp)
  call   <cftmdl2@plt>
  mov    0x10(%rsp),%rsi
  mov    %r12,%rcx
  mov    %ebp,%edx
  mov    %r15d,%edi
  call   <cftfx42@plt>
  add    0x20(%rsp),%ebx
  add    0x28(%rsp),%r13
  cmp    %ebx,0x4(%rsp)
  jg     L96
  mov    0x38(%rsp),%r13
L122:
  shll   $0x2,0x30(%rsp)
  mov    0x30(%rsp),%eax
  cmp    %eax,0x4(%rsp)
  jg     L52
L101:
  add    $0x48,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

assistant: ```c
void cftexp2(int n, double *a, int nw, double *w) {
  void cftmdl1(int n, double *a, double *w);
  void cftmdl2(int n, double *a, double *w);
  void cftfx41(int n, double *a, int nw, double *w);
  void cftfx42(int n, double *a, int nw, double *w);
  int j, k, l, m;
  m = n >> 1;
  l = n >> 2;
  while (l > 128) {
    for (k = l; k < m; k <<= 2) {
      for (j = k - l; j < m; j += 2 * k) {
        cftmdl1(l, &a[j], &w[nw - (l >> 1)]);
        cftmdl1(l, &a[m + j], &w[nw - (l >> 1)]);
      }
      for (j = 2 * k - l; j < m; j += 4 * k) {
        cftmdl2(l, &a[j], &w[nw - l]);
        cftmdl2(l, &a[m + j], &w[nw - l]);
      }
    }
    l >>= 2;
  }
  for (k = l; k < m; k <<= 2) {
    for (j = k - l; j < m; j += 2 * k) {
      cftmdl1(l, &a[j], &w[nw - (l >> 1)]);
      cftfx41(l, &a[j], nw, w);
      cftmdl1(l, &a[m + j], &w[nw - (l >> 1)]);
      cftfx41(l, &a[m + j], nw, w);
    }
    for (j = 2 * k - l; j < m; j += 4 * k) {
      cftmdl2(l, &a[j], &w[nw - l]);
      cftfx42(l, &a[j], nw, w);
      cftmdl2(l, &a[m + j], &w[nw - l]);
      cftfx42(l, &a[m + j], nw, w);
    }
  }
}
```