user: What would the C source look like for the assembly code provided here?

```asm
<is_o>:
  endbr64
  mov    %rsi,%rax
  mov    %edx,%esi
  mov    %ecx,%edx
  mov    (%rax),%ecx
  cmp    $0x1,%ecx
  jle    L41
  movslq %ecx,%r8
  shl    $0x3,%r8
  movslq 0x4(%rax),%r9
  mov    -0x10(%rdi,%r8,1),%r10
  cmpb   $0x4f,(%r10,%r9,1)
  je     L251
L247:
  mov    0x4(%rax),%r8d
  lea    0x1(%r8),%r9d
  cmp    %edx,%r9d
  jge    L100
  movslq %ecx,%rcx
  movslq %r8d,%r8
  mov    -0x8(%rdi,%rcx,8),%r9
  cmpb   $0x4f,0x1(%r9,%r8,1)
  je     L216
L100:
  mov    (%rax),%r8d
L160:
  mov    0x4(%rax),%ecx
  test   %ecx,%ecx
  jle    L145
  movslq %r8d,%r8
  movslq %ecx,%rcx
  mov    -0x8(%rdi,%r8,8),%r9
  cmpb   $0x4f,-0x1(%r9,%rcx,1)
  jne    L145
  mov    (%rdi,%r8,8),%r8
  movb   $0x7e,-0x1(%r8,%rcx,1)
  movslq (%rax),%r8
  movslq 0x4(%rax),%rcx
  mov    -0x8(%rdi,%r8,8),%r8
  movb   $0x7e,(%r8,%rcx,1)
  jmp    L145
L251:
  mov    -0x8(%rdi,%r8,1),%rcx
  movb   $0x7e,(%rcx,%r9,1)
L41:
  mov    (%rax),%ecx
  test   %ecx,%ecx
  jg     L247
L145:
  mov    (%rax),%ecx
  lea    0x2(%rcx),%r8d
  cmp    %esi,%r8d
  jge    L14
  movslq %ecx,%rcx
  add    $0x2,%rcx
  lea    0x0(,%rcx,8),%r9
  movslq 0x4(%rax),%r8
  mov    (%rdi,%rcx,8),%rcx
  cmpb   $0x4f,(%rcx,%r8,1)
  je     L95
L14:
  mov    (%rax),%ecx
  lea    0x1(%rcx),%r8d
  cmp    %esi,%r8d
  jge    L133
  mov    0x4(%rax),%r8d
  lea    0x1(%r8),%r9d
  cmp    %edx,%r9d
  jge    L71
  movslq %ecx,%r9
  add    $0x1,%r9
  lea    0x0(,%r9,8),%r10
  movslq %r8d,%r8
  mov    (%rdi,%r9,8),%r9
  cmpb   $0x4f,-0x1(%r9,%r8,1)
  je     L98
L71:
  mov    0x4(%rax),%esi
  lea    0x1(%rsi),%r8d
  cmp    %edx,%r8d
  jge    L133
  movslq %ecx,%rcx
  add    $0x1,%rcx
  lea    0x0(,%rcx,8),%r8
  movslq %esi,%rsi
  mov    (%rdi,%rcx,8),%rcx
  cmpb   $0x4f,0x1(%rcx,%rsi,1)
  je     L86
L133:
  mov    0x4(%rax),%ecx
  cmp    $0x1,%ecx
  jle    L202
  movslq (%rax),%rsi
  mov    (%rdi,%rsi,8),%rsi
  movslq %ecx,%rcx
  cmpb   $0x4f,-0x2(%rsi,%rcx,1)
  je     L188
L202:
  mov    0x4(%rax),%ecx
  lea    0x2(%rcx),%esi
  cmp    %edx,%esi
  jge    L8
  movslq (%rax),%rax
  mov    (%rdi,%rax,8),%rax
  movslq %ecx,%rcx
  cmpb   $0x4f,0x2(%rax,%rcx,1)
  je     L141
L8:
  ret
L216:
  mov    (%rdi,%rcx,8),%rcx
  movb   $0x7e,0x1(%rcx,%r8,1)
  movslq (%rax),%r8
  movslq 0x4(%rax),%rcx
  mov    -0x8(%rdi,%r8,8),%r8
  movb   $0x7e,(%r8,%rcx,1)
  mov    (%rax),%r8d
  test   %r8d,%r8d
  jg     L160
  jmp    L145
L95:
  mov    -0x8(%rdi,%r9,1),%rcx
  movb   $0x7e,(%rcx,%r8,1)
  jmp    L14
L98:
  mov    -0x8(%rdi,%r10,1),%rcx
  movb   $0x7e,-0x1(%rcx,%r8,1)
  movslq (%rax),%r8
  movslq 0x4(%rax),%rcx
  mov    0x8(%rdi,%r8,8),%r8
  movb   $0x7e,(%r8,%rcx,1)
  mov    (%rax),%ecx
  lea    0x1(%rcx),%r8d
  cmp    %esi,%r8d
  jl     L71
  jmp    L133
L86:
  mov    -0x8(%rdi,%r8,1),%rcx
  movb   $0x7e,0x1(%rcx,%rsi,1)
  movslq (%rax),%rsi
  movslq 0x4(%rax),%rcx
  mov    0x8(%rdi,%rsi,8),%rsi
  movb   $0x7e,(%rsi,%rcx,1)
  jmp    L133
L188:
  movb   $0x7e,-0x1(%rsi,%rcx,1)
  jmp    L202
L141:
  movb   $0x7e,0x1(%rax,%rcx,1)
  ret
```

assistant: ```c
void is_o(char **t, int *p, int n, int k) {
  if (*(p)-2 >= 0) {
    if (t[(*p) - 2][(*(p + 1))] == 'O') {
      t[(*p) - 1][(*(p + 1))] = '~';
    }
  }
  if (*(p)-1 >= 0 && *(p + 1) + 1 < k) {
    if (t[(*p) - 1][(*(p + 1) + 1)] == 'O') {
      t[(*p)][(*(p + 1) + 1)] = '~';
      t[(*p) - 1][(*(p + 1))] = '~';
    }
  }
  if (*(p)-1 >= 0 && *(p + 1) - 1 >= 0) {
    if (t[(*p) - 1][(*(p + 1) - 1)] == 'O') {
      t[(*p)][(*(p + 1) - 1)] = '~';
      t[(*p) - 1][(*(p + 1))] = '~';
    }
  }
  if (*(p) + 2 < n) {
    if (t[*(p) + 2][(*(p + 1))] == 'O') {
      t[*(p) + 1][(*(p + 1))] = '~';
    }
  }
  if (*(p) + 1 < n && *(p + 1) + 1 < k) {
    if (t[(*p) + 1][(*(p + 1) - 1)] == 'O') {
      t[*(p)][(*(p + 1) - 1)] = '~';
      t[*(p) + 1][(*(p + 1))] = '~';
    }
  }
  if (*(p) + 1 < n && *(p + 1) + 1 < k) {
    if (t[*(p) + 1][(*(p + 1) + 1)] == 'O') {
      t[(*p)][(*(p + 1) + 1)] = '~';
      t[(*p) + 1][(*(p + 1))] = '~';
    }
  }
  if (*(p + 1) - 2 >= 0) {
    if (t[(*p)][(*(p + 1) - 2)] == 'O') {
      t[(*p)][(*(p + 1) - 1)] = '~';
    }
  }
  if (*(p + 1) + 2 < k) {
    if (t[(*p)][(*(p + 1) + 2)] == 'O') {
      t[(*p)][(*(p + 1) + 1)] = '~';
    }
  }
}
```