user: 这段汇编代码用C语言表示是什么样的？

```asm
<FileExtensionToProtocolInfo>:
  endbr64
  push   %rbp
  mov    %rdi,%rbp
  push   %rbx
  sub    $0x28,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x18(%rsp)
  xor    %eax,%eax
  test   %esi,%esi
  jne    L59
L49:
  cmpb   $0x2e,0x0(%rbp)
  je     L164
  mov    %rbp,%rsi
  lea    0x4(%rsp),%rbx
  lea    0x5(%rsp),%rdi
  movb   $0x2e,0x4(%rsp)
  call   <strcpy@plt>
  mov    %rbx,%rbp
L164:
  lea    D160(%rip),%rsi
  mov    %rbp,%rdi
  call   <stricmp@plt>
  mov    %rax,%r8
  lea    D5(%rip),%rax
  test   %r8,%r8
  jne    L143
L117:
  mov    0x18(%rsp),%rdx
  sub    %fs:0x28,%rdx
  jne    L131
  add    $0x28,%rsp
  pop    %rbx
  pop    %rbp
  ret
  nopw   0x0(%rax,%rax,1)
L59:
  lea    0xe(%rsp),%rbx
  mov    %rdi,%rsi
  xor    %r8d,%r8d
  mov    $0x1,%ecx
  mov    $0xa,%edx
  mov    %rbx,%rdi
  mov    %rbx,%rbp
  call   <strToUtf8@plt>
  jmp    L49
  nopl   (%rax)
L143:
  lea    D169(%rip),%rsi
  mov    %rbp,%rdi
  call   <stricmp@plt>
  mov    %rax,%r8
  lea    D231(%rip),%rax
  test   %r8,%r8
  je     L117
  lea    D116(%rip),%rsi
  mov    %rbp,%rdi
  call   <stricmp@plt>
  mov    %rax,%r8
  lea    D48(%rip),%rax
  test   %r8,%r8
  je     L117
  lea    D12(%rip),%rsi
  mov    %rbp,%rdi
  call   <stricmp@plt>
  mov    %rax,%r8
  lea    D15(%rip),%rax
  test   %r8,%r8
  je     L117
  lea    D22(%rip),%rsi
  mov    %rbp,%rdi
  call   <stricmp@plt>
  mov    %rax,%r8
  lea    D49(%rip),%rax
  test   %r8,%r8
  je     L117
  lea    D130(%rip),%rsi
  mov    %rbp,%rdi
  call   <stricmp@plt>
  mov    %rax,%r8
  lea    D140(%rip),%rax
  test   %r8,%r8
  je     L117
  lea    D11(%rip),%rsi
  mov    %rbp,%rdi
  call   <stricmp@plt>
  mov    %rax,%r8
  lea    D117(%rip),%rax
  test   %r8,%r8
  je     L117
  lea    D201(%rip),%rsi
  mov    %rbp,%rdi
  call   <stricmp@plt>
  mov    %rax,%r8
  lea    D220(%rip),%rax
  test   %r8,%r8
  je     L117
  lea    D108(%rip),%rsi
  mov    %rbp,%rdi
  call   <stricmp@plt>
  test   %rax,%rax
  jne    L73
L158:
  lea    D172(%rip),%rax
  jmp    L117
L131:
  call   <__stack_chk_fail@plt>
L73:
  lea    D175(%rip),%rsi
  mov    %rbp,%rdi
  call   <stricmp@plt>
  test   %rax,%rax
  je     L158
  lea    D23(%rip),%rsi
  mov    %rbp,%rdi
  call   <stricmp@plt>
  mov    %rax,%r8
  lea    D203(%rip),%rax
  test   %r8,%r8
  je     L117
  lea    D86(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmpi@plt>
  lea    D192(%rip),%rdx
  test   %rax,%rax
  lea    D88(%rip),%rax
  cmovne %rdx,%rax
  jmp    L117
```

tool_calls: name: unpack_data
arguments: label: D160
data_type: string
name: unpack_data
arguments: label: D5
data_type: string
name: unpack_data
arguments: label: D169
data_type: string
name: unpack_data
arguments: label: D231
data_type: string
name: unpack_data
arguments: label: D116
data_type: string
name: unpack_data
arguments: label: D48
data_type: string
name: unpack_data
arguments: label: D12
data_type: string
name: unpack_data
arguments: label: D15
data_type: string
name: unpack_data
arguments: label: D22
data_type: string
name: unpack_data
arguments: label: D49
data_type: string
name: unpack_data
arguments: label: D130
data_type: string
name: unpack_data
arguments: label: D140
data_type: string
name: unpack_data
arguments: label: D11
data_type: string
name: unpack_data
arguments: label: D117
data_type: string
name: unpack_data
arguments: label: D201
data_type: string
name: unpack_data
arguments: label: D220
data_type: string
name: unpack_data
arguments: label: D108
data_type: string
name: unpack_data
arguments: label: D172
data_type: string
name: unpack_data
arguments: label: D175
data_type: string
name: unpack_data
arguments: label: D23
data_type: string
name: unpack_data
arguments: label: D203
data_type: string
name: unpack_data
arguments: label: D86
data_type: string
name: unpack_data
arguments: label: D192
data_type: string
name: unpack_data
arguments: label: D88
data_type: string

tool: D160: .mp3

tool: D5: http-get:*:audio/mpeg:*

tool: D169: .wma

tool: D231: http-get:*:audio/x-ms-wma:*

tool: D116: .ogg

tool: D48: http-get:*:audio/x-ogg:*

tool: D12: .asx

tool: D15: http-get:*:audio/x-ms-asx:*

tool: D22: .asf

tool: D49: http-get:*:video/x-ms-asf:*

tool: D130: .wmv

tool: D140: http-get:*:video/x-ms-wmv:*

tool: D11: .mpg

tool: D117: http-get:*:video/mpeg:*

tool: D201: .mov

tool: D220: http-get:*:video/quicktime:*

tool: D108: .jpg

tool: D172: http-get:*:image/jpeg:*

tool: D175: .jpeg

tool: D23: .bmp

tool: D203: http-get:*:image/bmp:*

tool: D86: .m3u

tool: D192: http-get:*:application/octet-stream:*

tool: D88: http-get:*:audio/mpegurl:*

assistant: ```c
char *FileExtensionToProtocolInfo(char *extension, int wide) {
  char tempExtension[10], temp2[10];
  char *retVal = NULL;
  if (wide) {
    strToUtf8(temp2, extension, 10, 1, NULL);
    extension = temp2;
  }
  if (extension[0] != '.') {
    tempExtension[0] = '.';
    strcpy(tempExtension + 1, extension);
    extension = tempExtension;
  }
  if (stricmp(extension, ".mp3") == 0) {
    retVal = "http-get:*:audio/mpeg:*";
  } else if (stricmp(extension, ".wma") == 0) {
    retVal = "http-get:*:audio/x-ms-wma:*";
  } else if (stricmp(extension, ".ogg") == 0) {
    retVal = "http-get:*:audio/x-ogg:*";
  } else if (stricmp(extension, ".asx") == 0) {
    retVal = "http-get:*:audio/x-ms-asx:*";
  } else if (stricmp(extension, ".asf") == 0) {
    retVal = "http-get:*:video/x-ms-asf:*";
  } else if (stricmp(extension, ".wmv") == 0) {
    retVal = "http-get:*:video/x-ms-wmv:*";
  } else if (stricmp(extension, ".mpg") == 0) {
    retVal = "http-get:*:video/mpeg:*";
  } else if (stricmp(extension, ".mov") == 0) {
    retVal = "http-get:*:video/quicktime:*";
  } else if (stricmp(extension, ".jpg") == 0) {
    retVal = "http-get:*:image/jpeg:*";
  } else if (stricmp(extension, ".jpeg") == 0) {
    retVal = "http-get:*:image/jpeg:*";
  } else if (stricmp(extension, ".bmp") == 0) {
    retVal = "http-get:*:image/bmp:*";
  } else if (strcmpi(extension, ".m3u") == 0) {
    retVal = "http-get:*:audio/mpegurl:*";
  } else {
    retVal = "http-get:*:application/octet-stream:*";
  }
  return retVal;
}
```