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

```asm
<sBoxLayer>:
  endbr64
  push   %rbp
  mov    %rsi,%rbp
  lea    0xc(%rdi),%rcx
  lea    0x8(%rdi),%rdx
  push   %rbx
  lea    0x4(%rdi),%rsi
  mov    %rdi,%rbx
  sub    $0x8,%rsp
  mov    0xc(%rbp),%eax
  mov    0x4(%rbp),%r9d
  mov    0x0(%rbp),%r8d
  push   %rax
  mov    0x8(%rbp),%eax
  push   %rax
  call   <present_sbox@plt>
  mov    0x1c(%rbp),%eax
  mov    0x14(%rbp),%r9d
  lea    0x1c(%rbx),%rcx
  mov    0x10(%rbp),%r8d
  lea    0x18(%rbx),%rdx
  lea    0x14(%rbx),%rsi
  push   %rax
  mov    0x18(%rbp),%eax
  lea    0x10(%rbx),%rdi
  push   %rax
  call   <present_sbox@plt>
  mov    0x2c(%rbp),%eax
  add    $0x20,%rsp
  mov    0x24(%rbp),%r9d
  mov    0x20(%rbp),%r8d
  lea    0x2c(%rbx),%rcx
  lea    0x28(%rbx),%rdx
  push   %rax
  mov    0x28(%rbp),%eax
  lea    0x24(%rbx),%rsi
  lea    0x20(%rbx),%rdi
  push   %rax
  call   <present_sbox@plt>
  mov    0x3c(%rbp),%eax
  mov    0x34(%rbp),%r9d
  lea    0x3c(%rbx),%rcx
  mov    0x30(%rbp),%r8d
  lea    0x38(%rbx),%rdx
  lea    0x34(%rbx),%rsi
  push   %rax
  mov    0x38(%rbp),%eax
  lea    0x30(%rbx),%rdi
  push   %rax
  call   <present_sbox@plt>
  mov    0x4c(%rbp),%eax
  add    $0x20,%rsp
  mov    0x44(%rbp),%r9d
  mov    0x40(%rbp),%r8d
  lea    0x4c(%rbx),%rcx
  lea    0x48(%rbx),%rdx
  push   %rax
  mov    0x48(%rbp),%eax
  lea    0x44(%rbx),%rsi
  lea    0x40(%rbx),%rdi
  push   %rax
  call   <present_sbox@plt>
  mov    0x5c(%rbp),%eax
  mov    0x54(%rbp),%r9d
  lea    0x5c(%rbx),%rcx
  mov    0x50(%rbp),%r8d
  lea    0x58(%rbx),%rdx
  lea    0x54(%rbx),%rsi
  push   %rax
  mov    0x58(%rbp),%eax
  lea    0x50(%rbx),%rdi
  push   %rax
  call   <present_sbox@plt>
  mov    0x6c(%rbp),%eax
  add    $0x20,%rsp
  mov    0x64(%rbp),%r9d
  mov    0x60(%rbp),%r8d
  lea    0x6c(%rbx),%rcx
  lea    0x68(%rbx),%rdx
  push   %rax
  mov    0x68(%rbp),%eax
  lea    0x64(%rbx),%rsi
  lea    0x60(%rbx),%rdi
  push   %rax
  call   <present_sbox@plt>
  mov    0x7c(%rbp),%eax
  mov    0x74(%rbp),%r9d
  lea    0x7c(%rbx),%rcx
  mov    0x70(%rbp),%r8d
  lea    0x78(%rbx),%rdx
  lea    0x74(%rbx),%rsi
  push   %rax
  mov    0x78(%rbp),%eax
  lea    0x70(%rbx),%rdi
  push   %rax
  call   <present_sbox@plt>
  mov    0x8c(%rbp),%eax
  add    $0x20,%rsp
  mov    0x84(%rbp),%r9d
  mov    0x80(%rbp),%r8d
  lea    0x8c(%rbx),%rcx
  lea    0x88(%rbx),%rdx
  push   %rax
  mov    0x88(%rbp),%eax
  lea    0x84(%rbx),%rsi
  lea    0x80(%rbx),%rdi
  push   %rax
  call   <present_sbox@plt>
  mov    0x9c(%rbp),%eax
  mov    0x94(%rbp),%r9d
  lea    0x9c(%rbx),%rcx
  mov    0x90(%rbp),%r8d
  lea    0x98(%rbx),%rdx
  lea    0x94(%rbx),%rsi
  push   %rax
  mov    0x98(%rbp),%eax
  lea    0x90(%rbx),%rdi
  push   %rax
  call   <present_sbox@plt>
  mov    0xac(%rbp),%eax
  add    $0x20,%rsp
  mov    0xa4(%rbp),%r9d
  mov    0xa0(%rbp),%r8d
  lea    0xac(%rbx),%rcx
  lea    0xa8(%rbx),%rdx
  push   %rax
  mov    0xa8(%rbp),%eax
  lea    0xa4(%rbx),%rsi
  lea    0xa0(%rbx),%rdi
  push   %rax
  call   <present_sbox@plt>
  mov    0xbc(%rbp),%eax
  mov    0xb4(%rbp),%r9d
  lea    0xbc(%rbx),%rcx
  mov    0xb0(%rbp),%r8d
  lea    0xb8(%rbx),%rdx
  lea    0xb4(%rbx),%rsi
  push   %rax
  mov    0xb8(%rbp),%eax
  lea    0xb0(%rbx),%rdi
  push   %rax
  call   <present_sbox@plt>
  mov    0xcc(%rbp),%eax
  add    $0x20,%rsp
  mov    0xc4(%rbp),%r9d
  mov    0xc0(%rbp),%r8d
  lea    0xcc(%rbx),%rcx
  lea    0xc8(%rbx),%rdx
  push   %rax
  mov    0xc8(%rbp),%eax
  lea    0xc4(%rbx),%rsi
  lea    0xc0(%rbx),%rdi
  push   %rax
  call   <present_sbox@plt>
  mov    0xdc(%rbp),%eax
  mov    0xd4(%rbp),%r9d
  lea    0xdc(%rbx),%rcx
  mov    0xd0(%rbp),%r8d
  lea    0xd8(%rbx),%rdx
  lea    0xd4(%rbx),%rsi
  push   %rax
  mov    0xd8(%rbp),%eax
  lea    0xd0(%rbx),%rdi
  push   %rax
  call   <present_sbox@plt>
  mov    0xec(%rbp),%eax
  add    $0x20,%rsp
  mov    0xe4(%rbp),%r9d
  mov    0xe0(%rbp),%r8d
  lea    0xec(%rbx),%rcx
  lea    0xe8(%rbx),%rdx
  push   %rax
  mov    0xe8(%rbp),%eax
  lea    0xe4(%rbx),%rsi
  lea    0xe0(%rbx),%rdi
  push   %rax
  call   <present_sbox@plt>
  mov    0xfc(%rbp),%eax
  mov    0xf4(%rbp),%r9d
  lea    0xfc(%rbx),%rcx
  mov    0xf0(%rbp),%r8d
  lea    0xf8(%rbx),%rdx
  lea    0xf4(%rbx),%rsi
  push   %rax
  mov    0xf8(%rbp),%eax
  lea    0xf0(%rbx),%rdi
  push   %rax
  call   <present_sbox@plt>
  add    $0x28,%rsp
  pop    %rbx
  pop    %rbp
  ret
```

assistant: ```c
void sBoxLayer(uint64_t *Y, uint64_t *X) {
  present_sbox(Y + 0, Y + 1, Y + 2, Y + 3, X[0], X[1], X[2], X[3]);
  present_sbox(Y + 4, Y + 5, Y + 6, Y + 7, X[4], X[5], X[6], X[7]);
  present_sbox(Y + 8, Y + 9, Y + 10, Y + 11, X[8], X[9], X[10], X[11]);
  present_sbox(Y + 12, Y + 13, Y + 14, Y + 15, X[12], X[13], X[14], X[15]);
  present_sbox(Y + 16, Y + 17, Y + 18, Y + 19, X[16], X[17], X[18], X[19]);
  present_sbox(Y + 20, Y + 21, Y + 22, Y + 23, X[20], X[21], X[22], X[23]);
  present_sbox(Y + 24, Y + 25, Y + 26, Y + 27, X[24], X[25], X[26], X[27]);
  present_sbox(Y + 28, Y + 29, Y + 30, Y + 31, X[28], X[29], X[30], X[31]);
  present_sbox(Y + 32, Y + 33, Y + 34, Y + 35, X[32], X[33], X[34], X[35]);
  present_sbox(Y + 36, Y + 37, Y + 38, Y + 39, X[36], X[37], X[38], X[39]);
  present_sbox(Y + 40, Y + 41, Y + 42, Y + 43, X[40], X[41], X[42], X[43]);
  present_sbox(Y + 44, Y + 45, Y + 46, Y + 47, X[44], X[45], X[46], X[47]);
  present_sbox(Y + 48, Y + 49, Y + 50, Y + 51, X[48], X[49], X[50], X[51]);
  present_sbox(Y + 52, Y + 53, Y + 54, Y + 55, X[52], X[53], X[54], X[55]);
  present_sbox(Y + 56, Y + 57, Y + 58, Y + 59, X[56], X[57], X[58], X[59]);
  present_sbox(Y + 60, Y + 61, Y + 62, Y + 63, X[60], X[61], X[62], X[63]);
}
```