user: 请从给定的汇编指令推导出C源代码:

```asm
<SHA256_Xcompare_2>:
  endbr64
  push   %r13
  xor    %esi,%esi
  mov    $0x20,%edx
  push   %r12
  push   %rbp
  sub    $0xa0,%rsp
  movdqa D43(%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 D29(%rip),%xmm0
  mov    %rbp,%rdi
  movaps %xmm0,0x50(%rsp)
  movdqa D55(%rip),%xmm0
  movaps %xmm0,0x60(%rsp)
  movdqa D20(%rip),%xmm0
  movaps %xmm0,0x70(%rsp)
  movdqa D65(%rip),%xmm0
  movaps %xmm0,0x80(%rsp)
  movdqa D73(%rip),%xmm0
  movaps %xmm0,(%rsp)
  movdqa D82(%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    D22(%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    D61(%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    D3(%rip),%rcx
  call   <check_test@plt>
  mov    0x98(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L2
  add    $0xa0,%rsp
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
L2:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: retrieve_data
arguments: tag: D43
type_infered: byte[16]
name: retrieve_data
arguments: tag: D29
type_infered: byte[16]
name: retrieve_data
arguments: tag: D55
type_infered: byte[16]
name: retrieve_data
arguments: tag: D20
type_infered: byte[16]
name: retrieve_data
arguments: tag: D65
type_infered: byte[16]
name: retrieve_data
arguments: tag: D73
type_infered: byte[16]
name: retrieve_data
arguments: tag: D82
type_infered: byte[16]
name: retrieve_data
arguments: tag: D22
type_infered: string
name: retrieve_data
arguments: tag: D61
type_infered: string
name: retrieve_data
arguments: tag: D3
type_infered: string

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

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

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

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

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

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

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

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


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


tool: D3: 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");
}
```