user: 请显示与下面列出的汇编代码相匹配的C语言实现:

```asm
<sort_nbrs>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x28(%rbp)
  mov    %rsi,-0x30(%rbp)
  mov    %rdx,-0x38(%rbp)
  mov    %rcx,-0x40(%rbp)
  mov    %r8,-0x48(%rbp)
  movl   $0x1,-0x14(%rbp)
  movl   $0x0,-0x10(%rbp)
  jmp    L92
L36:
  addl   $0x1,-0x10(%rbp)
  cmpl   $0x3e8,-0x10(%rbp)
  jg     L11
  movl   $0x0,-0x14(%rbp)
  movl   $0x0,-0x1c(%rbp)
  jmp    L97
L48:
  addl   $0x1,-0x10(%rbp)
  cmpl   $0x3e8,-0x10(%rbp)
  jle    L52
  jmp    L92
L52:
  mov    -0x1c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mov    -0x1c(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  comisd %xmm1,%xmm0
  jbe    L93
  movl   $0x1,-0x14(%rbp)
  mov    -0x1c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  mov    -0x1c(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x38(%rbp),%rax
  add    %rax,%rdx
  mov    -0x1c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    -0x38(%rbp),%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x1c(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x8(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  movl   $0x0,-0x18(%rbp)
  jmp    L17
L106:
  mov    -0x1c(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rax,%rdx
  mov    -0x18(%rbp),%eax
  cltq
  movsd  (%rdx,%rax,8),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  mov    -0x1c(%rbp),%eax
  cltq
  lea    0x1(%rax),%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  lea    (%rdx,%rax,1),%rcx
  mov    -0x1c(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rax,%rdx
  mov    -0x18(%rbp),%eax
  cltq
  movsd  (%rcx,%rax,8),%xmm0
  mov    -0x18(%rbp),%eax
  cltq
  movsd  %xmm0,(%rdx,%rax,8)
  mov    -0x1c(%rbp),%eax
  cltq
  lea    0x1(%rax),%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x3,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rax,%rdx
  mov    -0x18(%rbp),%eax
  cltq
  movsd  -0x8(%rbp),%xmm0
  movsd  %xmm0,(%rdx,%rax,8)
  addl   $0x1,-0x18(%rbp)
L17:
  cmpl   $0x2,-0x18(%rbp)
  jle    L106
  mov    -0x1c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    %eax,-0xc(%rbp)
  mov    -0x1c(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  mov    -0x1c(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    -0x40(%rbp),%rdx
  add    %rcx,%rdx
  mov    (%rax),%rax
  mov    %rax,(%rdx)
  mov    -0x1c(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rax,%rdx
  mov    -0xc(%rbp),%eax
  cltq
  mov    %rax,(%rdx)
  mov    -0x1c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    %eax,-0xc(%rbp)
  mov    -0x1c(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  mov    -0x1c(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    -0x48(%rbp),%rdx
  add    %rcx,%rdx
  mov    (%rax),%rax
  mov    %rax,(%rdx)
  mov    -0x1c(%rbp),%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rax,%rdx
  mov    -0xc(%rbp),%eax
  cltq
  mov    %rax,(%rdx)
L93:
  addl   $0x1,-0x1c(%rbp)
L97:
  mov    -0x1c(%rbp),%eax
  cltq
  mov    -0x28(%rbp),%rdx
  sub    $0x1,%rdx
  cmp    %rdx,%rax
  jl     L48
L92:
  cmpl   $0x0,-0x14(%rbp)
  jne    L36
  jmp    L65
L11:
  nop
L65:
  nop
  pop    %rbp
  ret
```

assistant: ```c
void sort_nbrs(long nba, double acens[8][3], double brads[8], long nbrs[8], long bnds[8]) {
  int j, k, change, n_iter;
  double temp;
  int itemp;
  change = 1;
  n_iter = 0;
  while (change) {
    n_iter++;
    if (n_iter > 1000)
      break;
    change = 0;
    for (j = 0; j < nba - 1; j++) {
      n_iter++;
      if (n_iter > 1000)
        break;
      if (brads[j] < brads[j + 1]) {
        change = 1;
        temp = brads[j];
        brads[j] = brads[j + 1];
        brads[j + 1] = temp;
        for (k = 0; k < 3; k++) {
          temp = acens[j][k];
          acens[j][k] = acens[j + 1][k];
          acens[j + 1][k] = temp;
        }
        itemp = nbrs[j];
        nbrs[j] = nbrs[j + 1];
        nbrs[j + 1] = itemp;
        itemp = bnds[j];
        bnds[j] = bnds[j + 1];
        bnds[j + 1] = itemp;
      }
    }
  }
}
```