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

```asm
<main>:
  endbr64
  sub    $0x18,%rsp
  lea    D45(%rip),%rdi
  mov    %fs:0x28,%rax
  mov    %rax,0x8(%rsp)
  xor    %eax,%eax
  movl   $0x0,(%rsp)
  call   <printf@plt>
  mov    %rsp,%rsi
  lea    D48(%rip),%rdi
  xor    %eax,%eax
  call   <scanf@plt>
  lea    D89(%rip),%rdi
  xor    %eax,%eax
  movl   $0x0,0x4(%rsp)
  call   <printf@plt>
  lea    D102(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  lea    0x4(%rsp),%rsi
  lea    D63(%rip),%rdi
  xor    %eax,%eax
  call   <scanf@plt>
  mov    0x4(%rsp),%eax
  cmp    $0x2,%eax
  je     L5
  cmp    $0x3,%eax
  je     L67
  cmp    $0x1,%eax
  je     L50
  lea    D55(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
L43:
  mov    0x8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L14
  xor    %eax,%eax
  add    $0x18,%rsp
  ret
L5:
  movss  D112(%rip),%xmm0
  mulss  (%rsp),%xmm0
  mov    $0x1,%eax
  lea    D17(%rip),%rdi
  cvtss2sd %xmm0,%xmm0
  call   <printf@plt>
  jmp    L43
L50:
  movss  D60(%rip),%xmm0
  mulss  (%rsp),%xmm0
  lea    D30(%rip),%rdi
  cvtss2sd %xmm0,%xmm0
  call   <printf@plt>
  jmp    L43
L67:
  movss  D32(%rip),%xmm0
  mulss  (%rsp),%xmm0
  mov    $0x1,%eax
  lea    D13(%rip),%rdi
  cvtss2sd %xmm0,%xmm0
  call   <printf@plt>
  jmp    L43
L14:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: retrieve_data
arguments: data_label: D45
type_infered: string
name: retrieve_data
arguments: data_label: D48
type_infered: string
name: retrieve_data
arguments: data_label: D89
type_infered: string
name: retrieve_data
arguments: data_label: D102
type_infered: string
name: retrieve_data
arguments: data_label: D63
type_infered: string
name: retrieve_data
arguments: data_label: D55
type_infered: string
name: retrieve_data
arguments: data_label: D112
type_infered: f32
name: retrieve_data
arguments: data_label: D17
type_infered: string
name: retrieve_data
arguments: data_label: D60
type_infered: f32
name: retrieve_data
arguments: data_label: D30
type_infered: string
name: retrieve_data
arguments: data_label: D32
type_infered: f32
name: retrieve_data
arguments: data_label: D13
type_infered: string

tool: D45: Enter Amount You Want Corvert: 

tool: D48: %f

tool: D89: 
What Type Currency You Want To Corvert

tool: D102: 
1 = USD, 2 = JPY, 3 = EUR. : 

tool: D63: %d

tool: D55: 
Invaid Input

tool: D112: 2.43877

tool: D17: 
Total Amount in JPY:%f

tool: D60: 0.02265

tool: D30: 
Total Amount in USD:%f

tool: D32: 0.01443

tool: D13: 
Total Amount in EUR:%f

assistant: ```c
int main() {
  float PHPToUSD = 0.02265;
  float PHPToJPY = 2.43877;
  float PHPToEUR = 0.01443;
  float CorvertedAmount = 0;
  float PHPAmount = 0;
  printf("Enter Amount You Want Corvert: ");
  scanf("%f", &PHPAmount);
  int CurrencyCorvert = 0;
  printf("\nWhat Type Currency You Want To Corvert");
  printf("\n1 = USD, 2 = JPY, 3 = EUR. : ");
  scanf("%d", &CurrencyCorvert);
  switch (CurrencyCorvert) {
  case 1:
    CorvertedAmount = PHPAmount * PHPToUSD;
    printf("\nTotal Amount in USD:%f", CorvertedAmount);
    break;
  case 2:
    CorvertedAmount = PHPAmount * PHPToJPY;
    printf("\nTotal Amount in JPY:%f", CorvertedAmount);
    break;
  case 3:
    CorvertedAmount = PHPAmount * PHPToEUR;
    printf("\nTotal Amount in EUR:%f", CorvertedAmount);
    break;
  default:
    printf("\nInvaid Input");
    break;
  }
  return 0;
}
```