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

```asm
<_quick_rec_first>:
  endbr64
  push   %r15
  mov    %rdi,%r9
  push   %r14
  mov    %esi,%r14d
  mov    %edx,%esi
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x48,%rsp
  mov    %edx,0x38(%rsp)
L727:
  movslq %r14d,%rbx
  mov    (%r9,%rbx,4),%edx
  mov    %ebx,%ecx
L587:
  cmp    %esi,%ecx
  jg     L397
L803:
  movslq %ecx,%rax
  movslq %esi,%rbp
  shl    $0x2,%rax
  lea    (%r9,%rbp,4),%r11
  lea    (%r9,%rax,1),%r8
  mov    (%r11),%edi
  lea    0x4(%r9,%rax,1),%rax
  mov    (%r8),%r10d
  cmp    %edx,%r10d
  jge    L417
  nopl   (%rax)
L545:
  mov    %rax,%r8
  mov    (%rax),%r10d
  lea    0x4(%rax),%rax
  add    $0x1,%ecx
  cmp    %edx,%r10d
  jl     L545
  cmp    %edi,%edx
  jge    L692
L945:
  lea    -0x4(%r9,%rbp,4),%rax
  nopl   0x0(%rax,%rax,1)
L373:
  mov    %rax,%r11
  mov    (%rax),%edi
  sub    $0x4,%rax
  sub    $0x1,%esi
  cmp    %edx,%edi
  jg     L373
L692:
  cmp    %ecx,%esi
  jl     L587
  mov    %edi,(%r8)
  add    $0x1,%ecx
  sub    $0x1,%esi
  mov    %r10d,(%r11)
L348:
  cmp    %esi,%ecx
  jle    L803
L397:
  mov    %ecx,0x10(%rsp)
  mov    %esi,0x18(%rsp)
  cmp    %r14d,%esi
  jg     L800
L345:
  mov    0x38(%rsp),%ebx
  cmp    %ebx,0x10(%rsp)
  jge    L678
  mov    0x10(%rsp),%r14d
  mov    %ebx,%esi
  jmp    L727
L417:
  cmp    %edi,%edx
  jl     L945
  mov    %edi,(%r8)
  add    $0x1,%ecx
  sub    $0x1,%esi
  mov    %r10d,(%r11)
  jmp    L348
L973:
  mov    %ecx,0x1c(%rsp)
  mov    %esi,0x20(%rsp)
  cmp    %ecx,%r14d
  jl     L357
L618:
  mov    0x20(%rsp),%ebx
  cmp    %ebx,0x18(%rsp)
  jle    L345
  movslq %ebx,%rbx
  mov    %ebx,%r14d
L800:
  mov    (%r9,%rbx,4),%edx
  mov    0x18(%rsp),%ecx
  mov    %r14d,%esi
L225:
  cmp    %ecx,%esi
  jg     L973
  movslq %esi,%rax
  movslq %ecx,%rbp
  shl    $0x2,%rax
  lea    (%r9,%rbp,4),%r11
  lea    (%r9,%rax,1),%r8
  mov    (%r11),%edi
  lea    0x4(%r9,%rax,1),%rax
  mov    (%r8),%r10d
  cmp    %r10d,%edx
  jle    L413
  nop
L525:
  mov    %rax,%r8
  mov    (%rax),%r10d
  lea    0x4(%rax),%rax
  add    $0x1,%esi
  cmp    %r10d,%edx
  jg     L525
  cmp    %edi,%edx
  jge    L505
L482:
  lea    -0x4(%r9,%rbp,4),%rax
  nopl   0x0(%rax,%rax,1)
L605:
  mov    %rax,%r11
  mov    (%rax),%edi
  sub    $0x4,%rax
  sub    $0x1,%ecx
  cmp    %edi,%edx
  jl     L605
L505:
  cmp    %esi,%ecx
  jl     L225
  mov    %edi,(%r8)
  add    $0x1,%esi
  sub    $0x1,%ecx
  mov    %r10d,(%r11)
  jmp    L225
L413:
  cmp    %edi,%edx
  jl     L482
  mov    %edi,(%r8)
  add    $0x1,%esi
  sub    $0x1,%ecx
  mov    %r10d,(%r11)
  jmp    L225
L322:
  mov    %ecx,0x24(%rsp)
  mov    %esi,0x28(%rsp)
  cmp    %ecx,%r14d
  jl     L244
L1007:
  mov    0x28(%rsp),%ebx
  cmp    %ebx,0x1c(%rsp)
  jle    L618
  movslq %ebx,%rbx
  mov    %ebx,%r14d
L357:
  mov    (%r9,%rbx,4),%edx
  mov    0x1c(%rsp),%ecx
  mov    %r14d,%esi
  nopl   0x0(%rax)
L742:
  cmp    %ecx,%esi
  jg     L322
  movslq %esi,%rax
  movslq %ecx,%rbp
  shl    $0x2,%rax
  lea    (%r9,%rbp,4),%r11
  lea    (%r9,%rax,1),%r8
  mov    (%r11),%edi
  lea    0x4(%r9,%rax,1),%rax
  mov    (%r8),%r10d
  cmp    %r10d,%edx
  jle    L127
  xchg   %ax,%ax
L859:
  mov    %rax,%r8
  mov    (%rax),%r10d
  lea    0x4(%rax),%rax
  add    $0x1,%esi
  cmp    %r10d,%edx
  jg     L859
  cmp    %edi,%edx
  jge    L20
L640:
  lea    -0x4(%r9,%rbp,4),%rax
  nopl   0x0(%rax,%rax,1)
L294:
  mov    %rax,%r11
  mov    (%rax),%edi
  sub    $0x4,%rax
  sub    $0x1,%ecx
  cmp    %edi,%edx
  jl     L294
L20:
  cmp    %esi,%ecx
  jl     L742
  mov    %edi,(%r8)
  add    $0x1,%esi
  sub    $0x1,%ecx
  mov    %r10d,(%r11)
  jmp    L742
L127:
  cmp    %edi,%edx
  jl     L640
  mov    %edi,(%r8)
  add    $0x1,%esi
  sub    $0x1,%ecx
  mov    %r10d,(%r11)
  jmp    L742
L506:
  mov    %edx,0x2c(%rsp)
  mov    %ecx,0x30(%rsp)
  cmp    %edx,%r14d
  jl     L793
L645:
  mov    0x30(%rsp),%ebx
  cmp    %ebx,0x24(%rsp)
  jle    L1007
  movslq %ebx,%rbx
  mov    %ebx,%r14d
L244:
  mov    (%r9,%rbx,4),%esi
  mov    0x24(%rsp),%edx
  mov    %r14d,%ecx
  nopl   0x0(%rax)
L758:
  cmp    %edx,%ecx
  jg     L506
  movslq %ecx,%rax
  movslq %edx,%rbp
  shl    $0x2,%rax
  lea    (%r9,%rbp,4),%r11
  lea    (%r9,%rax,1),%rdi
  mov    (%r11),%r10d
  lea    0x4(%r9,%rax,1),%rax
  mov    (%rdi),%r8d
  cmp    %r8d,%esi
  jle    L564
  xchg   %ax,%ax
L969:
  mov    %rax,%rdi
  mov    (%rax),%r8d
  lea    0x4(%rax),%rax
  add    $0x1,%ecx
  cmp    %r8d,%esi
  jg     L969
  cmp    %r10d,%esi
  jge    L235
L514:
  lea    -0x4(%r9,%rbp,4),%rax
  nopl   0x0(%rax)
L238:
  mov    %rax,%r11
  mov    (%rax),%r10d
  sub    $0x4,%rax
  sub    $0x1,%edx
  cmp    %r10d,%esi
  jl     L238
L235:
  cmp    %ecx,%edx
  jl     L758
  mov    %r10d,(%rdi)
  add    $0x1,%ecx
  sub    $0x1,%edx
  mov    %r8d,(%r11)
  jmp    L758
L564:
  cmp    %r10d,%esi
  jl     L514
  mov    %r10d,(%rdi)
  add    $0x1,%ecx
  sub    $0x1,%edx
  mov    %r8d,(%r11)
  jmp    L758
L793:
  mov    %r9,%r11
L1002:
  mov    (%r11,%rbx,4),%edx
  mov    0x2c(%rsp),%ecx
  mov    %r14d,%esi
L901:
  cmp    %ecx,%esi
  jg     L504
  movslq %esi,%rax
  movslq %ecx,%rbp
  shl    $0x2,%rax
  lea    (%r11,%rbp,4),%r10
  lea    (%r11,%rax,1),%r9
  mov    (%r10),%edi
  lea    0x4(%r11,%rax,1),%rax
  mov    (%r9),%r8d
  cmp    %r8d,%edx
  jle    L480
  nop
L438:
  mov    %rax,%r9
  mov    (%rax),%r8d
  lea    0x4(%rax),%rax
  add    $0x1,%esi
  cmp    %r8d,%edx
  jg     L438
  cmp    %edi,%edx
  jge    L375
L90:
  lea    -0x4(%r11,%rbp,4),%rax
  nopl   0x0(%rax,%rax,1)
L105:
  mov    %rax,%r10
  mov    (%rax),%edi
  sub    $0x4,%rax
  sub    $0x1,%ecx
  cmp    %edi,%edx
  jl     L105
L375:
  cmp    %ecx,%esi
  jle    L1011
L504:
  mov    %ecx,0x14(%rsp)
  mov    %esi,0x34(%rsp)
  cmp    %ecx,%r14d
  jl     L123
L98:
  mov    0x34(%rsp),%ebx
  cmp    %ebx,0x2c(%rsp)
  jle    L712
  movslq %ebx,%rbx
  mov    %ebx,%r14d
  jmp    L1002
L432:
  cmp    %r15d,%r14d
  jl     L481
L214:
  cmp    %r10d,0x14(%rsp)
  jle    L98
  movslq %r10d,%rbx
  mov    %ebx,%r14d
L123:
  mov    (%r11,%rbx,4),%edx
  mov    0x14(%rsp),%r15d
  mov    %r14d,%r10d
L837:
  cmp    %r15d,%r10d
  jg     L432
  movslq %r10d,%rax
  movslq %r15d,%r9
  shl    $0x2,%rax
  lea    (%r11,%r9,4),%r8
  lea    (%r11,%rax,1),%rdi
  mov    (%r8),%ecx
  lea    0x4(%r11,%rax,1),%rax
  mov    (%rdi),%esi
  cmp    %edx,%esi
  jge    L460
  nopl   (%rax)
L53:
  mov    %rax,%rdi
  mov    (%rax),%esi
  lea    0x4(%rax),%rax
  add    $0x1,%r10d
  cmp    %esi,%edx
  jg     L53
  cmp    %ecx,%edx
  jge    L49
L289:
  lea    -0x4(%r11,%r9,4),%rax
  nopw   0x0(%rax,%rax,1)
L383:
  mov    %rax,%r8
  mov    (%rax),%ecx
  sub    $0x4,%rax
  sub    $0x1,%r15d
  cmp    %ecx,%edx
  jl     L383
L49:
  cmp    %r10d,%r15d
  jl     L837
  mov    %ecx,(%rdi)
  add    $0x1,%r10d
  sub    $0x1,%r15d
  mov    %esi,(%r8)
  jmp    L837
L460:
  cmp    %ecx,%edx
  jl     L289
  mov    %ecx,(%rdi)
  add    $0x1,%r10d
  sub    $0x1,%r15d
  mov    %esi,(%r8)
  jmp    L837
L480:
  cmp    %edi,%edx
  jl     L90
L1011:
  mov    %edi,(%r9)
  add    $0x1,%esi
  sub    $0x1,%ecx
  mov    %r8d,(%r10)
  jmp    L901
L481:
  mov    %r15d,0xc(%rsp)
  mov    %r11,%r15
  mov    %r10d,0x3c(%rsp)
  mov    %r14d,%r10d
L615:
  mov    (%r15,%rbx,4),%edx
  mov    0xc(%rsp),%r13d
  mov    %r10d,%r14d
  nopl   (%rax)
L689:
  cmp    %r13d,%r14d
  jg     L86
L977:
  movslq %r14d,%rax
  movslq %r13d,%r9
  shl    $0x2,%rax
  lea    (%r15,%r9,4),%r8
  lea    (%r15,%rax,1),%rdi
  mov    (%r8),%ecx
  lea    0x4(%r15,%rax,1),%rax
  mov    (%rdi),%esi
  cmp    %edx,%esi
  jge    L471
  nopl   (%rax)
L351:
  mov    %rax,%rdi
  mov    (%rax),%esi
  lea    0x4(%rax),%rax
  add    $0x1,%r14d
  cmp    %esi,%edx
  jg     L351
  cmp    %ecx,%edx
  jge    L128
L923:
  lea    -0x4(%r15,%r9,4),%rax
  nopw   0x0(%rax,%rax,1)
L327:
  mov    %rax,%r8
  mov    (%rax),%ecx
  sub    $0x4,%rax
  sub    $0x1,%r13d
  cmp    %ecx,%edx
  jl     L327
L128:
  cmp    %r14d,%r13d
  jl     L689
  mov    %ecx,(%rdi)
  add    $0x1,%r14d
  sub    $0x1,%r13d
  mov    %esi,(%r8)
L982:
  cmp    %r13d,%r14d
  jle    L977
L86:
  cmp    %r13d,%r10d
  jl     L234
L403:
  cmp    %r14d,0xc(%rsp)
  jle    L829
  movslq %r14d,%rbx
  mov    %rbx,%r10
  jmp    L615
L471:
  cmp    %ecx,%edx
  jl     L923
  mov    %ecx,(%rdi)
  add    $0x1,%r14d
  sub    $0x1,%r13d
  mov    %esi,(%r8)
  jmp    L982
L433:
  cmp    %ebp,%r10d
  jl     L23
L394:
  cmp    %r12d,%r13d
  jle    L403
  movslq %r12d,%rbx
  mov    %rbx,%r10
L234:
  mov    (%r15,%rbx,4),%edx
  mov    %r13d,%ebp
  mov    %r10d,%r12d
  nopl   0x0(%rax)
L971:
  cmp    %ebp,%r12d
  jg     L433
  movslq %r12d,%rax
  movslq %ebp,%r9
  shl    $0x2,%rax
  lea    (%r15,%r9,4),%r8
  lea    (%r15,%rax,1),%rdi
  mov    (%r8),%ecx
  lea    0x4(%r15,%rax,1),%rax
  mov    (%rdi),%esi
  cmp    %edx,%esi
  jge    L431
  nopl   (%rax)
L842:
  mov    %rax,%rdi
  mov    (%rax),%esi
  lea    0x4(%rax),%rax
  add    $0x1,%r12d
  cmp    %esi,%edx
  jg     L842
  cmp    %ecx,%edx
  jge    L512
L889:
  lea    -0x4(%r15,%r9,4),%rax
  nopw   0x0(%rax,%rax,1)
L815:
  mov    %rax,%r8
  mov    (%rax),%ecx
  sub    $0x4,%rax
  sub    $0x1,%ebp
  cmp    %ecx,%edx
  jl     L815
L512:
  cmp    %r12d,%ebp
  jl     L971
  mov    %ecx,(%rdi)
  add    $0x1,%r12d
  sub    $0x1,%ebp
  mov    %esi,(%r8)
  jmp    L971
L431:
  cmp    %ecx,%edx
  jl     L889
  mov    %ecx,(%rdi)
  add    $0x1,%r12d
  sub    $0x1,%ebp
  mov    %esi,(%r8)
  jmp    L971
L147:
  cmp    %edx,%r10d
  jl     L153
L189:
  cmp    %ebx,%ebp
  jle    L394
  movslq %ebx,%rbx
  mov    %rbx,%r10
L23:
  mov    (%r15,%rbx,4),%edi
  mov    %ebp,%edx
  mov    %r10d,%ebx
  nopl   (%rax)
L986:
  cmp    %edx,%ebx
  jg     L147
  movslq %ebx,%rax
  movslq %edx,%r11
  shl    $0x2,%rax
  lea    (%r15,%r11,4),%r9
  lea    (%r15,%rax,1),%rsi
  mov    (%r9),%r8d
  lea    0x4(%r15,%rax,1),%rax
  mov    (%rsi),%ecx
  cmp    %edi,%ecx
  jge    L28
  nopl   0x0(%rax)
L352:
  mov    %rax,%rsi
  mov    (%rax),%ecx
  lea    0x4(%rax),%rax
  add    $0x1,%ebx
  cmp    %ecx,%edi
  jg     L352
  cmp    %r8d,%edi
  jge    L170
L411:
  lea    -0x4(%r15,%r11,4),%rax
  nopw   0x0(%rax,%rax,1)
L133:
  mov    %rax,%r9
  mov    (%rax),%r8d
  sub    $0x4,%rax
  sub    $0x1,%edx
  cmp    %r8d,%edi
  jl     L133
L170:
  cmp    %ebx,%edx
  jl     L986
  mov    %r8d,(%rsi)
  add    $0x1,%ebx
  sub    $0x1,%edx
  mov    %ecx,(%r9)
  jmp    L986
  nopl   0x0(%rax)
L28:
  cmp    %r8d,%edi
  jl     L411
  mov    %r8d,(%rsi)
  add    $0x1,%ebx
  sub    $0x1,%edx
  mov    %ecx,(%r9)
  jmp    L986
L829:
  mov    0x3c(%rsp),%r10d
  mov    %r15,%r11
  jmp    L214
L712:
  mov    %r11,%r9
  jmp    L645
L678:
  add    $0x48,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L153:
  mov    %r10d,%esi
  mov    %r15,%rdi
  call   <_quick_rec_first>
  jmp    L189
```

assistant: ```c
void _quick_rec_first(int *vet, int begin, int end) {
  int i = begin, j = end;
  int tmp;
  int pivot = vet[begin];
  while (i <= j) {
    while (vet[i] < pivot)
      i++;
    while (vet[j] > pivot)
      j--;
    if (i <= j) {
      tmp = vet[i];
      vet[i] = vet[j];
      vet[j] = tmp;
      i++;
      j--;
    }
  }
  if (begin < j) {
    _quick_rec_first(vet, begin, j);
  }
  if (i < end) {
    _quick_rec_first(vet, i, end);
  }
}
```