user: Converte this assembly snippet into its equivalent C code:

```asm
<bandet>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x48(%rbp)
  mov    %esi,-0x4c(%rbp)
  mov    %edx,-0x50(%rbp)
  mov    -0x4c(%rbp),%eax
  add    %eax,%eax
  add    $0x1,%eax
  mov    %eax,-0x28(%rbp)
  cmpl   $0x0,-0x4c(%rbp)
  jle    L3
  movl   $0x1,-0x34(%rbp)
  jmp    L92
L98:
  mov    -0x34(%rbp),%eax
  sub    $0x1,%eax
  imul   -0x28(%rbp),%eax
  mov    %eax,%edx
  mov    -0x4c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  mov    -0x34(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    -0x4c(%rbp),%eax
  cmp    %edx,%eax
  cmovg  %edx,%eax
  mov    %eax,-0x24(%rbp)
  cmpl   $0x0,-0x24(%rbp)
  jle    L62
  movl   $0x1,-0x30(%rbp)
  jmp    L16
L28:
  mov    -0x34(%rbp),%eax
  sub    $0x1,%eax
  imul   -0x28(%rbp),%eax
  sub    -0x30(%rbp),%eax
  mov    %eax,%edx
  mov    -0x4c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x34(%rbp),%eax
  sub    -0x30(%rbp),%eax
  sub    $0x1,%eax
  imul   -0x28(%rbp),%eax
  mov    %eax,%edx
  mov    -0x30(%rbp),%eax
  add    %eax,%edx
  mov    -0x4c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  -0x18(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  addl   $0x1,-0x30(%rbp)
L16:
  mov    -0x30(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jle    L28
  mov    -0x34(%rbp),%eax
  sub    $0x1,%eax
  imul   -0x28(%rbp),%eax
  mov    %eax,%edx
  mov    -0x4c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x18(%rbp),%xmm0
  movsd  %xmm0,(%rax)
L62:
  mov    -0x50(%rbp),%eax
  sub    -0x34(%rbp),%eax
  mov    -0x4c(%rbp),%edx
  cmp    %eax,%edx
  cmovle %edx,%eax
  mov    %eax,-0x20(%rbp)
  cmpl   $0x0,-0x20(%rbp)
  jle    L59
  movl   $0x1,-0x2c(%rbp)
  jmp    L37
L39:
  mov    -0x34(%rbp),%edx
  mov    -0x2c(%rbp),%eax
  add    %edx,%eax
  sub    $0x1,%eax
  imul   -0x28(%rbp),%eax
  sub    -0x2c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x4c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  mov    -0x34(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    -0x4c(%rbp),%eax
  sub    -0x2c(%rbp),%eax
  cmp    %eax,%edx
  cmovle %edx,%eax
  mov    %eax,-0x1c(%rbp)
  cmpl   $0x0,-0x1c(%rbp)
  jle    L40
  mov    -0x34(%rbp),%eax
  sub    $0x1,%eax
  imul   -0x28(%rbp),%eax
  mov    %eax,%edx
  mov    -0x2c(%rbp),%eax
  add    %eax,%edx
  mov    -0x4c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movl   $0x1,-0x30(%rbp)
  jmp    L56
L73:
  mov    -0x34(%rbp),%eax
  sub    $0x1,%eax
  imul   -0x28(%rbp),%eax
  sub    -0x30(%rbp),%eax
  mov    %eax,%edx
  mov    -0x4c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x34(%rbp),%eax
  sub    -0x30(%rbp),%eax
  sub    $0x1,%eax
  imul   -0x28(%rbp),%eax
  mov    %eax,%edx
  mov    -0x2c(%rbp),%eax
  add    %eax,%edx
  mov    -0x30(%rbp),%eax
  add    %eax,%edx
  mov    -0x4c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  -0x10(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  mov    -0x2c(%rbp),%edx
  mov    -0x34(%rbp),%eax
  add    %edx,%eax
  sub    $0x1,%eax
  imul   -0x28(%rbp),%eax
  sub    -0x2c(%rbp),%eax
  sub    -0x30(%rbp),%eax
  mov    %eax,%edx
  mov    -0x4c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x34(%rbp),%eax
  sub    -0x30(%rbp),%eax
  sub    $0x1,%eax
  imul   -0x28(%rbp),%eax
  mov    %eax,%edx
  mov    -0x30(%rbp),%eax
  add    %eax,%edx
  mov    -0x4c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  -0x8(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  addl   $0x1,-0x30(%rbp)
L56:
  mov    -0x30(%rbp),%eax
  cmp    -0x1c(%rbp),%eax
  jle    L73
  mov    -0x34(%rbp),%eax
  sub    $0x1,%eax
  imul   -0x28(%rbp),%eax
  mov    %eax,%edx
  mov    -0x2c(%rbp),%eax
  add    %eax,%edx
  mov    -0x4c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x10(%rbp),%xmm0
  movsd  %xmm0,(%rax)
L40:
  mov    -0x34(%rbp),%edx
  mov    -0x2c(%rbp),%eax
  add    %edx,%eax
  sub    $0x1,%eax
  imul   -0x28(%rbp),%eax
  sub    -0x2c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x4c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x8(%rbp),%xmm0
  divsd  -0x18(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x2c(%rbp)
L37:
  mov    -0x2c(%rbp),%eax
  cmp    -0x20(%rbp),%eax
  jle    L39
L59:
  addl   $0x1,-0x34(%rbp)
L92:
  mov    -0x34(%rbp),%eax
  cmp    -0x50(%rbp),%eax
  jle    L98
  jmp    L118
L3:
  nop
L118:
  pop    %rbp
  ret
```

assistant: ```c
void bandet(double *e, int m, int n) {
  int i, k, l, mi, lm, km, m2p1;
  double di, du, dl;
  m2p1 = 2 * m + 1;
  if (m <= 0) {
    return;
  }
  for (i = 1; i <= n; i++) {
    di = e[(i - 1) * m2p1 + m];
    mi = (m < (i - 1)) ? m : i - 1;
    if (mi >= 1) {
      for (k = 1; k <= mi; k++) {
        di -= e[(i - 1) * m2p1 - k + m] * e[(i - k - 1) * m2p1 + k + m];
      }
      e[(i - 1) * m2p1 + m] = di;
    }
    lm = (m < (n - i)) ? m : n - i;
    if (lm >= 1) {
      for (l = 1; l <= lm; l++) {
        dl = e[(i + l - 1) * m2p1 - l + m];
        km = ((m - l) < (i - 1)) ? m - l : i - 1;
        if (km >= 1) {
          du = e[(i - 1) * m2p1 + l + m];
          for (k = 1; k <= km; k++) {
            du -= e[(i - 1) * m2p1 - k + m] * e[(i - k - 1) * m2p1 + l + k + m];
            dl -= e[(l + i - 1) * m2p1 - l - k + m] * e[(i - k - 1) * m2p1 + k + m];
          }
          e[(i - 1) * m2p1 + l + m] = du;
        }
        e[(i + l - 1) * m2p1 - l + m] = dl / di;
      }
    }
  }
}
```