user: What is the c source code of the assembly code below:

```asm
<main>:
  endbr64
  push   %rbp
  lea    D62(%rip),%rdi
  lea    D114(%rip),%rbp
  sub    $0x20,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x18(%rsp)
  xor    %eax,%eax
  call   <printf@plt>
  lea    0x10(%rsp),%rsi
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <scanf@plt>
  lea    D17(%rip),%rdi
  call   <puts@plt>
  lea    D79(%rip),%rdi
  call   <puts@plt>
  lea    D87(%rip),%rdi
  call   <puts@plt>
  lea    D65(%rip),%rdi
  call   <puts@plt>
  lea    D24(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  lea    0xf(%rsp),%rsi
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <scanf@plt>
  movzbl 0xf(%rsp),%eax
  cmp    $0x32,%al
  je     L12
  cmp    $0x33,%al
  je     L15
  cmp    $0x31,%al
  je     L13
  lea    D1(%rip),%rdi
  call   <puts@plt>
L3:
  mov    0x18(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L66
  add    $0x20,%rsp
  xor    %eax,%eax
  pop    %rbp
  ret
L12:
  movss  D28(%rip),%xmm0
  mulss  0x10(%rsp),%xmm0
  lea    0x14(%rsp),%rsi
  xor    %eax,%eax
  lea    D5(%rip),%rdi
  movss  %xmm0,0x14(%rsp)
  call   <printf@plt>
  jmp    L3
L13:
  movss  D115(%rip),%xmm0
  mulss  0x10(%rsp),%xmm0
  lea    0x14(%rsp),%rsi
  xor    %eax,%eax
  lea    D14(%rip),%rdi
  movss  %xmm0,0x14(%rsp)
  call   <printf@plt>
  jmp    L3
L15:
  movss  D113(%rip),%xmm0
  mulss  0x10(%rsp),%xmm0
  lea    0x14(%rsp),%rsi
  xor    %eax,%eax
  lea    D105(%rip),%rdi
  movss  %xmm0,0x14(%rsp)
  call   <printf@plt>
  jmp    L3
L66:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: read_data
arguments: data_tag: D62
datatype: string
name: read_data
arguments: data_tag: D114
datatype: string
name: read_data
arguments: data_tag: D17
datatype: string
name: read_data
arguments: data_tag: D79
datatype: string
name: read_data
arguments: data_tag: D87
datatype: string
name: read_data
arguments: data_tag: D65
datatype: string
name: read_data
arguments: data_tag: D24
datatype: string
name: read_data
arguments: data_tag: D1
datatype: string
name: read_data
arguments: data_tag: D28
datatype: byte[4]
name: read_data
arguments: data_tag: D5
datatype: string
name: read_data
arguments: data_tag: D115
datatype: byte[4]
name: read_data
arguments: data_tag: D14
datatype: string
name: read_data
arguments: data_tag: D113
datatype: byte[4]
name: read_data
arguments: data_tag: D105
datatype: string

tool: D62: Enter size in bytes: 

tool: D114: %d

tool: D17: Conversion Options: 

tool: D79: 1. byte to KB

tool: D87: 2. byte to MB

tool: D65: 3. byte to GB

tool: D24: Enter choice: 

tool: D1: Enter a valid choice.

tool: {"D28": [0x00,0x00,0x80,0x35]}

tool: D5: Size in MB: %d

tool: {"D115": [0x00,0x00,0x80,0x3a]}

tool: D14: Size in KB: %d

tool: {"D113": [0x00,0x00,0x80,0x30]}

tool: D105: Size in GB: %d

assistant: ```c
int main(void) {
  char choice;
  float byte, kb, mb, gb;
  printf("Enter size in bytes: ");
  scanf("%d", &byte);
  printf("Conversion Options: \n");
  printf("1. byte to KB\n");
  printf("2. byte to MB\n");
  printf("3. byte to GB\n");
  printf("Enter choice: ");
  scanf("%d", &choice);
  switch (choice) {
  case '1':
    kb = byte / 1024;
    printf("Size in KB: %d", &kb);
    break;
  case '2':
    mb = byte / (1024 * 1024);
    printf("Size in MB: %d", &mb);
    break;
  case '3':
    gb = byte / (1024 * 1024 * 1024);
    printf("Size in GB: %d", &gb);
    break;
  default:
    printf("Enter a valid choice.\n");
  }
  return 0;
}
```