user: Converte this assembly snippet into its equivalent C code:

```asm
<is_o>:
  endbr64
  movslq (%rsi),%rax
  movslq 0x4(%rsi),%r9
  push   %rbx
  mov    %edx,%r8d
  cmp    $0x1,%eax
  jle    L206
  movslq %eax,%r10
  movslq %r9d,%r11
  movslq %r9d,%rdx
  shl    $0x3,%r10
  mov    -0x10(%rdi,%r10,1),%rbx
  cmpb   $0x4f,(%rbx,%r11,1)
  je     L51
  lea    0x1(%r9),%r10d
  cmp    %ecx,%r10d
  jge    L86
L238:
  movslq %eax,%r10
  mov    -0x8(%rdi,%r10,8),%r11
  cmpb   $0x4f,0x1(%r11,%r9,1)
  je     L191
L86:
  test   %edx,%edx
  jle    L126
L285:
  movslq %eax,%r10
  movslq %edx,%r9
  mov    -0x8(%rdi,%r10,8),%r11
  cmpb   $0x4f,-0x1(%r11,%r9,1)
  je     L244
L126:
  lea    0x2(%rax),%r9d
  cmp    %r8d,%r9d
  jge    L263
  movslq %eax,%r9
  movslq %edx,%r10
  add    $0x2,%r9
  lea    0x0(,%r9,8),%r11
  mov    (%rdi,%r9,8),%r9
  cmpb   $0x4f,(%r9,%r10,1)
  je     L18
L263:
  lea    0x1(%rax),%r9d
  cmp    %r8d,%r9d
  jge    L172
  lea    0x1(%rdx),%r9d
  cmp    %ecx,%r9d
  jl     L232
L172:
  cmp    $0x1,%edx
  jle    L187
  movslq (%rsi),%rax
  mov    (%rdi,%rax,8),%r8
  movslq %edx,%rax
  cmpb   $0x4f,-0x2(%r8,%rax,1)
  je     L231
L187:
  lea    0x2(%rdx),%eax
  cmp    %ecx,%eax
  jge    L138
  movslq (%rsi),%rax
  mov    (%rdi,%rax,8),%rax
  cmpb   $0x4f,0x2(%rax,%rdx,1)
  je     L202
L138:
  pop    %rbx
  ret
  nop
L51:
  mov    -0x8(%rdi,%r10,1),%rax
  movb   $0x7e,(%rax,%r11,1)
  movslq (%rsi),%rax
  movslq 0x4(%rsi),%r9
L206:
  movslq %r9d,%rdx
  test   %eax,%eax
  jle    L126
  lea    0x1(%r9),%r10d
  cmp    %ecx,%r10d
  jge    L86
  jmp    L238
  xchg   %ax,%ax
L232:
  lea    0x1(%rax),%r10
  movslq %edx,%r9
  lea    0x0(,%r10,8),%r11
  mov    (%rdi,%r10,8),%r10
  cmpb   $0x4f,-0x1(%r10,%r9,1)
  je     L170
L286:
  add    $0x1,%rax
  lea    0x0(,%rax,8),%r8
  mov    (%rdi,%rax,8),%rax
  cmpb   $0x4f,0x1(%rax,%r9,1)
  jne    L172
  mov    -0x8(%rdi,%r8,1),%rax
  movb   $0x7e,0x1(%rax,%r9,1)
  movslq (%rsi),%rdx
  movslq 0x4(%rsi),%rax
  mov    0x8(%rdi,%rdx,8),%rdx
  movb   $0x7e,(%rdx,%rax,1)
  movslq 0x4(%rsi),%rdx
  jmp    L172
  nop
L231:
  movb   $0x7e,-0x1(%r8,%rax,1)
  movslq 0x4(%rsi),%rdx
  jmp    L187
  nop
L202:
  movb   $0x7e,0x1(%rax,%rdx,1)
  pop    %rbx
  ret
  nopw   0x0(%rax,%rax,1)
L18:
  mov    -0x8(%rdi,%r11,1),%rax
  movb   $0x7e,(%rax,%r10,1)
  movslq (%rsi),%rax
  movslq 0x4(%rsi),%rdx
  jmp    L263
  cs nopw 0x0(%rax,%rax,1)
L244:
  mov    (%rdi,%r10,8),%rax
  movb   $0x7e,-0x1(%rax,%r9,1)
  movslq (%rsi),%rdx
  movslq 0x4(%rsi),%rax
  mov    -0x8(%rdi,%rdx,8),%rdx
  movb   $0x7e,(%rdx,%rax,1)
  movslq (%rsi),%rax
  movslq 0x4(%rsi),%rdx
  jmp    L126
  cs nopw 0x0(%rax,%rax,1)
L191:
  mov    (%rdi,%r10,8),%rax
  movb   $0x7e,0x1(%rax,%r9,1)
  movslq (%rsi),%rdx
  movslq 0x4(%rsi),%rax
  mov    -0x8(%rdi,%rdx,8),%rdx
  movb   $0x7e,(%rdx,%rax,1)
  movslq (%rsi),%rax
  movslq 0x4(%rsi),%rdx
  test   %eax,%eax
  jle    L126
  test   %edx,%edx
  jg     L285
  jmp    L126
  cs nopw 0x0(%rax,%rax,1)
L170:
  mov    -0x8(%rdi,%r11,1),%rax
  movb   $0x7e,-0x1(%rax,%r9,1)
  movslq (%rsi),%rdx
  movslq 0x4(%rsi),%rax
  mov    0x8(%rdi,%rdx,8),%rdx
  movb   $0x7e,(%rdx,%rax,1)
  movslq (%rsi),%rax
  lea    0x1(%rax),%edx
  cmp    %r8d,%edx
  movslq 0x4(%rsi),%rdx
  jge    L172
  lea    0x1(%rdx),%r8d
  cmp    %r8d,%ecx
  jle    L172
  movslq %edx,%r9
  jmp    L286
```

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