user: Demonstrate the C code that generates the assembly output below:

```asm
<SHA256_Xcompare_14>:
  endbr64
  push   %r13
  xor    %esi,%esi
  mov    $0x20,%edx
  push   %r12
  push   %rbp
  sub    $0x70,%rsp
  movdqa D40(%rip),%xmm0
  mov    %fs:0x28,%rax
  mov    %rax,0x68(%rsp)
  xor    %eax,%eax
  lea    0x40(%rsp),%rbp
  mov    %rsp,%r13
  mov    $0xffffae4e,%eax
  movaps %xmm0,(%rsp)
  mov    %rbp,%rdi
  movdqa D31(%rip),%xmm0
  lea    0x20(%rsp),%r12
  movl   $0x3507713b,0x10(%rsp)
  movaps %xmm0,0x20(%rsp)
  movdqa D9(%rip),%xmm0
  mov    %ax,0x14(%rsp)
  movaps %xmm0,0x30(%rsp)
  call   <memset@plt>
  mov    $0x16,%edx
  mov    %rbp,%rsi
  mov    %r13,%rdi
  call   <SHA256_VST@plt>
  mov    $0x20,%edx
  mov    %rbp,%rsi
  mov    %r12,%rdi
  lea    D29(%rip),%rcx
  call   <check_test@plt>
  xor    %esi,%esi
  mov    $0x20,%edx
  mov    %rbp,%rdi
  call   <memset@plt>
  mov    $0x16,%edx
  mov    %rbp,%rsi
  mov    %r13,%rdi
  call   <SHA256_NSS@plt>
  mov    $0x20,%edx
  mov    %rbp,%rsi
  mov    %r12,%rdi
  lea    D34(%rip),%rcx
  call   <check_test@plt>
  xor    %esi,%esi
  mov    $0x20,%edx
  mov    %rbp,%rdi
  call   <memset@plt>
  mov    $0x16,%edx
  mov    %rbp,%rsi
  mov    %r13,%rdi
  call   <SHA256_sodium@plt>
  mov    $0x20,%edx
  mov    %rbp,%rsi
  mov    %r12,%rdi
  lea    D12(%rip),%rcx
  call   <check_test@plt>
  mov    0x68(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L7
  add    $0x70,%rsp
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
L7:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: retrieve_data
arguments: data_tag: D40
type_guessed: byte[16]
name: retrieve_data
arguments: data_tag: D31
type_guessed: byte[16]
name: retrieve_data
arguments: data_tag: D9
type_guessed: byte[16]
name: retrieve_data
arguments: data_tag: D29
type_guessed: string
name: retrieve_data
arguments: data_tag: D34
type_guessed: string
name: retrieve_data
arguments: data_tag: D12
type_guessed: string

tool: {"D40": [0xa8,0xe1,0x4f,0x48,0xea,0x0d,0x8b,0x07,0x39,0x66,0x4d,0x2d,0xe6,0x54,0x12,0x42]}

tool: {"D31": [0x3d,0xa2,0xbc,0x27,0x4a,0xdc,0x17,0x8b,0xaa,0xa5,0xf5,0xac,0x8d,0x1f,0x4e,0x5c]}

tool: {"D9": [0xaa,0x87,0xf8,0x7b,0x38,0x33,0x57,0x88,0xcd,0xe0,0x0b,0x2c,0xac,0xe3,0x29,0x24]}

tool: D29: Disagreement between given answer and SHA256_VST in SHA256_Xcompare_14


tool: D34: Disagreement between given answer and SHA256_NSS in SHA256_Xcompare_14


tool: D12: Disagreement between given answer and SHA256_sodium in SHA256_Xcompare_14


assistant: ```c
void SHA256_Xcompare_14() {
  unsigned char input[22] = {168, 225, 79, 72, 234, 13, 139, 7, 57, 102, 77, 45, 230, 84, 18, 66, 59, 113, 7, 53, 78, 174};
  unsigned char result0[32] = {0x3D, 0xA2, 0xBC, 0x27, 0x4A, 0xDC, 0x17, 0x8B, 0xAA, 0xA5, 0xF5, 0xAC, 0x8D, 0x1F, 0x4E, 0x5C, 0xAA, 0x87, 0xF8, 0x7B, 0x38, 0x33, 0x57, 0x88, 0xCD, 0xE0, 0x0B, 0x2C, 0xAC, 0xE3, 0x29, 0x24};
  unsigned char result1[32];
  memset(result1, 0, 32);
  SHA256_VST(input, result1, 22);
  check_test(result0, result1, 32, "Disagreement between given answer and SHA256_VST in SHA256_Xcompare_14\n");
  memset(result1, 0, 32);
  SHA256_NSS(input, result1, 22);
  check_test(result0, result1, 32, "Disagreement between given answer and SHA256_NSS in SHA256_Xcompare_14\n");
  memset(result1, 0, 32);
  SHA256_sodium(input, result1, 22);
  check_test(result0, result1, 32, "Disagreement between given answer and SHA256_sodium in SHA256_Xcompare_14\n");
}
```