user: What is the c source code of the assembly code below:

```asm
<panel_utils_note_to_name>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %rdi,-0x18(%rbp)
  mov    %esi,-0x1c(%rbp)
  mov    %edx,-0x20(%rbp)
  mov    %ecx,-0x24(%rbp)
  cmpl   $0x0,-0x1c(%rbp)
  js     L205
  cmpl   $0x7f,-0x1c(%rbp)
  jle    L122
L205:
  mov    -0x18(%rbp),%rax
  lea    D29(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
L122:
  mov    -0x1c(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x2aaaaaab,%rdx,%rdx
  shr    $0x20,%rdx
  sar    %edx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  sub    $0x1,%eax
  mov    %eax,-0x8(%rbp)
  mov    -0x1c(%rbp),%edx
  movslq %edx,%rax
  imul   $0x2aaaaaab,%rax,%rax
  shr    $0x20,%rax
  sar    %eax
  mov    %edx,%esi
  sar    $0x1f,%esi
  sub    %esi,%eax
  mov    %eax,%ecx
  mov    %ecx,%eax
  add    %eax,%eax
  add    %ecx,%eax
  shl    $0x2,%eax
  sub    %eax,%edx
  mov    %edx,-0x4(%rbp)
  cmpl   $0x0,-0x20(%rbp)
  je     L198
  cmpl   $0xb,-0x4(%rbp)
  ja     L30
  mov    -0x4(%rbp),%eax
  lea    0x0(,%rax,4),%rdx
  lea    D364(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D364(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  lea    D292(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  cmpl   $0x0,-0x24(%rbp)
  je     L309
  mov    -0x18(%rbp),%rax
  lea    D127(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L309
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  lea    D198(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  jmp    L30
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  lea    D244(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  cmpl   $0x0,-0x24(%rbp)
  je     L110
  mov    -0x18(%rbp),%rax
  lea    D127(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L110
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  lea    D26(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  jmp    L30
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  lea    D380(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  cmpl   $0x0,-0x24(%rbp)
  je     L158
  mov    -0x18(%rbp),%rax
  lea    D127(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L158
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  lea    D13(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  cmpl   $0x0,-0x24(%rbp)
  je     L40
  mov    -0x18(%rbp),%rax
  lea    D127(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L40
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  lea    D181(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  jmp    L30
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  lea    D270(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  cmpl   $0x0,-0x24(%rbp)
  je     L411
  mov    -0x18(%rbp),%rax
  lea    D127(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L411
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  lea    D254(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  jmp    L30
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  lea    D41(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  cmpl   $0x0,-0x24(%rbp)
  je     L1
  mov    -0x18(%rbp),%rax
  lea    D127(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L1
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  lea    D113(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  jmp    L30
  mov    -0x8(%rbp),%edx
  mov    -0x18(%rbp),%rax
  lea    D195(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  cmpl   $0x0,-0x24(%rbp)
  je     L69
  mov    -0x18(%rbp),%rax
  lea    D127(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L69
L198:
  cmpl   $0xb,-0x4(%rbp)
  ja     L30
  mov    -0x4(%rbp),%eax
  lea    0x0(,%rax,4),%rdx
  lea    D176(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D176(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  mov    -0x18(%rbp),%rax
  lea    D175(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  cmpl   $0x0,-0x24(%rbp)
  je     L103
  mov    -0x18(%rbp),%rax
  lea    D127(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L103
  mov    -0x18(%rbp),%rax
  lea    D285(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  jmp    L30
  mov    -0x18(%rbp),%rax
  lea    D89(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  cmpl   $0x0,-0x24(%rbp)
  je     L365
  mov    -0x18(%rbp),%rax
  lea    D127(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L365
  mov    -0x18(%rbp),%rax
  lea    D86(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  jmp    L30
  mov    -0x18(%rbp),%rax
  lea    D403(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  cmpl   $0x0,-0x24(%rbp)
  je     L452
  mov    -0x18(%rbp),%rax
  lea    D127(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L452
  mov    -0x18(%rbp),%rax
  lea    D47(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  cmpl   $0x0,-0x24(%rbp)
  je     L345
  mov    -0x18(%rbp),%rax
  lea    D127(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L345
  mov    -0x18(%rbp),%rax
  lea    D133(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  jmp    L30
  mov    -0x18(%rbp),%rax
  lea    D184(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  cmpl   $0x0,-0x24(%rbp)
  je     L426
  mov    -0x18(%rbp),%rax
  lea    D127(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L426
  mov    -0x18(%rbp),%rax
  lea    D139(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  jmp    L30
  mov    -0x18(%rbp),%rax
  lea    D31(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  cmpl   $0x0,-0x24(%rbp)
  je     L313
  mov    -0x18(%rbp),%rax
  lea    D127(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L313
  mov    -0x18(%rbp),%rax
  lea    D381(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  jmp    L30
  mov    -0x18(%rbp),%rax
  lea    D199(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  cmpl   $0x0,-0x24(%rbp)
  je     L270
  mov    -0x18(%rbp),%rax
  lea    D127(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L270
L309:
  nop
  jmp    L30
L110:
  nop
  jmp    L30
L158:
  nop
  jmp    L30
L40:
  nop
  jmp    L30
L411:
  nop
  jmp    L30
L1:
  nop
  jmp    L30
L69:
  nop
  jmp    L30
L103:
  nop
  jmp    L30
L365:
  nop
  jmp    L30
L452:
  nop
  jmp    L30
L345:
  nop
  jmp    L30
L426:
  nop
  jmp    L30
L313:
  nop
  jmp    L30
L270:
  nop
L30:
  nop
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: tag: D29
type_guessed: string
name: retrieve_data
arguments: tag: D292
type_guessed: string
name: retrieve_data
arguments: tag: D127
type_guessed: string
name: retrieve_data
arguments: tag: D198
type_guessed: string
name: retrieve_data
arguments: tag: D244
type_guessed: string
name: retrieve_data
arguments: tag: D26
type_guessed: string
name: retrieve_data
arguments: tag: D380
type_guessed: string
name: retrieve_data
arguments: tag: D13
type_guessed: string
name: retrieve_data
arguments: tag: D181
type_guessed: string
name: retrieve_data
arguments: tag: D270
type_guessed: string
name: retrieve_data
arguments: tag: D254
type_guessed: string
name: retrieve_data
arguments: tag: D41
type_guessed: string
name: retrieve_data
arguments: tag: D113
type_guessed: string
name: retrieve_data
arguments: tag: D195
type_guessed: string
name: retrieve_data
arguments: tag: D175
type_guessed: string
name: retrieve_data
arguments: tag: D285
type_guessed: string
name: retrieve_data
arguments: tag: D89
type_guessed: string
name: retrieve_data
arguments: tag: D86
type_guessed: string
name: retrieve_data
arguments: tag: D403
type_guessed: string
name: retrieve_data
arguments: tag: D47
type_guessed: string
name: retrieve_data
arguments: tag: D133
type_guessed: string
name: retrieve_data
arguments: tag: D184
type_guessed: string
name: retrieve_data
arguments: tag: D139
type_guessed: string
name: retrieve_data
arguments: tag: D31
type_guessed: string
name: retrieve_data
arguments: tag: D381
type_guessed: string
name: retrieve_data
arguments: tag: D199
type_guessed: string

tool: D29: --

tool: D292: C%d

tool: D127:  

tool: D198: C#%d

tool: D244: D%d

tool: D26: D#%d

tool: D380: E%d

tool: D13: F%d

tool: D181: F#%d

tool: D270: G%d

tool: D254: G#%d

tool: D41: A%d

tool: D113: A#%d

tool: D195: B%d

tool: D175: C

tool: D285: C#

tool: D89: D

tool: D86: D#

tool: D403: E

tool: D47: F

tool: D133: F#

tool: D184: G

tool: D139: G#

tool: D31: A

tool: D381: A#

tool: D199: B

assistant: ```c
void panel_utils_note_to_name(char *tempstr, int note, int octdisp, int padding) {
  int oct, degree;
  if (note < 0 || note > 0x7f) {
    sprintf(tempstr, "--");
  }
  oct = (note / 12) - 1;
  degree = note % 12;
  if (octdisp) {
    switch (degree) {
    case 0:
      sprintf(tempstr, "C%d", oct);
      if (padding) {
        strcat(tempstr, " ");
      }
      break;
    case 1:
      sprintf(tempstr, "C#%d", oct);
      break;
    case 2:
      sprintf(tempstr, "D%d", oct);
      if (padding) {
        strcat(tempstr, " ");
      }
      break;
    case 3:
      sprintf(tempstr, "D#%d", oct);
      break;
    case 4:
      sprintf(tempstr, "E%d", oct);
      if (padding) {
        strcat(tempstr, " ");
      }
      break;
    case 5:
      sprintf(tempstr, "F%d", oct);
      if (padding) {
        strcat(tempstr, " ");
      }
      break;
    case 6:
      sprintf(tempstr, "F#%d", oct);
      break;
    case 7:
      sprintf(tempstr, "G%d", oct);
      if (padding) {
        strcat(tempstr, " ");
      }
      break;
    case 8:
      sprintf(tempstr, "G#%d", oct);
      break;
    case 9:
      sprintf(tempstr, "A%d", oct);
      if (padding) {
        strcat(tempstr, " ");
      }
      break;
    case 10:
      sprintf(tempstr, "A#%d", oct);
      break;
    case 11:
      sprintf(tempstr, "B%d", oct);
      if (padding) {
        strcat(tempstr, " ");
      }
      break;
    }
  } else {
    switch (degree) {
    case 0:
      sprintf(tempstr, "C");
      if (padding) {
        strcat(tempstr, " ");
      }
      break;
    case 1:
      sprintf(tempstr, "C#");
      break;
    case 2:
      sprintf(tempstr, "D");
      if (padding) {
        strcat(tempstr, " ");
      }
      break;
    case 3:
      sprintf(tempstr, "D#");
      break;
    case 4:
      sprintf(tempstr, "E");
      if (padding) {
        strcat(tempstr, " ");
      }
      break;
    case 5:
      sprintf(tempstr, "F");
      if (padding) {
        strcat(tempstr, " ");
      }
      break;
    case 6:
      sprintf(tempstr, "F#");
      break;
    case 7:
      sprintf(tempstr, "G");
      if (padding) {
        strcat(tempstr, " ");
      }
      break;
    case 8:
      sprintf(tempstr, "G#");
      break;
    case 9:
      sprintf(tempstr, "A");
      if (padding) {
        strcat(tempstr, " ");
      }
      break;
    case 10:
      sprintf(tempstr, "A#");
      break;
    case 11:
      sprintf(tempstr, "B");
      if (padding) {
        strcat(tempstr, " ");
      }
      break;
    }
  }
}
```