user: Please show me the C implementation that matches the assembly code listed below:

```asm
<main>:
  endbr64
  push   %r12
  mov    $0x2,%edx
  mov    $0x4,%ecx
  push   %rbp
  push   %rbx
  sub    $0x30,%rsp
  movdqa D37(%rip),%xmm0
  mov    %fs:0x28,%rax
  mov    %rax,0x28(%rsp)
  xor    %eax,%eax
  mov    D27(%rip),%rax
  mov    %rsp,%rbx
  movaps %xmm0,(%rsp)
  movdqa D10(%rip),%xmm0
  mov    %rax,0x20(%rsp)
  mov    %rbx,%rax
  movaps %xmm0,0x10(%rsp)
  nopl   0x0(%rax)
L201:
  movd   0x4(%rax),%xmm0
  movd   %ecx,%xmm1
  punpckldq %xmm1,%xmm0
  cmp    %ecx,0x4(%rax)
  jge    L204
  movq   %xmm0,(%rax)
L204:
  cmp    $0xa,%edx
  je     L195
  mov    (%rax),%ecx
  mov    0x8(%rax),%esi
  cmp    %esi,%ecx
  jle    L63
  mov    %esi,(%rax)
  mov    %ecx,0x8(%rax)
L63:
  cmp    $0x9,%edx
  je     L4
  mov    (%rax),%ecx
  mov    0xc(%rax),%esi
  cmp    %esi,%ecx
  jle    L12
  mov    %esi,(%rax)
  mov    %ecx,0xc(%rax)
L12:
  cmp    $0x8,%edx
  je     L4
  mov    (%rax),%ecx
  mov    0x10(%rax),%esi
  cmp    %esi,%ecx
  jle    L9
  mov    %esi,(%rax)
  mov    %ecx,0x10(%rax)
L9:
  cmp    $0x7,%edx
  je     L4
  mov    (%rax),%ecx
  mov    0x14(%rax),%esi
  cmp    %esi,%ecx
  jle    L153
  mov    %esi,(%rax)
  mov    %ecx,0x14(%rax)
L153:
  cmp    $0x6,%edx
  je     L4
  mov    (%rax),%ecx
  mov    0x18(%rax),%esi
  cmp    %esi,%ecx
  jle    L40
  mov    %esi,(%rax)
  mov    %ecx,0x18(%rax)
L40:
  cmp    $0x5,%edx
  je     L4
  mov    (%rax),%ecx
  mov    0x1c(%rax),%esi
  cmp    %esi,%ecx
  jle    L48
  mov    %esi,(%rax)
  mov    %ecx,0x1c(%rax)
L48:
  cmp    $0x4,%edx
  je     L4
  mov    (%rax),%ecx
  mov    0x20(%rax),%esi
  cmp    %esi,%ecx
  jle    L20
  mov    %esi,(%rax)
  mov    %ecx,0x20(%rax)
L20:
  cmp    $0x3,%edx
  je     L4
  mov    (%rax),%ecx
  mov    0x24(%rax),%esi
  cmp    %ecx,%esi
  jge    L202
  mov    %esi,(%rax)
  mov    %ecx,0x24(%rax)
L202:
  add    $0x1,%edx
  add    $0x4,%rax
  cmp    $0xb,%edx
  je     L195
  mov    (%rax),%ecx
  jmp    L201
  nopl   (%rax)
L4:
  add    $0x4,%rax
  add    $0x1,%edx
  mov    (%rax),%ecx
  jmp    L201
  cs nopw 0x0(%rax,%rax,1)
L195:
  lea    0x28(%rbx),%r12
  lea    D24(%rip),%rbp
  nopl   0x0(%rax,%rax,1)
L155:
  mov    (%rbx),%esi
  mov    %rbp,%rdi
  add    $0x4,%rbx
  call   <printf@plt>
  cmp    %rbx,%r12
  jne    L155
  xor    %eax,%eax
  call   <getchar@plt>
  mov    0x28(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L82
  add    $0x30,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
L82:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: read_data
arguments: data_label: D37
type_guessed: byte[16]
name: read_data
arguments: data_label: D27
type_guessed: byte[8]
name: read_data
arguments: data_label: D10
type_guessed: byte[16]
name: read_data
arguments: data_label: D24
type_guessed: string

tool: {"D37": [0x04,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x08,0x00,0x00,0x00]}

tool: {"D27": [0x02,0x00,0x00,0x00,0x04,0x00,0x00,0x00]}

tool: {"D10": [0x03,0x00,0x00,0x00,0x2d,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x2b,0x00,0x00,0x00]}

tool: D24: %3d

assistant: ```c
int main() {
  int a[10] = {4, 6, 7, 8, 3, 45, 35, 43, 2, 4}, i, j, tmp;
  for (i = 0; i < 9; i++)
    for (j = i + 1; j < 10; j++)
      if (a[i] > a[j]) {
        tmp = a[i];
        a[i] = a[j];
        a[j] = tmp;
      }
  for (i = 0; i < 10; printf("%3d", a[i++]))
    ;
  getchar();
  return 0;
}
```