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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xa0,%rsp
  mov    %edi,-0x94(%rbp)
  mov    %rsi,-0xa0(%rbp)
  lea    D111(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D13(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    -0xa0(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,%rsi
  lea    D102(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x927c0,%edx
  mov    $0x3e8,%esi
  lea    D47(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <set_value_int@plt>
  mov    $0x0,%eax
  call   <calc_add_int@plt>
  mov    $0x0,%eax
  call   <get_time@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x88(%rbp)
  mov    $0x0,%eax
  call   <calc_add_int@plt>
  mov    $0x0,%eax
  call   <get_time@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  subsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0x80(%rbp)
  mov    -0x80(%rbp),%rax
  movq   %rax,%xmm0
  lea    D127(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <get_time@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x88(%rbp)
  mov    $0x0,%eax
  call   <calc_mul_int@plt>
  mov    $0x0,%eax
  call   <get_time@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  subsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0x78(%rbp)
  mov    -0x78(%rbp),%rax
  movq   %rax,%xmm0
  lea    D85(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <get_time@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x88(%rbp)
  mov    $0x0,%eax
  call   <calc_div_int@plt>
  mov    $0x0,%eax
  call   <get_time@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  subsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0x70(%rbp)
  mov    -0x70(%rbp),%rax
  movq   %rax,%xmm0
  lea    D18(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <set_value_float@plt>
  mov    $0x0,%eax
  call   <calc_add_float@plt>
  mov    $0x0,%eax
  call   <set_value_float@plt>
  mov    $0x0,%eax
  call   <get_time@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x88(%rbp)
  mov    $0x0,%eax
  call   <calc_add_float@plt>
  mov    $0x0,%eax
  call   <get_time@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  subsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0x68(%rbp)
  mov    -0x68(%rbp),%rax
  mov    $0x1,%edi
  movq   %rax,%xmm0
  call   <get_mflops@plt>
  movq   %xmm0,%rdx
  mov    -0x68(%rbp),%rax
  movq   %rdx,%xmm1
  movq   %rax,%xmm0
  lea    D197(%rip),%rax
  mov    %rax,%rdi
  mov    $0x2,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <set_value_float@plt>
  mov    $0x0,%eax
  call   <get_time@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x88(%rbp)
  mov    $0x0,%eax
  call   <calc_mul_float@plt>
  mov    $0x0,%eax
  call   <get_time@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  subsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0x60(%rbp)
  mov    -0x60(%rbp),%rax
  mov    $0x1,%edi
  movq   %rax,%xmm0
  call   <get_mflops@plt>
  movq   %xmm0,%rdx
  mov    -0x60(%rbp),%rax
  movq   %rdx,%xmm1
  movq   %rax,%xmm0
  lea    D138(%rip),%rax
  mov    %rax,%rdi
  mov    $0x2,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <set_value_float@plt>
  mov    $0x0,%eax
  call   <get_time@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x88(%rbp)
  mov    $0x0,%eax
  call   <calc_div_float@plt>
  mov    $0x0,%eax
  call   <get_time@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  subsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0x58(%rbp)
  mov    -0x58(%rbp),%rax
  mov    $0x1,%edi
  movq   %rax,%xmm0
  call   <get_mflops@plt>
  movq   %xmm0,%rdx
  mov    -0x58(%rbp),%rax
  movq   %rdx,%xmm1
  movq   %rax,%xmm0
  lea    D2(%rip),%rax
  mov    %rax,%rdi
  mov    $0x2,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <set_value_float@plt>
  mov    $0x0,%eax
  call   <get_time@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x88(%rbp)
  mov    $0x0,%eax
  call   <calc_mul_add_float@plt>
  mov    $0x0,%eax
  call   <get_time@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  subsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0x50(%rbp)
  mov    -0x50(%rbp),%rax
  mov    $0x2,%edi
  movq   %rax,%xmm0
  call   <get_mflops@plt>
  movq   %xmm0,%rdx
  mov    -0x50(%rbp),%rax
  movq   %rdx,%xmm1
  movq   %rax,%xmm0
  lea    D190(%rip),%rax
  mov    %rax,%rdi
  mov    $0x2,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <set_value_float@plt>
  mov    $0x0,%eax
  call   <get_time@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x88(%rbp)
  mov    $0x0,%eax
  call   <calc_exp_float@plt>
  mov    $0x0,%eax
  call   <get_time@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  subsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0x48(%rbp)
  mov    -0x48(%rbp),%rax
  movq   %rax,%xmm0
  lea    D58(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <set_value_float@plt>
  mov    $0x0,%eax
  call   <get_time@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x88(%rbp)
  mov    $0x0,%eax
  call   <calc_sum_float@plt>
  mov    $0x0,%eax
  call   <get_time@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  subsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  mov    -0x40(%rbp),%rax
  mov    $0x1,%edi
  movq   %rax,%xmm0
  call   <get_mflops@plt>
  movq   %xmm0,%rdx
  mov    -0x40(%rbp),%rax
  movq   %rdx,%xmm1
  movq   %rax,%xmm0
  lea    D11(%rip),%rax
  mov    %rax,%rdi
  mov    $0x2,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <set_value_float@plt>
  mov    $0x0,%eax
  call   <get_time@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x88(%rbp)
  mov    $0x0,%eax
  call   <calc_cadd_float@plt>
  mov    $0x0,%eax
  call   <get_time@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  subsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  mov    -0x38(%rbp),%rax
  mov    $0x1,%edi
  movq   %rax,%xmm0
  call   <get_mflops@plt>
  movq   %xmm0,%rdx
  mov    -0x38(%rbp),%rax
  movq   %rdx,%xmm1
  movq   %rax,%xmm0
  lea    D193(%rip),%rax
  mov    %rax,%rdi
  mov    $0x2,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <set_value_float@plt>
  mov    $0x0,%eax
  call   <get_time@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x88(%rbp)
  mov    $0x0,%eax
  call   <calc_cmp_float@plt>
  mov    $0x0,%eax
  call   <get_time@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  subsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0x30(%rbp)
  mov    -0x30(%rbp),%rax
  mov    $0x3,%edi
  movq   %rax,%xmm0
  call   <get_mflops@plt>
  movq   %xmm0,%rdx
  mov    -0x30(%rbp),%rax
  movq   %rdx,%xmm1
  movq   %rax,%xmm0
  lea    D77(%rip),%rax
  mov    %rax,%rdi
  mov    $0x2,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <set_value_double@plt>
  mov    $0x0,%eax
  call   <calc_add_double@plt>
  mov    $0x0,%eax
  call   <set_value_double@plt>
  mov    $0x0,%eax
  call   <get_time@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x88(%rbp)
  mov    $0x0,%eax
  call   <calc_add_double@plt>
  mov    $0x0,%eax
  call   <get_time@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  subsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  mov    $0x1,%edi
  movq   %rax,%xmm0
  call   <get_mflops@plt>
  movq   %xmm0,%rdx
  mov    -0x28(%rbp),%rax
  movq   %rdx,%xmm1
  movq   %rax,%xmm0
  lea    D126(%rip),%rax
  mov    %rax,%rdi
  mov    $0x2,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <set_value_double@plt>
  mov    $0x0,%eax
  call   <get_time@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x88(%rbp)
  mov    $0x0,%eax
  call   <calc_mul_double@plt>
  mov    $0x0,%eax
  call   <get_time@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  subsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0x20(%rbp)
  mov    -0x20(%rbp),%rax
  mov    $0x1,%edi
  movq   %rax,%xmm0
  call   <get_mflops@plt>
  movq   %xmm0,%rdx
  mov    -0x20(%rbp),%rax
  movq   %rdx,%xmm1
  movq   %rax,%xmm0
  lea    D40(%rip),%rax
  mov    %rax,%rdi
  mov    $0x2,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <set_value_double@plt>
  mov    $0x0,%eax
  call   <get_time@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x88(%rbp)
  mov    $0x0,%eax
  call   <calc_div_double@plt>
  mov    $0x0,%eax
  call   <get_time@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  subsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  mov    -0x18(%rbp),%rax
  mov    $0x1,%edi
  movq   %rax,%xmm0
  call   <get_mflops@plt>
  movq   %xmm0,%rdx
  mov    -0x18(%rbp),%rax
  movq   %rdx,%xmm1
  movq   %rax,%xmm0
  lea    D81(%rip),%rax
  mov    %rax,%rdi
  mov    $0x2,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <set_value_double@plt>
  mov    $0x0,%eax
  call   <get_time@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x88(%rbp)
  mov    $0x0,%eax
  call   <calc_mul_add_double@plt>
  mov    $0x0,%eax
  call   <get_time@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  subsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0x10(%rbp)
  mov    -0x10(%rbp),%rax
  mov    $0x2,%edi
  movq   %rax,%xmm0
  call   <get_mflops@plt>
  movq   %xmm0,%rdx
  mov    -0x10(%rbp),%rax
  movq   %rdx,%xmm1
  movq   %rax,%xmm0
  lea    D181(%rip),%rax
  mov    %rax,%rdi
  mov    $0x2,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <set_value_double@plt>
  mov    $0x0,%eax
  call   <get_time@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x88(%rbp)
  mov    $0x0,%eax
  call   <calc_exp_double@plt>
  mov    $0x0,%eax
  call   <get_time@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  subsd  -0x88(%rbp),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  mov    -0x8(%rbp),%rax
  movq   %rax,%xmm0
  lea    D151(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: data_tag: D111
datatype: string
name: disassemble_data
arguments: data_tag: D13
datatype: string
name: disassemble_data
arguments: data_tag: D102
datatype: string
name: disassemble_data
arguments: data_tag: D47
datatype: string
name: disassemble_data
arguments: data_tag: D127
datatype: string
name: disassemble_data
arguments: data_tag: D85
datatype: string
name: disassemble_data
arguments: data_tag: D18
datatype: string
name: disassemble_data
arguments: data_tag: D197
datatype: string
name: disassemble_data
arguments: data_tag: D138
datatype: string
name: disassemble_data
arguments: data_tag: D2
datatype: string
name: disassemble_data
arguments: data_tag: D190
datatype: string
name: disassemble_data
arguments: data_tag: D58
datatype: string
name: disassemble_data
arguments: data_tag: D11
datatype: string
name: disassemble_data
arguments: data_tag: D193
datatype: string
name: disassemble_data
arguments: data_tag: D77
datatype: string
name: disassemble_data
arguments: data_tag: D126
datatype: string
name: disassemble_data
arguments: data_tag: D40
datatype: string
name: disassemble_data
arguments: data_tag: D81
datatype: string
name: disassemble_data
arguments: data_tag: D181
datatype: string
name: disassemble_data
arguments: data_tag: D151
datatype: string

tool: D111: /********************** SIMPLE BECHMARKS ***********************/

tool: D13:                                            by nebula 20141124  


tool: D102: [%s]


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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