user: 提供的汇编代码用C语言表示会是什么样子:

```asm
<quick_sort>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x78,%rsp
  mov    %esi,0x18(%rsp)
  cmp    $0x1,%esi
  jle    L359
  mov    %rdi,%r15
L441:
  mov    0x18(%rsp),%ebx
  mov    %r15,%r8
  mov    %ebx,%eax
  lea    -0x1(%rbx),%edx
  sar    %eax
  movslq %edx,%rcx
  cltq
  mov    (%r15,%rax,4),%esi
  xor    %eax,%eax
L708:
  mov    (%r8),%r10d
  lea    (%r15,%rcx,4),%r9
  mov    %eax,(%rsp)
  mov    (%r9),%edi
  cmp    %esi,%r10d
  jl     L61
  cmp    %edi,%esi
  jge    L381
  lea    -0x4(%r15,%rcx,4),%rcx
L80:
  mov    %rcx,%r9
  mov    (%rcx),%edi
  sub    $0x4,%rcx
  sub    $0x1,%edx
  cmp    %esi,%edi
  jg     L80
L381:
  cmp    %eax,%edx
  jle    L424
  mov    %edi,(%r8)
  sub    $0x1,%edx
  mov    %r10d,(%r9)
  movslq %edx,%rcx
L61:
  add    $0x1,%rax
  add    $0x4,%r8
  jmp    L708
L359:
  add    $0x78,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L424:
  cmpl   $0x1,(%rsp)
  mov    %edx,0x1c(%rsp)
  mov    %r8,0x30(%rsp)
  jle    L273
L311:
  mov    (%rsp),%ebx
  mov    %r15,%r8
  mov    %ebx,%eax
  lea    -0x1(%rbx),%edx
  sar    %eax
  movslq %edx,%rcx
  cltq
  mov    (%r15,%rax,4),%esi
  xor    %eax,%eax
L430:
  mov    (%r8),%r10d
  lea    (%r15,%rcx,4),%r9
  mov    %eax,0x4(%rsp)
  mov    (%r9),%edi
  cmp    %r10d,%esi
  jg     L176
  cmp    %edi,%esi
  jge    L603
  lea    -0x4(%r15,%rcx,4),%rcx
L554:
  mov    %rcx,%r9
  mov    (%rcx),%edi
  sub    $0x4,%rcx
  sub    $0x1,%edx
  cmp    %edi,%esi
  jl     L554
L603:
  cmp    %eax,%edx
  jle    L360
  mov    %edi,(%r8)
  sub    $0x1,%edx
  mov    %r10d,(%r9)
  movslq %edx,%rcx
L176:
  add    $0x1,%rax
  add    $0x4,%r8
  jmp    L430
L273:
  mov    0x1c(%rsp),%ebx
  sub    %ebx,0x18(%rsp)
  mov    0x18(%rsp),%eax
  cmp    $0x1,%eax
  jle    L359
  mov    0x30(%rsp),%r15
  jmp    L441
L360:
  cmpl   $0x1,0x4(%rsp)
  mov    %edx,0x20(%rsp)
  mov    %r8,0x38(%rsp)
  jle    L274
L224:
  mov    0x4(%rsp),%ebx
  mov    %r15,%r8
  mov    %ebx,%eax
  lea    -0x1(%rbx),%edx
  sar    %eax
  movslq %edx,%rcx
  cltq
  mov    (%r15,%rax,4),%esi
  xor    %eax,%eax
L256:
  mov    (%r8),%r10d
  lea    (%r15,%rcx,4),%r9
  mov    %eax,0x8(%rsp)
  mov    (%r9),%edi
  cmp    %r10d,%esi
  jg     L707
  cmp    %edi,%esi
  jge    L528
  lea    -0x4(%r15,%rcx,4),%rcx
L137:
  mov    %rcx,%r9
  mov    (%rcx),%edi
  sub    $0x4,%rcx
  sub    $0x1,%edx
  cmp    %edi,%esi
  jl     L137
L528:
  cmp    %eax,%edx
  jle    L297
  mov    %edi,(%r8)
  sub    $0x1,%edx
  mov    %r10d,(%r9)
  movslq %edx,%rcx
L707:
  add    $0x1,%rax
  add    $0x4,%r8
  jmp    L256
L274:
  mov    0x20(%rsp),%ebx
  sub    %ebx,(%rsp)
  mov    (%rsp),%eax
  cmp    $0x1,%eax
  jle    L273
  mov    0x38(%rsp),%r15
  jmp    L311
L297:
  cmpl   $0x1,0x8(%rsp)
  mov    %edx,0x24(%rsp)
  mov    %r8,0x40(%rsp)
  jle    L473
L78:
  mov    0x8(%rsp),%ebx
  mov    %r15,%r8
  mov    %ebx,%eax
  lea    -0x1(%rbx),%edx
  sar    %eax
  movslq %edx,%rcx
  cltq
  mov    (%r15,%rax,4),%esi
  xor    %eax,%eax
L312:
  mov    (%r8),%r10d
  lea    (%r15,%rcx,4),%r9
  mov    %eax,0xc(%rsp)
  mov    (%r9),%edi
  cmp    %r10d,%esi
  jg     L246
  cmp    %edi,%esi
  jge    L669
  lea    -0x4(%r15,%rcx,4),%rcx
L380:
  mov    %rcx,%r9
  mov    (%rcx),%edi
  sub    $0x4,%rcx
  sub    $0x1,%edx
  cmp    %edi,%esi
  jl     L380
L669:
  cmp    %eax,%edx
  jle    L216
  mov    %edi,(%r8)
  sub    $0x1,%edx
  mov    %r10d,(%r9)
  movslq %edx,%rcx
L246:
  add    $0x1,%rax
  add    $0x4,%r8
  jmp    L312
L473:
  mov    0x24(%rsp),%ebx
  sub    %ebx,0x4(%rsp)
  mov    0x4(%rsp),%eax
  cmp    $0x1,%eax
  jle    L274
  mov    0x40(%rsp),%r15
  jmp    L224
L216:
  cmpl   $0x1,0xc(%rsp)
  mov    %edx,0x28(%rsp)
  mov    %r8,0x48(%rsp)
  jle    L665
L384:
  mov    0xc(%rsp),%ebx
  mov    %r15,%r8
  mov    %ebx,%eax
  lea    -0x1(%rbx),%edx
  sar    %eax
  movslq %edx,%rcx
  cltq
  mov    (%r15,%rax,4),%esi
  xor    %eax,%eax
L139:
  mov    (%r8),%r10d
  lea    (%r15,%rcx,4),%r9
  mov    %eax,0x10(%rsp)
  mov    (%r9),%edi
  cmp    %r10d,%esi
  jg     L233
  cmp    %edi,%esi
  jge    L59
  lea    -0x4(%r15,%rcx,4),%rcx
L4:
  mov    %rcx,%r9
  mov    (%rcx),%edi
  sub    $0x4,%rcx
  sub    $0x1,%edx
  cmp    %edi,%esi
  jl     L4
L59:
  cmp    %eax,%edx
  jle    L508
  mov    %edi,(%r8)
  sub    $0x1,%edx
  mov    %r10d,(%r9)
  movslq %edx,%rcx
L233:
  add    $0x1,%rax
  add    $0x4,%r8
  jmp    L139
L508:
  cmpl   $0x1,0x10(%rsp)
  mov    %edx,0x2c(%rsp)
  mov    %r8,0x50(%rsp)
  jle    L86
  mov    0x10(%rsp),%ebx
  mov    %r15,%r11
L593:
  mov    %ebx,%eax
  lea    -0x1(%rbx),%r14d
  mov    %r11,%r15
  xor    %ecx,%ecx
  sar    %eax
  cltq
  mov    (%r11,%rax,4),%edi
  movslq %r14d,%rax
L413:
  mov    (%r15),%r8d
  lea    (%r11,%rax,4),%rsi
  mov    %ecx,%r9d
  mov    (%rsi),%edx
  cmp    %r8d,%edi
  jg     L402
  cmp    %edx,%edi
  jge    L32
  lea    -0x4(%r11,%rax,4),%rax
  nop
L400:
  mov    %rax,%rsi
  mov    (%rax),%edx
  sub    $0x4,%rax
  sub    $0x1,%r14d
  cmp    %edx,%edi
  jl     L400
L32:
  cmp    %ecx,%r14d
  jle    L648
  mov    %edx,(%r15)
  sub    $0x1,%r14d
  mov    %r8d,(%rsi)
  movslq %r14d,%rax
L402:
  add    $0x1,%rcx
  add    $0x4,%r15
  jmp    L413
L648:
  mov    %r9d,0x14(%rsp)
  cmp    $0x1,%r9d
  jle    L321
  mov    %r14d,0x68(%rsp)
  mov    %r9d,%ebx
  mov    %r15,0x60(%rsp)
L39:
  mov    %ebx,%eax
  lea    -0x1(%rbx),%ebp
  mov    %r11,%r8
  xor    %edi,%edi
  sar    %eax
  cltq
  mov    (%r11,%rax,4),%ecx
  movslq %ebp,%rax
  xchg   %ax,%ax
L556:
  mov    (%r8),%r9d
  lea    (%r11,%rax,4),%rsi
  mov    %edi,%r12d
  mov    (%rsi),%edx
  cmp    %r9d,%ecx
  jg     L544
  cmp    %edx,%ecx
  jge    L478
  lea    -0x4(%r11,%rax,4),%rax
  nopw   0x0(%rax,%rax,1)
L204:
  mov    %rax,%rsi
  mov    (%rax),%edx
  sub    $0x4,%rax
  sub    $0x1,%ebp
  cmp    %edx,%ecx
  jl     L204
L478:
  cmp    %edi,%ebp
  jle    L163
  mov    %edx,(%r8)
  sub    $0x1,%ebp
  mov    %r9d,(%rsi)
  movslq %ebp,%rax
L544:
  add    $0x1,%rdi
  add    $0x4,%r8
  jmp    L556
L163:
  mov    %r8,0x58(%rsp)
  cmp    $0x1,%r12d
  jle    L331
L487:
  mov    %r12d,%eax
  lea    -0x1(%r12),%ebx
  mov    %r11,%r14
  xor    %esi,%esi
  sar    %eax
  cltq
  mov    (%r11,%rax,4),%edi
  movslq %ebx,%rax
  nopl   0x0(%rax)
L653:
  mov    (%r14),%r9d
  lea    (%r11,%rax,4),%r8
  mov    %esi,%ecx
  mov    (%r8),%edx
  cmp    %r9d,%edi
  jg     L22
  cmp    %edx,%edi
  jge    L712
  lea    -0x4(%r11,%rax,4),%rax
  nopw   0x0(%rax,%rax,1)
L242:
  mov    %rax,%r8
  mov    (%rax),%edx
  sub    $0x4,%rax
  sub    $0x1,%ebx
  cmp    %edx,%edi
  jl     L242
L712:
  cmp    %esi,%ebx
  jle    L579
  mov    %edx,(%r14)
  sub    $0x1,%ebx
  mov    %r9d,(%r8)
  movslq %ebx,%rax
L22:
  add    $0x1,%rsi
  add    $0x4,%r14
  jmp    L653
L579:
  cmp    $0x1,%ecx
  jle    L116
L236:
  mov    %ecx,%eax
  lea    -0x1(%rcx),%r15d
  mov    %r11,%r13
  sar    %eax
  movslq %r15d,%r9
  cltq
  mov    (%r11,%rax,4),%r8d
  xor    %eax,%eax
  nopl   (%rax)
L110:
  mov    0x0(%r13),%esi
  lea    (%r11,%r9,4),%rdx
  mov    %eax,%r10d
  mov    (%rdx),%edi
  cmp    %esi,%r8d
  jg     L363
  cmp    %edi,%r8d
  jge    L586
  lea    -0x4(%r11,%r9,4),%r9
  nopl   0x0(%rax)
L550:
  mov    %r9,%rdx
  mov    (%r9),%edi
  sub    $0x4,%r9
  sub    $0x1,%r15d
  cmp    %edi,%r8d
  jl     L550
L586:
  cmp    %eax,%r15d
  jle    L576
  mov    %edi,0x0(%r13)
  sub    $0x1,%r15d
  mov    %esi,(%rdx)
  movslq %r15d,%r9
L363:
  add    $0x1,%rax
  add    $0x4,%r13
  jmp    L110
L116:
  sub    %ebx,%r12d
  cmp    $0x1,%r12d
  jle    L331
  mov    %r14,%r11
  jmp    L487
L576:
  mov    %r10d,%esi
  mov    %r11,%rdi
  mov    %ecx,0x6c(%rsp)
  call   <quick_sort>
  mov    0x6c(%rsp),%ecx
  sub    %r15d,%ecx
  cmp    $0x1,%ecx
  jle    L116
  mov    %r13,%r11
  jmp    L236
L331:
  sub    %ebp,0x14(%rsp)
  mov    0x14(%rsp),%eax
  cmp    $0x1,%eax
  jle    L631
  mov    0x58(%rsp),%r11
  mov    %eax,%ebx
  jmp    L39
L631:
  mov    0x68(%rsp),%r14d
  mov    0x60(%rsp),%r15
L321:
  sub    %r14d,0x10(%rsp)
  mov    0x10(%rsp),%eax
  cmp    $0x1,%eax
  jle    L86
  mov    %r15,%r11
  mov    %eax,%ebx
  jmp    L593
L86:
  mov    0x2c(%rsp),%ebx
  sub    %ebx,0xc(%rsp)
  mov    0xc(%rsp),%eax
  cmp    $0x1,%eax
  jle    L665
  mov    0x50(%rsp),%r15
  jmp    L384
L665:
  mov    0x28(%rsp),%ebx
  sub    %ebx,0x8(%rsp)
  mov    0x8(%rsp),%eax
  cmp    $0x1,%eax
  jle    L473
  mov    0x48(%rsp),%r15
  jmp    L78
```

assistant: ```c
void quick_sort(int *arr, int n) {
  int left, right, pivot, temp;
  if (n < 2)
    return;
  pivot = arr[n / 2];
  for (left = 0, right = n - 1;; left++, right--) {
    while (arr[left] < pivot)
      left++;
    while (pivot < arr[right])
      right--;
    if (left >= right)
      break;
    temp = arr[left];
    arr[left] = arr[right];
    arr[right] = temp;
  }
  quick_sort(arr, left);
  quick_sort(arr + left, n - right);
}
```