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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %edi,-0x4(%rbp)
  mov    %rsi,-0x10(%rbp)
  mov    $0xff000000,%edx
  mov    $0xb,%esi
  mov    $0xffffffff,%edi
  call   <ShrTest1@plt>
  mov    %eax,%esi
  lea    D106(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0x1,%edx
  mov    $0xb,%esi
  mov    $0xffffffb7,%edi
  call   <ShrTest2@plt>
  mov    %eax,%esi
  lea    D149(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0xffffffb7,%edi
  call   <ShrTest3@plt>
  mov    %eax,%esi
  lea    D112(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0xffffffb7,%edi
  call   <ShrTest4@plt>
  mov    %eax,%esi
  lea    D24(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0xb,%esi
  mov    $0x1e5d,%edi
  call   <ShrTest5@plt>
  mov    %eax,%esi
  lea    D63(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0xb,%esi
  mov    $0xffffffb7,%edi
  call   <ShrTest6@plt>
  mov    %eax,%esi
  lea    D76(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0xfffffd1f,%edi
  call   <ShrTest7@plt>
  mov    %eax,%esi
  lea    D113(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0x49,%edi
  call   <ShrTest8@plt>
  mov    %eax,%esi
  lea    D123(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0xb,%edx
  mov    $0x1e5d,%esi
  mov    $0xd,%edi
  call   <ShrTest9@plt>
  mov    %eax,%esi
  lea    D144(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0xb,%edx
  mov    $0x1e5d,%esi
  mov    $0xd,%edi
  call   <ShrTest10@plt>
  mov    %eax,%esi
  lea    D110(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0xb,%edx
  mov    $0x1e5d,%esi
  mov    $0xd,%edi
  call   <ShrTest11@plt>
  mov    %eax,%esi
  lea    D28(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0xebd,%ecx
  mov    $0xb,%edx
  mov    $0xffffffb7,%esi
  mov    $0x1e5d,%edi
  call   <ShrTest12@plt>
  mov    %eax,%esi
  lea    D82(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0xebd,%ecx
  mov    $0xb,%edx
  mov    $0xffffffb7,%esi
  mov    $0x1e5d,%edi
  call   <ShrTest13@plt>
  mov    %eax,%esi
  lea    D12(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0xebd,%ecx
  mov    $0xb,%edx
  mov    $0xffffffb7,%esi
  mov    $0x1e5d,%edi
  call   <ShrTest14@plt>
  mov    %eax,%esi
  lea    D126(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0xb,%edx
  mov    $0xd,%esi
  mov    $0x1e5d,%edi
  call   <ShrTest15@plt>
  mov    %eax,%esi
  lea    D20(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0xd,%edx
  mov    $0xb,%esi
  mov    $0xffffffb7,%edi
  call   <ShrTest16@plt>
  mov    %eax,%esi
  lea    D139(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0x0,%eax
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: data_label: D106
type_infered: string
name: retrieve_data
arguments: data_label: D149
type_infered: string
name: retrieve_data
arguments: data_label: D112
type_infered: string
name: retrieve_data
arguments: data_label: D24
type_infered: string
name: retrieve_data
arguments: data_label: D63
type_infered: string
name: retrieve_data
arguments: data_label: D76
type_infered: string
name: retrieve_data
arguments: data_label: D113
type_infered: string
name: retrieve_data
arguments: data_label: D123
type_infered: string
name: retrieve_data
arguments: data_label: D144
type_infered: string
name: retrieve_data
arguments: data_label: D110
type_infered: string
name: retrieve_data
arguments: data_label: D28
type_infered: string
name: retrieve_data
arguments: data_label: D82
type_infered: string
name: retrieve_data
arguments: data_label: D12
type_infered: string
name: retrieve_data
arguments: data_label: D126
type_infered: string
name: retrieve_data
arguments: data_label: D20
type_infered: string
name: retrieve_data
arguments: data_label: D139
type_infered: string

tool: D106: ShrTest1(-1, 11, 0xFF000000) = %d


tool: D149: ShrTest2(-73, 11, 1) = %d


tool: D112: ShrTest3(-73) = %d


tool: D24: ShrTest4(-73) = %d


tool: D63: ShrTest5(7773, 11) = %d


tool: D76: ShrTest6(-73, 11) = %d


tool: D113: ShrTest7(-737) = %d


tool: D123: ShrTest8(73) = %d


tool: D144: ShrTest9(13, 7773, 11) = %d


tool: D110: ShrTest10(13, 7773, 11) = %d


tool: D28: ShrTest11(13, 7773, 11) = %d


tool: D82: ShrTest12(7773, -73, 11, 3773) = %d


tool: D12: ShrTest13(7773, -73, 11, 3773) = %d


tool: D126: ShrTest14(7773, -73, 11, 3773) = %d


tool: D20: ShrTest15(7773, 13, 11) = %d


tool: D139: ShrTest16(-73, 11, 13) = %d


assistant: ```c
int main(int argc, char **argv) {
  printf("ShrTest1(-1, 11, 0xFF000000) = %d\n", ShrTest1(0xFFFFFFFF, 11, 0xFF000000));
  printf("ShrTest2(-73, 11, 1) = %d\n", ShrTest2(-73, 11, 1));
  printf("ShrTest3(-73) = %d\n", ShrTest3(-73));
  printf("ShrTest4(-73) = %d\n", ShrTest4(-73));
  printf("ShrTest5(7773, 11) = %d\n", ShrTest5(7773, 11));
  printf("ShrTest6(-73, 11) = %d\n", ShrTest6(-73, 11));
  printf("ShrTest7(-737) = %d\n", ShrTest7(-737));
  printf("ShrTest8(73) = %d\n", ShrTest8(73));
  printf("ShrTest9(13, 7773, 11) = %d\n", ShrTest9(13, 7773, 11));
  printf("ShrTest10(13, 7773, 11) = %d\n", ShrTest10(13, 7773, 11));
  printf("ShrTest11(13, 7773, 11) = %d\n", ShrTest11(13, 7773, 11));
  printf("ShrTest12(7773, -73, 11, 3773) = %d\n", ShrTest12(7773, -73, 11, 3773));
  printf("ShrTest13(7773, -73, 11, 3773) = %d\n", ShrTest13(7773, -73, 11, 3773));
  printf("ShrTest14(7773, -73, 11, 3773) = %d\n", ShrTest14(7773, -73, 11, 3773));
  printf("ShrTest15(7773, 13, 11) = %d\n", ShrTest15(7773, 13, 11));
  printf("ShrTest16(-73, 11, 13) = %d\n", ShrTest16(-73, 11, 13));
  return 0;
}
```