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

```asm
<CTAI_Util_IQSort2>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %rdi,-0x18(%rbp)
  mov    %rsi,-0x20(%rbp)
  mov    %edx,-0x24(%rbp)
  mov    %ecx,-0x28(%rbp)
  mov    -0x24(%rbp),%eax
  cmp    -0x28(%rbp),%eax
  jge    L35
  mov    -0x28(%rbp),%edx
  mov    -0x24(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <choose_pivot@plt>
  mov    %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x24(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <swap@plt>
  mov    -0x8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rax,%rdx
  mov    -0x24(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x20(%rbp),%rax
  add    %rcx,%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <swap@plt>
  mov    -0x24(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x24(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x28(%rbp),%eax
  mov    %eax,-0xc(%rbp)
  jmp    L54
L11:
  addl   $0x1,-0x10(%rbp)
L89:
  mov    -0x10(%rbp),%eax
  cmp    -0x28(%rbp),%eax
  jg     L64
  mov    -0x10(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    %eax,-0x4(%rbp)
  jge    L11
  jmp    L64
L5:
  subl   $0x1,-0xc(%rbp)
L64:
  mov    -0xc(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L14
  mov    -0xc(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%eax
  cmp    %eax,-0x4(%rbp)
  jl     L5
L14:
  mov    -0x10(%rbp),%eax
  cmp    -0xc(%rbp),%eax
  jge    L54
  mov    -0xc(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x10(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <swap@plt>
  mov    -0xc(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rax,%rdx
  mov    -0x10(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x20(%rbp),%rax
  add    %rcx,%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <swap@plt>
L54:
  mov    -0x10(%rbp),%eax
  cmp    -0xc(%rbp),%eax
  jle    L89
  mov    -0xc(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x24(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <swap@plt>
  mov    -0xc(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rax,%rdx
  mov    -0x24(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x20(%rbp),%rax
  add    %rcx,%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <swap@plt>
  mov    -0xc(%rbp),%eax
  lea    -0x1(%rax),%ecx
  mov    -0x24(%rbp),%edx
  mov    -0x20(%rbp),%rsi
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <CTAI_Util_IQSort2>
  mov    -0xc(%rbp),%eax
  lea    0x1(%rax),%edi
  mov    -0x28(%rbp),%edx
  mov    -0x20(%rbp),%rsi
  mov    -0x18(%rbp),%rax
  mov    %edx,%ecx
  mov    %edi,%edx
  mov    %rax,%rdi
  call   <CTAI_Util_IQSort2>
L35:
  nop
  leave
  ret
```

assistant: ```c
void CTAI_Util_IQSort2(int *list, int *indx, int m, int n) {
  int key, i, j, k;
  if (m < n) {
    k = choose_pivot(m, n);
    swap(&list[m], &list[k]);
    swap(&indx[m], &indx[k]);
    key = list[m];
    i = m + 1;
    j = n;
    while (i <= j) {
      while ((i <= n) && (list[i] <= key))
        i++;
      while ((j >= m) && (list[j] > key))
        j--;
      if (i < j) {
        swap(&list[i], &list[j]);
        swap(&indx[i], &indx[j]);
      }
    }
    swap(&list[m], &list[j]);
    swap(&indx[m], &indx[j]);
    CTAI_Util_IQSort2(list, indx, m, j - 1);
    CTAI_Util_IQSort2(list, indx, j + 1, n);
  }
}
```