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

```asm
<bar>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x60,%rsp
  mov    %rdi,-0x58(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  mov    -0x58(%rbp),%rcx
  lea    -0x50(%rbp),%rax
  mov    $0x4,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <__builtin_memcpy@plt>
  mov    -0x58(%rbp),%rax
  lea    0x4(%rax),%rcx
  lea    -0x50(%rbp),%rax
  add    $0x4,%rax
  mov    $0x4,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <__builtin_memcpy@plt>
  mov    -0x58(%rbp),%rax
  lea    0x8(%rax),%rcx
  lea    -0x50(%rbp),%rax
  add    $0x8,%rax
  mov    $0x4,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <__builtin_memcpy@plt>
  mov    -0x58(%rbp),%rax
  lea    0xc(%rax),%rcx
  lea    -0x50(%rbp),%rax
  add    $0xc,%rax
  mov    $0x4,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <__builtin_memcpy@plt>
  mov    -0x58(%rbp),%rax
  lea    0x10(%rax),%rcx
  lea    -0x50(%rbp),%rax
  add    $0x10,%rax
  mov    $0x4,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <__builtin_memcpy@plt>
  mov    -0x58(%rbp),%rax
  lea    0x14(%rax),%rcx
  lea    -0x50(%rbp),%rax
  add    $0x14,%rax
  mov    $0x4,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <__builtin_memcpy@plt>
  mov    -0x58(%rbp),%rax
  lea    0x18(%rax),%rcx
  lea    -0x50(%rbp),%rax
  add    $0x18,%rax
  mov    $0x4,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <__builtin_memcpy@plt>
  mov    -0x58(%rbp),%rax
  lea    0x1c(%rax),%rcx
  lea    -0x50(%rbp),%rax
  add    $0x1c,%rax
  mov    $0x4,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <__builtin_memcpy@plt>
  mov    -0x58(%rbp),%rax
  lea    0x20(%rax),%rcx
  lea    -0x50(%rbp),%rax
  add    $0x20,%rax
  mov    $0x4,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <__builtin_memcpy@plt>
  mov    -0x58(%rbp),%rax
  lea    0x24(%rax),%rcx
  lea    -0x50(%rbp),%rax
  add    $0x24,%rax
  mov    $0x4,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <__builtin_memcpy@plt>
  mov    -0x58(%rbp),%rax
  lea    0x28(%rax),%rcx
  lea    -0x50(%rbp),%rax
  add    $0x28,%rax
  mov    $0x4,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <__builtin_memcpy@plt>
  mov    -0x58(%rbp),%rax
  lea    0x2c(%rax),%rcx
  lea    -0x50(%rbp),%rax
  add    $0x2c,%rax
  mov    $0x4,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <__builtin_memcpy@plt>
  mov    -0x58(%rbp),%rax
  lea    0x30(%rax),%rcx
  lea    -0x50(%rbp),%rax
  add    $0x30,%rax
  mov    $0x4,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <__builtin_memcpy@plt>
  mov    -0x58(%rbp),%rax
  lea    0x34(%rax),%rcx
  lea    -0x50(%rbp),%rax
  add    $0x34,%rax
  mov    $0x4,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <__builtin_memcpy@plt>
  mov    -0x58(%rbp),%rax
  lea    0x38(%rax),%rcx
  lea    -0x50(%rbp),%rax
  add    $0x38,%rax
  mov    $0x4,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <__builtin_memcpy@plt>
  mov    -0x58(%rbp),%rax
  lea    0x3c(%rax),%rcx
  lea    -0x50(%rbp),%rax
  add    $0x3c,%rax
  mov    $0x4,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <__builtin_memcpy@plt>
  lea    -0x50(%rbp),%rax
  mov    %rax,%rdi
  call   <foo@plt>
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L2
  call   <__stack_chk_fail@plt>
L2:
  leave
  ret
```

assistant: ```c
__attribute__((no)) void bar(const unsigned char *block) {
  uint32_t buf[16];
  __builtin_memcpy(buf + 0, block + 0, 4);
  __builtin_memcpy(buf + 1, block + 4, 4);
  __builtin_memcpy(buf + 2, block + 8, 4);
  __builtin_memcpy(buf + 3, block + 12, 4);
  __builtin_memcpy(buf + 4, block + 16, 4);
  __builtin_memcpy(buf + 5, block + 20, 4);
  __builtin_memcpy(buf + 6, block + 24, 4);
  __builtin_memcpy(buf + 7, block + 28, 4);
  __builtin_memcpy(buf + 8, block + 32, 4);
  __builtin_memcpy(buf + 9, block + 36, 4);
  __builtin_memcpy(buf + 10, block + 40, 4);
  __builtin_memcpy(buf + 11, block + 44, 4);
  __builtin_memcpy(buf + 12, block + 48, 4);
  __builtin_memcpy(buf + 13, block + 52, 4);
  __builtin_memcpy(buf + 14, block + 56, 4);
  __builtin_memcpy(buf + 15, block + 60, 4);
  foo(buf);
}
```