user: What is the c source code of the assembly code below:

```asm
<round_text>:
  endbr64
  push   %r14
  mov    $0xf,%r11d
  push   %r13
  push   %r12
  push   %rbp
  lea    0x5a00(%rdi),%rbp
  push   %rbx
  mov    %rsi,%rbx
  nopl   0x0(%rax)
L268:
  mov    %rbx,%r9
  xor    %r10d,%r10d
  xor    %r8d,%r8d
  nopl   0x0(%rax)
L87:
  xor    %ecx,%ecx
  jmp    L37
  nopw   0x0(%rax,%rax,1)
L10:
  mov    0x18(%rdi,%rdx,1),%r13d
  mov    %r13d,%eax
  neg    %eax
  sbb    %eax,%eax
  and    $0x3,%eax
  cmp    $0x1,%r13d
  sbb    %esi,%esi
  and    $0xfffffffe,%esi
  add    $0x3,%esi
  test   %ecx,%ecx
  jle    L171
  cmpl   $0x0,0x14(%rdi,%rdx,1)
  je     L0
  mov    -0x4(%rdi,%rdx,1),%r14d
  test   %r14d,%r14d
  jne    L171
  mov    %esi,%eax
L171:
  cmp    $0x4,%r12d
  jg     L149
  mov    0x18(%rdi,%rdx,1),%r12d
  lea    0x18(%rdx),%rsi
L269:
  mov    0x4(%rdi,%rsi,1),%r14d
  test   %r14d,%r14d
  je     L155
  mov    -0x14(%rdi,%rsi,1),%r13d
  test   %r13d,%r13d
  jne    L149
  and    $0x1,%eax
  mov    %eax,%edx
  cmovne %r11d,%edx
  xchg   %ax,%ax
L262:
  mov    $0xf,%eax
L189:
  movd   %edx,%xmm0
  movd   %eax,%xmm1
  punpckldq %xmm1,%xmm0
  movq   %xmm0,(%r9,%rcx,8)
  add    $0x1,%rcx
  cmp    $0x6,%rcx
  je     L105
L37:
  cmp    $0x9,%r8d
  je     L236
  lea    (%r10,%rcx,1),%eax
  mov    %ecx,%r12d
  mov    (%rdi,%rax,4),%r14d
  lea    0x0(,%rax,4),%rdx
  test   %r14d,%r14d
  jne    L10
  test   %ecx,%ecx
  jle    L99
  mov    0x18(%rdi,%rdx,1),%r13d
  xor    %eax,%eax
L0:
  test   %r13d,%r13d
  je     L51
  mov    -0x4(%rdi,%rdx,1),%r13d
  test   %r13d,%r13d
  je     L51
  mov    0x14(%rdi,%rdx,1),%esi
  test   %esi,%esi
  jne    L51
  or     $0x1,%eax
  nopl   0x0(%rax)
L51:
  cmp    $0x4,%r12d
  jg     L149
  mov    0x18(%rdi,%rdx,1),%r12d
  lea    0x18(%rdx),%rsi
  test   %r14d,%r14d
  jne    L269
L155:
  mov    %eax,%edx
  and    $0x1,%edx
  test   %r12d,%r12d
  je     L211
  mov    -0x14(%rdi,%rsi,1),%r12d
  test   %r12d,%r12d
  je     L211
  mov    0x4(%rdi,%rsi,1),%esi
  test   %esi,%esi
  jne    L211
  test   %edx,%edx
  je     L262
  mov    $0xf,%edx
  jmp    L262
  xchg   %ax,%ax
L149:
  mov    %eax,%edx
  and    $0x1,%edx
L211:
  and    $0x2,%eax
  test   %edx,%edx
  cmovne %r11d,%edx
  test   %eax,%eax
  jne    L262
  jmp    L189
  nopl   0x0(%rax,%rax,1)
L236:
  xor    %edx,%edx
  xor    %eax,%eax
  jmp    L189
  nopl   0x0(%rax)
L105:
  add    $0x1,%r8d
  add    $0x30,%r9
  add    $0x6,%r10d
  cmp    $0xa,%r8d
  jne    L87
  add    $0xf0,%rdi
  add    $0x1e0,%rbx
  cmp    %rdi,%rbp
  jne    L268
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
  cs nopw 0x0(%rax,%rax,1)
L99:
  xor    %eax,%eax
  cmp    $0x4,%ecx
  jg     L149
  mov    0x18(%rdi,%rdx,1),%r12d
  lea    0x18(%rdx),%rsi
  xor    %eax,%eax
  jmp    L155
```

assistant: ```c
void round_text(uint8_t *p, uint8_t *p2) {
  for (int c = 0; c < 96; c++) {
    for (int y = 0; y < 10; y++) {
      for (int d = 0; d < 6; d++) {
        int stat = 0;
        if (y < 9 && p[(y * 6) + d] && p[(y * 6) + d + 6])
          stat |= 3;
        if (y < 9 && d > 0 && p[(y * 6) + d] && p[(y * 6) + d + 5] && !p[(y * 6) + d - 1])
          stat |= 1;
        if (y < 9 && d > 0 && p[(y * 6) + d + 6] && p[(y * 6) + d - 1] && !p[(y * 6) + d + 5])
          stat |= 1;
        if (y < 9 && d < 5 && p[(y * 6) + d] && p[(y * 6) + d + 7] && !p[(y * 6) + d + 1])
          stat |= 2;
        if (y < 9 && d < 5 && p[(y * 6) + d + 6] && p[(y * 6) + d + 1] && !p[(y * 6) + d + 7])
          stat |= 2;
        p2[0] = (stat & 1) ? 15 : 0;
        p2[1] = (stat & 2) ? 15 : 0;
        p2 += 2;
      }
    }
    p += 60;
  }
}
```