user: 提供的汇编代码用C语言表示会是什么样子：

```asm
<at_do_raycast_fov>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x38,%rsp
  mov    %rdi,0x8(%rsp)
  mov    %rsi,0x10(%rsp)
  mov    %rdx,%r15
  mov    %rcx,%r13
  movapd %xmm0,%xmm6
  movsd  %xmm0,(%rsp)
  mov    %r8d,%ebp
  mov    %r9d,%ebx
  pxor   %xmm0,%xmm0
  cvtsi2sd %r8d,%xmm0
  movapd %xmm0,%xmm1
  subsd  %xmm6,%xmm1
  cvttsd2si %xmm1,%r12d
  mov    %r12d,0x28(%rsp)
  pxor   %xmm1,%xmm1
  cvtsi2sd %r12d,%xmm1
  addsd  %xmm6,%xmm0
  movsd  %xmm0,0x18(%rsp)
  comisd %xmm1,%xmm0
  jb     L70
  pxor   %xmm0,%xmm0
  cvtsi2sd %r9d,%xmm0
  subsd  %xmm6,%xmm0
  cvttsd2si %xmm0,%r14d
L16:
  push   %r14
  push   %r12
  mov    %ebx,%r9d
  mov    %ebp,%r8d
  movsd  0x10(%rsp),%xmm0
  mov    %r13,%rcx
  mov    %r15,%rdx
  mov    0x20(%rsp),%rsi
  mov    0x18(%rsp),%rdi
  call   <ray@plt>
  add    $0x1,%r12d
  pxor   %xmm0,%xmm0
  cvtsi2sd %r12d,%xmm0
  add    $0x10,%rsp
  movsd  0x18(%rsp),%xmm2
  comisd %xmm0,%xmm2
  jae    L16
L11:
  mov    0x28(%rsp),%r12d
  pxor   %xmm0,%xmm0
  cvtsi2sd %ebx,%xmm0
  addsd  (%rsp),%xmm0
  cvttsd2si %xmm0,%r14d
L48:
  push   %r14
  push   %r12
  mov    %ebx,%r9d
  mov    %ebp,%r8d
  movsd  0x10(%rsp),%xmm0
  mov    %r13,%rcx
  mov    %r15,%rdx
  mov    0x20(%rsp),%rsi
  mov    0x18(%rsp),%rdi
  call   <ray@plt>
  add    $0x1,%r12d
  pxor   %xmm0,%xmm0
  cvtsi2sd %r12d,%xmm0
  add    $0x10,%rsp
  movsd  0x18(%rsp),%xmm3
  comisd %xmm0,%xmm3
  jae    L48
L90:
  pxor   %xmm0,%xmm0
  cvtsi2sd %ebx,%xmm0
  movapd %xmm0,%xmm1
  movsd  (%rsp),%xmm7
  subsd  %xmm7,%xmm1
  cvttsd2si %xmm1,%r12d
  pxor   %xmm1,%xmm1
  cvtsi2sd %r12d,%xmm1
  addsd  %xmm7,%xmm0
  movsd  %xmm0,0x20(%rsp)
  mov    %r12d,%r14d
  comisd %xmm1,%xmm0
  jb     L4
  mov    %r12d,0x2c(%rsp)
  mov    0x28(%rsp),%r12d
L34:
  push   %r14
  push   %r12
  mov    %ebx,%r9d
  mov    %ebp,%r8d
  movsd  0x10(%rsp),%xmm0
  mov    %r13,%rcx
  mov    %r15,%rdx
  mov    0x20(%rsp),%rsi
  mov    0x18(%rsp),%rdi
  call   <ray@plt>
  add    $0x1,%r14d
  pxor   %xmm0,%xmm0
  cvtsi2sd %r14d,%xmm0
  add    $0x10,%rsp
  movsd  0x20(%rsp),%xmm4
  comisd %xmm0,%xmm4
  jae    L34
  mov    0x2c(%rsp),%r12d
L46:
  cvttsd2si 0x18(%rsp),%r14d
L8:
  push   %r12
  push   %r14
  mov    %ebx,%r9d
  mov    %ebp,%r8d
  movsd  0x10(%rsp),%xmm0
  mov    %r13,%rcx
  mov    %r15,%rdx
  mov    0x20(%rsp),%rsi
  mov    0x18(%rsp),%rdi
  call   <ray@plt>
  add    $0x1,%r12d
  pxor   %xmm0,%xmm0
  cvtsi2sd %r12d,%xmm0
  add    $0x10,%rsp
  movsd  0x20(%rsp),%xmm5
  comisd %xmm0,%xmm5
  jae    L8
L3:
  add    $0x38,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L70:
  movsd  0x18(%rsp),%xmm7
  comisd %xmm1,%xmm7
  jb     L90
  jmp    L11
L4:
  movsd  0x20(%rsp),%xmm7
  comisd %xmm1,%xmm7
  jb     L3
  jmp    L46
```

assistant: ```c
void at_do_raycast_fov(int *view, int *grid, size_t w, size_t h, double r, int cx, int cy) {
  int v;
  for (v = cx - r; v <= cx + r; ++v)
    ray(view, grid, w, h, r, cx, cy, v, cy - r);
  for (v = cx - r; v <= cx + r; ++v)
    ray(view, grid, w, h, r, cx, cy, v, cy + r);
  for (v = cy - r; v <= cy + r; ++v)
    ray(view, grid, w, h, r, cx, cy, cx - r, v);
  for (v = cy - r; v <= cy + r; ++v)
    ray(view, grid, w, h, r, cx, cy, cx + r, v);
}
```