user: Translate the below assembly code into C programming language:

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x60,%rsp
  lea    D229(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D154(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D274(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D336(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D230(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <getinput@plt>
  mov    %eax,-0x2c(%rbp)
  lea    D286(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <getinput@plt>
  mov    %eax,-0x28(%rbp)
  lea    D192(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D358(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <getinput@plt>
  mov    %eax,-0x24(%rbp)
  mov    -0x2c(%rbp),%edx
  mov    -0x28(%rbp),%eax
  add    %eax,%edx
  mov    -0x24(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x20(%rbp)
  lea    D303(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x20(%rbp),%eax
  mov    %eax,%esi
  lea    D58(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D220(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D214(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <getinput@plt>
  mov    %eax,-0x1c(%rbp)
  cmpl   $0x0,-0x1c(%rbp)
  je     L134
  movl   $0x2bc,-0x40(%rbp)
  mov    -0x40(%rbp),%eax
  mov    %eax,-0x3c(%rbp)
  mov    -0x2c(%rbp),%eax
  add    $0xf9,%eax
  cmp    %eax,-0x3c(%rbp)
  jg     L172
  mov    -0x2c(%rbp),%eax
  add    $0xfa,%eax
  mov    %eax,-0x3c(%rbp)
L172:
  lea    D354(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <getinput@plt>
  mov    %eax,-0x18(%rbp)
  cmpl   $0x0,-0x18(%rbp)
  je     L119
  movl   $0x1cb6,-0x38(%rbp)
  jmp    L81
L119:
  movl   $0x1cb6,-0x38(%rbp)
L81:
  mov    -0x3c(%rbp),%eax
  mov    %eax,-0x34(%rbp)
  mov    -0x34(%rbp),%eax
  cmp    -0x38(%rbp),%eax
  jle    L108
  mov    -0x38(%rbp),%eax
  mov    %eax,-0x34(%rbp)
L108:
  movl   $0x0,-0x30(%rbp)
  cmpl   $0x0,-0x18(%rbp)
  jne    L32
  lea    D189(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D266(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <getinput@plt>
  mov    %eax,-0x14(%rbp)
  cmpl   $0x0,-0x14(%rbp)
  jne    L32
  movl   $0xaf0,-0x30(%rbp)
L32:
  mov    -0x34(%rbp),%edx
  mov    -0x30(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x10(%rbp),%eax
  mov    %eax,-0x54(%rbp)
L134:
  cmpl   $0x0,-0x1c(%rbp)
  jne    L124
  lea    D354(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <getinput@plt>
  mov    %eax,-0x18(%rbp)
  cmpl   $0x0,-0x18(%rbp)
  je     L155
  movl   $0x3296,-0x54(%rbp)
L155:
  cmpl   $0x0,-0x18(%rbp)
  jne    L124
  movl   $0x1c20,-0x54(%rbp)
L124:
  mov    -0x20(%rbp),%eax
  sub    -0x54(%rbp),%eax
  mov    %eax,-0x50(%rbp)
  cmpl   $0x0,-0x50(%rbp)
  jns    L82
  movl   $0x0,-0x50(%rbp)
L82:
  lea    D238(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x50(%rbp),%eax
  mov    %eax,%esi
  lea    D58(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D342(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <getinput@plt>
  mov    %eax,-0xc(%rbp)
  lea    D219(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D4(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <getinput@plt>
  mov    %eax,-0x8(%rbp)
  movl   $0x0,-0x4c(%rbp)
  cmpl   $0x0,-0x8(%rbp)
  je     L71
  lea    D316(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  movl   $0x3e8,-0x4c(%rbp)
L71:
  lea    D164(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x4c(%rbp),%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  mov    %eax,%esi
  lea    D58(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x50(%rbp),%eax
  imul   $0x1c,%eax,%eax
  add    $0x32,%eax
  movslq %eax,%rdx
  imul   $0x51eb851f,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x5,%edx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,-0x4(%rbp)
  lea    D132(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x4(%rbp),%eax
  mov    %eax,%esi
  lea    D58(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x4c(%rbp),%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  sub    -0x4(%rbp),%eax
  test   %eax,%eax
  jns    L120
  movl   $0x0,-0x48(%rbp)
  jmp    L65
L120:
  movl   $0x0,-0x48(%rbp)
L65:
  mov    -0x4c(%rbp),%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  sub    -0x4(%rbp),%eax
  test   %eax,%eax
  jle    L127
  lea    D213(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x4c(%rbp),%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  sub    -0x4(%rbp),%eax
  mov    %eax,%esi
  lea    D58(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L127:
  mov    -0x4c(%rbp),%edx
  mov    -0xc(%rbp),%eax
  add    %eax,%edx
  mov    -0x4(%rbp),%eax
  sub    %edx,%eax
  test   %eax,%eax
  js     L145
  lea    D169(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x4c(%rbp),%edx
  mov    -0xc(%rbp),%eax
  add    %eax,%edx
  mov    -0x4(%rbp),%eax
  sub    %edx,%eax
  mov    %eax,%esi
  lea    D58(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L145:
  mov    -0x4c(%rbp),%edx
  mov    -0xc(%rbp),%eax
  add    %eax,%edx
  mov    -0x4(%rbp),%eax
  sub    %edx,%eax
  test   %eax,%eax
  jns    L49
  movl   $0x0,-0x44(%rbp)
  jmp    L21
L49:
  movl   $0x0,-0x44(%rbp)
L21:
  mov    -0x50(%rbp),%eax
  mov    %eax,%esi
  lea    D58(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x4c(%rbp),%edx
  mov    -0xc(%rbp),%eax
  add    %edx,%eax
  mov    %eax,%esi
  lea    D58(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x4(%rbp),%eax
  mov    %eax,%esi
  lea    D58(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x40(%rbp),%eax
  mov    %eax,%esi
  lea    D58(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x34(%rbp),%eax
  mov    %eax,%esi
  lea    D58(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x38(%rbp),%eax
  mov    %eax,%esi
  lea    D58(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x48(%rbp),%eax
  mov    %eax,%esi
  lea    D58(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x44(%rbp),%eax
  mov    %eax,%esi
  lea    D58(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x4(%rbp),%eax
  mov    %eax,-0x50(%rbp)
  movl   $0x0,-0x4c(%rbp)
  movl   $0x0,-0x4(%rbp)
  mov    -0x40(%rbp),%edx
  mov    -0x44(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x48(%rbp)
  mov    -0x34(%rbp),%edx
  mov    -0x38(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x44(%rbp)
  lea    D389(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    $0x0,%eax
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D229
data_type: string
name: extract_symbolic_data
arguments: data_tag: D154
data_type: string
name: extract_symbolic_data
arguments: data_tag: D274
data_type: string
name: extract_symbolic_data
arguments: data_tag: D336
data_type: string
name: extract_symbolic_data
arguments: data_tag: D230
data_type: string
name: extract_symbolic_data
arguments: data_tag: D286
data_type: string
name: extract_symbolic_data
arguments: data_tag: D192
data_type: string
name: extract_symbolic_data
arguments: data_tag: D358
data_type: string
name: extract_symbolic_data
arguments: data_tag: D303
data_type: string
name: extract_symbolic_data
arguments: data_tag: D58
data_type: string
name: extract_symbolic_data
arguments: data_tag: D220
data_type: string
name: extract_symbolic_data
arguments: data_tag: D214
data_type: string
name: extract_symbolic_data
arguments: data_tag: D354
data_type: string
name: extract_symbolic_data
arguments: data_tag: D189
data_type: string
name: extract_symbolic_data
arguments: data_tag: D266
data_type: string
name: extract_symbolic_data
arguments: data_tag: D238
data_type: string
name: extract_symbolic_data
arguments: data_tag: D342
data_type: string
name: extract_symbolic_data
arguments: data_tag: D219
data_type: string
name: extract_symbolic_data
arguments: data_tag: D4
data_type: string
name: extract_symbolic_data
arguments: data_tag: D316
data_type: string
name: extract_symbolic_data
arguments: data_tag: D164
data_type: string
name: extract_symbolic_data
arguments: data_tag: D132
data_type: string
name: extract_symbolic_data
arguments: data_tag: D213
data_type: string
name: extract_symbolic_data
arguments: data_tag: D169
data_type: string
name: extract_symbolic_data
arguments: data_tag: D389
data_type: string

tool: D229: Welcome to the United States 1040 federal income tax program.

tool: D154: (Note: this isn't the real 1040 form. If you try to submit your

tool: D274: taxes this way, you'll get what you deserve!


tool: D336: Answer the following questions to determine what you owe.


tool: D230: Total wages, salary, and tips? 

tool: D286: Taxable interest (such as from bank accounts)? 

tool: D192: Unemployment compensation, qualified state tuition, and Alaska

tool: D358: Permanent Fund dividends? 

tool: D303: Your adjusted gross income is: 

tool: D58: %d


tool: D220: Enter <1> if your parents or someone else can claim you on their

tool: D214:  return. 
Enter <0> otherwise: 

tool: D354: Enter <1> if you are single, <0> if you are married: 

tool: D189: Enter <1> if your spouse can be claimed as a dependant, 

tool: D266: enter <0> if not: 

tool: D238: Your taxable income is: 

tool: D342: Enter the amount of Federal income tax withheld: 

tool: D219: Enter <1> if you get an earned income credit (EIC); 

tool: D4: enter 0 otherwise: 

tool: D316: OK, I'll give you a thousand dollars for your credit.

tool: D164: Your total tax payments amount to: 

tool: D132: Your total tax liability is: 

tool: D213: Congratulations, you get a tax refund of $

tool: D169: Bummer. You owe the IRS a check for $

tool: D389: Thank you for using ez-tax.

assistant: ```c
int main() {
  int line1, line2, line3, line4, line5, line6, line7, line8, deadline11, deadline12, line10, dependant, single, b, c, d, e, f, g, eic, spousedependant;
  printf("Welcome to the United States 1040 federal income tax program.\n");
  printf("(Note: this isn't the real 1040 form. If you try to submit your\n");
  printf("taxes this way, you'll get what you deserve!\n\n");
  printf("Answer the following questions to determine what you owe.\n\n");
  printf("Total wages, salary, and tips? ");
  line1 = getinput();
  printf("Taxable interest (such as from bank accounts)? ");
  line2 = getinput();
  printf("Unemployment compensation, qualified state tuition, and Alaska\n");
  printf("Permanent Fund dividends? ");
  line3 = getinput();
  line4 = line1 + line2 + line3;
  printf("Your adjusted gross income is: ");
  printf("%d\n", line4);
  printf("Enter <1> if your parents or someone else can claim you on their");
  printf(" return. \nEnter <0> otherwise: ");
  dependant = getinput();
  if (0 != dependant) {
    b = 700;
    c = b;
    if (c < (line1 + 250)) {
      c = (line1 + 250);
    }
    printf("Enter <1> if you are single, <0> if you are married: ");
    single = getinput();
    if (0 != single) {
      d = 7350;
    } else {
      d = 7350;
    }
    e = c;
    if (e > d) {
      e = d;
    }
    f = 0;
    if (single == 0) {
      printf("Enter <1> if your spouse can be claimed as a dependant, ");
      printf("enter <0> if not: ");
      spousedependant = getinput();
      if (0 == spousedependant) {
        f = 2800;
      }
    }
    g = e + f;
    line5 = g;
  }
  if (0 == dependant) {
    printf("Enter <1> if you are single, <0> if you are married: ");
    single = getinput();
    if (0 != single) {
      line5 = 12950;
    }
    if (0 == single) {
      line5 = 7200;
    }
  }
  line6 = line4 - line5;
  if (line6 < 0) {
    line6 = 0;
  }
  printf("Your taxable income is: ");
  printf("%d\n", line6);
  printf("Enter the amount of Federal income tax withheld: ");
  line7 = getinput();
  printf("Enter <1> if you get an earned income credit (EIC); ");
  printf("enter 0 otherwise: ");
  eic = getinput();
  line8 = 0;
  if (0 != eic) {
    printf("OK, I'll give you a thousand dollars for your credit.\n");
    line8 = 1000;
  }
  printf("Your total tax payments amount to: ");
  printf("%d\n", (line8 + line7));
  line10 = (line6 * 28 + 50) / 100;
  printf("Your total tax liability is: ");
  printf("%d\n", line10);
  if (((line8 + line7) - line10) < 0) {
    deadline11 = 0;
  } else
    deadline11 = 0;
  if (((line8 + line7) - line10) > 0) {
    printf("Congratulations, you get a tax refund of $");
    printf("%d\n", ((line8 + line7) - line10));
  }
  if ((line10 - (line8 + line7)) >= 0) {
    printf("Bummer. You owe the IRS a check for $");
    printf("%d\n", (line10 - (line8 + line7)));
  }
  if ((line10 - (line8 + line7)) < 0) {
    deadline12 = 0;
  } else
    deadline12 = 0;
  printf("%d\n", line6);
  printf("%d\n", (line8 + line7));
  printf("%d\n", line10);
  printf("%d\n", b);
  printf("%d\n", e);
  printf("%d\n", d);
  printf("%d\n", deadline11);
  printf("%d\n", deadline12);
  line6 = line10;
  line8 = 0;
  line10 = 0;
  deadline11 = b + deadline12;
  deadline12 = e + d;
  printf("Thank you for using ez-tax.\n");
}
```