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

```asm
<SHA256_Xcompare_18>:
  endbr64
  push   %r12
  push   %rbp
  push   %rbx
  add    $0xffffffffffffff80,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x78(%rsp)
  xor    %eax,%eax
  movabs $0x3abbecfacd6e033,%rax
  movabs $0x1a9456e1cd3f3d0f,%rdx
  mov    %rax,0x40(%rsp)
  mov    %rdx,0x48(%rsp)
  movabs $0xd733b6023239dbd7,%rax
  movabs $0x2ffa68e055dc67f9,%rdx
  mov    %rax,0x50(%rsp)
  mov    %rdx,0x58(%rsp)
  movabs $0x241dd9179a272a2d,%rax
  mov    %rax,0x60(%rsp)
  movl   $0xf0b15dbe,0x68(%rsp)
  movb   $0xab,0x6c(%rsp)
  movabs $0xae84ad1f0bd17c8b,%rax
  movabs $0x1e9e02e3fe49484e,%rdx
  mov    %rax,(%rsp)
  mov    %rdx,0x8(%rsp)
  movabs $0x9bc858c550013ed5,%rax
  movabs $0xdbcd5bb09c01eee5,%rdx
  mov    %rax,0x10(%rsp)
  mov    %rdx,0x18(%rsp)
  lea    0x20(%rsp),%rbx
  mov    $0x20,%edx
  mov    $0x0,%esi
  mov    %rbx,%rdi
  call   <memset@plt>
  lea    0x40(%rsp),%r12
  mov    $0x2d,%edx
  mov    %rbx,%rsi
  mov    %r12,%rdi
  call   <SHA256_VST@plt>
  mov    %rsp,%rbp
  lea    D12(%rip),%rcx
  mov    $0x20,%edx
  mov    %rbx,%rsi
  mov    %rbp,%rdi
  call   <check_test@plt>
  mov    $0x20,%edx
  mov    $0x0,%esi
  mov    %rbx,%rdi
  call   <memset@plt>
  mov    $0x2d,%edx
  mov    %rbx,%rsi
  mov    %r12,%rdi
  call   <SHA256_NSS@plt>
  lea    D9(%rip),%rcx
  mov    $0x20,%edx
  mov    %rbx,%rsi
  mov    %rbp,%rdi
  call   <check_test@plt>
  mov    $0x20,%edx
  mov    $0x0,%esi
  mov    %rbx,%rdi
  call   <memset@plt>
  mov    $0x2d,%edx
  mov    %rbx,%rsi
  mov    %r12,%rdi
  call   <SHA256_sodium@plt>
  lea    D8(%rip),%rcx
  mov    $0x20,%edx
  mov    %rbx,%rsi
  mov    %rbp,%rdi
  call   <check_test@plt>
  mov    0x78(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L8
  sub    $0xffffffffffffff80,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
L8:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: read_data
arguments: data_tag: D12
datatype: string
name: read_data
arguments: data_tag: D9
datatype: string
name: read_data
arguments: data_tag: D8
datatype: string

tool: D12: Disagreement between given answer and SHA256_VST in SHA256_Xcompare_18


tool: D9: Disagreement between given answer and SHA256_NSS in SHA256_Xcompare_18


tool: D8: Disagreement between given answer and SHA256_sodium in SHA256_Xcompare_18


assistant: ```c
void SHA256_Xcompare_18() {
  unsigned char input[45] = {51, 224, 214, 172, 207, 190, 171, 3, 15, 61, 63, 205, 225, 86, 148, 26, 215, 219, 57, 50, 2, 182, 51, 215, 249, 103, 220, 85, 224, 104, 250, 47, 45, 42, 39, 154, 23, 217, 29, 36, 190, 93, 177, 240, 171};
  unsigned char result0[32] = {0x8B, 0x7C, 0xD1, 0x0B, 0x1F, 0xAD, 0x84, 0xAE, 0x4E, 0x48, 0x49, 0xFE, 0xE3, 0x02, 0x9E, 0x1E, 0xD5, 0x3E, 0x01, 0x50, 0xC5, 0x58, 0xC8, 0x9B, 0xE5, 0xEE, 0x01, 0x9C, 0xB0, 0x5B, 0xCD, 0xDB};
  unsigned char result1[32];
  memset(result1, 0, 32);
  SHA256_VST(input, result1, 45);
  check_test(result0, result1, 32, "Disagreement between given answer and SHA256_VST in SHA256_Xcompare_18\n");
  memset(result1, 0, 32);
  SHA256_NSS(input, result1, 45);
  check_test(result0, result1, 32, "Disagreement between given answer and SHA256_NSS in SHA256_Xcompare_18\n");
  memset(result1, 0, 32);
  SHA256_sodium(input, result1, 45);
  check_test(result0, result1, 32, "Disagreement between given answer and SHA256_sodium in SHA256_Xcompare_18\n");
}
```