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

```asm
<main>:
  endbr64
  push   %r15
  lea    D35(%rip),%r15
  push   %r14
  lea    D14(%rip),%r14
  push   %r13
  lea    D137(%rip),%r13
  push   %r12
  lea    D31(%rip),%r12
  push   %rbp
  lea    D26(%rip),%rbp
  push   %rbx
  sub    $0x18,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x8(%rsp)
  xor    %eax,%eax
  lea    0x3(%rsp),%rbx
  nopw   0x0(%rax,%rax,1)
L89:
  mov    %r15,%rdi
  call   <puts@plt>
  mov    %r14,%rdi
  call   <puts@plt>
  mov    %r13,%rdi
  call   <puts@plt>
  mov    %r12,%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  lea    D25(%rip),%rdi
  call   <puts@plt>
  xor    %eax,%eax
  mov    %rbx,%rsi
  lea    D88(%rip),%rdi
  call   <scanf@plt>
  cmpb   $0x69,0x3(%rsp)
  je     L31
L26:
  lea    D77(%rip),%rdi
  call   <puts@plt>
  mov    %rbx,%rsi
  lea    D37(%rip),%rdi
  xor    %eax,%eax
  call   <scanf@plt>
  movzbl 0x3(%rsp),%eax
  cmp    $0x73,%al
  je     L6
  cmp    $0x72,%al
  je     L82
  cmp    $0x63,%al
  je     L5
  cmp    $0x6f,%al
  je     L118
  cmp    $0x71,%al
  jne    L89
  mov    0x8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L105
  add    $0x18,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax,%rax,1)
L6:
  mov    0x4(%rsp),%edi
  call   <sumOfDigits@plt>
  lea    D86(%rip),%rdi
  mov    %eax,%esi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L89
  xchg   %ax,%ax
L31:
  lea    D147(%rip),%rdi
  call   <puts@plt>
  lea    0x4(%rsp),%rsi
  lea    D144(%rip),%rdi
  xor    %eax,%eax
  call   <scanf@plt>
  jmp    L26
  nopl   0x0(%rax)
L82:
  mov    0x4(%rsp),%edi
  call   <revDigits@plt>
  lea    D43(%rip),%rdi
  mov    %eax,%esi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L89
  cs nopw 0x0(%rax,%rax,1)
L5:
  mov    0x4(%rsp),%edi
  call   <cntDigits@plt>
  lea    D119(%rip),%rdi
  mov    %eax,%esi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L89
  xchg   %ax,%ax
L118:
  mov    0x4(%rsp),%edi
  call   <cntOddDigits@plt>
  lea    D87(%rip),%rdi
  mov    %eax,%esi
  xor    %eax,%eax
  call   <printf@plt>
  jmp    L89
L105:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: disassemble_data
arguments: tag: D35
type: string
name: disassemble_data
arguments: tag: D14
type: string
name: disassemble_data
arguments: tag: D137
type: string
name: disassemble_data
arguments: tag: D31
type: string
name: disassemble_data
arguments: tag: D26
type: string
name: disassemble_data
arguments: tag: D25
type: string
name: disassemble_data
arguments: tag: D88
type: string
name: disassemble_data
arguments: tag: D77
type: string
name: disassemble_data
arguments: tag: D37
type: string
name: disassemble_data
arguments: tag: D86
type: string
name: disassemble_data
arguments: tag: D147
type: string
name: disassemble_data
arguments: tag: D144
type: string
name: disassemble_data
arguments: tag: D43
type: string
name: disassemble_data
arguments: tag: D119
type: string
name: disassemble_data
arguments: tag: D87
type: string

tool: D35: MENU: 
i:> Input integer

tool: D14: s:> Sum of digit

tool: D137: r:> reverse digit

tool: D31: c:> count digit

tool: D26: o:> no. of odd digits

tool: D25: q:> quit

tool: D88: %c

tool: D77: enter choice :

tool: D37:  %c

tool: D86: The sum of digits is: %d


tool: D147: Enter number: 

tool: D144: %d

tool: D43: Reversed digits is: %d


tool: D119: Digit count is: %d


tool: D87: No. of odd digits is: %d


assistant: ```c
main() {
  int data, flag = 0, s, r, c, d;
  char choice;
  while (1) {
    printf("MENU: \ni:> Input integer\n");
    printf("s:> Sum of digit\n");
    printf("r:> reverse digit\n");
    printf("c:> count digit\n");
    printf("o:> no. of odd digits\n");
    printf("q:> quit\n");
    scanf("%c", &choice);
    if (choice == 'i') {
      flag = 1;
    Input:
      printf("Enter number: \n");
      scanf("%d", &data);
    }
    printf("enter choice :\n");
    scanf(" %c", &choice);
    if (flag = 0) {
      printf("No data supplied");
      goto Input;
    }
    if (choice == 's') {
      s = sumOfDigits(data);
      printf("The sum of digits is: %d\n", s);
    } else if (choice == 'r') {
      r = revDigits(data);
      printf("Reversed digits is: %d\n", r);
    } else if (choice == 'c') {
      c = cntDigits(data);
      printf("Digit count is: %d\n", c);
    } else if (choice == 'o') {
      d = cntOddDigits(data);
      printf("No. of odd digits is: %d\n", d);
    } else if (choice == 'q') {
      return 0;
    }
  }
}
```