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

```asm
<nine_fill>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x8(%rbp)
  mov    %esi,-0xc(%rbp)
  mov    %rdx,-0x18(%rbp)
  mov    -0xc(%rbp),%eax
  cltq
  lea    0x3(%rax),%rdx
  mov    -0x8(%rbp),%rax
  add    %rax,%rdx
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,(%rdx)
  mov    -0xc(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x8(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  mov    -0xc(%rbp),%edx
  movslq %edx,%rdx
  lea    -0x3(%rdx),%rcx
  mov    -0x8(%rbp),%rdx
  add    %rcx,%rdx
  movzbl (%rax),%eax
  mov    %al,(%rdx)
  mov    -0x8(%rbp),%rax
  add    $0x3,%rax
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  movzbl (%rax),%edx
  mov    -0x8(%rbp),%rax
  mov    %dl,(%rax)
  mov    -0x8(%rbp),%rax
  sub    $0x3,%rax
  mov    -0x8(%rbp),%rdx
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  mov    -0xc(%rbp),%edx
  neg    %edx
  movslq %edx,%rdx
  lea    0x3(%rdx),%rcx
  mov    -0x8(%rbp),%rdx
  add    %rcx,%rdx
  movzbl (%rax),%eax
  mov    %al,(%rdx)
  mov    -0xc(%rbp),%eax
  neg    %eax
  movslq %eax,%rcx
  mov    -0x8(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  mov    -0xc(%rbp),%edx
  neg    %edx
  movslq %edx,%rdx
  lea    -0x3(%rdx),%rcx
  mov    -0x8(%rbp),%rdx
  add    %rcx,%rdx
  movzbl (%rax),%eax
  mov    %al,(%rdx)
  mov    -0xc(%rbp),%eax
  cltq
  lea    0x4(%rax),%rdx
  mov    -0x8(%rbp),%rax
  add    %rax,%rdx
  mov    -0x18(%rbp),%rax
  movzbl 0x1(%rax),%eax
  mov    %al,(%rdx)
  mov    -0xc(%rbp),%eax
  cltq
  lea    0x1(%rax),%rcx
  mov    -0x8(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  mov    -0xc(%rbp),%edx
  movslq %edx,%rdx
  lea    -0x2(%rdx),%rcx
  mov    -0x8(%rbp),%rdx
  add    %rcx,%rdx
  movzbl (%rax),%eax
  mov    %al,(%rdx)
  mov    -0x8(%rbp),%rax
  add    $0x4,%rax
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  mov    -0x8(%rbp),%rdx
  add    $0x1,%rdx
  movzbl (%rax),%eax
  mov    %al,(%rdx)
  mov    -0x8(%rbp),%rax
  sub    $0x2,%rax
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  mov    -0xc(%rbp),%edx
  neg    %edx
  movslq %edx,%rdx
  lea    0x4(%rdx),%rcx
  mov    -0x8(%rbp),%rdx
  add    %rcx,%rdx
  movzbl (%rax),%eax
  mov    %al,(%rdx)
  mov    -0xc(%rbp),%eax
  neg    %eax
  cltq
  lea    0x1(%rax),%rcx
  mov    -0x8(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  mov    -0xc(%rbp),%edx
  neg    %edx
  movslq %edx,%rdx
  lea    -0x2(%rdx),%rcx
  mov    -0x8(%rbp),%rdx
  add    %rcx,%rdx
  movzbl (%rax),%eax
  mov    %al,(%rdx)
  mov    -0xc(%rbp),%eax
  cltq
  lea    0x5(%rax),%rdx
  mov    -0x8(%rbp),%rax
  add    %rax,%rdx
  mov    -0x18(%rbp),%rax
  movzbl 0x2(%rax),%eax
  mov    %al,(%rdx)
  mov    -0xc(%rbp),%eax
  cltq
  lea    0x2(%rax),%rcx
  mov    -0x8(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  mov    -0xc(%rbp),%edx
  movslq %edx,%rdx
  lea    -0x1(%rdx),%rcx
  mov    -0x8(%rbp),%rdx
  add    %rcx,%rdx
  movzbl (%rax),%eax
  mov    %al,(%rdx)
  mov    -0x8(%rbp),%rax
  add    $0x5,%rax
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  mov    -0x8(%rbp),%rdx
  add    $0x2,%rdx
  movzbl (%rax),%eax
  mov    %al,(%rdx)
  mov    -0x8(%rbp),%rax
  sub    $0x1,%rax
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  mov    -0xc(%rbp),%edx
  neg    %edx
  movslq %edx,%rdx
  lea    0x5(%rdx),%rcx
  mov    -0x8(%rbp),%rdx
  add    %rcx,%rdx
  movzbl (%rax),%eax
  mov    %al,(%rdx)
  mov    -0xc(%rbp),%eax
  neg    %eax
  cltq
  lea    0x2(%rax),%rcx
  mov    -0x8(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  mov    -0xc(%rbp),%edx
  neg    %edx
  movslq %edx,%rdx
  lea    -0x1(%rdx),%rcx
  mov    -0x8(%rbp),%rdx
  add    %rcx,%rdx
  movzbl (%rax),%eax
  mov    %al,(%rdx)
  nop
  pop    %rbp
  ret
```

assistant: ```c
void nine_fill(unsigned char *new_data, int row, unsigned char *old_data) {
  new_data[-row - 3] = new_data[-row] = new_data[-row + 3] = new_data[-3] = new_data[0] = new_data[3] = new_data[row - 3] = new_data[row] = new_data[row + 3] = old_data[0];
  new_data[-row - 2] = new_data[-row + 1] = new_data[-row + 4] = new_data[-2] = new_data[1] = new_data[4] = new_data[row - 2] = new_data[row + 1] = new_data[row + 4] = old_data[1];
  new_data[-row - 1] = new_data[-row + 2] = new_data[-row + 5] = new_data[-1] = new_data[2] = new_data[5] = new_data[row - 1] = new_data[row + 2] = new_data[row + 5] = old_data[2];
}
```