user: Demonstrate the C code that generates the assembly output below:

```asm
<quickSort_parallel_internal_i_d>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x18,%rsp
  mov    %rdi,%rbp
  mov    %rsi,%r13
  mov    %edx,%r11d
  mov    %ecx,%r12d
  mov    %r8d,0xc(%rsp)
  lea    (%rdx,%rcx,1),%edx
  mov    %edx,%eax
  shr    $0x1f,%eax
  add    %edx,%eax
  sar    %eax
  cltq
  mov    (%rdi,%rax,4),%esi
  mov    %r11d,%ebx
  jmp    L19
L138:
  lea    0x1(%rbx),%edx
  movslq %edx,%rdx
  lea    0x4(%rbp,%rax,1),%rax
L101:
  mov    %edx,%ebx
  mov    %rax,%r8
  mov    (%rax),%edi
  mov    %rdx,%r9
  add    $0x1,%rdx
  add    $0x4,%rax
  cmp    %esi,%edi
  jl     L101
L147:
  movslq %ecx,%r14
  lea    0x0(%rbp,%r14,4),%r15
  mov    (%r15),%r10d
  cmp    %r10d,%esi
  jge    L139
  lea    -0x1(%rcx),%eax
  cltq
  lea    -0x4(%rbp,%r14,4),%rdx
L8:
  mov    %eax,%ecx
  mov    %rdx,%r15
  mov    (%rdx),%r10d
  mov    %rax,%r14
  sub    $0x1,%rax
  sub    $0x4,%rdx
  cmp    %esi,%r10d
  jg     L8
L139:
  cmp    %ecx,%ebx
  jle    L9
L19:
  cmp    %ecx,%ebx
  jg     L78
  movslq %ebx,%r9
  lea    0x0(,%r9,4),%rax
  lea    0x0(%rbp,%rax,1),%r8
  mov    (%r8),%edi
  cmp    %edi,%esi
  jg     L138
  jmp    L147
L9:
  mov    %r10d,(%r8)
  mov    %edi,(%r15)
  lea    0x0(%r13,%r9,8),%rdx
  movsd  (%rdx),%xmm0
  lea    0x0(%r13,%r14,8),%rax
  movsd  (%rax),%xmm1
  movsd  %xmm1,(%rdx)
  movsd  %xmm0,(%rax)
  add    $0x1,%ebx
  sub    $0x1,%ecx
  jmp    L19
L78:
  mov    %r12d,%eax
  sub    %r11d,%eax
  cmp    0xc(%rsp),%eax
  jge    L98
  cmp    %r11d,%ecx
  jg     L35
L26:
  cmp    %r12d,%ebx
  jl     L62
L0:
  add    $0x18,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L35:
  mov    0xc(%rsp),%r8d
  mov    %r11d,%edx
  mov    %r13,%rsi
  mov    %rbp,%rdi
  call   <quickSort_parallel_internal_i_d>
  jmp    L26
L62:
  mov    0xc(%rsp),%r8d
  mov    %r12d,%ecx
  mov    %ebx,%edx
  mov    %r13,%rsi
  mov    %rbp,%rdi
  call   <quickSort_parallel_internal_i_d>
  jmp    L0
L98:
  mov    0xc(%rsp),%r15d
  mov    %r15d,%r8d
  mov    %r11d,%edx
  mov    %r13,%rsi
  mov    %rbp,%rdi
  call   <quickSort_parallel_internal_i_d>
  mov    %r15d,%r8d
  mov    %r12d,%ecx
  mov    %ebx,%edx
  mov    %r13,%rsi
  mov    %rbp,%rdi
  call   <quickSort_parallel_internal_i_d>
  jmp    L0
```

assistant: ```c
void quickSort_parallel_internal_i_d(int *key, double *value, int left, int right, int cutoff) {
  int i = left, j = right;
  int tmp;
  int pivot = key[(left + right) / 2];
  {
    while (i <= j) {
      while (key[i] < pivot)
        i++;
      while (key[j] > pivot)
        j--;
      if (i <= j) {
        tmp = key[i];
        key[i] = key[j];
        key[j] = tmp;
        double tmp_v = value[i];
        value[i] = value[j];
        value[j] = tmp_v;
        i++;
        j--;
      }
    }
  }
  if (((right - left) < cutoff)) {
    if (left < j) {
      quickSort_parallel_internal_i_d(key, value, left, j, cutoff);
    }
    if (i < right) {
      quickSort_parallel_internal_i_d(key, value, i, right, cutoff);
    }
  } else {
#pragma omp task
    { quickSort_parallel_internal_i_d(key, value, left, j, cutoff); }
#pragma omp task
    { quickSort_parallel_internal_i_d(key, value, i, right, cutoff); }
  }
}
```