user: Translate the below assembly code into C programming language:

```asm
<main>:
  endbr64
  push   %r14
  push   %rbx
  sub    $0x28,%rsp
  mov    %rsi,%rbx
  mov    0x8(%rsi),%rdi
  call   <atof@plt>
  movsd  %xmm0,0x8(%rsp)
  mov    0x10(%rbx),%rdi
  call   <atof@plt>
  movsd  %xmm0,0x10(%rsp)
  mov    0x18(%rbx),%rdi
  call   <atof@plt>
  movq   %xmm0,%r14
  lea    D141(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movsd  D44(%rip),%xmm5
  mulsd  0x8(%rsp),%xmm5
  movapd %xmm5,%xmm2
  divsd  D8(%rip),%xmm2
  movsd  %xmm2,0x18(%rsp)
  addsd  %xmm2,%xmm2
  movapd %xmm2,%xmm0
  lea    D100(%rip),%rbx
  mov    %rbx,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  lea    D122(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    D44(%rip),%rax
  movq   %rax,%xmm0
  lea    D108(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm1
  subsd  0x18(%rsp),%xmm1
  movsd  %xmm1,0x8(%rsp)
  lea    D131(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  mov    %rbx,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  0x10(%rsp),%xmm4
  mulsd  0x8(%rsp),%xmm4
  movsd  %xmm4,0x18(%rsp)
  lea    D53(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movsd  0x18(%rsp),%xmm0
  mov    %rbx,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  D44(%rip),%xmm7
  movsd  0x8(%rsp),%xmm1
  mulsd  %xmm1,%xmm7
  movapd %xmm7,%xmm0
  divsd  D8(%rip),%xmm0
  subsd  %xmm0,%xmm1
  movsd  %xmm1,0x8(%rsp)
  lea    D147(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  mov    %rbx,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  movq   %r14,%xmm6
  mulsd  0x8(%rsp),%xmm6
  movsd  %xmm6,0x8(%rsp)
  lea    D57(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  mov    %rbx,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm6
  subsd  0x18(%rsp),%xmm6
  movsd  %xmm6,0x8(%rsp)
  lea    D5(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm7
  divsd  0x10(%rsp),%xmm7
  movapd %xmm7,%xmm0
  mov    %rbx,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  lea    D61(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  mov    %rbx,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  add    $0x28,%rsp
  pop    %rbx
  pop    %r14
  ret
```

tool_calls: name: retrieve_data
arguments: data_label: D141
data_type: string
name: retrieve_data
arguments: data_label: D44
data_type: f64
name: retrieve_data
arguments: data_label: D8
data_type: f64
name: retrieve_data
arguments: data_label: D100
data_type: string
name: retrieve_data
arguments: data_label: D122
data_type: string
name: retrieve_data
arguments: data_label: D108
data_type: string
name: retrieve_data
arguments: data_label: D131
data_type: string
name: retrieve_data
arguments: data_label: D53
data_type: string
name: retrieve_data
arguments: data_label: D147
data_type: string
name: retrieve_data
arguments: data_label: D57
data_type: string
name: retrieve_data
arguments: data_label: D5
data_type: string
name: retrieve_data
arguments: data_label: D61
data_type: string

tool: D141: trading fee: 

tool: D44: 0.2

tool: D8: 100

tool: D100: %f


tool: D122: rate: 

tool: D108: %f

tool: D131: total btc minus fee: 

tool: D53: total usd amount minus fee: 

tool: D147: Selling amount in btc: 

tool: D57: Selling amount in usd: 

tool: D5: btc profit: 

tool: D61: usd profit: 

assistant: ```c
int main(int argc, char **argv) {
  double tradefee = 0.2;
  double buy_amount_btc = atof(argv[1]);
  double buyrate = atof(argv[2]);
  double sellrate = atof(argv[3]);
  double stupid_shit = sellrate;
  printf("trading fee: ");
  double buy_fee = (tradefee * buy_amount_btc / 100);
  printf("%f\n", buy_fee * 2);
  printf("rate: ");
  printf("%f", tradefee);
  printf("%f\n");
  double buy_amount_with_fee_btc = buy_amount_btc - buy_fee;
  printf("total btc minus fee: ");
  printf("%f\n", buy_amount_with_fee_btc);
  double buy_amount_usd = buy_amount_with_fee_btc * buyrate;
  printf("total usd amount minus fee: ");
  printf("%f\n", buy_amount_usd);
  double sell_fee = (tradefee * buy_amount_with_fee_btc / 100);
  double sell_amount_btc = buy_amount_with_fee_btc - sell_fee;
  printf("Selling amount in btc: ");
  printf("%f\n", sell_amount_btc);
  double sell_amount_usd = sell_amount_btc * sellrate;
  printf("Selling amount in usd: ");
  printf("%f\n", sell_amount_usd);
  double profit_usd = sell_amount_usd - buy_amount_usd;
  double profit_btc = profit_usd / buyrate;
  printf("btc profit: ");
  printf("%f\n", profit_btc);
  printf("usd profit: ");
  printf("%f\n", profit_usd);
  return 0;
}
```