user: Converte this assembly snippet into its equivalent C code:

```asm
<main>:
  endbr64
  sub    $0x18,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x8(%rsp)
  xor    %eax,%eax
  movl   $0x0,(%rsp)
  lea    D22(%rip),%rdi
  call   <printf@plt>
  mov    %rsp,%rsi
  lea    D7(%rip),%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  movl   $0x0,0x4(%rsp)
  lea    D48(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D21(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    0x4(%rsp),%rsi
  lea    D24(%rip),%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  mov    0x4(%rsp),%eax
  cmp    $0x2,%eax
  je     L45
  cmp    $0x3,%eax
  je     L43
  cmp    $0x1,%eax
  je     L39
  lea    D94(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L18
L39:
  movss  D116(%rip),%xmm0
  mulss  (%rsp),%xmm0
  cvtss2sd %xmm0,%xmm0
  lea    D85(%rip),%rdi
  call   <printf@plt>
L18:
  mov    0x8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L15
  mov    $0x0,%eax
  add    $0x18,%rsp
  ret
L45:
  movss  D3(%rip),%xmm0
  mulss  (%rsp),%xmm0
  cvtss2sd %xmm0,%xmm0
  lea    D42(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  jmp    L18
L43:
  movss  D93(%rip),%xmm0
  mulss  (%rsp),%xmm0
  cvtss2sd %xmm0,%xmm0
  lea    D23(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  jmp    L18
L15:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: read_data
arguments: data_tag: D22
type_guessed: string
name: read_data
arguments: data_tag: D7
type_guessed: string
name: read_data
arguments: data_tag: D48
type_guessed: string
name: read_data
arguments: data_tag: D21
type_guessed: string
name: read_data
arguments: data_tag: D24
type_guessed: string
name: read_data
arguments: data_tag: D94
type_guessed: string
name: read_data
arguments: data_tag: D116
type_guessed: f32
name: read_data
arguments: data_tag: D85
type_guessed: string
name: read_data
arguments: data_tag: D3
type_guessed: f32
name: read_data
arguments: data_tag: D42
type_guessed: string
name: read_data
arguments: data_tag: D93
type_guessed: f32
name: read_data
arguments: data_tag: D23
type_guessed: string

tool: D22: Enter Amount You Want Corvert: 

tool: D7: %f

tool: D48: 
What Type Currency You Want To Corvert

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

tool: D24: %d

tool: D94: 
Invaid Input

tool: D116: 0.02265

tool: D85: 
Total Amount in USD:%f

tool: D3: 2.43877

tool: D42: 
Total Amount in JPY:%f

tool: D93: 0.01443

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