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

```asm
<enough_space>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %edi,-0x4(%rbp)
  mov    %esi,-0x8(%rbp)
  mov    %rdx,-0x10(%rbp)
  mov    -0x10(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  test   %eax,%eax
  je     L109
  cmpl   $0x0,-0x8(%rbp)
  jg     L109
  mov    $0x0,%eax
  jmp    L179
L109:
  mov    -0x10(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  je     L169
  cmpl   $0x1,-0x8(%rbp)
  jg     L169
  mov    $0x0,%eax
  jmp    L179
L169:
  mov    -0x10(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%eax
  test   %eax,%eax
  je     L54
  cmpl   $0x5,-0x8(%rbp)
  jle    L54
  mov    $0x0,%eax
  jmp    L179
L54:
  mov    -0x10(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  test   %eax,%eax
  je     L172
  cmpl   $0x6,-0x8(%rbp)
  jle    L172
  mov    $0x0,%eax
  jmp    L179
L172:
  cmpl   $0x5,-0x4(%rbp)
  jle    L174
  mov    -0x10(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x10(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  or     %eax,%edx
  mov    -0x10(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  or     %eax,%edx
  mov    -0x10(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  or     %eax,%edx
  mov    -0x10(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%eax
  or     %edx,%eax
  and    $0x10,%eax
  test   %eax,%eax
  je     L174
  mov    $0x0,%eax
  jmp    L179
L174:
  cmpl   $0x6,-0x4(%rbp)
  jle    L49
  mov    -0x10(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x10(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  or     %eax,%edx
  mov    -0x10(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  or     %eax,%edx
  mov    -0x10(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  or     %eax,%edx
  mov    -0x10(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%eax
  or     %edx,%eax
  and    $0x8,%eax
  test   %eax,%eax
  je     L49
  mov    $0x0,%eax
  jmp    L179
L49:
  cmpl   $0x1,-0x4(%rbp)
  jg     L101
  mov    -0x10(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x10(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  or     %eax,%edx
  mov    -0x10(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  or     %eax,%edx
  mov    -0x10(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  or     %eax,%edx
  mov    -0x10(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%eax
  or     %edx,%eax
  and    $0x1,%eax
  test   %eax,%eax
  je     L101
  mov    $0x0,%eax
  jmp    L179
L101:
  cmpl   $0x0,-0x4(%rbp)
  jg     L173
  mov    -0x10(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x10(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  or     %eax,%edx
  mov    -0x10(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  or     %eax,%edx
  mov    -0x10(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  or     %eax,%edx
  mov    -0x10(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%eax
  or     %edx,%eax
  and    $0x2,%eax
  test   %eax,%eax
  je     L173
  mov    $0x0,%eax
  jmp    L179
L173:
  mov    $0x1,%eax
L179:
  pop    %rbp
  ret
```

assistant: ```c
int enough_space(int x, int y, uint8_t *piece) {
  if (piece[1] && (y < 1))
    return 0;
  if (piece[0] && (y < 2))
    return 0;
  if (piece[4] && (y > 5))
    return 0;
  if (piece[3] && (y > 6))
    return 0;
  if (x > 5)
    if ((piece[0] & 16) | (piece[1] & 16) | (piece[2] & 16) | (piece[3] & 16) | (piece[4] & 16))
      return 0;
  if (x > 6)
    if ((piece[0] & 8) | (piece[1] & 8) | (piece[2] & 8) | (piece[3] & 8) | (piece[4] & 8))
      return 0;
  if (x < 2)
    if ((piece[0] & 1) | (piece[1] & 1) | (piece[2] & 1) | (piece[3] & 1) | (piece[4] & 1))
      return 0;
  if (x < 1)
    if ((piece[0] & 2) | (piece[1] & 2) | (piece[2] & 2) | (piece[3] & 2) | (piece[4] & 2))
      return 0;
  return 1;
}
```