user: Translate the below assembly code into C programming language:

```asm
<ecc200placementcornerD>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %rdi,-0x8(%rbp)
  mov    %esi,-0xc(%rbp)
  mov    %edx,-0x10(%rbp)
  mov    %ecx,-0x14(%rbp)
  mov    -0xc(%rbp),%eax
  lea    -0x1(%rax),%ecx
  mov    -0x14(%rbp),%edi
  mov    -0x10(%rbp),%edx
  mov    -0xc(%rbp),%esi
  mov    -0x8(%rbp),%rax
  sub    $0x8,%rsp
  push   $0x7
  mov    %edi,%r9d
  mov    $0x0,%r8d
  mov    %rax,%rdi
  call   <ecc200placementbit@plt>
  add    $0x10,%rsp
  mov    -0x10(%rbp),%eax
  lea    -0x1(%rax),%r8d
  mov    -0xc(%rbp),%eax
  lea    -0x1(%rax),%ecx
  mov    -0x14(%rbp),%edi
  mov    -0x10(%rbp),%edx
  mov    -0xc(%rbp),%esi
  mov    -0x8(%rbp),%rax
  sub    $0x8,%rsp
  push   $0x6
  mov    %edi,%r9d
  mov    %rax,%rdi
  call   <ecc200placementbit@plt>
  add    $0x10,%rsp
  mov    -0x10(%rbp),%eax
  lea    -0x3(%rax),%edi
  mov    -0x14(%rbp),%ecx
  mov    -0x10(%rbp),%edx
  mov    -0xc(%rbp),%esi
  mov    -0x8(%rbp),%rax
  sub    $0x8,%rsp
  push   $0x5
  mov    %ecx,%r9d
  mov    %edi,%r8d
  mov    $0x0,%ecx
  mov    %rax,%rdi
  call   <ecc200placementbit@plt>
  add    $0x10,%rsp
  mov    -0x10(%rbp),%eax
  lea    -0x2(%rax),%edi
  mov    -0x14(%rbp),%ecx
  mov    -0x10(%rbp),%edx
  mov    -0xc(%rbp),%esi
  mov    -0x8(%rbp),%rax
  sub    $0x8,%rsp
  push   $0x4
  mov    %ecx,%r9d
  mov    %edi,%r8d
  mov    $0x0,%ecx
  mov    %rax,%rdi
  call   <ecc200placementbit@plt>
  add    $0x10,%rsp
  mov    -0x10(%rbp),%eax
  lea    -0x1(%rax),%edi
  mov    -0x14(%rbp),%ecx
  mov    -0x10(%rbp),%edx
  mov    -0xc(%rbp),%esi
  mov    -0x8(%rbp),%rax
  sub    $0x8,%rsp
  push   $0x3
  mov    %ecx,%r9d
  mov    %edi,%r8d
  mov    $0x0,%ecx
  mov    %rax,%rdi
  call   <ecc200placementbit@plt>
  add    $0x10,%rsp
  mov    -0x10(%rbp),%eax
  lea    -0x3(%rax),%edi
  mov    -0x14(%rbp),%ecx
  mov    -0x10(%rbp),%edx
  mov    -0xc(%rbp),%esi
  mov    -0x8(%rbp),%rax
  sub    $0x8,%rsp
  push   $0x2
  mov    %ecx,%r9d
  mov    %edi,%r8d
  mov    $0x1,%ecx
  mov    %rax,%rdi
  call   <ecc200placementbit@plt>
  add    $0x10,%rsp
  mov    -0x10(%rbp),%eax
  lea    -0x2(%rax),%edi
  mov    -0x14(%rbp),%ecx
  mov    -0x10(%rbp),%edx
  mov    -0xc(%rbp),%esi
  mov    -0x8(%rbp),%rax
  sub    $0x8,%rsp
  push   $0x1
  mov    %ecx,%r9d
  mov    %edi,%r8d
  mov    $0x1,%ecx
  mov    %rax,%rdi
  call   <ecc200placementbit@plt>
  add    $0x10,%rsp
  mov    -0x10(%rbp),%eax
  lea    -0x1(%rax),%edi
  mov    -0x14(%rbp),%ecx
  mov    -0x10(%rbp),%edx
  mov    -0xc(%rbp),%esi
  mov    -0x8(%rbp),%rax
  sub    $0x8,%rsp
  push   $0x0
  mov    %ecx,%r9d
  mov    %edi,%r8d
  mov    $0x1,%ecx
  mov    %rax,%rdi
  call   <ecc200placementbit@plt>
  add    $0x10,%rsp
  nop
  leave
  ret
```

assistant: ```c
void ecc200placementcornerD(int *array, const int NR, const int NC, const int p) {
  ecc200placementbit(array, NR, NC, NR - 1, 0, p, 7);
  ecc200placementbit(array, NR, NC, NR - 1, NC - 1, p, 6);
  ecc200placementbit(array, NR, NC, 0, NC - 3, p, 5);
  ecc200placementbit(array, NR, NC, 0, NC - 2, p, 4);
  ecc200placementbit(array, NR, NC, 0, NC - 1, p, 3);
  ecc200placementbit(array, NR, NC, 1, NC - 3, p, 2);
  ecc200placementbit(array, NR, NC, 1, NC - 2, p, 1);
  ecc200placementbit(array, NR, NC, 1, NC - 1, p, 0);
}
```