user: What would the C source look like for the assembly code provided here?

```asm
<decodefmt>:
  endbr64
  push   %rbp
  mov    %rsi,%rbp
  push   %rbx
  sub    $0x8,%rsp
  movl   $0xffffffff,(%rsi)
  mov    $0x23,%esi
  call   <strrchr@plt>
  test   %rax,%rax
  je     L164
  lea    D62(%rip),%rsi
  mov    %rax,%rdi
  mov    %rax,%rbx
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L105
L90:
  mov    %eax,0x0(%rbp)
  movb   $0x0,(%rbx)
L164:
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  ret
  nopl   (%rax)
L105:
  lea    D7(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L28
  lea    D64(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L77
  lea    D21(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L25
  lea    D26(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L84
  lea    D73(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L41
  lea    D49(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L3
  lea    D37(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L104
  lea    D98(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L186
  lea    D8(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L164
  mov    $0xa,%eax
  jmp    L90
  nopl   0x0(%rax)
L28:
  mov    $0x1,%eax
  jmp    L90
  nopw   0x0(%rax,%rax,1)
L77:
  mov    $0x2,%eax
  jmp    L90
  nopw   0x0(%rax,%rax,1)
L25:
  mov    $0x3,%eax
  jmp    L90
  nopw   0x0(%rax,%rax,1)
L84:
  mov    $0x4,%eax
  jmp    L90
  nopw   0x0(%rax,%rax,1)
L41:
  mov    $0x5,%eax
  jmp    L90
L3:
  mov    $0x6,%eax
  jmp    L90
L104:
  mov    $0x7,%eax
  jmp    L90
L186:
  mov    $0x9,%eax
  jmp    L90
```

tool_calls: name: disassemble_data
arguments: data_label: D62
type_guessed: string
name: disassemble_data
arguments: data_label: D7
type_guessed: string
name: disassemble_data
arguments: data_label: D64
type_guessed: string
name: disassemble_data
arguments: data_label: D21
type_guessed: string
name: disassemble_data
arguments: data_label: D26
type_guessed: string
name: disassemble_data
arguments: data_label: D73
type_guessed: string
name: disassemble_data
arguments: data_label: D49
type_guessed: string
name: disassemble_data
arguments: data_label: D37
type_guessed: string
name: disassemble_data
arguments: data_label: D98
type_guessed: string
name: disassemble_data
arguments: data_label: D8
type_guessed: string

tool: D62: #rtcm2

tool: D7: #rtcm3

tool: D64: #nov

tool: D21: #oem3

tool: D26: #ubx

tool: D73: #ss2

tool: D49: #hemis

tool: D37: #stq

tool: D98: #javad

tool: D8: #nvs

assistant: ```c
void decodefmt(char *path, int *fmt) {
  char *p;
  *fmt = -1;
  if ((p = strrchr(path, '#'))) {
    if (!strcmp(p, "#rtcm2"))
      *fmt = 0;
    else if (!strcmp(p, "#rtcm3"))
      *fmt = 1;
    else if (!strcmp(p, "#nov"))
      *fmt = 2;
    else if (!strcmp(p, "#oem3"))
      *fmt = 3;
    else if (!strcmp(p, "#ubx"))
      *fmt = 4;
    else if (!strcmp(p, "#ss2"))
      *fmt = 5;
    else if (!strcmp(p, "#hemis"))
      *fmt = 6;
    else if (!strcmp(p, "#stq"))
      *fmt = 7;
    else if (!strcmp(p, "#javad"))
      *fmt = 9;
    else if (!strcmp(p, "#nvs"))
      *fmt = 10;
    else
      return;
    *p = '\0';
  }
}
```