user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<dxsmooth>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %rdi,-0x28(%rbp)
  mov    %rsi,-0x30(%rbp)
  movl   $0x0,-0x14(%rbp)
  jmp    L305
L238:
  mov    -0x28(%rbp),%rax
  lea    0x280(%rax),%rdx
  mov    -0x14(%rbp),%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x28(%rbp),%rax
  mov    -0x14(%rbp),%edx
  movslq %edx,%rdx
  mov    (%rax,%rdx,4),%eax
  mov    %eax,-0x4(%rbp)
  cmpl   $0x0,-0x14(%rbp)
  je     L408
  mov    -0x28(%rbp),%rax
  lea    0x280(%rax),%rdx
  mov    -0x14(%rbp),%eax
  sub    $0x1,%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  mov    %eax,-0x10(%rbp)
  jmp    L311
L408:
  movl   $0x0,-0x10(%rbp)
L311:
  mov    -0x30(%rbp),%rax
  mov    (%rax),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x14(%rbp)
  je     L154
  mov    -0x28(%rbp),%rax
  lea    0x280(%rax),%rdx
  mov    -0x14(%rbp),%eax
  add    $0x1,%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  mov    %eax,-0xc(%rbp)
  jmp    L236
L154:
  movl   $0x0,-0xc(%rbp)
L236:
  cmpl   $0x0,-0x14(%rbp)
  jne    L80
  cmpl   $0x61,-0x8(%rbp)
  jne    L175
  mov    -0x30(%rbp),%rax
  mov    (%rax),%eax
  cmp    $0x1,%eax
  jne    L214
  cmpl   $0x2,-0x4(%rbp)
  jne    L214
  mov    -0x28(%rbp),%rax
  lea    0x280(%rax),%rdx
  mov    -0x14(%rbp),%eax
  cltq
  movl   $0x5f,(%rdx,%rax,4)
  movl   $0x5f,-0x8(%rbp)
  jmp    L175
L214:
  cmpl   $0x3,-0x4(%rbp)
  jle    L458
  mov    -0x28(%rbp),%rax
  lea    0x280(%rax),%rdx
  mov    -0x14(%rbp),%eax
  cltq
  movl   $0x5f,(%rdx,%rax,4)
  movl   $0x5f,-0x8(%rbp)
  jmp    L175
L458:
  movl   $0x60,-0x8(%rbp)
L175:
  cmpl   $0x60,-0x8(%rbp)
  jne    L258
  cmpl   $0x5a,-0xc(%rbp)
  jne    L327
  mov    -0x28(%rbp),%rax
  lea    0x280(%rax),%rdx
  mov    -0x14(%rbp),%eax
  cltq
  movl   $0x5b,(%rdx,%rax,4)
  jmp    L357
L327:
  mov    -0x28(%rbp),%rax
  lea    0x280(%rax),%rdx
  mov    -0x14(%rbp),%eax
  cltq
  movl   $0x5d,(%rdx,%rax,4)
  jmp    L357
L258:
  cmpl   $0x5a,-0x8(%rbp)
  jne    L10
  mov    -0x28(%rbp),%rax
  lea    0x280(%rax),%rdx
  mov    -0x14(%rbp),%eax
  cltq
  movl   $0x5b,(%rdx,%rax,4)
  jmp    L357
L10:
  cmpl   $0x5c,-0x8(%rbp)
  jne    L357
  mov    -0x28(%rbp),%rax
  lea    0x280(%rax),%rdx
  mov    -0x14(%rbp),%eax
  cltq
  movl   $0x5d,(%rdx,%rax,4)
  jmp    L357
L80:
  cmpl   $0x61,-0x8(%rbp)
  jne    L402
  cmpl   $0x3,-0x4(%rbp)
  jle    L329
  mov    -0x28(%rbp),%rax
  lea    0x280(%rax),%rdx
  mov    -0x14(%rbp),%eax
  cltq
  movl   $0x5f,(%rdx,%rax,4)
  movl   $0x5f,-0x8(%rbp)
  jmp    L402
L329:
  movl   $0x60,-0x8(%rbp)
L402:
  cmpl   $0x60,-0x8(%rbp)
  jne    L101
  cmpl   $0x5b,-0x10(%rbp)
  je     L107
  cmpl   $0x5c,-0x10(%rbp)
  jne    L206
L107:
  mov    -0x28(%rbp),%rax
  lea    0x280(%rax),%rdx
  mov    -0x14(%rbp),%eax
  cltq
  movl   $0x5b,(%rdx,%rax,4)
  jmp    L357
L206:
  cmpl   $0x5d,-0x10(%rbp)
  je     L270
  cmpl   $0x5a,-0x10(%rbp)
  jne    L302
L270:
  mov    -0x28(%rbp),%rax
  lea    0x280(%rax),%rdx
  mov    -0x14(%rbp),%eax
  cltq
  movl   $0x5d,(%rdx,%rax,4)
  jmp    L357
L302:
  cmpl   $0x5a,-0xc(%rbp)
  jne    L185
  mov    -0x28(%rbp),%rax
  lea    0x280(%rax),%rdx
  mov    -0x14(%rbp),%eax
  cltq
  movl   $0x5b,(%rdx,%rax,4)
  jmp    L357
L185:
  mov    -0x28(%rbp),%rax
  lea    0x280(%rax),%rdx
  mov    -0x14(%rbp),%eax
  cltq
  movl   $0x5d,(%rdx,%rax,4)
  jmp    L357
L101:
  cmpl   $0x5a,-0x8(%rbp)
  jne    L30
  cmpl   $0x1,-0x4(%rbp)
  jle    L467
  mov    -0x28(%rbp),%rax
  lea    0x280(%rax),%rdx
  mov    -0x14(%rbp),%eax
  cltq
  movl   $0x5b,(%rdx,%rax,4)
  jmp    L357
L467:
  cmpl   $0x5b,-0x10(%rbp)
  je     L48
  cmpl   $0x5c,-0x10(%rbp)
  jne    L95
L48:
  mov    -0x28(%rbp),%rax
  lea    0x280(%rax),%rdx
  mov    -0x14(%rbp),%eax
  cltq
  movl   $0x5b,(%rdx,%rax,4)
  jmp    L357
L95:
  cmpl   $0x5f,-0x10(%rbp)
  jne    L357
  mov    -0x28(%rbp),%rax
  lea    0x280(%rax),%rdx
  mov    -0x14(%rbp),%eax
  cltq
  movl   $0x5b,(%rdx,%rax,4)
  jmp    L357
L30:
  cmpl   $0x5c,-0x8(%rbp)
  jne    L357
  cmpl   $0x1,-0x4(%rbp)
  jle    L344
  mov    -0x28(%rbp),%rax
  lea    0x280(%rax),%rdx
  mov    -0x14(%rbp),%eax
  cltq
  movl   $0x5d,(%rdx,%rax,4)
  jmp    L357
L344:
  cmpl   $0x5d,-0x10(%rbp)
  je     L312
  cmpl   $0x5a,-0x10(%rbp)
  jne    L478
L312:
  mov    -0x28(%rbp),%rax
  lea    0x280(%rax),%rdx
  mov    -0x14(%rbp),%eax
  cltq
  movl   $0x5d,(%rdx,%rax,4)
  jmp    L357
L478:
  cmpl   $0x5f,-0x10(%rbp)
  jne    L357
  mov    -0x28(%rbp),%rax
  lea    0x280(%rax),%rdx
  mov    -0x14(%rbp),%eax
  cltq
  movl   $0x5d,(%rdx,%rax,4)
L357:
  addl   $0x1,-0x14(%rbp)
L305:
  mov    -0x30(%rbp),%rax
  mov    (%rax),%eax
  cmp    %eax,-0x14(%rbp)
  jl     L238
  mov    -0x30(%rbp),%rdx
  mov    -0x28(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <grwp@plt>
  nop
  leave
  ret
```

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);
}
```