user: What would the C source look like for the assembly code provided here?

```asm
<SHA256_Xcompare_2>:
  endbr64
  push   %r13
  xor    %esi,%esi
  mov    $0x20,%edx
  push   %r12
  push   %rbp
  sub    $0xa0,%rsp
  movdqa D55(%rip),%xmm0
  mov    %fs:0x28,%rax
  mov    %rax,0x98(%rsp)
  xor    %eax,%eax
  lea    0x20(%rsp),%rbp
  lea    0x40(%rsp),%r13
  mov    %rsp,%r12
  movaps %xmm0,0x40(%rsp)
  movdqa D95(%rip),%xmm0
  mov    %rbp,%rdi
  movaps %xmm0,0x50(%rsp)
  movdqa D58(%rip),%xmm0
  movaps %xmm0,0x60(%rsp)
  movdqa D23(%rip),%xmm0
  movaps %xmm0,0x70(%rsp)
  movdqa D33(%rip),%xmm0
  movaps %xmm0,0x80(%rsp)
  movdqa D60(%rip),%xmm0
  movaps %xmm0,(%rsp)
  movdqa D77(%rip),%xmm0
  movaps %xmm0,0x10(%rsp)
  call   <memset@plt>
  mov    $0x50,%edx
  mov    %rbp,%rsi
  mov    %r13,%rdi
  call   <SHA256_VST@plt>
  mov    $0x20,%edx
  mov    %rbp,%rsi
  mov    %r12,%rdi
  lea    D25(%rip),%rcx
  call   <check_test@plt>
  xor    %esi,%esi
  mov    $0x20,%edx
  mov    %rbp,%rdi
  call   <memset@plt>
  mov    $0x50,%edx
  mov    %rbp,%rsi
  mov    %r13,%rdi
  call   <SHA256_NSS@plt>
  mov    $0x20,%edx
  mov    %rbp,%rsi
  mov    %r12,%rdi
  lea    D83(%rip),%rcx
  call   <check_test@plt>
  xor    %esi,%esi
  mov    $0x20,%edx
  mov    %rbp,%rdi
  call   <memset@plt>
  mov    $0x50,%edx
  mov    %rbp,%rsi
  mov    %r13,%rdi
  call   <SHA256_sodium@plt>
  mov    $0x20,%edx
  mov    %rbp,%rsi
  mov    %r12,%rdi
  lea    D24(%rip),%rcx
  call   <check_test@plt>
  mov    0x98(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L0
  add    $0xa0,%rsp
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
L0:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: disassemble_data
arguments: data_label: D55
datatype: byte[16]
name: disassemble_data
arguments: data_label: D95
datatype: byte[16]
name: disassemble_data
arguments: data_label: D58
datatype: byte[16]
name: disassemble_data
arguments: data_label: D23
datatype: byte[16]
name: disassemble_data
arguments: data_label: D33
datatype: byte[16]
name: disassemble_data
arguments: data_label: D60
datatype: byte[16]
name: disassemble_data
arguments: data_label: D77
datatype: byte[16]
name: disassemble_data
arguments: data_label: D25
datatype: string
name: disassemble_data
arguments: data_label: D83
datatype: string
name: disassemble_data
arguments: data_label: D24
datatype: string

tool: {"D55": [0x88,0x82,0x5a,0x83,0xba,0x31,0x3f,0xf8,0x55,0x64,0x53,0xcb,0x07,0xd2,0x29,0xc7]}

tool: {"D95": [0x80,0x6a,0xd7,0xf1,0x0f,0x3e,0xe4,0x6a,0x44,0xad,0xd8,0x5c,0xfd,0x33,0xcc,0xa2]}

tool: {"D58": [0x6b,0xdb,0xec,0x3d,0xae,0x1d,0x9d,0x05,0x42,0x79,0x89,0x1e,0x94,0x26,0xea,0x23]}

tool: {"D23": [0x31,0x41,0x6b,0x5b,0x2d,0x49,0x98,0xde,0x55,0x99,0x5e,0x38,0x4f,0x67,0xe0,0x09]}

tool: {"D33": [0xd4,0x03,0x0c,0x76,0xcc,0x25,0x6a,0x98,0xc4,0x4b,0x91,0xd9,0x41,0x8b,0x10,0x37]}

tool: {"D60": [0xcc,0x9c,0x1c,0x1f,0xc9,0x37,0xb4,0x68,0xbb,0x4a,0xb4,0x42,0xd2,0x47,0x7a,0xe4]}

tool: {"D77": [0x41,0xf7,0x6b,0x5e,0xd3,0x1a,0x04,0x47,0x5e,0x7f,0x37,0x02,0x2a,0x3a,0x0c,0x1c]}

tool: D25: Disagreement between given answer and SHA256_VST in SHA256_Xcompare_2


tool: D83: Disagreement between given answer and SHA256_NSS in SHA256_Xcompare_2


tool: D24: Disagreement between given answer and SHA256_sodium in SHA256_Xcompare_2


assistant: ```c
void SHA256_Xcompare_2() {
  unsigned char input[80] = {136, 130, 90, 131, 186, 49, 63, 248, 85, 100, 83, 203, 7, 210, 41, 199, 128, 106, 215, 241, 15, 62, 228, 106, 68, 173, 216, 92, 253, 51, 204, 162, 107, 219, 236, 61, 174, 29, 157, 5, 66, 121, 137, 30, 148, 38, 234, 35, 49, 65, 107, 91, 45, 73, 152, 222, 85, 153, 94, 56, 79, 103, 224, 9, 212, 3, 12, 118, 204, 37, 106, 152, 196, 75, 145, 217, 65, 139, 16, 55};
  unsigned char result0[32] = {0xCC, 0x9C, 0x1C, 0x1F, 0xC9, 0x37, 0xB4, 0x68, 0xBB, 0x4A, 0xB4, 0x42, 0xD2, 0x47, 0x7A, 0xE4, 0x41, 0xF7, 0x6B, 0x5E, 0xD3, 0x1A, 0x04, 0x47, 0x5E, 0x7F, 0x37, 0x02, 0x2A, 0x3A, 0x0C, 0x1C};
  unsigned char result1[32];
  memset(result1, 0, 32);
  SHA256_VST(input, result1, 80);
  check_test(result0, result1, 32, "Disagreement between given answer and SHA256_VST in SHA256_Xcompare_2\n");
  memset(result1, 0, 32);
  SHA256_NSS(input, result1, 80);
  check_test(result0, result1, 32, "Disagreement between given answer and SHA256_NSS in SHA256_Xcompare_2\n");
  memset(result1, 0, 32);
  SHA256_sodium(input, result1, 80);
  check_test(result0, result1, 32, "Disagreement between given answer and SHA256_sodium in SHA256_Xcompare_2\n");
}
```