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

```asm
<SHA256_Xcompare_22>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  add    $0xffffffffffffff80,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movabs $0xac45dda51c4b4e3e,%rax
  movabs $0x98bcb3ab00252249,%rdx
  mov    %rax,-0x40(%rbp)
  mov    %rdx,-0x38(%rbp)
  movabs $0xc19b4a7ebc77ab55,%rax
  movabs $0x9c2710f0673758af,%rdx
  mov    %rax,-0x30(%rbp)
  mov    %rdx,-0x28(%rbp)
  movabs $0x24bee503e671bdd3,%rax
  movabs $0x7bfb9c52e1ff9141,%rdx
  mov    %rax,-0x20(%rbp)
  mov    %rdx,-0x18(%rbp)
  movl   $0x6f96b406,-0x10(%rbp)
  movw   $0x1270,-0xc(%rbp)
  movabs $0x151af1d8fa35fda9,%rax
  movabs $0xfec203d2262d77b2,%rdx
  mov    %rax,-0x80(%rbp)
  mov    %rdx,-0x78(%rbp)
  movabs $0x75fda8275ccaf58a,%rax
  movabs $0xce7f42d7a1a0d96c,%rdx
  mov    %rax,-0x70(%rbp)
  mov    %rdx,-0x68(%rbp)
  lea    -0x60(%rbp),%rax
  mov    $0x20,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
  lea    -0x60(%rbp),%rcx
  lea    -0x40(%rbp),%rax
  mov    $0x36,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <SHA256_VST@plt>
  lea    -0x60(%rbp),%rsi
  lea    -0x80(%rbp),%rax
  lea    D6(%rip),%rdx
  mov    %rdx,%rcx
  mov    $0x20,%edx
  mov    %rax,%rdi
  call   <check_test@plt>
  lea    -0x60(%rbp),%rax
  mov    $0x20,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
  lea    -0x60(%rbp),%rcx
  lea    -0x40(%rbp),%rax
  mov    $0x36,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <SHA256_NSS@plt>
  lea    -0x60(%rbp),%rsi
  lea    -0x80(%rbp),%rax
  lea    D22(%rip),%rdx
  mov    %rdx,%rcx
  mov    $0x20,%edx
  mov    %rax,%rdi
  call   <check_test@plt>
  lea    -0x60(%rbp),%rax
  mov    $0x20,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
  lea    -0x60(%rbp),%rcx
  lea    -0x40(%rbp),%rax
  mov    $0x36,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <SHA256_sodium@plt>
  lea    -0x60(%rbp),%rsi
  lea    -0x80(%rbp),%rax
  lea    D19(%rip),%rdx
  mov    %rdx,%rcx
  mov    $0x20,%edx
  mov    %rax,%rdi
  call   <check_test@plt>
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L7
  call   <__stack_chk_fail@plt>
L7:
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: label: D6
type_guessed: string
name: extract_symbolic_data
arguments: label: D22
type_guessed: string
name: extract_symbolic_data
arguments: label: D19
type_guessed: string

tool: D6: Disagreement between given answer and SHA256_VST in SHA256_Xcompare_22


tool: D22: Disagreement between given answer and SHA256_NSS in SHA256_Xcompare_22


tool: D19: Disagreement between given answer and SHA256_sodium in SHA256_Xcompare_22


assistant: ```c
void SHA256_Xcompare_22() {
  unsigned char input[54] = {62, 78, 75, 28, 165, 221, 69, 172, 73, 34, 37, 0, 171, 179, 188, 152, 85, 171, 119, 188, 126, 74, 155, 193, 175, 88, 55, 103, 240, 16, 39, 156, 211, 189, 113, 230, 3, 229, 190, 36, 65, 145, 255, 225, 82, 156, 251, 123, 6, 180, 150, 111, 112, 18};
  unsigned char result0[32] = {0xA9, 0xFD, 0x35, 0xFA, 0xD8, 0xF1, 0x1A, 0x15, 0xB2, 0x77, 0x2D, 0x26, 0xD2, 0x03, 0xC2, 0xFE, 0x8A, 0xF5, 0xCA, 0x5C, 0x27, 0xA8, 0xFD, 0x75, 0x6C, 0xD9, 0xA0, 0xA1, 0xD7, 0x42, 0x7F, 0xCE};
  unsigned char result1[32];
  memset(result1, 0, 32);
  SHA256_VST(input, result1, 54);
  check_test(result0, result1, 32, "Disagreement between given answer and SHA256_VST in SHA256_Xcompare_22\n");
  memset(result1, 0, 32);
  SHA256_NSS(input, result1, 54);
  check_test(result0, result1, 32, "Disagreement between given answer and SHA256_NSS in SHA256_Xcompare_22\n");
  memset(result1, 0, 32);
  SHA256_sodium(input, result1, 54);
  check_test(result0, result1, 32, "Disagreement between given answer and SHA256_sodium in SHA256_Xcompare_22\n");
}
```