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

```asm
<autohelperowl_attackpat75>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x50,%rsp
  mov    %rdi,-0x38(%rbp)
  mov    %esi,-0x3c(%rbp)
  mov    %edx,-0x40(%rbp)
  mov    %ecx,-0x44(%rbp)
  mov    %r8d,-0x48(%rbp)
  mov    -0x3c(%rbp),%edx
  mov    -0x40(%rbp),%eax
  mov    %edx,%ecx
  mov    %eax,%edx
  mov    $0x0,%esi
  mov    $0xfffffffe,%edi
  call   <offset@plt>
  mov    %eax,-0x28(%rbp)
  mov    -0x3c(%rbp),%edx
  mov    -0x40(%rbp),%eax
  mov    %edx,%ecx
  mov    %eax,%edx
  mov    $0xffffffff,%esi
  mov    $0x2,%edi
  call   <offset@plt>
  mov    %eax,-0x24(%rbp)
  mov    -0x3c(%rbp),%edx
  mov    -0x40(%rbp),%eax
  mov    %edx,%ecx
  mov    %eax,%edx
  mov    $0x0,%esi
  mov    $0x2,%edi
  call   <offset@plt>
  mov    %eax,-0x20(%rbp)
  mov    -0x3c(%rbp),%edx
  mov    -0x40(%rbp),%eax
  mov    %edx,%ecx
  mov    %eax,%edx
  mov    $0x2,%esi
  mov    $0xffffffff,%edi
  call   <offset@plt>
  mov    %eax,-0x1c(%rbp)
  mov    -0x3c(%rbp),%edx
  mov    -0x40(%rbp),%eax
  mov    %edx,%ecx
  mov    %eax,%edx
  mov    $0x3,%esi
  mov    $0xffffffff,%edi
  call   <offset@plt>
  mov    %eax,-0x18(%rbp)
  mov    -0x3c(%rbp),%edx
  mov    -0x40(%rbp),%eax
  mov    %edx,%ecx
  mov    %eax,%edx
  mov    $0x4,%esi
  mov    $0xffffffff,%edi
  call   <offset@plt>
  mov    %eax,-0x14(%rbp)
  mov    -0x3c(%rbp),%edx
  mov    -0x40(%rbp),%eax
  mov    %edx,%ecx
  mov    %eax,%edx
  mov    $0x2,%esi
  mov    $0x0,%edi
  call   <offset@plt>
  mov    %eax,-0x10(%rbp)
  mov    -0x3c(%rbp),%edx
  mov    -0x40(%rbp),%eax
  mov    %edx,%ecx
  mov    %eax,%edx
  mov    $0x3,%esi
  mov    $0x0,%edi
  call   <offset@plt>
  mov    %eax,-0xc(%rbp)
  mov    -0x3c(%rbp),%edx
  mov    -0x40(%rbp),%eax
  mov    %edx,%ecx
  mov    %eax,%edx
  mov    $0x4,%esi
  mov    $0x0,%edi
  call   <offset@plt>
  mov    %eax,-0x8(%rbp)
  mov    -0x3c(%rbp),%edx
  mov    -0x40(%rbp),%eax
  mov    %edx,%ecx
  mov    %eax,%edx
  mov    $0xffffffff,%esi
  mov    $0x1,%edi
  call   <offset@plt>
  mov    %eax,-0x4(%rbp)
  mov    -0x28(%rbp),%eax
  mov    %eax,%edi
  call   <owl_escape_value@plt>
  test   %rax,%rax
  jle    L12
  mov    -0x4(%rbp),%esi
  mov    -0x20(%rbp),%ecx
  mov    -0x24(%rbp),%edx
  mov    -0x44(%rbp),%eax
  mov    %esi,%r8d
  mov    $0x2,%esi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <somewhere@plt>
  test   %rax,%rax
  je     L12
  mov    -0x10(%rbp),%r8d
  mov    -0x14(%rbp),%edi
  mov    -0x18(%rbp),%ecx
  mov    -0x1c(%rbp),%edx
  mov    -0x44(%rbp),%eax
  mov    -0x8(%rbp),%esi
  push   %rsi
  mov    -0xc(%rbp),%esi
  push   %rsi
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    $0x5,%esi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <somewhere@plt>
  add    $0x10,%rsp
  test   %rax,%rax
  je     L12
  mov    $0x1,%eax
  jmp    L1
L12:
  mov    $0x0,%eax
L1:
  leave
  ret
```

assistant: ```c
int autohelperowl_attackpat75(struct pattern *patt, int transformation, int move, int color, int action) {
  int a, b, c, d, e, f, g, h, i, j;
  (void)patt;
  (void)color;
  (void)action;
  a = offset(-2, 0, move, transformation);
  b = offset(2, -1, move, transformation);
  c = offset(2, 0, move, transformation);
  d = offset(-1, 2, move, transformation);
  e = offset(-1, 3, move, transformation);
  f = offset(-1, 4, move, transformation);
  g = offset(0, 2, move, transformation);
  h = offset(0, 3, move, transformation);
  i = offset(0, 4, move, transformation);
  j = offset(1, -1, move, transformation);
  return owl_escape_value(a) > 0 && somewhere(color, 2, b, c, j) && somewhere(color, 5, d, e, f, g, h, i);
}
```