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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %edi,-0x14(%rbp)
  mov    %rsi,-0x20(%rbp)
  movl   $0x0,-0x10(%rbp)
  cmpl   $0x1,-0x14(%rbp)
  jne    L10
  lea    D7(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    $0x0,%eax
  jmp    L32
L10:
  mov    -0x20(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rax
  mov    %rax,%rdi
  call   <atoi@plt>
  mov    %eax,-0xc(%rbp)
  mov    -0x20(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rax
  mov    %rax,%rdi
  call   <atoi@plt>
  mov    %eax,-0x8(%rbp)
  mov    -0x20(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%rax
  mov    %rax,%rdi
  call   <atoi@plt>
  mov    %eax,-0x4(%rbp)
  cmpl   $0x1,-0x4(%rbp)
  jne    L28
  mov    -0x8(%rbp),%edx
  mov    -0xc(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <optellen@plt>
  mov    %eax,%ecx
  mov    -0x8(%rbp),%edx
  mov    -0xc(%rbp),%eax
  mov    %eax,%esi
  lea    D35(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L28:
  cmpl   $0x2,-0x4(%rbp)
  jne    L19
  mov    -0xc(%rbp),%eax
  imul   -0x8(%rbp),%eax
  mov    %eax,%ecx
  mov    -0x8(%rbp),%edx
  mov    -0xc(%rbp),%eax
  mov    %eax,%esi
  lea    D13(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L19:
  cmpl   $0x3,-0x4(%rbp)
  jne    L44
  mov    -0xc(%rbp),%eax
  sub    -0x8(%rbp),%eax
  mov    %eax,%ecx
  mov    -0x8(%rbp),%edx
  mov    -0xc(%rbp),%eax
  mov    %eax,%esi
  lea    D22(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L44:
  cmpl   $0x4,-0x4(%rbp)
  jne    L15
  mov    -0x8(%rbp),%edx
  mov    -0xc(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <delen@plt>
  mov    %eax,%ecx
  mov    -0x8(%rbp),%edx
  mov    -0xc(%rbp),%eax
  mov    %eax,%esi
  lea    D12(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L15:
  mov    $0x0,%eax
L32:
  leave
  ret
```

tool_calls: name: unpack_data
arguments: label: D7
datatype: string
name: unpack_data
arguments: label: D35
datatype: string
name: unpack_data
arguments: label: D13
datatype: string
name: unpack_data
arguments: label: D22
datatype: string
name: unpack_data
arguments: label: D12
datatype: string

tool: D7: 1 is optellen, 2 is vermenigvuldigen, 3 is aftrekken, 4 is delen

tool: D35: de som van %i en %i = %i
	

tool: D13: Het product van %i en %i = %i


tool: D22: Het verschil van %i en %i = %i


tool: D12: Het quotient van %i en %i = %i


assistant: ```c
int main(int argc, char *argv[]) {
  int i = 0;
  int term1;
  int term2;
  int operator;
  if (argc == 1) {
    printf("1 is optellen, 2 is vermenigvuldigen, 3 is aftrekken, 4 is delen\n");
    return 0;
  }
  term1 = atoi(argv[1]);
  term2 = atoi(argv[2]);
  operator= atoi(argv[3]);
  if (operator== 1)
    printf("de som van %i en %i = %i\n	", term1, term2, optellen(term1, term2));
  if (operator== 2)
    printf("Het product van %i en %i = %i\n", term1, term2, term1 * term2);
  if (operator== 3)
    printf("Het verschil van %i en %i = %i\n", term1, term2, term1 - term2);
  if (operator== 4) {
    printf("Het quotient van %i en %i = %i\n", term1, term2, delen(term1, term2));
  }
  return 0;
}
```