user: 下面的汇编指令对应的C源代码是什么：

```asm
<main>:
  endbr64
  push   %rbx
  lea    D184(%rip),%rdi
  mov    %rsi,%rbx
  sub    $0x10,%rsp
  call   <puts@plt>
  lea    D188(%rip),%rdi
  call   <puts@plt>
  mov    (%rbx),%rsi
  lea    D87(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x927c0,%edx
  mov    $0x3e8,%esi
  xor    %eax,%eax
  lea    D139(%rip),%rdi
  call   <printf@plt>
  xor    %eax,%eax
  call   <set_value_int@plt>
  xor    %eax,%eax
  call   <calc_add_int@plt>
  xor    %eax,%eax
  call   <get_time@plt>
  xor    %eax,%eax
  movsd  %xmm0,0x8(%rsp)
  call   <calc_add_int@plt>
  xor    %eax,%eax
  call   <get_time@plt>
  subsd  0x8(%rsp),%xmm0
  mov    $0x1,%eax
  lea    D31(%rip),%rdi
  call   <printf@plt>
  xor    %eax,%eax
  call   <get_time@plt>
  xor    %eax,%eax
  movsd  %xmm0,0x8(%rsp)
  call   <calc_mul_int@plt>
  xor    %eax,%eax
  call   <get_time@plt>
  subsd  0x8(%rsp),%xmm0
  mov    $0x1,%eax
  lea    D98(%rip),%rdi
  call   <printf@plt>
  xor    %eax,%eax
  call   <get_time@plt>
  xor    %eax,%eax
  movsd  %xmm0,0x8(%rsp)
  call   <calc_div_int@plt>
  xor    %eax,%eax
  call   <get_time@plt>
  subsd  0x8(%rsp),%xmm0
  mov    $0x1,%eax
  lea    D127(%rip),%rdi
  call   <printf@plt>
  xor    %eax,%eax
  call   <set_value_float@plt>
  xor    %eax,%eax
  call   <calc_add_float@plt>
  xor    %eax,%eax
  call   <set_value_float@plt>
  xor    %eax,%eax
  call   <get_time@plt>
  xor    %eax,%eax
  movsd  %xmm0,0x8(%rsp)
  call   <calc_add_float@plt>
  xor    %eax,%eax
  call   <get_time@plt>
  mov    $0x1,%edi
  movapd %xmm0,%xmm2
  subsd  0x8(%rsp),%xmm2
  movapd %xmm2,%xmm0
  movsd  %xmm2,0x8(%rsp)
  call   <get_mflops@plt>
  movsd  0x8(%rsp),%xmm2
  mov    $0x2,%eax
  lea    D67(%rip),%rdi
  movapd %xmm0,%xmm1
  movapd %xmm2,%xmm0
  call   <printf@plt>
  xor    %eax,%eax
  call   <set_value_float@plt>
  xor    %eax,%eax
  call   <get_time@plt>
  xor    %eax,%eax
  movsd  %xmm0,0x8(%rsp)
  call   <calc_mul_float@plt>
  xor    %eax,%eax
  call   <get_time@plt>
  mov    $0x1,%edi
  movapd %xmm0,%xmm2
  subsd  0x8(%rsp),%xmm2
  movapd %xmm2,%xmm0
  movsd  %xmm2,0x8(%rsp)
  call   <get_mflops@plt>
  movsd  0x8(%rsp),%xmm2
  mov    $0x2,%eax
  lea    D168(%rip),%rdi
  movapd %xmm0,%xmm1
  movapd %xmm2,%xmm0
  call   <printf@plt>
  xor    %eax,%eax
  call   <set_value_float@plt>
  xor    %eax,%eax
  call   <get_time@plt>
  xor    %eax,%eax
  movsd  %xmm0,0x8(%rsp)
  call   <calc_div_float@plt>
  xor    %eax,%eax
  call   <get_time@plt>
  mov    $0x1,%edi
  movapd %xmm0,%xmm2
  subsd  0x8(%rsp),%xmm2
  movapd %xmm2,%xmm0
  movsd  %xmm2,0x8(%rsp)
  call   <get_mflops@plt>
  movsd  0x8(%rsp),%xmm2
  mov    $0x2,%eax
  lea    D135(%rip),%rdi
  movapd %xmm0,%xmm1
  movapd %xmm2,%xmm0
  call   <printf@plt>
  xor    %eax,%eax
  call   <set_value_float@plt>
  xor    %eax,%eax
  call   <get_time@plt>
  xor    %eax,%eax
  movsd  %xmm0,0x8(%rsp)
  call   <calc_mul_add_float@plt>
  xor    %eax,%eax
  call   <get_time@plt>
  mov    $0x2,%edi
  movapd %xmm0,%xmm2
  subsd  0x8(%rsp),%xmm2
  movapd %xmm2,%xmm0
  movsd  %xmm2,0x8(%rsp)
  call   <get_mflops@plt>
  movsd  0x8(%rsp),%xmm2
  mov    $0x2,%eax
  lea    D171(%rip),%rdi
  movapd %xmm0,%xmm1
  movapd %xmm2,%xmm0
  call   <printf@plt>
  xor    %eax,%eax
  call   <set_value_float@plt>
  xor    %eax,%eax
  call   <get_time@plt>
  xor    %eax,%eax
  movsd  %xmm0,0x8(%rsp)
  call   <calc_exp_float@plt>
  xor    %eax,%eax
  call   <get_time@plt>
  subsd  0x8(%rsp),%xmm0
  mov    $0x1,%eax
  lea    D118(%rip),%rdi
  call   <printf@plt>
  xor    %eax,%eax
  call   <set_value_float@plt>
  xor    %eax,%eax
  call   <get_time@plt>
  xor    %eax,%eax
  movsd  %xmm0,0x8(%rsp)
  call   <calc_sum_float@plt>
  xor    %eax,%eax
  call   <get_time@plt>
  mov    $0x1,%edi
  movapd %xmm0,%xmm2
  subsd  0x8(%rsp),%xmm2
  movapd %xmm2,%xmm0
  movsd  %xmm2,0x8(%rsp)
  call   <get_mflops@plt>
  movsd  0x8(%rsp),%xmm2
  mov    $0x2,%eax
  lea    D41(%rip),%rdi
  movapd %xmm0,%xmm1
  movapd %xmm2,%xmm0
  call   <printf@plt>
  xor    %eax,%eax
  call   <set_value_float@plt>
  xor    %eax,%eax
  call   <get_time@plt>
  xor    %eax,%eax
  movsd  %xmm0,0x8(%rsp)
  call   <calc_cadd_float@plt>
  xor    %eax,%eax
  call   <get_time@plt>
  mov    $0x1,%edi
  movapd %xmm0,%xmm2
  subsd  0x8(%rsp),%xmm2
  movapd %xmm2,%xmm0
  movsd  %xmm2,0x8(%rsp)
  call   <get_mflops@plt>
  movsd  0x8(%rsp),%xmm2
  mov    $0x2,%eax
  lea    D80(%rip),%rdi
  movapd %xmm0,%xmm1
  movapd %xmm2,%xmm0
  call   <printf@plt>
  xor    %eax,%eax
  call   <set_value_float@plt>
  xor    %eax,%eax
  call   <get_time@plt>
  xor    %eax,%eax
  movsd  %xmm0,0x8(%rsp)
  call   <calc_cmp_float@plt>
  xor    %eax,%eax
  call   <get_time@plt>
  mov    $0x3,%edi
  movapd %xmm0,%xmm2
  subsd  0x8(%rsp),%xmm2
  movapd %xmm2,%xmm0
  movsd  %xmm2,0x8(%rsp)
  call   <get_mflops@plt>
  movsd  0x8(%rsp),%xmm2
  mov    $0x2,%eax
  lea    D62(%rip),%rdi
  movapd %xmm0,%xmm1
  movapd %xmm2,%xmm0
  call   <printf@plt>
  xor    %eax,%eax
  call   <set_value_double@plt>
  xor    %eax,%eax
  call   <calc_add_double@plt>
  xor    %eax,%eax
  call   <set_value_double@plt>
  xor    %eax,%eax
  call   <get_time@plt>
  xor    %eax,%eax
  movsd  %xmm0,0x8(%rsp)
  call   <calc_add_double@plt>
  xor    %eax,%eax
  call   <get_time@plt>
  mov    $0x1,%edi
  movapd %xmm0,%xmm2
  subsd  0x8(%rsp),%xmm2
  movapd %xmm2,%xmm0
  movsd  %xmm2,0x8(%rsp)
  call   <get_mflops@plt>
  movsd  0x8(%rsp),%xmm2
  mov    $0x2,%eax
  lea    D88(%rip),%rdi
  movapd %xmm0,%xmm1
  movapd %xmm2,%xmm0
  call   <printf@plt>
  xor    %eax,%eax
  call   <set_value_double@plt>
  xor    %eax,%eax
  call   <get_time@plt>
  xor    %eax,%eax
  movsd  %xmm0,0x8(%rsp)
  call   <calc_mul_double@plt>
  xor    %eax,%eax
  call   <get_time@plt>
  mov    $0x1,%edi
  movapd %xmm0,%xmm2
  subsd  0x8(%rsp),%xmm2
  movapd %xmm2,%xmm0
  movsd  %xmm2,0x8(%rsp)
  call   <get_mflops@plt>
  movsd  0x8(%rsp),%xmm2
  mov    $0x2,%eax
  lea    D162(%rip),%rdi
  movapd %xmm0,%xmm1
  movapd %xmm2,%xmm0
  call   <printf@plt>
  xor    %eax,%eax
  call   <set_value_double@plt>
  xor    %eax,%eax
  call   <get_time@plt>
  xor    %eax,%eax
  movsd  %xmm0,0x8(%rsp)
  call   <calc_div_double@plt>
  xor    %eax,%eax
  call   <get_time@plt>
  mov    $0x1,%edi
  movapd %xmm0,%xmm2
  subsd  0x8(%rsp),%xmm2
  movapd %xmm2,%xmm0
  movsd  %xmm2,0x8(%rsp)
  call   <get_mflops@plt>
  movsd  0x8(%rsp),%xmm2
  mov    $0x2,%eax
  lea    D198(%rip),%rdi
  movapd %xmm0,%xmm1
  movapd %xmm2,%xmm0
  call   <printf@plt>
  xor    %eax,%eax
  call   <set_value_double@plt>
  xor    %eax,%eax
  call   <get_time@plt>
  xor    %eax,%eax
  movsd  %xmm0,0x8(%rsp)
  call   <calc_mul_add_double@plt>
  xor    %eax,%eax
  call   <get_time@plt>
  mov    $0x2,%edi
  movapd %xmm0,%xmm2
  subsd  0x8(%rsp),%xmm2
  movapd %xmm2,%xmm0
  movsd  %xmm2,0x8(%rsp)
  call   <get_mflops@plt>
  movsd  0x8(%rsp),%xmm2
  mov    $0x2,%eax
  lea    D114(%rip),%rdi
  movapd %xmm0,%xmm1
  movapd %xmm2,%xmm0
  call   <printf@plt>
  xor    %eax,%eax
  call   <set_value_double@plt>
  xor    %eax,%eax
  call   <get_time@plt>
  xor    %eax,%eax
  movsd  %xmm0,0x8(%rsp)
  call   <calc_exp_double@plt>
  xor    %eax,%eax
  call   <get_time@plt>
  subsd  0x8(%rsp),%xmm0
  mov    $0x1,%eax
  lea    D46(%rip),%rdi
  call   <printf@plt>
  add    $0x10,%rsp
  xor    %eax,%eax
  pop    %rbx
  ret
```

tool_calls: name: retrieve_data
arguments: tag: D184
type: string
name: retrieve_data
arguments: tag: D188
type: string
name: retrieve_data
arguments: tag: D87
type: string
name: retrieve_data
arguments: tag: D139
type: string
name: retrieve_data
arguments: tag: D31
type: string
name: retrieve_data
arguments: tag: D98
type: string
name: retrieve_data
arguments: tag: D127
type: string
name: retrieve_data
arguments: tag: D67
type: string
name: retrieve_data
arguments: tag: D168
type: string
name: retrieve_data
arguments: tag: D135
type: string
name: retrieve_data
arguments: tag: D171
type: string
name: retrieve_data
arguments: tag: D118
type: string
name: retrieve_data
arguments: tag: D41
type: string
name: retrieve_data
arguments: tag: D80
type: string
name: retrieve_data
arguments: tag: D62
type: string
name: retrieve_data
arguments: tag: D88
type: string
name: retrieve_data
arguments: tag: D162
type: string
name: retrieve_data
arguments: tag: D198
type: string
name: retrieve_data
arguments: tag: D114
type: string
name: retrieve_data
arguments: tag: D46
type: string

tool: D184: /********************** SIMPLE BECHMARKS ***********************/

tool: D188:                                            by nebula 20141124  


tool: D87: [%s]


tool: D139: calc num = %d * %d


tool: D31: add(int)		: %8.2f [msec]


tool: D98: mul(int)		: %8.2f [msec]


tool: D127: div(int)		: %8.2f [msec]


tool: D67: add(float)		: %8.2f [msec] = %8.2f [MFLOPS]


tool: D168: mul(float)		: %8.2f [msec] = %8.2f [MFLOPS]


tool: D135: div(float)		: %8.2f [msec] = %8.2f [MFLOPS]


tool: D171: mul+add(float)		: %8.2f [msec] = %8.2f [MFLOPS]


tool: D118: exp(float)		: %8.2f [msec]


tool: D41: sum(float)		: %8.2f [msec] = %8.2f [MFLOPS]


tool: D80: cadd(float)		: %8.2f [msec] = %8.2f [MFLOPS]


tool: D62: cmp(float)		: %8.2f [msec] = %8.2f [MFLOPS]


tool: D88: add(double)		: %8.2f [msec] = %8.2f [MFLOPS]


tool: D162: mul(double)		: %8.2f [msec] = %8.2f [MFLOPS]


tool: D198: div(double)		: %8.2f [msec] = %8.2f [MFLOPS]


tool: D114: mul+add(double)		: %8.2f [msec] = %8.2f [MFLOPS]


tool: D46: exp(double)		: %8.2f [msec]


assistant: ```c
int main(int argc, char **argv) {
  double t_start;
  double time_add_int, time_mul_int, time_div_int;
  double time_add_float, time_mul_float, time_div_float, time_exp_float, time_mul_add_float;
  double time_sum_float, time_cadd_float, time_cmp_float;
  double time_add_double, time_mul_double, time_div_double, time_exp_double, time_mul_add_double;
  printf("/********************** SIMPLE BECHMARKS ***********************/\n");
  printf("                                           by nebula 20141124  \n\n");
  printf("[%s]\n", argv[0]);
  printf("calc num = %d * %d\n", 1000, 600000);
  set_value_int();
  calc_add_int();
  t_start = get_time();
  calc_add_int();
  time_add_int = (get_time() - t_start);
  printf("add(int)\t\t: %8.2f [msec]\n", time_add_int);
  t_start = get_time();
  calc_mul_int();
  time_mul_int = (get_time() - t_start);
  printf("mul(int)\t\t: %8.2f [msec]\n", time_mul_int);
  t_start = get_time();
  calc_div_int();
  time_div_int = (get_time() - t_start);
  printf("div(int)\t\t: %8.2f [msec]\n", time_div_int);
  set_value_float();
  calc_add_float();
  set_value_float();
  t_start = get_time();
  ;
  calc_add_float();
  ;
  time_add_float = (get_time() - t_start);
  printf("add(float)\t\t: %8.2f [msec] = %8.2f [MFLOPS]\n", time_add_float, get_mflops(time_add_float, 1));
  set_value_float();
  t_start = get_time();
  ;
  calc_mul_float();
  ;
  time_mul_float = (get_time() - t_start);
  printf("mul(float)\t\t: %8.2f [msec] = %8.2f [MFLOPS]\n", time_mul_float, get_mflops(time_mul_float, 1));
  set_value_float();
  t_start = get_time();
  ;
  calc_div_float();
  ;
  time_div_float = (get_time() - t_start);
  printf("div(float)\t\t: %8.2f [msec] = %8.2f [MFLOPS]\n", time_div_float, get_mflops(time_div_float, 1));
  set_value_float();
  t_start = get_time();
  ;
  calc_mul_add_float();
  ;
  time_mul_add_float = (get_time() - t_start);
  printf("mul+add(float)\t\t: %8.2f [msec] = %8.2f [MFLOPS]\n", time_mul_add_float, get_mflops(time_mul_add_float, 2));
  set_value_float();
  t_start = get_time();
  ;
  calc_exp_float();
  ;
  time_exp_float = (get_time() - t_start);
  printf("exp(float)\t\t: %8.2f [msec]\n", time_exp_float);
  set_value_float();
  t_start = get_time();
  ;
  calc_sum_float();
  ;
  time_sum_float = (get_time() - t_start);
  printf("sum(float)\t\t: %8.2f [msec] = %8.2f [MFLOPS]\n", time_sum_float, get_mflops(time_sum_float, 1));
  set_value_float();
  t_start = get_time();
  ;
  calc_cadd_float();
  ;
  time_cadd_float = (get_time() - t_start);
  printf("cadd(float)\t\t: %8.2f [msec] = %8.2f [MFLOPS]\n", time_cadd_float, get_mflops(time_cadd_float, 1));
  set_value_float();
  t_start = get_time();
  ;
  calc_cmp_float();
  ;
  time_cmp_float = (get_time() - t_start);
  printf("cmp(float)\t\t: %8.2f [msec] = %8.2f [MFLOPS]\n", time_cmp_float, get_mflops(time_cmp_float, 3));
  set_value_double();
  calc_add_double();
  set_value_double();
  t_start = get_time();
  ;
  calc_add_double();
  ;
  time_add_double = (get_time() - t_start);
  printf("add(double)\t\t: %8.2f [msec] = %8.2f [MFLOPS]\n", time_add_double, get_mflops(time_add_double, 1));
  set_value_double();
  t_start = get_time();
  ;
  calc_mul_double();
  ;
  time_mul_double = (get_time() - t_start);
  printf("mul(double)\t\t: %8.2f [msec] = %8.2f [MFLOPS]\n", time_mul_double, get_mflops(time_mul_double, 1));
  set_value_double();
  t_start = get_time();
  ;
  calc_div_double();
  ;
  time_div_double = (get_time() - t_start);
  printf("div(double)\t\t: %8.2f [msec] = %8.2f [MFLOPS]\n", time_div_double, get_mflops(time_div_double, 1));
  set_value_double();
  t_start = get_time();
  ;
  calc_mul_add_double();
  ;
  time_mul_add_double = (get_time() - t_start);
  printf("mul+add(double)\t\t: %8.2f [msec] = %8.2f [MFLOPS]\n", time_mul_add_double, get_mflops(time_mul_add_double, 2));
  set_value_double();
  t_start = get_time();
  ;
  calc_exp_double();
  ;
  time_exp_double = (get_time() - t_start);
  printf("exp(double)\t\t: %8.2f [msec]\n", time_exp_double);
  return (0);
}
```