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

```asm
<main>:
  endbr64
  push   %r13
  lea    D7(%rip),%rsi
  mov    $0x1f4,%ecx
  mov    $0x1,%r8d
  push   %r12
  mov    $0x3e6,%r9d
  push   %rbp
  push   %rbx
  sub    $0xfb8,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0xfa8(%rsp)
  xor    %eax,%eax
  mov    %rsp,%r13
  lea    0x8(%rsp),%r10
  mov    %r13,%rdi
  rep movsq %ds:(%rsi),%es:(%rdi)
L25:
  xor    $0x1,%r8d
  mov    %r9,%rax
  xor    %edi,%edi
  sub    %r8,%rax
  movslq %r8d,%rcx
  and    $0xfffffffe,%eax
  lea    0x0(%r13,%rcx,4),%rdx
  add    %rcx,%rax
  lea    (%r10,%rax,4),%rsi
  nopl   0x0(%rax,%rax,1)
L30:
  movq   (%rdx),%xmm0
  pshufd $0xe5,%xmm0,%xmm2
  movd   %xmm0,%ecx
  movd   %xmm2,%eax
  pshufd $0xe1,%xmm0,%xmm1
  cmp    %eax,%ecx
  jle    L39
  movq   %xmm1,(%rdx)
  mov    $0x1,%edi
L39:
  add    $0x8,%rdx
  cmp    %rsi,%rdx
  jne    L30
  test   %edi,%edi
  jne    L25
  lea    0x28(%r13),%rbp
  lea    D2(%rip),%r12
  add    $0xfc8,%r13
  nopw   0x0(%rax,%rax,1)
L54:
  lea    -0x28(%rbp),%rbx
  nopl   0x0(%rax)
L49:
  mov    (%rbx),%esi
  mov    %r12,%rdi
  xor    %eax,%eax
  add    $0x4,%rbx
  call   <printf@plt>
  cmp    %rbp,%rbx
  jne    L49
  mov    $0xa,%edi
  lea    0x28(%rbx),%rbp
  call   <putchar@plt>
  cmp    %r13,%rbp
  jne    L54
  mov    0xfa8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L59
  add    $0xfb8,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
L59:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: read_data
arguments: label: D7
data_type: string
name: read_data
arguments: label: D2
data_type: string

tool: D7: 

tool: D2: %3d 

assistant: ```c
int main(void) {
  register int ii, tmp, i, a, arrs;
  int array[1000] = {6, 2, 0, 1, 0, 0, 0, 4, 3, 8, 7, 8, 8, 5, 0, 2, 7, 0, 5, 9, 9, 4, 7, 5, 9, 4, 8, 8, 9, 7, 2, 8, 9, 4, 9, 9, 4, 1, 5, 0, 0, 3, 8, 0, 0, 0, 2, 0, 0, 9, 9, 9, 5, 6, 6, 5, 0, 4, 5, 2, 1, 9, 0, 1, 4, 1, 2, 0, 2, 8, 0, 4, 3, 0, 4, 3, 0, 9, 3, 2, 8, 2, 3, 4, 0, 9, 1, 1, 5, 8, 5, 7, 8, 5, 0, 4, 8, 4, 4, 2, 2, 7, 7, 5, 7, 3, 1, 0, 4, 6, 2, 3, 1, 8, 9, 1, 9, 2, 4, 5, 0, 9, 4, 0, 6, 6, 4, 4, 0, 9, 7, 3, 6, 6, 0, 5, 1, 3, 5, 6, 0, 0, 1, 3, 0, 0, 4, 9, 4, 1, 6, 6, 0, 0, 7, 7, 6, 1, 3, 7, 2, 2, 2, 0, 0, 2, 6, 2, 8, 3, 0, 0, 5, 1, 3, 5, 3, 9, 5, 9, 0, 1, 5, 3, 4, 2, 0, 0, 6, 5, 9, 0, 8, 1, 1, 0, 6, 9, 2, 6, 2, 4, 6, 8, 5, 9, 5, 0, 0, 0, 9, 1, 4, 5, 6, 8, 9, 8, 0, 5, 3, 0, 6, 3, 3, 9, 4, 1, 8, 8, 7, 2, 3, 3, 2, 8, 4, 8, 1, 7, 0, 0, 0, 4, 7, 6, 4, 7, 4, 5, 4, 7, 5, 0, 1, 0, 1, 7, 2, 1, 5, 1, 4, 8, 7, 8, 9, 1, 8, 0, 8, 9, 2, 8, 5, 0, 6, 0, 9, 0, 5, 3, 8, 2, 6, 1, 4, 7, 8, 8, 9, 3, 0, 5, 4, 7, 5, 3, 0, 4, 3, 1, 5, 7, 1, 0, 9, 8, 2, 8, 0, 9, 2, 8, 3, 0, 1, 8, 9, 1, 6, 0, 5, 8, 5, 9, 7, 3, 4, 8, 7, 9, 1, 4, 6, 4, 4, 6, 2, 9, 6, 5, 8, 0, 3, 2, 0, 7, 2, 0, 8, 0, 0, 5, 9, 8, 6, 6, 1, 2, 6, 0, 1, 7, 4, 8, 4, 0, 6, 8, 9, 2, 3, 0, 3, 7, 4, 5, 6, 6, 5, 6, 6, 8, 4, 7, 6, 0, 4, 9, 3, 2, 9, 6, 0, 3, 6, 4, 3, 2, 4, 5, 7, 8, 5, 2, 7, 9, 7, 3, 7, 3, 9, 5, 3, 5, 3, 1, 6, 9, 0, 1, 1, 9, 9, 1, 2, 6, 7, 7, 8, 2, 2, 7, 0, 7, 9, 9, 8, 7, 2, 5, 2, 3, 1, 5, 9, 6, 6, 7, 5, 8, 0, 6, 7, 9, 0, 1, 5, 9, 8, 6, 3, 3, 3, 5, 0, 3, 4, 9, 0, 6, 6, 2, 2, 9, 9, 1, 5, 7, 0, 0, 5, 0, 7, 4, 1, 7, 5, 7, 6, 5, 5, 0, 8, 8, 5, 1, 1, 0, 2, 3, 8, 8, 7, 0, 0, 8, 3, 5, 5, 5, 8, 2, 5, 5, 6, 9, 4, 3, 8, 2, 9, 3, 4, 9, 1, 2, 0, 5, 4, 4, 8, 2, 5, 8, 5, 5, 6, 0, 0, 4, 6, 0, 6, 3, 5, 5, 2, 1, 8, 0, 4, 9, 3, 0, 1, 7, 2, 1, 2, 6, 8, 2, 1, 3, 2, 8, 8, 9, 8, 0, 3, 6, 1, 1, 2, 8, 6, 4, 0, 5, 7, 6, 6, 2, 8, 7, 1, 1, 1, 5, 9, 9, 8, 2, 2, 0, 0, 2, 1, 1, 2, 6, 7, 5, 8, 9, 4, 4, 6, 6, 1, 5, 4, 0, 9, 2, 7, 1, 5, 8, 6, 5, 7, 6, 9, 1, 9, 0, 3, 0, 1, 8, 9, 0, 3, 7, 2, 7, 3, 8, 3, 7, 3, 9, 7, 4, 2, 4, 5, 7, 5, 2, 4, 4, 8, 4, 8, 9, 6, 1, 0, 7, 9, 1, 9, 3, 8, 1, 2, 3, 9, 8, 2, 4, 7, 9, 9, 9, 6, 6, 9, 3, 8, 5, 7, 9, 1, 5, 8, 7, 9, 0, 6, 0, 1, 8, 3, 1, 9, 8, 5, 1, 6, 7, 7, 3, 9, 8, 5, 7, 5, 6, 0, 3, 3, 9, 4, 5, 7, 5, 4, 6, 5, 3, 6, 7, 1, 2, 0, 0, 0, 5, 1, 8, 5, 1, 1, 6, 9, 8, 3, 4, 4, 5, 0, 8, 4, 4, 3, 1, 9, 9, 9, 7, 2, 8, 6, 3, 0, 6, 6, 2, 2, 9, 0, 9, 0, 3, 7, 0, 2, 0, 4, 6, 7, 6, 6, 3, 3, 1, 5, 4, 1, 6, 1, 5, 4, 7, 9, 6, 4, 7, 0, 8, 6, 2, 9, 9, 6, 6, 9, 0, 8, 5, 8, 5, 2, 5, 8, 5, 8, 5, 9, 9, 4, 3, 5, 0, 0, 6, 7, 6, 5, 9, 6, 1, 2, 5, 0, 0, 3, 1, 2, 1, 7, 0, 8, 1, 7, 9, 8, 6, 6, 9, 5, 0, 2, 2, 1, 5, 0, 0, 1, 5, 1, 8, 9, 5, 5, 1, 5, 9, 3, 9, 2, 2, 0, 3, 5, 7, 2, 3, 3, 0, 2, 1, 1, 7, 5, 4, 2, 6, 6, 5, 3, 9, 5, 2, 5, 3, 6, 2, 4, 1, 2, 6, 3, 2, 1, 0, 1, 5, 5, 7, 6, 9, 0, 9, 6, 5, 5, 0, 3, 1, 6, 7, 0, 1, 1, 7, 4, 7, 0, 8, 8, 4, 7, 3, 8, 8, 5, 9, 4, 0, 8, 2, 0, 8, 1, 6, 4, 6, 7, 9, 9, 5, 6, 1, 6, 8, 9, 3, 7, 1, 3, 8, 5, 0, 1, 5, 1, 7, 6, 7, 9, 5, 9, 9, 5, 2, 6, 1, 8, 5, 1, 9, 0, 7, 0, 8, 7, 1, 1, 7, 4, 5, 5, 1, 7, 8, 6, 0, 7, 3, 7, 7, 0, 8};
  arrs = 999;
  a = 1;
  i = 1;
  while (a) {
    a = 0;
    i = (i) ? 0 : 1;
    for (ii = 0 + i; ii < arrs; ii = ii + 2) {
      if (array[ii] > array[ii + 1]) {
        a = 1;
        tmp = array[ii];
        array[ii] = array[ii + 1];
        array[ii + 1] = tmp;
      }
    }
  }
  for (ii = 0; ii < ((arrs + 1) / 10); ii++) {
    for (i = 0; i < 10; i++)
      printf("%3d ", array[i + ii * 10]);
    printf("\n");
  }
  return 0;
}
```