user: 下面的汇编指令对应的C源代码是什么：

```asm
<mysortstringint_old>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %edi,-0x14(%rbp)
  mov    %esi,-0x18(%rbp)
  mov    %rdx,-0x20(%rbp)
  mov    %rcx,-0x28(%rbp)
  cmpl   $0x1,-0x14(%rbp)
  jle    L1
  movl   $0x0,-0xc(%rbp)
  mov    -0x14(%rbp),%eax
  mov    %eax,-0x8(%rbp)
L37:
  nop
L49:
  addl   $0x1,-0xc(%rbp)
  mov    -0xc(%rbp),%eax
  cmp    -0x14(%rbp),%eax
  jge    L23
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0xc(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x28(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    -0x20(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  js     L49
L23:
  nop
L36:
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  subl   $0x1,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x28(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    -0x20(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jg     L36
  mov    -0xc(%rbp),%eax
  cmp    -0x8(%rbp),%eax
  jge    L39
  mov    -0xc(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    -0xc(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,4),%rcx
  mov    -0x28(%rbp),%rdx
  add    %rcx,%rdx
  mov    (%rax),%eax
  mov    %eax,(%rdx)
  mov    -0x8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x4(%rbp),%eax
  mov    %eax,(%rdx)
  jmp    L37
L39:
  nop
  mov    -0xc(%rbp),%eax
  cltq
  shl    $0x2,%rax
  lea    -0x4(%rax),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x4(%rbp)
  mov    -0xc(%rbp),%eax
  cltq
  shl    $0x2,%rax
  lea    -0x4(%rax),%rdx
  mov    -0x28(%rbp),%rax
  add    %rax,%rdx
  mov    -0x28(%rbp),%rax
  mov    (%rax),%eax
  mov    %eax,(%rdx)
  mov    -0x28(%rbp),%rax
  mov    -0x4(%rbp),%edx
  mov    %edx,(%rax)
  mov    -0xc(%rbp),%eax
  lea    -0x1(%rax),%edi
  mov    -0x28(%rbp),%rcx
  mov    -0x20(%rbp),%rdx
  mov    -0x18(%rbp),%eax
  mov    %eax,%esi
  call   <mysortstringint@plt>
  mov    -0xc(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x28(%rbp),%rax
  lea    (%rdx,%rax,1),%rcx
  mov    -0x14(%rbp),%eax
  sub    -0xc(%rbp),%eax
  mov    -0x20(%rbp),%rdx
  mov    -0x18(%rbp),%esi
  mov    %eax,%edi
  call   <mysortstringint@plt>
  jmp    L42
L1:
  nop
L42:
  leave
  ret
```

assistant: ```c
void mysortstringint_old(int N, int sizestr, char **data1, int *data2) {
  int i, j;
  int t2;
  if (N <= 1)
    return;
  i = 0;
  j = N;
  for (;;) {
    while (++i < N ? strcmp(data1[data2[i]], data1[data2[0]]) < 0 : 0) {
    }
    while (strcmp(data1[data2[--j]], data1[data2[0]]) > 0) {
    }
    if (i >= j)
      break;
    t2 = data2[i];
    data2[i] = data2[j];
    data2[j] = t2;
  }
  t2 = data2[i - 1];
  data2[i - 1] = data2[0];
  data2[0] = t2;
  mysortstringint(i - 1, sizestr, data1, data2);
  mysortstringint(N - i, sizestr, data1, data2 + i);
}
```