user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<main>:
  endbr64
  push   %r13
  mov    $0xa,%esi
  lea    D46(%rip),%rdi
  push   %r12
  lea    D58(%rip),%r12
  push   %rbp
  push   %rbx
  sub    $0x38,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x28(%rsp)
  xor    %eax,%eax
  mov    %rsp,%rbp
  lea    0x28(%rsp),%r13
  mov    %rbp,%rbx
  call   <printf@plt>
  nopl   0x0(%rax)
L135:
  mov    %rbx,%rsi
  mov    %r12,%rdi
  add    $0x4,%rbx
  call   <scanf@plt>
  cmp    %r13,%rbx
  jne    L135
  imul   $0xcccccccd,(%rsp),%eax
  mov    0x4(%rsp),%edx
  xor    %ebx,%ebx
  add    $0x19999999,%eax
  cmp    $0x33333332,%eax
  seta   %bl
  imul   $0xcccccccd,%edx,%eax
  add    $0x19999999,%eax
  cmp    $0x33333332,%eax
  jbe    L33
  movslq %ebx,%rax
  add    $0x1,%ebx
  mov    %edx,(%rsp,%rax,4)
L33:
  mov    0x8(%rsp),%edx
  imul   $0xcccccccd,%edx,%eax
  add    $0x19999999,%eax
  cmp    $0x33333332,%eax
  jbe    L116
  movslq %ebx,%rax
  add    $0x1,%ebx
  mov    %edx,(%rsp,%rax,4)
L116:
  mov    0xc(%rsp),%edx
  imul   $0xcccccccd,%edx,%eax
  add    $0x19999999,%eax
  cmp    $0x33333332,%eax
  jbe    L12
  movslq %ebx,%rax
  add    $0x1,%ebx
  mov    %edx,(%rsp,%rax,4)
L12:
  mov    0x10(%rsp),%edx
  imul   $0xcccccccd,%edx,%eax
  add    $0x19999999,%eax
  cmp    $0x33333332,%eax
  jbe    L47
  movslq %ebx,%rax
  add    $0x1,%ebx
  mov    %edx,(%rsp,%rax,4)
L47:
  mov    0x14(%rsp),%edx
  imul   $0xcccccccd,%edx,%eax
  add    $0x19999999,%eax
  cmp    $0x33333332,%eax
  jbe    L107
  movslq %ebx,%rax
  add    $0x1,%ebx
  mov    %edx,(%rsp,%rax,4)
L107:
  mov    0x18(%rsp),%edx
  imul   $0xcccccccd,%edx,%eax
  add    $0x19999999,%eax
  cmp    $0x33333332,%eax
  jbe    L77
  movslq %ebx,%rax
  add    $0x1,%ebx
  mov    %edx,(%rsp,%rax,4)
L77:
  mov    0x1c(%rsp),%edx
  imul   $0xcccccccd,%edx,%eax
  add    $0x19999999,%eax
  cmp    $0x33333332,%eax
  jbe    L126
  movslq %ebx,%rax
  add    $0x1,%ebx
  mov    %edx,(%rsp,%rax,4)
L126:
  mov    0x20(%rsp),%edx
  imul   $0xcccccccd,%edx,%eax
  add    $0x19999999,%eax
  cmp    $0x33333332,%eax
  jbe    L67
  movslq %ebx,%rax
  mov    $0x5,%esi
  add    $0x1,%ebx
  mov    %edx,(%rsp,%rax,4)
  mov    0x24(%rsp),%ecx
  mov    %ecx,%eax
  cltd
  idiv   %esi
  test   %edx,%edx
  jne    L43
  lea    D5(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L111
L67:
  mov    0x24(%rsp),%ecx
  mov    $0x5,%esi
  mov    %ecx,%eax
  cltd
  idiv   %esi
  test   %edx,%edx
  je     L9
L43:
  movslq %ebx,%rax
  lea    D5(%rip),%rdi
  add    $0x1,%ebx
  mov    %ecx,(%rsp,%rax,4)
  xor    %eax,%eax
  call   <printf@plt>
L111:
  lea    -0x1(%rbx),%eax
  lea    0x4(%rbp),%rbx
  lea    (%rbx,%rax,4),%r13
  lea    D1(%rip),%r12
  jmp    L127
  nopl   0x0(%rax)
L60:
  add    $0x4,%rbx
L127:
  mov    0x0(%rbp),%esi
  mov    %r12,%rdi
  xor    %eax,%eax
  mov    %rbx,%rbp
  call   <printf@plt>
  cmp    %r13,%rbx
  jne    L60
L74:
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    0x28(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L64
  add    $0x38,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
L9:
  xor    %eax,%eax
  lea    D5(%rip),%rdi
  call   <printf@plt>
  test   %ebx,%ebx
  jne    L111
  jmp    L74
L64:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: extract_symbolic_data
arguments: label: D46
datatype: string
name: extract_symbolic_data
arguments: label: D58
datatype: string
name: extract_symbolic_data
arguments: label: D5
datatype: string
name: extract_symbolic_data
arguments: label: D1
datatype: string

tool: D46: Enter array elements (%d elements): 

tool: D58: %d

tool: D5: New array: 

tool: D1: %d 

assistant: ```c
int main() {
  int size = 10, i, arr[size];
  printf("Enter array elements (%d elements): ", size);
  for (i = 0; i < size; ++i)
    scanf("%d", &arr[i]);
  int j = 0;
  i = 0;
  while (j < size) {
    if (arr[j] % 5 != 0) {
      arr[i] = arr[j];
      ++i;
    }
    ++j;
  }
  size = i;
  printf("New array: ");
  for (i = 0; i < size; ++i)
    printf("%d ", arr[i]);
  printf("\n");
  return 0;
}
```