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

```asm
<main1>:
  endbr64
  push   %rbx
  sub    $0x1000,%rsp
  orq    $0x0,(%rsp)
  sub    $0x410,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x1408(%rsp)
  xor    %eax,%eax
  lea    0xc00(%rsp),%rdx
  nopl   0x0(%rax,%rax,1)
L62:
  mov    %ax,(%rdx,%rax,2)
  add    $0x1,%rax
  cmp    $0x400,%rax
  jne    L62
  lea    0x400(%rsp),%rax
  mov    %rsp,%r9
  mov    %rdx,%rsi
  mov    %rdx,%rcx
  lea    0x1400(%rsp),%r8
  mov    %r9,%r10
  mov    %rax,%rdi
  nopw   0x0(%rax,%rax,1)
L2:
  movzwl (%rcx),%r11d
  add    $0x10,%rcx
  add    $0x10,%rdi
  add    $0x4,%r10
  movl   $0x7,-0x4(%r10)
  mov    %r11w,-0x10(%rdi)
  movzwl -0xe(%rcx),%r11d
  mov    %r11w,-0xe(%rdi)
  movzwl -0xc(%rcx),%r11d
  mov    %r11w,-0xc(%rdi)
  movzwl -0xa(%rcx),%r11d
  mov    %r11w,-0xa(%rdi)
  movzwl -0x8(%rcx),%r11d
  mov    %r11w,-0x8(%rdi)
  movzwl -0x6(%rcx),%r11d
  mov    %r11w,-0x6(%rdi)
  movzwl -0x4(%rcx),%r11d
  mov    %r11w,-0x4(%rdi)
  movzwl -0x2(%rcx),%r11d
  mov    %r11w,-0x2(%rdi)
  cmp    %r8,%rcx
  jne    L2
  lea    0x800(%rax),%r11
  mov    %r9,%r10
  mov    %rdx,%rdi
  mov    %rax,%rcx
  nopl   0x0(%rax,%rax,1)
L47:
  movzwl (%rdi),%ebx
  cmp    %bx,(%rcx)
  jne    1080 <main1.cold>
  movzwl 0x2(%rdi),%ebx
  cmp    %bx,0x2(%rcx)
  jne    1080 <main1.cold>
  movzwl 0x4(%rdi),%ebx
  cmp    %bx,0x4(%rcx)
  jne    1080 <main1.cold>
  movzwl 0x6(%rdi),%ebx
  cmp    %bx,0x6(%rcx)
  jne    1080 <main1.cold>
  movzwl 0x8(%rdi),%ebx
  cmp    %bx,0x8(%rcx)
  jne    1080 <main1.cold>
  movzwl 0xa(%rdi),%ebx
  cmp    %bx,0xa(%rcx)
  jne    1080 <main1.cold>
  movzwl 0xc(%rdi),%ebx
  cmp    %bx,0xc(%rcx)
  jne    1080 <main1.cold>
  movzwl 0xe(%rdi),%ebx
  cmp    %bx,0xe(%rcx)
  jne    1080 <main1.cold>
  cmpl   $0x7,(%r10)
  jne    1080 <main1.cold>
  add    $0x10,%rcx
  add    $0x10,%rdi
  add    $0x4,%r10
  cmp    %r11,%rcx
  jne    L47
  mov    %r9,%r10
  mov    %rax,%rdi
  mov    %rdx,%rcx
  cs nopw 0x0(%rax,%rax,1)
L42:
  movzwl (%rcx),%ebx
  add    $0x8,%rcx
  add    $0x8,%rdi
  add    $0x4,%r10
  movl   $0xc,-0x4(%r10)
  mov    %bx,-0x8(%rdi)
  movzwl -0x6(%rcx),%ebx
  mov    %bx,-0x6(%rdi)
  movzwl -0x4(%rcx),%ebx
  mov    %bx,-0x4(%rdi)
  movzwl -0x2(%rcx),%ebx
  mov    %bx,-0x2(%rdi)
  cmp    %r8,%rcx
  jne    L42
  mov    %r9,%r10
  mov    %rdx,%rdi
  mov    %rax,%rcx
  nopl   0x0(%rax)
L37:
  movzwl (%rdi),%ebx
  cmp    %bx,(%rcx)
  jne    1080 <main1.cold>
  movzwl 0x2(%rdi),%ebx
  cmp    %bx,0x2(%rcx)
  jne    1080 <main1.cold>
  movzwl 0x4(%rdi),%ebx
  cmp    %bx,0x4(%rcx)
  jne    1080 <main1.cold>
  movzwl 0x6(%rdi),%ebx
  cmp    %bx,0x6(%rcx)
  jne    1080 <main1.cold>
  cmpl   $0xc,(%r10)
  jne    1080 <main1.cold>
  add    $0x8,%rcx
  add    $0x8,%rdi
  add    $0x4,%r10
  cmp    %r11,%rcx
  jne    L37
  mov    %r9,%rdi
  mov    %rax,%rcx
  nop
L77:
  movzwl (%rdx),%r10d
  add    $0x20,%rdx
  add    $0x20,%rcx
  add    $0x4,%rdi
  mov    %r10w,-0x20(%rcx)
  movzwl -0x1e(%rdx),%r10d
  mov    %r10w,-0x1e(%rcx)
  movzwl -0x1c(%rdx),%r10d
  mov    %r10w,-0x1c(%rcx)
  movzwl -0x1a(%rdx),%r10d
  mov    %r10w,-0x1a(%rcx)
  movzwl -0x18(%rdx),%r10d
  mov    %r10w,-0x18(%rcx)
  movzwl -0x16(%rdx),%r10d
  mov    %r10w,-0x16(%rcx)
  movzwl -0x14(%rdx),%r10d
  mov    %r10w,-0x14(%rcx)
  movzwl -0x12(%rdx),%r10d
  mov    %r10w,-0x12(%rcx)
  movzwl -0x10(%rdx),%r10d
  mov    %r10w,-0x10(%rcx)
  movzwl -0xe(%rdx),%r10d
  mov    %r10w,-0xe(%rcx)
  movzwl -0xc(%rdx),%r10d
  mov    %r10w,-0xc(%rcx)
  movzwl -0xa(%rdx),%r10d
  mov    %r10w,-0xa(%rcx)
  movzwl -0x8(%rdx),%r10d
  mov    %r10w,-0x8(%rcx)
  movzwl -0x6(%rdx),%r10d
  mov    %r10w,-0x6(%rcx)
  movzwl -0x4(%rdx),%r10d
  mov    %r10w,-0x4(%rcx)
  movzwl -0x2(%rdx),%r10d
  mov    %r10w,-0x2(%rcx)
  movl   $0x15,-0x4(%rdi)
  cmp    %r8,%rdx
  jne    L77
  nopl   0x0(%rax,%rax,1)
L72:
  movzwl (%rsi),%edx
  cmp    %dx,(%rax)
  jne    1080 <main1.cold>
  movzwl 0x2(%rsi),%edx
  cmp    %dx,0x2(%rax)
  jne    1080 <main1.cold>
  movzwl 0x4(%rsi),%edx
  cmp    %dx,0x4(%rax)
  jne    1080 <main1.cold>
  movzwl 0x6(%rsi),%edx
  cmp    %dx,0x6(%rax)
  jne    1080 <main1.cold>
  movzwl 0x8(%rsi),%edx
  cmp    %dx,0x8(%rax)
  jne    1080 <main1.cold>
  movzwl 0xa(%rsi),%edx
  cmp    %dx,0xa(%rax)
  jne    1080 <main1.cold>
  movzwl 0xc(%rsi),%edx
  cmp    %dx,0xc(%rax)
  jne    1080 <main1.cold>
  movzwl 0xe(%rsi),%edx
  cmp    %dx,0xe(%rax)
  jne    1080 <main1.cold>
  movzwl 0x10(%rsi),%edx
  cmp    %dx,0x10(%rax)
  jne    1080 <main1.cold>
  movzwl 0x12(%rsi),%edx
  cmp    %dx,0x12(%rax)
  jne    1080 <main1.cold>
  movzwl 0x14(%rsi),%edx
  cmp    %dx,0x14(%rax)
  jne    1080 <main1.cold>
  movzwl 0x16(%rsi),%edx
  cmp    %dx,0x16(%rax)
  jne    1080 <main1.cold>
  movzwl 0x18(%rsi),%edx
  cmp    %dx,0x18(%rax)
  jne    1080 <main1.cold>
  movzwl 0x1a(%rsi),%edi
  cmp    %di,0x1a(%rax)
  jne    1080 <main1.cold>
  movzwl 0x1c(%rsi),%edx
  cmp    %dx,0x1c(%rax)
  jne    1080 <main1.cold>
  movzwl 0x1e(%rsi),%edi
  cmp    %di,0x1e(%rax)
  jne    1080 <main1.cold>
  cmpl   $0x15,(%r9)
  jne    1080 <main1.cold>
  add    $0x20,%rax
  add    $0x20,%rsi
  add    $0x4,%r9
  cmp    %r11,%rax
  jne    L72
  mov    0x1408(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L30
  add    $0x1410,%rsp
  xor    %eax,%eax
  pop    %rbx
  ret
L30:
  call   <__stack_chk_fail@plt>
```

assistant: ```c
int main1() {
  int i;
  unsigned short out[128 * 8];
  unsigned short in[128 * 8];
  unsigned int ia[128 * 2];
  for (i = 0; i < 128 * 8; i++) {
    in[i] = i;
    asm volatile("" ::: "memory");
  }
  for (i = 0; i < 128; i++) {
    out[i * 8] = in[i * 8];
    out[i * 8 + 1] = in[i * 8 + 1];
    out[i * 8 + 2] = in[i * 8 + 2];
    out[i * 8 + 3] = in[i * 8 + 3];
    out[i * 8 + 4] = in[i * 8 + 4];
    out[i * 8 + 5] = in[i * 8 + 5];
    out[i * 8 + 6] = in[i * 8 + 6];
    out[i * 8 + 7] = in[i * 8 + 7];
    ia[i] = 7;
  }
  for (i = 0; i < 128; i++) {
    if (out[i * 8] != in[i * 8] || out[i * 8 + 1] != in[i * 8 + 1] || out[i * 8 + 2] != in[i * 8 + 2] || out[i * 8 + 3] != in[i * 8 + 3] || out[i * 8 + 4] != in[i * 8 + 4] || out[i * 8 + 5] != in[i * 8 + 5] || out[i * 8 + 6] != in[i * 8 + 6] || out[i * 8 + 7] != in[i * 8 + 7] || ia[i] != 7)
      abort();
  }
  for (i = 0; i < 128 * 2; i++) {
    out[i * 4] = in[i * 4];
    out[i * 4 + 1] = in[i * 4 + 1];
    out[i * 4 + 2] = in[i * 4 + 2];
    out[i * 4 + 3] = in[i * 4 + 3];
    ia[i] = 12;
  }
  for (i = 0; i < 128 * 2; i++) {
    if (out[i * 4] != in[i * 4] || out[i * 4 + 1] != in[i * 4 + 1] || out[i * 4 + 2] != in[i * 4 + 2] || out[i * 4 + 3] != in[i * 4 + 3] || ia[i] != 12)
      abort();
  }
  for (i = 0; i < 128 / 2; i++) {
    out[i * 16] = in[i * 16];
    out[i * 16 + 1] = in[i * 16 + 1];
    out[i * 16 + 2] = in[i * 16 + 2];
    out[i * 16 + 3] = in[i * 16 + 3];
    out[i * 16 + 4] = in[i * 16 + 4];
    out[i * 16 + 5] = in[i * 16 + 5];
    out[i * 16 + 6] = in[i * 16 + 6];
    out[i * 16 + 7] = in[i * 16 + 7];
    out[i * 16 + 8] = in[i * 16 + 8];
    out[i * 16 + 9] = in[i * 16 + 9];
    out[i * 16 + 10] = in[i * 16 + 10];
    out[i * 16 + 11] = in[i * 16 + 11];
    out[i * 16 + 12] = in[i * 16 + 12];
    out[i * 16 + 13] = in[i * 16 + 13];
    out[i * 16 + 14] = in[i * 16 + 14];
    out[i * 16 + 15] = in[i * 16 + 15];
    ia[i] = 21;
  }
  for (i = 0; i < 128 / 2; i++) {
    if (out[i * 16] != in[i * 16] || out[i * 16 + 1] != in[i * 16 + 1] || out[i * 16 + 2] != in[i * 16 + 2] || out[i * 16 + 3] != in[i * 16 + 3] || out[i * 16 + 4] != in[i * 16 + 4] || out[i * 16 + 5] != in[i * 16 + 5] || out[i * 16 + 6] != in[i * 16 + 6] || out[i * 16 + 7] != in[i * 16 + 7] || out[i * 16 + 8] != in[i * 16 + 8] || out[i * 16 + 9] != in[i * 16 + 9] || out[i * 16 + 10] != in[i * 16 + 10] || out[i * 16 + 11] != in[i * 16 + 11] || out[i * 16 + 12] != in[i * 16 + 12] || out[i * 16 + 13] != in[i * 16 + 13] || out[i * 16 + 14] != in[i * 16 + 14] || out[i * 16 + 15] != in[i * 16 + 15] || ia[i] != 21)
      abort();
  }
  return 0;
}
```