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

```asm
<quickSort>:
  endbr64
  push   %r15
  mov    %rdi,%r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    %esi,%ebx
  sub    $0x88,%rsp
  mov    %esi,0xc(%rsp)
  mov    %edx,0x78(%rsp)
L156:
  mov    0x78(%rsp),%edi
  mov    %ebx,%edx
  movslq %ebx,%r11
  lea    0x1(%rbx),%r14d
  lea    (%r15,%r11,1),%r9
  mov    %ebx,%r8d
  mov    %r14d,%r10d
  add    %edi,%edx
  mov    %edi,%ecx
  mov    %edx,%eax
  shr    $0x1f,%eax
  add    %edx,%eax
  sar    %eax
  cltq
  movzbl (%r15,%rax,1),%esi
  movslq %edi,%rax
L305:
  movzbl (%r9),%ebp
  lea    (%r15,%rax,1),%rdi
  mov    %r8d,%r12d
  movzbl (%rdi),%edx
  cmp    %bpl,%sil
  jg     L495
  cmp    %dl,%sil
  jge    L596
  lea    -0x1(%r15,%rax,1),%rax
  lea    -0x1(%rcx),%ebx
  sub    %eax,%ebx
  nopw   0x0(%rax,%rax,1)
L47:
  lea    (%rbx,%rax,1),%ecx
  mov    %rax,%rdi
  movzbl (%rax),%edx
  sub    $0x1,%rax
  cmp    %dl,%sil
  jl     L47
L596:
  cmp    %ecx,%r8d
  jle    L216
  mov    %r12d,0x34(%rsp)
  mov    %ecx,%ebx
  mov    %ecx,0x20(%rsp)
L602:
  cmp    %ebx,0xc(%rsp)
  jl     L173
L155:
  mov    0x34(%rsp),%ebx
  cmp    %ebx,0x78(%rsp)
  jle    L775
  mov    %ebx,0xc(%rsp)
  jmp    L156
L216:
  sub    $0x1,%ecx
  mov    %dl,(%r9)
  mov    %bpl,(%rdi)
  cmp    %ecx,%r10d
  jg     L455
  movslq %ecx,%rax
L495:
  add    $0x1,%r9
  add    $0x1,%r10d
  add    $0x1,%r8d
  jmp    L305
L173:
  movslq %ebx,%rax
  mov    0xc(%rsp),%edi
  mov    %rax,0x70(%rsp)
L377:
  mov    0x20(%rsp),%ebx
  mov    %edi,%edx
  lea    (%r15,%r11,1),%r8
  mov    %r14d,%r9d
  add    %ebx,%edx
  mov    %edx,%eax
  shr    $0x1f,%eax
  add    %edx,%eax
  mov    %ebx,%edx
  sar    %eax
  cltq
  movzbl (%r15,%rax,1),%esi
  mov    0x70(%rsp),%rax
  nop
L763:
  movzbl (%r8),%ebx
  lea    (%r15,%rax,1),%r10
  mov    %edi,%ebp
  movzbl (%r10),%ecx
  cmp    %bl,%sil
  jg     L503
  cmp    %cl,%sil
  jge    L289
  lea    -0x1(%r15,%rax,1),%rax
  nopl   (%rax)
L847:
  mov    %rax,%r10
  movzbl (%rax),%ecx
  sub    $0x1,%rax
  sub    $0x1,%edx
  cmp    %cl,%sil
  jl     L847
L289:
  cmp    %edx,%edi
  jle    L90
L221:
  mov    %ebp,0x4c(%rsp)
  mov    %edx,0x3c(%rsp)
  cmp    %edx,0xc(%rsp)
  jl     L144
L749:
  mov    0x4c(%rsp),%ebx
  cmp    %ebx,0x20(%rsp)
  jle    L155
  movslq %ebx,%r11
  mov    %r11d,0xc(%rsp)
  lea    0x1(%r11),%r14d
  mov    %r11d,%edi
  jmp    L377
L90:
  sub    $0x1,%edx
  mov    %cl,(%r8)
  mov    %r9d,%ebp
  mov    %bl,(%r10)
  cmp    %edx,%r9d
  jg     L221
  movslq %edx,%rax
L503:
  add    $0x1,%r8
  add    $0x1,%r9d
  add    $0x1,%edi
  jmp    L763
L144:
  movslq %edx,%rax
  mov    0xc(%rsp),%edi
  mov    %rax,0x68(%rsp)
L103:
  mov    0x3c(%rsp),%ebx
  mov    %edi,%edx
  lea    (%r15,%r11,1),%r8
  mov    %r14d,%r9d
  add    %ebx,%edx
  mov    %edx,%eax
  shr    $0x1f,%eax
  add    %edx,%eax
  mov    %ebx,%edx
  sar    %eax
  cltq
  movzbl (%r15,%rax,1),%esi
  mov    0x68(%rsp),%rax
  nopl   0x0(%rax)
L357:
  movzbl (%r8),%ebx
  lea    (%r15,%rax,1),%r10
  mov    %edi,%ebp
  movzbl (%r10),%ecx
  cmp    %bl,%sil
  jg     L177
  cmp    %cl,%sil
  jge    L538
  lea    -0x1(%r15,%rax,1),%rax
  nopl   (%rax)
L87:
  mov    %rax,%r10
  movzbl (%rax),%ecx
  sub    $0x1,%rax
  sub    $0x1,%edx
  cmp    %cl,%sil
  jl     L87
L538:
  cmp    %edx,%edi
  jle    L102
L673:
  mov    %ebp,0x50(%rsp)
  mov    %edx,0x48(%rsp)
  cmp    %edx,0xc(%rsp)
  jl     L453
L266:
  mov    0x50(%rsp),%ebx
  cmp    %ebx,0x3c(%rsp)
  jle    L749
  movslq %ebx,%r11
  mov    %r11d,0xc(%rsp)
  lea    0x1(%r11),%r14d
  mov    %r11d,%edi
  jmp    L103
L102:
  sub    $0x1,%edx
  mov    %cl,(%r8)
  mov    %r9d,%ebp
  mov    %bl,(%r10)
  cmp    %edx,%r9d
  jg     L673
  movslq %edx,%rax
L177:
  add    $0x1,%r8
  add    $0x1,%r9d
  add    $0x1,%edi
  jmp    L357
L453:
  movslq %edx,%rax
  mov    0xc(%rsp),%edi
  mov    %rax,0x60(%rsp)
L125:
  mov    0x48(%rsp),%ebx
  mov    %edi,%edx
  lea    (%r15,%r11,1),%r8
  mov    %r14d,%r9d
  add    %ebx,%edx
  mov    %edx,%eax
  shr    $0x1f,%eax
  add    %edx,%eax
  mov    %ebx,%edx
  sar    %eax
  cltq
  movzbl (%r15,%rax,1),%esi
  mov    0x60(%rsp),%rax
  nopl   0x0(%rax)
L825:
  movzbl (%r8),%ebx
  lea    (%r15,%rax,1),%r10
  mov    %edi,%ebp
  movzbl (%r10),%ecx
  cmp    %bl,%sil
  jg     L411
  cmp    %cl,%sil
  jge    L608
  lea    -0x1(%r15,%rax,1),%rax
  nopl   (%rax)
L166:
  mov    %rax,%r10
  movzbl (%rax),%ecx
  sub    $0x1,%rax
  sub    $0x1,%edx
  cmp    %cl,%sil
  jl     L166
L608:
  cmp    %edx,%edi
  jle    L362
L656:
  mov    %ebp,0x54(%rsp)
  mov    %edx,0x30(%rsp)
  cmp    %edx,0xc(%rsp)
  jl     L755
L782:
  mov    0x54(%rsp),%ebx
  cmp    %ebx,0x48(%rsp)
  jle    L266
  movslq %ebx,%r11
  mov    %r11d,0xc(%rsp)
  lea    0x1(%r11),%r14d
  mov    %r11d,%edi
  jmp    L125
L362:
  sub    $0x1,%edx
  mov    %cl,(%r8)
  mov    %r9d,%ebp
  mov    %bl,(%r10)
  cmp    %edx,%r9d
  jg     L656
  movslq %edx,%rax
L411:
  add    $0x1,%r8
  add    $0x1,%r9d
  add    $0x1,%edi
  jmp    L825
L755:
  movslq %edx,%rax
  mov    0xc(%rsp),%edi
  mov    %r14d,%r13d
  mov    %rax,0x58(%rsp)
L613:
  mov    0x30(%rsp),%r14d
  mov    %edi,%edx
  lea    (%r15,%r11,1),%r8
  mov    %r13d,%r9d
  add    %r14d,%edx
  mov    %edx,%eax
  shr    $0x1f,%eax
  add    %edx,%eax
  sar    %eax
  cltq
  movzbl (%r15,%rax,1),%esi
  mov    0x58(%rsp),%rax
  nop
L191:
  movzbl (%r8),%r10d
  lea    (%r15,%rax,1),%rcx
  mov    %edi,%ebx
  movzbl (%rcx),%edx
  cmp    %r10b,%sil
  jg     L664
  cmp    %dl,%sil
  jge    L171
  lea    -0x1(%r15,%rax,1),%rax
  nopl   0x0(%rax)
L150:
  mov    %rax,%rcx
  movzbl (%rax),%edx
  sub    $0x1,%rax
  sub    $0x1,%r14d
  cmp    %dl,%sil
  jl     L150
L171:
  cmp    %r14d,%edi
  jle    L211
L239:
  mov    %ebx,0x38(%rsp)
  cmp    %r14d,0xc(%rsp)
  jl     L475
L78:
  mov    0x38(%rsp),%ebx
  cmp    %ebx,0x30(%rsp)
  jle    L782
  movslq %ebx,%r11
  mov    %r11d,0xc(%rsp)
  lea    0x1(%r11),%r13d
  mov    %r11d,%edi
  jmp    L613
  nopl   (%rax)
L211:
  sub    $0x1,%r14d
  mov    %dl,(%r8)
  mov    %r9d,%ebx
  mov    %r10b,(%rcx)
  cmp    %r14d,%r9d
  jg     L239
  movslq %r14d,%rax
L664:
  add    $0x1,%r8
  add    $0x1,%r9d
  add    $0x1,%edi
  jmp    L191
L475:
  movslq %r14d,%rax
  mov    %r14d,0x24(%rsp)
  mov    0xc(%rsp),%edi
  mov    %r13d,%r12d
  mov    %rax,0x40(%rsp)
L757:
  mov    0x24(%rsp),%r14d
  mov    %edi,%edx
  lea    (%r15,%r11,1),%r8
  mov    %r12d,%r9d
  add    %r14d,%edx
  mov    %edx,%eax
  shr    $0x1f,%eax
  add    %edx,%eax
  sar    %eax
  cltq
  movzbl (%r15,%rax,1),%esi
  mov    0x40(%rsp),%rax
  nopw   0x0(%rax,%rax,1)
L848:
  movzbl (%r8),%r10d
  lea    (%r15,%rax,1),%rcx
  mov    %edi,%ebx
  movzbl (%rcx),%edx
  cmp    %r10b,%sil
  jg     L556
  cmp    %dl,%sil
  jge    L579
  lea    -0x1(%r15,%rax,1),%rax
  nopl   0x0(%rax)
L189:
  mov    %rax,%rcx
  movzbl (%rax),%edx
  sub    $0x1,%rax
  sub    $0x1,%r14d
  cmp    %dl,%sil
  jl     L189
L579:
  cmp    %r14d,%edi
  jle    L535
L182:
  mov    %ebx,0x1c(%rsp)
  cmp    %r14d,0xc(%rsp)
  jl     L653
L237:
  mov    0x1c(%rsp),%ebx
  cmp    %ebx,0x24(%rsp)
  jle    L78
  movslq %ebx,%r11
  mov    %r11d,0xc(%rsp)
  lea    0x1(%r11),%r12d
  mov    %r11d,%edi
  jmp    L757
  nopl   (%rax)
L535:
  sub    $0x1,%r14d
  mov    %dl,(%r8)
  mov    %r9d,%ebx
  mov    %r10b,(%rcx)
  cmp    %r14d,%r9d
  jg     L182
  movslq %r14d,%rax
L556:
  add    $0x1,%r8
  add    $0x1,%r9d
  add    $0x1,%edi
  jmp    L848
L653:
  movslq %r14d,%rax
  mov    %r14d,0x18(%rsp)
  mov    0xc(%rsp),%edi
  mov    %rax,0x28(%rsp)
L518:
  mov    0x18(%rsp),%ebp
  mov    %edi,%edx
  lea    (%r15,%r11,1),%r8
  mov    %r12d,%r9d
  add    %ebp,%edx
  mov    %edx,%eax
  shr    $0x1f,%eax
  add    %edx,%eax
  sar    %eax
  cltq
  movzbl (%r15,%rax,1),%esi
  mov    0x28(%rsp),%rax
  nopw   0x0(%rax,%rax,1)
L815:
  movzbl (%r8),%r10d
  lea    (%r15,%rax,1),%rcx
  mov    %edi,%r14d
  movzbl (%rcx),%edx
  cmp    %r10b,%sil
  jg     L760
  cmp    %dl,%sil
  jge    L382
  lea    -0x1(%r15,%rax,1),%rax
  nopl   (%rax)
L464:
  mov    %rax,%rcx
  movzbl (%rax),%edx
  sub    $0x1,%rax
  sub    $0x1,%ebp
  cmp    %dl,%sil
  jl     L464
L382:
  cmp    %edi,%ebp
  jge    L731
L571:
  cmp    %ebp,0xc(%rsp)
  jl     L206
L586:
  cmp    %r14d,0x18(%rsp)
  jle    L237
  movslq %r14d,%r11
  mov    %r11d,0xc(%rsp)
  lea    0x1(%r11),%r12d
  mov    %r11d,%edi
  jmp    L518
  nopl   0x0(%rax,%rax,1)
L731:
  sub    $0x1,%ebp
  mov    %dl,(%r8)
  mov    %r9d,%r14d
  mov    %r10b,(%rcx)
  cmp    %ebp,%r9d
  jg     L571
  movslq %ebp,%rax
L760:
  add    $0x1,%r8
  add    $0x1,%r9d
  add    $0x1,%edi
  jmp    L815
L206:
  movslq %ebp,%rax
  mov    %r14d,0x7c(%rsp)
  mov    0xc(%rsp),%r14d
  mov    %r12d,%r10d
  mov    %rax,0x10(%rsp)
L507:
  lea    (%r14,%rbp,1),%edx
  lea    (%r15,%r11,1),%r9
  mov    %r14d,%edi
  mov    %r10d,%r8d
  mov    %edx,%eax
  mov    %ebp,%ebx
  shr    $0x1f,%eax
  add    %edx,%eax
  sar    %eax
  cltq
  movzbl (%r15,%rax,1),%esi
  mov    0x10(%rsp),%rax
  cs nopw 0x0(%rax,%rax,1)
L192:
  movzbl (%r9),%r12d
  lea    (%r15,%rax,1),%rcx
  mov    %edi,%r13d
  movzbl (%rcx),%edx
  cmp    %r12b,%sil
  jg     L313
  cmp    %dl,%sil
  jge    L410
  lea    -0x1(%r15,%rax,1),%rax
  nopl   (%rax)
L354:
  mov    %rax,%rcx
  movzbl (%rax),%edx
  sub    $0x1,%rax
  sub    $0x1,%ebx
  cmp    %dl,%sil
  jl     L354
L410:
  cmp    %edi,%ebx
  jge    L48
L358:
  cmp    %ebx,%r14d
  jl     L353
  cmp    %r13d,%ebp
  jle    L422
L605:
  movslq %r13d,%r11
  mov    %r11,%r14
  lea    0x1(%r11),%r10d
  jmp    L507
L48:
  sub    $0x1,%ebx
  mov    %dl,(%r9)
  mov    %r8d,%r13d
  mov    %r12b,(%rcx)
  cmp    %ebx,%r8d
  jg     L358
  movslq %ebx,%rax
L313:
  add    $0x1,%r9
  add    $0x1,%r8d
  add    $0x1,%edi
  jmp    L192
L353:
  movslq %ebx,%rax
  mov    %ebp,0xc(%rsp)
  mov    %rax,%rbp
L588:
  lea    (%r14,%rbx,1),%edx
  lea    (%r15,%r11,1),%r8
  mov    %r14d,%r9d
  mov    %edx,%eax
  shr    $0x1f,%eax
  add    %edx,%eax
  mov    %ebx,%edx
  sar    %eax
  cltq
  movzbl (%r15,%rax,1),%edi
  mov    %rbp,%rax
  nopl   0x0(%rax,%rax,1)
L846:
  movzbl (%r8),%r11d
  lea    (%r15,%rax,1),%rsi
  mov    %r9d,%r12d
  movzbl (%rsi),%ecx
  cmp    %r11b,%dil
  jg     L540
  cmp    %cl,%dil
  jge    L381
  lea    -0x1(%r15,%rax,1),%rax
  nopl   (%rax)
L536:
  mov    %rax,%rsi
  movzbl (%rax),%ecx
  sub    $0x1,%rax
  sub    $0x1,%edx
  cmp    %cl,%dil
  jl     L536
L381:
  cmp    %r9d,%edx
  jge    L615
L678:
  cmp    %edx,%r14d
  jl     L277
L458:
  cmp    %r12d,%ebx
  jle    L148
  movslq %r12d,%r11
  mov    %r11,%r14
  lea    0x1(%r11),%r10d
  jmp    L588
  nopl   (%rax)
L615:
  sub    $0x1,%edx
  mov    %cl,(%r8)
  mov    %r10d,%r12d
  mov    %r11b,(%rsi)
  cmp    %edx,%r10d
  jg     L678
  movslq %edx,%rax
L540:
  add    $0x1,%r8
  add    $0x1,%r10d
  add    $0x1,%r9d
  jmp    L846
L148:
  mov    0xc(%rsp),%ebp
  cmp    %r13d,%ebp
  jg     L605
L422:
  mov    0x7c(%rsp),%r14d
  jmp    L586
L277:
  mov    %r14d,%esi
  mov    %r15,%rdi
  call   <quickSort>
  jmp    L458
L775:
  add    $0x88,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L455:
  mov    %r10d,0x34(%rsp)
  mov    %ecx,%ebx
  mov    %ecx,0x20(%rsp)
  jmp    L602
```

assistant: ```c
void quickSort(char *stringToSort, int left, int right) {
  char pom;
  int i = left;
  int j = right;
  int pivot = stringToSort[(i + j) / 2];
  do {
    while (stringToSort[i] < pivot) {
      i = i + 1;
    }
    while (stringToSort[j] > pivot) {
      j = j - 1;
    }
    if (i <= j) {
      pom = stringToSort[i];
      stringToSort[i] = stringToSort[j];
      stringToSort[j] = pom;
      i = i + 1;
      j = j - 1;
    }
  } while (i <= j);
  if (left < j)
    quickSort(stringToSort, left, j);
  if (i < right)
    quickSort(stringToSort, i, right);
  return;
}
```