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

```asm
<main>:
  endbr64
  sub    $0x18,%rsp
  lea    D110(%rip),%rdi
  mov    %fs:0x28,%rax
  mov    %rax,0x8(%rsp)
  xor    %eax,%eax
  movl   $0x0,(%rsp)
  call   <printf@plt>
  mov    %rsp,%rsi
  lea    D92(%rip),%rdi
  xor    %eax,%eax
  call   <scanf@plt>
  lea    D33(%rip),%rdi
  xor    %eax,%eax
  movl   $0x0,0x4(%rsp)
  call   <printf@plt>
  lea    D57(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  lea    0x4(%rsp),%rsi
  lea    D0(%rip),%rdi
  xor    %eax,%eax
  call   <scanf@plt>
  mov    0x4(%rsp),%eax
  cmp    $0x2,%eax
  je     L18
  cmp    $0x3,%eax
  je     L33
  cmp    $0x1,%eax
  je     L7
  lea    D72(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
L61:
  mov    0x8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L56
  xor    %eax,%eax
  add    $0x18,%rsp
  ret
L18:
  movss  D48(%rip),%xmm0
  mulss  (%rsp),%xmm0
  mov    $0x1,%eax
  lea    D55(%rip),%rdi
  cvtss2sd %xmm0,%xmm0
  call   <printf@plt>
  jmp    L61
L7:
  movss  D17(%rip),%xmm0
  mulss  (%rsp),%xmm0
  lea    D117(%rip),%rdi
  cvtss2sd %xmm0,%xmm0
  call   <printf@plt>
  jmp    L61
L33:
  movss  D45(%rip),%xmm0
  mulss  (%rsp),%xmm0
  mov    $0x1,%eax
  lea    D80(%rip),%rdi
  cvtss2sd %xmm0,%xmm0
  call   <printf@plt>
  jmp    L61
L56:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: disassemble_data
arguments: tag: D110
data_type: string
name: disassemble_data
arguments: tag: D92
data_type: string
name: disassemble_data
arguments: tag: D33
data_type: string
name: disassemble_data
arguments: tag: D57
data_type: string
name: disassemble_data
arguments: tag: D0
data_type: string
name: disassemble_data
arguments: tag: D72
data_type: string
name: disassemble_data
arguments: tag: D48
data_type: f32
name: disassemble_data
arguments: tag: D55
data_type: string
name: disassemble_data
arguments: tag: D17
data_type: f32
name: disassemble_data
arguments: tag: D117
data_type: string
name: disassemble_data
arguments: tag: D45
data_type: f32
name: disassemble_data
arguments: tag: D80
data_type: string

tool: D110: Enter Amount You Want Corvert: 

tool: D92: %f

tool: D33: 
What Type Currency You Want To Corvert

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

tool: D0: %d

tool: D72: 
Invaid Input

tool: D48: 2.43877

tool: D55: 
Total Amount in JPY:%f

tool: D17: 0.02265

tool: D117: 
Total Amount in USD:%f

tool: D45: 0.01443

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