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

```asm
<bubbleSort>:
  endbr64
  mov    %rdi,%rax
  mov    $0x8,%edx
  nopl   0x0(%rax)
L254:
  movq   (%rax),%xmm0
  pshufd $0xe5,%xmm0,%xmm2
  movd   %xmm0,%esi
  movd   %xmm2,%ecx
  pshufd $0xe1,%xmm0,%xmm1
  cmp    %ecx,%esi
  jle    L267
  movq   %xmm1,(%rax)
  test   %edx,%edx
  je     L105
  mov    $0x1,%esi
L356:
  movq   0x4(%rax),%xmm0
  pshufd $0xe5,%xmm0,%xmm3
  movd   %xmm0,%ecx
  movd   %xmm3,%edi
  pshufd $0xe1,%xmm0,%xmm1
  cmp    %ecx,%edi
  jge    L349
  movq   %xmm1,0x4(%rax)
  mov    $0x1,%esi
  cmp    $0x1,%edx
  je     L143
L185:
  movq   0x8(%rax),%xmm0
  pshufd $0xe5,%xmm0,%xmm4
  movd   %xmm0,%ecx
  movd   %xmm4,%edi
  pshufd $0xe1,%xmm0,%xmm1
  cmp    %ecx,%edi
  jge    L193
  movq   %xmm1,0x8(%rax)
  mov    $0x1,%esi
  cmp    $0x2,%edx
  je     L143
L59:
  movq   0xc(%rax),%xmm0
  pshufd $0xe5,%xmm0,%xmm5
  movd   %xmm0,%ecx
  movd   %xmm5,%edi
  pshufd $0xe1,%xmm0,%xmm1
  cmp    %ecx,%edi
  jge    L252
  movq   %xmm1,0xc(%rax)
  mov    $0x1,%esi
  cmp    $0x3,%edx
  je     L143
L249:
  movq   0x10(%rax),%xmm0
  pshufd $0xe5,%xmm0,%xmm6
  movd   %xmm0,%ecx
  movd   %xmm6,%edi
  pshufd $0xe1,%xmm0,%xmm1
  cmp    %ecx,%edi
  jge    L12
  movq   %xmm1,0x10(%rax)
  mov    $0x1,%esi
  cmp    $0x4,%edx
  je     L143
L38:
  movq   0x14(%rax),%xmm0
  pshufd $0xe5,%xmm0,%xmm7
  movd   %xmm0,%ecx
  movd   %xmm7,%edi
  pshufd $0xe1,%xmm0,%xmm1
  cmp    %ecx,%edi
  jge    L340
  movq   %xmm1,0x14(%rax)
  mov    $0x1,%esi
  cmp    $0x5,%edx
  je     L143
L321:
  movq   0x18(%rax),%xmm0
  pshufd $0xe5,%xmm0,%xmm7
  movd   %xmm0,%ecx
  movd   %xmm7,%edi
  pshufd $0xe1,%xmm0,%xmm1
  cmp    %ecx,%edi
  jge    L75
  movq   %xmm1,0x18(%rax)
  mov    $0x1,%esi
  cmp    $0x6,%edx
  je     L143
L96:
  movq   0x1c(%rax),%xmm0
  pshufd $0xe5,%xmm0,%xmm6
  movd   %xmm0,%ecx
  movd   %xmm6,%edi
  pshufd $0xe1,%xmm0,%xmm1
  cmp    %ecx,%edi
  jge    L116
  movq   %xmm1,0x1c(%rax)
  mov    $0x1,%esi
  cmp    $0x8,%edx
  jne    L143
L192:
  movq   0x20(%rax),%xmm0
  pshufd $0xe5,%xmm0,%xmm5
  movd   %xmm0,%ecx
  movd   %xmm5,%edi
  pshufd $0xe1,%xmm0,%xmm1
  cmp    %ecx,%edi
  jge    L42
  movq   %xmm1,0x20(%rax)
  mov    $0x7,%edx
  jmp    L254
  nop
L349:
  cmp    $0x1,%edx
  jne    L185
  nopl   0x0(%rax)
L42:
  test   %esi,%esi
  je     L130
L143:
  sub    $0x1,%edx
  jmp    L254
  nopl   0x0(%rax)
L267:
  test   %edx,%edx
  je     L105
  xor    %esi,%esi
  jmp    L356
  nopl   0x0(%rax,%rax,1)
L193:
  cmp    $0x2,%edx
  jne    L59
  jmp    L42
  nopl   0x0(%rax,%rax,1)
L252:
  cmp    $0x3,%edx
  jne    L249
  jmp    L42
  nopl   0x0(%rax,%rax,1)
L12:
  cmp    $0x4,%edx
  jne    L38
  jmp    L42
  nopl   0x0(%rax,%rax,1)
L340:
  cmp    $0x5,%edx
  jne    L321
  jmp    L42
  nopl   0x0(%rax,%rax,1)
L75:
  cmp    $0x6,%edx
  jne    L96
  jmp    L42
  nopl   0x0(%rax,%rax,1)
L116:
  cmp    $0x8,%edx
  je     L192
  test   %esi,%esi
  jne    L143
  jmp    L130
  nop
L105:
  ret
L130:
  ret
```

assistant: ```c
void bubbleSort(int a[]) {
  int i, pass, hold;
  int switchMade;
  for (pass = 1; pass <= 10 - 1; pass++) {
    switchMade = 0;
    for (i = 0; i <= 10 - 1 - pass; i++) {
      if (a[i] > a[i + 1]) {
        hold = a[i];
        a[i] = a[i + 1];
        a[i + 1] = hold;
        switchMade = 1;
      }
    }
    if (switchMade == 0) {
      break;
    }
  }
}
```