user: 请将以下的汇编代码转换成C语言代码：

```asm
<main>:
  endbr64
  push   %r15
  lea    D62(%rip),%r15
  push   %r14
  lea    D194(%rip),%r14
  push   %r13
  lea    D9(%rip),%r13
  push   %r12
  lea    D192(%rip),%r12
  push   %rbp
  lea    D175(%rip),%rbp
  push   %rbx
  lea    D28(%rip),%rbx
  sub    $0x48,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x38(%rsp)
  xor    %eax,%eax
  lea    0x2f(%rsp),%rax
  mov    %rax,0x8(%rsp)
  lea    0x30(%rsp),%rax
  mov    %rax,0x10(%rsp)
  lea    0x34(%rsp),%rax
  mov    %rax,0x18(%rsp)
  nopw   0x0(%rax,%rax,1)
L84:
  mov    %r15,%rdi
  call   <puts@plt>
  mov    %r14,%rdi
  call   <puts@plt>
  mov    %r13,%rdi
  call   <puts@plt>
  mov    %r12,%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  mov    %rbx,%rdi
  call   <puts@plt>
  lea    D54(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    0x8(%rsp),%rsi
  lea    D87(%rip),%rdi
  xor    %eax,%eax
  call   <scanf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  movzbl 0x2f(%rsp),%eax
  cmp    $0x30,%al
  je     L38
  cmp    $0x31,%al
  je     L16
  cmp    $0x32,%al
  je     L88
  cmp    $0x33,%al
  je     L64
  cmp    $0x34,%al
  jne    L84
  lea    D173(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    0x10(%rsp),%rsi
  lea    D189(%rip),%rdi
  xor    %eax,%eax
  call   <scanf@plt>
  movss  0x30(%rsp),%xmm0
  call   <ykykl@plt>
  lea    D38(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  xor    %edi,%edi
  call   <exit@plt>
  jmp    L84
  nopl   0x0(%rax)
L64:
  lea    D91(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    0x18(%rsp),%rdx
  mov    0x10(%rsp),%rsi
  xor    %eax,%eax
  lea    D89(%rip),%rdi
  call   <scanf@plt>
  movss  0x34(%rsp),%xmm1
  movss  0x30(%rsp),%xmm0
  call   <yotrig@plt>
  lea    D40(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  nopl   0x0(%rax,%rax,1)
L38:
  xor    %edi,%edi
  call   <exit@plt>
  jmp    L84
  nopl   0x0(%rax)
L16:
  lea    D11(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    0x10(%rsp),%rsi
  lea    D189(%rip),%rdi
  xor    %eax,%eax
  call   <scanf@plt>
  movss  0x30(%rsp),%xmm0
  call   <ytetr@plt>
  lea    D48(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  xor    %edi,%edi
  call   <exit@plt>
  jmp    L84
  nopl   0x0(%rax)
L88:
  lea    D129(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    0x18(%rsp),%rdx
  mov    0x10(%rsp),%rsi
  xor    %eax,%eax
  lea    D89(%rip),%rdi
  call   <scanf@plt>
  movss  0x34(%rsp),%xmm1
  movss  0x30(%rsp),%xmm0
  call   <yparal@plt>
  lea    D196(%rip),%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  xor    %edi,%edi
  call   <exit@plt>
  jmp    L84
```

tool_calls: name: read_data
arguments: label: D62
type_infered: string
name: read_data
arguments: label: D194
type_infered: string
name: read_data
arguments: label: D9
type_infered: string
name: read_data
arguments: label: D192
type_infered: string
name: read_data
arguments: label: D175
type_infered: string
name: read_data
arguments: label: D28
type_infered: string
name: read_data
arguments: label: D54
type_infered: string
name: read_data
arguments: label: D87
type_infered: string
name: read_data
arguments: label: D173
type_infered: string
name: read_data
arguments: label: D189
type_infered: string
name: read_data
arguments: label: D38
type_infered: string
name: read_data
arguments: label: D91
type_infered: string
name: read_data
arguments: label: D89
type_infered: string
name: read_data
arguments: label: D40
type_infered: string
name: read_data
arguments: label: D11
type_infered: string
name: read_data
arguments: label: D48
type_infered: string
name: read_data
arguments: label: D129
type_infered: string
name: read_data
arguments: label: D196
type_infered: string

tool: D62: Menu epilogwn ypologismoy perimetroy

tool: D194: 0. Exodos

tool: D9: 1. Tetragwno

tool: D192: 2. Parallhlogrammo

tool: D175: 3. Orthogwnio trigwno

tool: D28: 4. Kyklos

tool: D54: Eisagete thn epilogh sas: 

tool: D87:  %c

tool: D173: Dwste to mhkos ths aktinas toy kykloy: 

tool: D189: %f

tool: D38: H perimetros toy kykloy einai: %f

tool: D91: Dwste to mhkos twn 2 kathetwn pleyrwn toy orthogwnioy trigwnoy: 

tool: D89: %f %f

tool: D40: H perimetros toy orthogwnioy trigwnoy einai: %f

tool: D11: Dwste to mhkos ths pleyras toy tetragwnoy: 

tool: D48: H perimetros toy tetragwnoy einai: %f

tool: D129: Dwste to mhkos kai to platos toy parallhlogrammoy: 

tool: D196: H perimetros toy parallhlogrammoy einai: %f

assistant: ```c
int main() {
  char choice;
  float t1, t2;
  while (1) {
    printf("Menu epilogwn ypologismoy perimetroy\n");
    printf("0. Exodos\n");
    printf("1. Tetragwno\n");
    printf("2. Parallhlogrammo\n");
    printf("3. Orthogwnio trigwno\n");
    printf("4. Kyklos\n");
    printf("Eisagete thn epilogh sas: ");
    scanf(" %c", &choice);
    printf("\n");
    if (choice == '0') {
      exit(0);
    } else if (choice == '1') {
      printf("Dwste to mhkos ths pleyras toy tetragwnoy: ");
      scanf("%f", &t1);
      printf("H perimetros toy tetragwnoy einai: %f", ytetr(t1));
      exit(0);
    } else if (choice == '2') {
      printf("Dwste to mhkos kai to platos toy parallhlogrammoy: ");
      scanf("%f %f", &t1, &t2);
      printf("H perimetros toy parallhlogrammoy einai: %f", yparal(t1, t2));
      exit(0);
    } else if (choice == '3') {
      printf("Dwste to mhkos twn 2 kathetwn pleyrwn toy orthogwnioy trigwnoy: ");
      scanf("%f %f", &t1, &t2);
      printf("H perimetros toy orthogwnioy trigwnoy einai: %f", yotrig(t1, t2));
      exit(0);
    } else if (choice == '4') {
      printf("Dwste to mhkos ths aktinas toy kykloy: ");
      scanf("%f", &t1);
      printf("H perimetros toy kykloy einai: %f", ykykl(t1));
      exit(0);
    }
  }
}
```