user: What would the C source look like for the assembly code provided here:

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xe0,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0x0,-0xd4(%rbp)
  jmp    L55
L4:
  lea    D51(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    -0xdd(%rbp),%rax
  mov    %rax,%rsi
  lea    D45(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  movzbl -0xdd(%rbp),%eax
  cmp    $0x2b,%al
  jne    L41
  lea    D156(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0xdc(%rbp),%rax
  mov    %rax,%rsi
  lea    D74(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  lea    D16(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0xd8(%rbp),%rax
  mov    %rax,%rsi
  lea    D74(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  mov    -0xdc(%rbp),%edx
  mov    -0xd8(%rbp),%eax
  lea    (%rdx,%rax,1),%ecx
  mov    -0xd8(%rbp),%edx
  mov    -0xdc(%rbp),%eax
  mov    %eax,%esi
  lea    D67(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L41:
  movzbl -0xdd(%rbp),%eax
  cmp    $0x2d,%al
  jne    L34
  lea    D38(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0xdc(%rbp),%rax
  mov    %rax,%rsi
  lea    D74(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  lea    D81(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0xd8(%rbp),%rax
  mov    %rax,%rsi
  lea    D74(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  mov    -0xdc(%rbp),%eax
  mov    -0xd8(%rbp),%edx
  sub    %edx,%eax
  mov    %eax,%ecx
  mov    -0xd8(%rbp),%edx
  mov    -0xdc(%rbp),%eax
  mov    %eax,%esi
  lea    D155(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L34:
  movzbl -0xdd(%rbp),%eax
  cmp    $0x2a,%al
  jne    L55
  lea    D92(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0xdc(%rbp),%rax
  mov    %rax,%rsi
  lea    D74(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  lea    D93(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0xd8(%rbp),%rax
  mov    %rax,%rsi
  lea    D74(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  mov    -0xdc(%rbp),%edx
  mov    -0xd8(%rbp),%eax
  mov    %edx,%ecx
  imul   %eax,%ecx
  mov    -0xd8(%rbp),%edx
  mov    -0xdc(%rbp),%eax
  mov    %eax,%esi
  lea    D165(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L55:
  cmpl   $0x1,-0xd4(%rbp)
  jne    L4
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L13
  call   <__stack_chk_fail@plt>
L13:
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: data_label: D51
type: string
name: disassemble_data
arguments: data_label: D45
type: string
name: disassemble_data
arguments: data_label: D156
type: string
name: disassemble_data
arguments: data_label: D74
type: string
name: disassemble_data
arguments: data_label: D16
type: string
name: disassemble_data
arguments: data_label: D67
type: string
name: disassemble_data
arguments: data_label: D38
type: string
name: disassemble_data
arguments: data_label: D81
type: string
name: disassemble_data
arguments: data_label: D155
type: string
name: disassemble_data
arguments: data_label: D92
type: string
name: disassemble_data
arguments: data_label: D93
type: string
name: disassemble_data
arguments: data_label: D165
type: string

tool: D51: What operation do you want to do?

tool: D45: %c

tool: D156: Enter left argument: 

tool: D74: %d

tool: D16: 
Enter right argument: 

tool: D67: 
%d + %d = %d


tool: D38: Enter first number:

tool: D81: Enter secend number:

tool: D155: %d - %d = %d

tool: D92: Enter first number

tool: D93: Enter second number

tool: D165: %d * %d = %d

assistant: ```c
int main() {
  int vFirstArg, vSecondArg;
  char vOperation;
  bool vFinished;
  int przyklad[50];
  int i;
  vFinished = false;
  while (vFinished != true) {
    printf("What operation do you want to do?\n");
    scanf("%c", &vOperation);
    if (vOperation == '+') {
      printf("Enter left argument: ");
      scanf("%d", &vFirstArg);
      printf("\nEnter right argument: ");
      scanf("%d", &vSecondArg);
      printf("\n%d + %d = %d\n", vFirstArg, vSecondArg, vFirstArg + vSecondArg);
    }
    if (vOperation == '-') {
      printf("Enter first number:");
      scanf("%d", &vFirstArg);
      printf("Enter secend number:");
      scanf("%d", &vSecondArg);
      printf("%d - %d = %d", vFirstArg, vSecondArg, vFirstArg - vSecondArg);
    }
    if (vOperation == '*') {
      printf("Enter first number");
      scanf("%d", &vFirstArg);
      printf("Enter second number");
      scanf("%d", &vSecondArg);
      printf("%d * %d = %d", vFirstArg, vSecondArg, vFirstArg * vSecondArg);
    }
  }
  return 0;
}
```