user: 请显示与下面列出的汇编代码相匹配的C语言实现:

```asm
<ipdisp>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  add    $0xffffffffffffff80,%rsp
  mov    %edi,%eax
  mov    %al,-0x74(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0x36383437,-0x63(%rbp)
  movw   $0x2520,-0x5f(%rbp)
  movb   $0x0,-0x5d(%rbp)
  movl   $0x32383437,-0x5c(%rbp)
  movw   $0x2520,-0x58(%rbp)
  movb   $0x0,-0x56(%rbp)
  movl   $0x38303437,-0x55(%rbp)
  movw   $0x2520,-0x51(%rbp)
  movb   $0x0,-0x4f(%rbp)
  movl   $0x32333437,-0x4e(%rbp)
  movw   $0x2520,-0x4a(%rbp)
  movb   $0x0,-0x48(%rbp)
  movl   $0x34303437,-0x47(%rbp)
  movw   $0x2520,-0x43(%rbp)
  movb   $0x0,-0x41(%rbp)
  movl   $0x30303437,-0x40(%rbp)
  movw   $0x2520,-0x3c(%rbp)
  movb   $0x0,-0x3a(%rbp)
  movl   $0x32303437,-0x39(%rbp)
  movw   $0x2520,-0x35(%rbp)
  movb   $0x0,-0x33(%rbp)
  movl   $0x30313437,-0x32(%rbp)
  movw   $0x2520,-0x2e(%rbp)
  movb   $0x0,-0x2c(%rbp)
  movl   $0x37323437,-0x2b(%rbp)
  movw   $0x2520,-0x27(%rbp)
  movb   $0x0,-0x25(%rbp)
  movl   $0x36373437,-0x24(%rbp)
  movw   $0x2520,-0x20(%rbp)
  movb   $0x0,-0x1e(%rbp)
  movl   $0x34373437,-0x1d(%rbp)
  movw   $0x2520,-0x19(%rbp)
  movb   $0x0,-0x17(%rbp)
  movl   $0x35313437,-0x16(%rbp)
  movw   $0x2531,-0x12(%rbp)
  movb   $0x0,-0x10(%rbp)
  movl   $0x33313437,-0xf(%rbp)
  movw   $0x2538,-0xb(%rbp)
  movb   $0x0,-0x9(%rbp)
  movsbl -0x74(%rbp),%eax
  sub    $0x2a,%eax
  cmp    $0x39,%eax
  ja     L82
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  lea    D18(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D18(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  lea    -0x63(%rbp),%rax
  mov    %rax,%rdi
  call   <lcd_msg@plt>
  jmp    L90
  lea    -0x5c(%rbp),%rax
  mov    %rax,%rdi
  call   <lcd_msg@plt>
  jmp    L90
  lea    -0x55(%rbp),%rax
  mov    %rax,%rdi
  call   <lcd_msg@plt>
  jmp    L90
  lea    -0x4e(%rbp),%rax
  mov    %rax,%rdi
  call   <lcd_msg@plt>
  jmp    L90
  lea    -0x47(%rbp),%rax
  mov    %rax,%rdi
  call   <lcd_msg@plt>
  jmp    L90
  lea    -0x40(%rbp),%rax
  mov    %rax,%rdi
  call   <lcd_msg@plt>
  jmp    L90
  lea    -0x39(%rbp),%rax
  mov    %rax,%rdi
  call   <lcd_msg@plt>
  jmp    L90
  lea    -0x32(%rbp),%rax
  mov    %rax,%rdi
  call   <lcd_msg@plt>
  jmp    L90
  lea    -0x2b(%rbp),%rax
  mov    %rax,%rdi
  call   <lcd_msg@plt>
  jmp    L90
  lea    -0x24(%rbp),%rax
  mov    %rax,%rdi
  call   <lcd_msg@plt>
  jmp    L90
  lea    -0x1d(%rbp),%rax
  mov    %rax,%rdi
  call   <lcd_msg@plt>
  jmp    L90
  lea    -0x16(%rbp),%rax
  mov    %rax,%rdi
  call   <lcd_msg@plt>
  jmp    L90
  lea    -0xf(%rbp),%rax
  mov    %rax,%rdi
  call   <lcd_msg@plt>
  jmp    L90
L82:
  nop
L90:
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L141
  call   <__stack_chk_fail@plt>
L141:
  leave
  ret
```

assistant: ```c
void ipdisp(char temp) {
  char msg1[] = "7486 %";
  char msg2[] = "7482 %";
  char msg3[] = "7408 %";
  char msg4[] = "7432 %";
  char msg5[] = "7404 %";
  char msg6[] = "7400 %";
  char msg7[] = "7402 %";
  char msg8[] = "7410 %";
  char msg9[] = "7427 %";
  char msg10[] = "7476 %";
  char msg11[] = "7474 %";
  char msg12[] = "74151%";
  char msg13[] = "74138%";
  switch (temp) {
  case 'c':
    lcd_msg(msg1);
    break;
  case '0':
    lcd_msg(msg2);
    break;
  case '=':
    lcd_msg(msg3);
    break;
  case '+':
    lcd_msg(msg4);
    break;
  case '1':
    lcd_msg(msg5);
    break;
  case '2':
    lcd_msg(msg6);
    break;
  case '3':
    lcd_msg(msg7);
    break;
  case '-':
    lcd_msg(msg8);
    break;
  case '4':
    lcd_msg(msg9);
    break;
  case '5':
    lcd_msg(msg10);
    break;
  case '6':
    lcd_msg(msg11);
    break;
  case '*':
    lcd_msg(msg12);
    break;
  case '7':
    lcd_msg(msg13);
    break;
  default:
    return;
  }
}
```