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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x210,%rsp
  mov    %edi,-0x204(%rbp)
  mov    %rsi,-0x210(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movabs $0x6867666564636261,%rax
  mov    %rax,-0x1e9(%rbp)
  movb   $0x0,-0x1e1(%rbp)
  movabs $0x2073692073696854,%rax
  movabs $0x6d206863756d2061,%rdx
  mov    %rax,-0x180(%rbp)
  mov    %rdx,-0x178(%rbp)
  movabs $0x696469722065726f,%rax
  movabs $0x742073756f6c7563,%rdx
  mov    %rax,-0x170(%rbp)
  mov    %rdx,-0x168(%rbp)
  movabs $0x6163656220747365,%rax
  movabs $0x3220666f20657375,%rdx
  mov    %rax,-0x160(%rbp)
  mov    %rdx,-0x158(%rbp)
  movabs $0x2e37393537343331,%rax
  mov    %rax,-0x150(%rbp)
  movb   $0x0,-0x148(%rbp)
  movabs $0x6e69617220656854,%rax
  movabs $0x69617053206e6920,%rdx
  mov    %rax,-0x1e0(%rbp)
  mov    %rdx,-0x1d8(%rbp)
  movabs $0x20736c6c6166206e,%rsi
  movabs $0x6920796c74736f6d,%rdi
  mov    %rsi,-0x1d0(%rbp)
  mov    %rdi,-0x1c8(%rbp)
  movabs $0x6c7020656874206e,%rcx
  mov    %rcx,-0x1c0(%rbp)
  movl   $0x736e6961,-0x1b8(%rbp)
  movw   $0x2e,-0x1b4(%rbp)
  mov    %rax,-0x1b0(%rbp)
  mov    %rdx,-0x1a8(%rbp)
  movabs $0x20736c6c6166206e,%rax
  movabs $0x6920796c6e69616d,%rdx
  mov    %rax,-0x1a0(%rbp)
  mov    %rdx,-0x198(%rbp)
  mov    %rcx,-0x190(%rbp)
  movl   $0x736e6961,-0x188(%rbp)
  movw   $0x2e,-0x184(%rbp)
  movl   $0x8,-0x1fc(%rbp)
  movl   $0x38,-0x1f8(%rbp)
  movl   $0x2d,-0x1f4(%rbp)
  movl   $0x2d,-0x1f0(%rbp)
  movq   $0x0,-0x140(%rbp)
  movq   $0x0,-0x138(%rbp)
  movq   $0x0,-0x130(%rbp)
  movq   $0x0,-0x128(%rbp)
  movq   $0x0,-0x120(%rbp)
  movq   $0x0,-0x118(%rbp)
  movq   $0x0,-0x110(%rbp)
  movq   $0x0,-0x108(%rbp)
  movb   $0x0,-0x100(%rbp)
  movq   $0x0,-0xf0(%rbp)
  movq   $0x0,-0xe8(%rbp)
  movq   $0x0,-0xe0(%rbp)
  movq   $0x0,-0xd8(%rbp)
  movq   $0x0,-0xd0(%rbp)
  movq   $0x0,-0xc8(%rbp)
  movq   $0x0,-0xc0(%rbp)
  movq   $0x0,-0xb8(%rbp)
  movb   $0x0,-0xb0(%rbp)
  movq   $0x0,-0xa0(%rbp)
  movq   $0x0,-0x98(%rbp)
  movq   $0x0,-0x90(%rbp)
  movq   $0x0,-0x88(%rbp)
  movq   $0x0,-0x80(%rbp)
  movq   $0x0,-0x78(%rbp)
  movq   $0x0,-0x70(%rbp)
  movq   $0x0,-0x68(%rbp)
  movb   $0x0,-0x60(%rbp)
  movq   $0x0,-0x50(%rbp)
  movq   $0x0,-0x48(%rbp)
  movq   $0x0,-0x40(%rbp)
  movq   $0x0,-0x38(%rbp)
  movq   $0x0,-0x30(%rbp)
  movq   $0x0,-0x28(%rbp)
  movq   $0x0,-0x20(%rbp)
  movq   $0x0,-0x18(%rbp)
  movb   $0x0,-0x10(%rbp)
  lea    -0x140(%rbp),%rdx
  mov    -0x1fc(%rbp),%ecx
  lea    -0x1e9(%rbp),%rax
  mov    %ecx,%esi
  mov    %rax,%rdi
  call   <nilsimsa_compute@plt>
  lea    -0xf0(%rbp),%rdx
  mov    -0x1f8(%rbp),%ecx
  lea    -0x180(%rbp),%rax
  mov    %ecx,%esi
  mov    %rax,%rdi
  call   <nilsimsa_compute@plt>
  lea    -0xa0(%rbp),%rdx
  mov    -0x1f4(%rbp),%ecx
  lea    -0x1e0(%rbp),%rax
  mov    %ecx,%esi
  mov    %rax,%rdi
  call   <nilsimsa_compute@plt>
  lea    -0x50(%rbp),%rdx
  mov    -0x1f0(%rbp),%ecx
  lea    -0x1b0(%rbp),%rax
  mov    %ecx,%esi
  mov    %rax,%rdi
  call   <nilsimsa_compute@plt>
  lea    -0xf0(%rbp),%rdx
  lea    -0x140(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <nilsimsa_compare@plt>
  cmp    $0x4,%eax
  sete   %al
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  lea    -0x50(%rbp),%rdx
  lea    -0xa0(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <nilsimsa_compare@plt>
  cmp    $0x5c,%eax
  sete   %al
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L6
  call   <__stack_chk_fail@plt>
L6:
  leave
  ret
```

assistant: ```c
int main(int argc, char **argv) {
  const char data1[] = "abcdefgh";
  const char data2[] = "This is a much more ridiculous test because of 21347597.";
  const char data3[] = "The rain in Spain falls mostly in the plains.";
  const char data4[] = "The rain in Spain falls mainly in the plains.";
  int data1_sz = sizeof(data1) / sizeof(data1[0]) - 1;
  int data2_sz = sizeof(data2) / sizeof(data2[0]) - 1;
  int data3_sz = sizeof(data3) / sizeof(data3[0]) - 1;
  int data4_sz = sizeof(data4) / sizeof(data4[0]) - 1;
  char hash1[65] = {0};
  char hash2[65] = {0};
  char hash3[65] = {0};
  char hash4[65] = {0};
  nilsimsa_compute(data1, data1_sz, hash1);
  nilsimsa_compute(data2, data2_sz, hash2);
  nilsimsa_compute(data3, data3_sz, hash3);
  nilsimsa_compute(data4, data4_sz, hash4);
  assert(nilsimsa_compare(hash1, hash2) == 4);
  assert(nilsimsa_compare(hash3, hash4) == 92);
  return 0;
}
```