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

```asm
<Logarithm>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x28,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x18(%rbp)
  xor    %eax,%eax
  lea    D105(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x2c(%rbp),%rax
  mov    %rax,%rsi
  lea    D22(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  mov    -0x2c(%rbp),%eax
  cmp    $0x1,%eax
  jne    L32
  lea    D117(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x2c(%rbp),%rax
  mov    %rax,%rsi
  lea    D22(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  mov    -0x2c(%rbp),%eax
  mov    %eax,%edi
  call   <log10@plt>
  movq   %xmm0,%rax
  mov    -0x2c(%rbp),%edx
  movq   %rax,%xmm0
  mov    %edx,%esi
  lea    D28(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  jmp    L12
L32:
  mov    -0x2c(%rbp),%eax
  cmp    $0x2,%eax
  jne    L43
  lea    D117(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x2c(%rbp),%rax
  mov    %rax,%rsi
  lea    D22(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  mov    -0x2c(%rbp),%eax
  pxor   %xmm2,%xmm2
  cvtsi2sd %eax,%xmm2
  movq   %xmm2,%rax
  movq   %rax,%xmm0
  call   <log@plt>
  movq   %xmm0,%rax
  mov    -0x2c(%rbp),%edx
  movq   %rax,%xmm0
  mov    %edx,%esi
  lea    D100(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  jmp    L12
L43:
  mov    -0x2c(%rbp),%eax
  cmp    $0x3,%eax
  jne    L12
  lea    D56(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x2c(%rbp),%rax
  mov    %rax,%rsi
  lea    D22(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  lea    D45(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x28(%rbp),%rax
  mov    %rax,%rsi
  lea    D22(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  mov    -0x2c(%rbp),%eax
  pxor   %xmm3,%xmm3
  cvtsi2sd %eax,%xmm3
  movq   %xmm3,%rax
  movq   %rax,%xmm0
  call   <log@plt>
  movq   %xmm0,%rbx
  mov    -0x28(%rbp),%rax
  movq   %rax,%xmm0
  call   <log@plt>
  movapd %xmm0,%xmm1
  movq   %rbx,%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  mov    -0x20(%rbp),%rax
  movq   %rax,%xmm0
  call   <log@plt>
  movq   %xmm0,%rax
  mov    -0x2c(%rbp),%edx
  movq   %rax,%xmm0
  mov    %edx,%esi
  lea    D100(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
L12:
  nop
  mov    -0x18(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L54
  call   <__stack_chk_fail@plt>
L54:
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: data_tag: D105
type_infered: string
name: disassemble_data
arguments: data_tag: D22
type_infered: string
name: disassemble_data
arguments: data_tag: D117
type_infered: string
name: disassemble_data
arguments: data_tag: D28
type_infered: string
name: disassemble_data
arguments: data_tag: D100
type_infered: string
name: disassemble_data
arguments: data_tag: D56
type_infered: string
name: disassemble_data
arguments: data_tag: D45
type_infered: string

tool: D105: 1-Compute log base 10 
2- calculate natural logarithm 
3-Custom Log 

 Enter Choice
>>

tool: D22: %d

tool: D117: Enter Number

>>

tool: D28: Logarithm %d to the base 10 = %f

tool: D100: Logarithm %d to the base e = %f

tool: D56: Enter base

>>

tool: D45: Enter number

>>

assistant: ```c
void Logarithm() {
  int input, output;
  double i, x;
  printf("1-Compute log base 10 \n2- calculate natural logarithm \n3-Custom Log \n\n Enter Choice\n>>");
  scanf("%d", &input);
  if (input == 1) {
    printf("Enter Number\n\n>>");
    scanf("%d", &input);
    printf("Logarithm %d to the base 10 = %f", input, log10(input));
  } else if (input == 2) {
    printf("Enter Number\n\n>>");
    scanf("%d", &input);
    printf("Logarithm %d to the base e = %f", input, log(input));
  } else if (input == 3) {
    printf("Enter base\n\n>>");
    scanf("%d", &input);
    printf("Enter number\n\n>>");
    scanf("%d", &x);
    i = log(input) / log(x);
    printf("Logarithm %d to the base e = %f", input, log(i));
  }
}
```