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

```asm
<is_o>:
  endbr64
  mov    %ecx,%r8d
  mov    (%rsi),%ecx
  push   %rbx
  mov    %edx,%r9d
  movslq 0x4(%rsi),%r10
  cmp    $0x1,%ecx
  jle    L41
  movslq %ecx,%rdx
  movslq %r10d,%r11
  movslq %r10d,%rax
  shl    $0x3,%rdx
  mov    -0x10(%rdi,%rdx,1),%rbx
  cmpb   $0x4f,(%rbx,%r11,1)
  je     L201
  lea    0x1(%r10),%edx
  cmp    %r8d,%edx
  jge    L49
L224:
  movslq %ecx,%rdx
  mov    -0x8(%rdi,%rdx,8),%r11
  cmpb   $0x4f,0x1(%r11,%r10,1)
  je     L147
L49:
  test   %eax,%eax
  jle    L38
L28:
  movslq %ecx,%r10
  movslq %eax,%rdx
  mov    -0x8(%rdi,%r10,8),%r11
  cmpb   $0x4f,-0x1(%r11,%rdx,1)
  je     L24
L38:
  movslq %ecx,%rdx
L244:
  lea    0x2(%rdx),%ecx
  cmp    %r9d,%ecx
  jge    L119
  movslq %edx,%rcx
  movslq %eax,%r10
  add    $0x2,%rcx
  lea    0x0(,%rcx,8),%r11
  mov    (%rdi,%rcx,8),%rcx
  cmpb   $0x4f,(%rcx,%r10,1)
  jne    L119
  mov    -0x8(%rdi,%r11,1),%rax
  movb   $0x7e,(%rax,%r10,1)
  movslq (%rsi),%rdx
  movslq 0x4(%rsi),%rax
  nopl   0x0(%rax,%rax,1)
L119:
  lea    0x1(%rdx),%ecx
  cmp    %r9d,%ecx
  jge    L13
  lea    0x1(%rax),%ecx
  cmp    %r8d,%ecx
  jge    L13
  lea    0x1(%rdx),%r10
  movslq %eax,%rcx
  lea    0x0(,%r10,8),%r11
  mov    (%rdi,%r10,8),%r10
  cmpb   $0x4f,-0x1(%r10,%rcx,1)
  je     L167
L266:
  add    $0x1,%rdx
  lea    0x0(,%rdx,8),%r9
  mov    (%rdi,%rdx,8),%rdx
  cmpb   $0x4f,0x1(%rdx,%rcx,1)
  je     L47
  nopw   0x0(%rax,%rax,1)
L13:
  cmp    $0x1,%eax
  jle    L43
  movslq (%rsi),%rdx
  mov    (%rdi,%rdx,8),%rcx
  movslq %eax,%rdx
  cmpb   $0x4f,-0x2(%rcx,%rdx,1)
  jne    L43
  movb   $0x7e,-0x1(%rcx,%rdx,1)
  movslq 0x4(%rsi),%rax
L43:
  lea    0x2(%rax),%edx
  cmp    %r8d,%edx
  jge    L272
  movslq (%rsi),%rdx
  mov    (%rdi,%rdx,8),%rdx
  cmpb   $0x4f,0x2(%rdx,%rax,1)
  je     L131
L272:
  pop    %rbx
  ret
  nopw   0x0(%rax,%rax,1)
L201:
  mov    -0x8(%rdi,%rdx,1),%rax
  movb   $0x7e,(%rax,%r11,1)
  mov    (%rsi),%ecx
  movslq 0x4(%rsi),%r10
  movslq %ecx,%rdx
L90:
  movslq %r10d,%rax
  test   %ecx,%ecx
  jle    L244
  lea    0x1(%r10),%edx
  cmp    %r8d,%edx
  jge    L49
  jmp    L224
L41:
  movslq %ecx,%rdx
  jmp    L90
  nopl   (%rax)
L131:
  movb   $0x7e,0x1(%rdx,%rax,1)
  pop    %rbx
  ret
  nop
L147:
  mov    (%rdi,%rdx,8),%rax
  movb   $0x7e,0x1(%rax,%r10,1)
  movslq (%rsi),%rdx
  movslq 0x4(%rsi),%rax
  mov    -0x8(%rdi,%rdx,8),%rdx
  movb   $0x7e,(%rdx,%rax,1)
  movslq (%rsi),%rdx
  movslq 0x4(%rsi),%rax
  mov    %edx,%ecx
  test   %edx,%edx
  jle    L244
  test   %eax,%eax
  jg     L28
  jmp    L38
  nopl   0x0(%rax,%rax,1)
L47:
  mov    -0x8(%rdi,%r9,1),%rax
  movb   $0x7e,0x1(%rax,%rcx,1)
  movslq (%rsi),%rdx
  movslq 0x4(%rsi),%rax
  mov    0x8(%rdi,%rdx,8),%rdx
  movb   $0x7e,(%rdx,%rax,1)
  movslq 0x4(%rsi),%rax
  jmp    L13
  nopl   0x0(%rax,%rax,1)
L167:
  mov    -0x8(%rdi,%r11,1),%rax
  movb   $0x7e,-0x1(%rax,%rcx,1)
  movslq (%rsi),%rdx
  movslq 0x4(%rsi),%rax
  mov    0x8(%rdi,%rdx,8),%rdx
  movb   $0x7e,(%rdx,%rax,1)
  movslq (%rsi),%rdx
  lea    0x1(%rdx),%eax
  cmp    %r9d,%eax
  movslq 0x4(%rsi),%rax
  jge    L13
  lea    0x1(%rax),%ecx
  cmp    %ecx,%r8d
  jle    L13
  movslq %eax,%rcx
  jmp    L266
  nopl   0x0(%rax)
L24:
  mov    (%rdi,%r10,8),%rax
  movb   $0x7e,-0x1(%rax,%rdx,1)
  movslq (%rsi),%rdx
  movslq 0x4(%rsi),%rax
  mov    -0x8(%rdi,%rdx,8),%rdx
  movb   $0x7e,(%rdx,%rax,1)
  movslq (%rsi),%rdx
  movslq 0x4(%rsi),%rax
  jmp    L244
```

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)] = '~';
    }
  }
}
```