user: Please show me the C implementation that matches the assembly code listed below:

```asm
<estensione2Linguaggio>:
  endbr64
  push   %rbp
  mov    %rdi,%rbp
  call   <stringToUpper@plt>
  lea    D26(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L67
L20:
  lea    D26(%rip),%rax
L15:
  pop    %rbp
  ret
  nopw   0x0(%rax,%rax,1)
L67:
  lea    D60(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L61
L13:
  lea    D96(%rip),%rax
  pop    %rbp
  ret
  nopl   (%rax)
L61:
  lea    D34(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L13
  lea    D78(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L20
  lea    D17(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  lea    D73(%rip),%rax
  test   %r8,%r8
  je     L15
  lea    D104(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  lea    D7(%rip),%rax
  test   %r8,%r8
  je     L15
  lea    D39(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  lea    D52(%rip),%rax
  test   %r8,%r8
  je     L15
  lea    D23(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  lea    D163(%rip),%rax
  test   %r8,%r8
  je     L15
  lea    D169(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  lea    D83(%rip),%rax
  test   %r8,%r8
  je     L15
  mov    %rbp,%rdi
  lea    D22(%rip),%rsi
  call   <strcmp@plt>
  lea    D128(%rip),%rdx
  pop    %rbp
  test   %rax,%rax
  lea    D170(%rip),%rax
  cmovne %rdx,%rax
  ret
```

tool_calls: name: read_data
arguments: data_label: D26
data_type: string
name: read_data
arguments: data_label: D60
data_type: string
name: read_data
arguments: data_label: D96
data_type: string
name: read_data
arguments: data_label: D34
data_type: string
name: read_data
arguments: data_label: D78
data_type: string
name: read_data
arguments: data_label: D17
data_type: string
name: read_data
arguments: data_label: D73
data_type: string
name: read_data
arguments: data_label: D104
data_type: string
name: read_data
arguments: data_label: D7
data_type: string
name: read_data
arguments: data_label: D39
data_type: string
name: read_data
arguments: data_label: D52
data_type: string
name: read_data
arguments: data_label: D23
data_type: string
name: read_data
arguments: data_label: D163
data_type: string
name: read_data
arguments: data_label: D169
data_type: string
name: read_data
arguments: data_label: D83
data_type: string
name: read_data
arguments: data_label: D22
data_type: string
name: read_data
arguments: data_label: D128
data_type: string
name: read_data
arguments: data_label: D170
data_type: string

tool: D26: C

tool: D60: O

tool: D96: C (binary)

tool: D34: OUT

tool: D78: H

tool: D17: CONF

tool: D73: Config file

tool: D104: PHP

tool: D7: Php

tool: D39: HTML

tool: D52: Html

tool: D23: JS

tool: D163: Javascript

tool: D169: JAVA

tool: D83: Java

tool: D22: PY

tool: D128: Unknown

tool: D170: Python

assistant: ```c
char *estensione2Linguaggio(char *sEstensione) {
  char *sRet;
  stringToUpper(sEstensione);
  if (strcmp(sEstensione, "C") == 0)
    sRet = "C";
  else if ((strcmp(sEstensione, "O") == 0) || (strcmp(sEstensione, "OUT") == 0))
    sRet = "C (binary)";
  else if ((strcmp(sEstensione, "H") == 0))
    sRet = "C";
  else if ((strcmp(sEstensione, "CONF") == 0))
    sRet = "Config file";
  else if ((strcmp(sEstensione, "PHP") == 0))
    sRet = "Php";
  else if ((strcmp(sEstensione, "HTML") == 0))
    sRet = "Html";
  else if ((strcmp(sEstensione, "JS") == 0))
    sRet = "Javascript";
  else if ((strcmp(sEstensione, "JAVA") == 0))
    sRet = "Java";
  else if ((strcmp(sEstensione, "PY") == 0))
    sRet = "Python";
  else
    sRet = "Unknown";
  return sRet;
}
```