user: What is the c source code of the assembly code below?

```asm
<dxsmooth>:
  endbr64
  mov    (%rsi),%r8d
  mov    %rdi,%rax
  xor    %edx,%edx
  test   %r8d,%r8d
  jle    L317
  nopl   0x0(%rax)
L64:
  mov    0x280(%rax),%ecx
  mov    (%rax),%r10d
  lea    -0x1(%r8),%r9d
  test   %rdx,%rdx
  je     L44
  mov    0x27c(%rax),%r11d
  cmp    %r9d,%edx
  je     L8
  mov    0x284(%rax),%r9d
L138:
  cmp    $0x61,%ecx
  je     L200
  cmp    $0x60,%ecx
  je     L221
  cmp    $0x5a,%ecx
  jne    L173
  cmp    $0x1,%r10d
  jle    L33
L90:
  movl   $0x5b,0x280(%rax)
  mov    (%rsi),%r8d
  nop
L307:
  add    $0x1,%rdx
  add    $0x4,%rax
  cmp    %edx,%r8d
  jg     L64
L317:
  jmp    1050 <grwp@plt>
  nopw   0x0(%rax,%rax,1)
L44:
  test   %r9d,%r9d
  je     L37
  mov    0x284(%rax),%r9d
  cmp    $0x61,%ecx
  je     L241
L283:
  cmp    $0x60,%ecx
  je     L240
  cmp    $0x5a,%ecx
  je     L32
  cmp    $0x5c,%ecx
  jne    L307
L266:
  movl   $0x5d,0x280(%rdi)
  mov    (%rsi),%r8d
  jmp    L307
  nop
L221:
  lea    -0x5b(%r11),%ecx
  cmp    $0x1,%ecx
  jbe    L90
  cmp    $0x5d,%r11d
  je     L265
  cmp    $0x5a,%r11d
  je     L265
  cmp    $0x5a,%r9d
  je     L90
L265:
  movl   $0x5d,0x280(%rax)
  mov    (%rsi),%r8d
  jmp    L307
  nopw   0x0(%rax,%rax,1)
L240:
  cmp    $0x5a,%r9d
  jne    L266
L32:
  movl   $0x5b,0x280(%rdi)
  mov    (%rsi),%r8d
  jmp    L307
  nopl   0x0(%rax,%rax,1)
L200:
  cmp    $0x3,%r10d
  jle    L221
  movl   $0x5f,0x280(%rax)
  mov    (%rsi),%r8d
  jmp    L307
  nopl   0x0(%rax,%rax,1)
L8:
  xor    %r9d,%r9d
  jmp    L138
  nopl   0x0(%rax,%rax,1)
L37:
  cmp    $0x61,%ecx
  jne    L283
  cmp    $0x2,%r10d
  jne    L241
  cmp    $0x1,%r8d
  je     L325
  nopl   (%rax)
L241:
  cmp    $0x3,%r10d
  jle    L240
L325:
  movl   $0x5f,0x280(%rdi)
  mov    (%rsi),%r8d
  jmp    L307
L173:
  cmp    $0x5c,%ecx
  jne    L307
  cmp    $0x1,%r10d
  jg     L265
  cmp    $0x5d,%r11d
  je     L265
  cmp    $0x5a,%r11d
  je     L265
  cmp    $0x5f,%r11d
  jne    L307
  jmp    L265
  cs nopw 0x0(%rax,%rax,1)
L33:
  lea    -0x5b(%r11),%ecx
  cmp    $0x1,%ecx
  jbe    L90
  cmp    $0x5f,%r11d
  jne    L307
  jmp    L90
```

assistant: ```c
__attribute__((visibility("hidden"))) void dxsmooth(int list[2][160], int *indexliste) {
  int i, last, next;
  for (i = 0; i < *(indexliste); i++) {
    int current = list[1][i];
    int length = list[0][i];
    if (i != 0) {
      last = list[1][i - 1];
    } else {
      last = 0;
    }
    if (i != *(indexliste)-1) {
      next = list[1][i + 1];
    } else {
      next = 0;
    }
    if (i == 0) {
      if (current == 97) {
        if ((*(indexliste) == 1) && (length == 2)) {
          list[1][i] = 95;
          current = 95;
        } else if (length >= 4) {
          list[1][i] = 95;
          current = 95;
        } else {
          current = 96;
        }
      }
      if (current == 96) {
        if (next == 90) {
          list[1][i] = 91;
        } else {
          list[1][i] = 93;
        }
      } else if (current == 90) {
        list[1][i] = 91;
      } else if (current == 92) {
        list[1][i] = 93;
      }
    } else {
      if (current == 97) {
        if (length >= 4) {
          list[1][i] = 95;
          current = 95;
        } else {
          current = 96;
        }
      }
      if (current == 96) {
        if (last == 91 || last == 92) {
          list[1][i] = 91;
        } else if (last == 93 || last == 90) {
          list[1][i] = 93;
        } else if (next == 90) {
          list[1][i] = 91;
        } else {
          list[1][i] = 93;
        }
      } else if (current == 90) {
        if (length > 1) {
          list[1][i] = 91;
        } else if (last == 91 || last == 92) {
          list[1][i] = 91;
        } else if (last == 95) {
          list[1][i] = 91;
        }
      } else if (current == 92) {
        if (length > 1) {
          list[1][i] = 93;
        } else if (last == 93 || last == 90) {
          list[1][i] = 93;
        } else if (last == 95) {
          list[1][i] = 93;
        }
      }
    }
  }
  grwp(list, indexliste);
}
```