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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x70,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movq   $0x0,-0x40(%rbp)
  movq   $0x0,-0x38(%rbp)
  movl   $0x0,-0x30(%rbp)
  movb   $0x0,-0x2c(%rbp)
  movq   $0x0,-0x20(%rbp)
  movq   $0x0,-0x18(%rbp)
  movl   $0x0,-0x10(%rbp)
  movb   $0x0,-0xc(%rbp)
  lea    D270(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x70(%rbp),%rax
  mov    %rax,%rsi
  lea    D216(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  lea    D177(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D46(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x40(%rbp),%rax
  mov    %rax,%rsi
  lea    D95(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  lea    D269(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x20(%rbp),%rax
  mov    %rax,%rsi
  lea    D95(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  lea    D79(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x6c(%rbp),%rax
  mov    %rax,%rsi
  lea    D274(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  lea    D147(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x68(%rbp),%rax
  mov    %rax,%rsi
  lea    D274(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  lea    D6(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x64(%rbp),%rax
  mov    %rax,%rsi
  lea    D216(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  movss  -0x64(%rbp),%xmm1
  movss  D84(%rip),%xmm0
  mulss  %xmm1,%xmm0
  movss  %xmm0,-0x60(%rbp)
  mov    -0x68(%rbp),%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movss  -0x70(%rbp),%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm0,%xmm2
  movsd  D35(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D14(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x5c(%rbp)
  movss  -0x60(%rbp),%xmm0
  addss  -0x5c(%rbp),%xmm0
  movss  %xmm0,-0x58(%rbp)
  pxor   %xmm1,%xmm1
  cvtss2sd -0x58(%rbp),%xmm1
  movsd  D179(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x54(%rbp)
  pxor   %xmm1,%xmm1
  cvtss2sd -0x58(%rbp),%xmm1
  movsd  D101(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x50(%rbp)
  movss  -0x58(%rbp),%xmm1
  movss  D252(%rip),%xmm0
  mulss  %xmm1,%xmm0
  movss  %xmm0,-0x4c(%rbp)
  movss  -0x54(%rbp),%xmm0
  addss  -0x50(%rbp),%xmm0
  movss  -0x4c(%rbp),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,-0x48(%rbp)
  movss  -0x58(%rbp),%xmm0
  subss  -0x48(%rbp),%xmm0
  movss  %xmm0,-0x44(%rbp)
  mov    -0x6c(%rbp),%ecx
  lea    -0x20(%rbp),%rdx
  lea    -0x40(%rbp),%rax
  mov    %rax,%rsi
  lea    D27(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movss  -0x64(%rbp),%xmm0
  pxor   %xmm3,%xmm3
  cvtss2sd %xmm0,%xmm3
  movq   %xmm3,%rax
  movq   %rax,%xmm0
  lea    D258(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  pxor   %xmm4,%xmm4
  cvtss2sd -0x60(%rbp),%xmm4
  movq   %xmm4,%rax
  movq   %rax,%xmm0
  lea    D207(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  pxor   %xmm5,%xmm5
  cvtss2sd -0x5c(%rbp),%xmm5
  movq   %xmm5,%rax
  movq   %rax,%xmm0
  lea    D11(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  pxor   %xmm6,%xmm6
  cvtss2sd -0x58(%rbp),%xmm6
  movq   %xmm6,%rax
  movq   %rax,%xmm0
  lea    D4(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  pxor   %xmm7,%xmm7
  cvtss2sd -0x54(%rbp),%xmm7
  movq   %xmm7,%rax
  movq   %rax,%xmm0
  lea    D154(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  pxor   %xmm2,%xmm2
  cvtss2sd -0x50(%rbp),%xmm2
  movq   %xmm2,%rax
  movq   %rax,%xmm0
  lea    D271(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  pxor   %xmm3,%xmm3
  cvtss2sd -0x4c(%rbp),%xmm3
  movq   %xmm3,%rax
  movq   %rax,%xmm0
  lea    D146(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  pxor   %xmm4,%xmm4
  cvtss2sd -0x48(%rbp),%xmm4
  movq   %xmm4,%rax
  movq   %rax,%xmm0
  lea    D10(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  pxor   %xmm5,%xmm5
  cvtss2sd -0x44(%rbp),%xmm5
  movq   %xmm5,%rax
  movq   %rax,%xmm0
  lea    D51(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L3
  call   <__stack_chk_fail@plt>
L3:
  leave
  ret
```

tool_calls: name: parse_data
arguments: label: D270
type_infered: string
name: parse_data
arguments: label: D216
type_infered: string
name: parse_data
arguments: label: D177
type_infered: string
name: parse_data
arguments: label: D46
type_infered: string
name: parse_data
arguments: label: D95
type_infered: string
name: parse_data
arguments: label: D269
type_infered: string
name: parse_data
arguments: label: D79
type_infered: string
name: parse_data
arguments: label: D274
type_infered: string
name: parse_data
arguments: label: D147
type_infered: string
name: parse_data
arguments: label: D6
type_infered: string
name: parse_data
arguments: label: D84
type_infered: byte[4]
name: parse_data
arguments: label: D35
type_infered: byte[8]
name: parse_data
arguments: label: D14
type_infered: byte[8]
name: parse_data
arguments: label: D179
type_infered: byte[8]
name: parse_data
arguments: label: D101
type_infered: byte[8]
name: parse_data
arguments: label: D252
type_infered: byte[4]
name: parse_data
arguments: label: D27
type_infered: string
name: parse_data
arguments: label: D258
type_infered: string
name: parse_data
arguments: label: D207
type_infered: string
name: parse_data
arguments: label: D11
type_infered: string
name: parse_data
arguments: label: D4
type_infered: string
name: parse_data
arguments: label: D154
type_infered: string
name: parse_data
arguments: label: D271
type_infered: string
name: parse_data
arguments: label: D146
type_infered: string
name: parse_data
arguments: label: D10
type_infered: string
name: parse_data
arguments: label: D51
type_infered: string

tool: D270: 
Enter profit for the week: 

tool: D216: %f

tool: D177: Enter information for the employee:

tool: D46: Enter First Name: 

tool: D95: %s

tool: D269: Enter Last Name: 

tool: D79: Enter ID Number: 

tool: D274: %d

tool: D147: Enter Years of Experience: 

tool: D6: Enter Sales amount: 

tool: {"D84": [0x00,0x00,0x00,0x3e]}

tool: {"D35": [0x7b,0x14,0xae,0x47,0xe1,0x7a,0x74,0x3f]}

tool: {"D14": [0x00,0x00,0x00,0x00,0x00,0x00,0x49,0x40]}

tool: {"D179": [0x7b,0x14,0xae,0x47,0xe1,0x7a,0xb4,0x3f]}

tool: {"D101": [0x9a,0x99,0x99,0x99,0x99,0x99,0xb9,0x3f]}

tool: {"D252": [0x00,0x00,0x80,0x3e]}

tool: D27: 

Payroll report for %s %s, Id number %d:

tool: D258: 
Sales:			$ %10.2f

tool: D207: 
Commission:		$ %10.2f

tool: D11: 
Bonus:			$ %10.2f

tool: D4: 
Gross Salary:		$ %10.2f

tool: D154: 
Retirement:		$ %10.2f

tool: D271: 
State Tax:		$ %10.2f

tool: D146: 
Federal Tax:		$ %10.2f

tool: D10: 
Total Deductions:	$ %10.2f

tool: D51: 
Net Salary:		$ %10.2f



assistant: ```c
int main(void) {
  float weeksProfit;
  char F_Name[21] = "";
  char L_Name[21] = "";
  int IDNum;
  int years;
  float salesAmt;
  float commission;
  float bonus;
  float grossSal;
  float retirement;
  float stateTax;
  float fedTax;
  float totalDed;
  float netSalary;
  printf("\nEnter profit for the week: ");
  scanf("%f", &weeksProfit);
  printf("Enter information for the employee:\n");
  printf("Enter First Name: ");
  scanf("%s", F_Name);
  printf("Enter Last Name: ");
  scanf("%s", L_Name);
  printf("Enter ID Number: ");
  scanf("%d", &IDNum);
  printf("Enter Years of Experience: ");
  scanf("%d", &years);
  printf("Enter Sales amount: ");
  scanf("%f", &salesAmt);
  commission = salesAmt * (12.5 / 100);
  bonus = ((float)years * (weeksProfit * (0.5 / 100))) + 50;
  grossSal = commission + bonus;
  retirement = grossSal * (8.0 / 100);
  stateTax = grossSal * (10.0 / 100);
  fedTax = grossSal * (25.0 / 100);
  totalDed = retirement + stateTax + fedTax;
  netSalary = grossSal - totalDed;
  printf("\n\nPayroll report for %s %s, Id number %d:", F_Name, L_Name, IDNum);
  printf("\nSales:\t\t\t$ %10.2f", salesAmt);
  printf("\nCommission:\t\t$ %10.2f", commission);
  printf("\nBonus:\t\t\t$ %10.2f", bonus);
  printf("\nGross Salary:\t\t$ %10.2f", grossSal);
  printf("\nRetirement:\t\t$ %10.2f", retirement);
  printf("\nState Tax:\t\t$ %10.2f", stateTax);
  printf("\nFederal Tax:\t\t$ %10.2f", fedTax);
  printf("\nTotal Deductions:\t$ %10.2f", totalDed);
  printf("\nNet Salary:\t\t$ %10.2f\n\n", netSalary);
  return 0;
}
```