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

```asm
<Nokia5110_OutUDec>:
  endbr64
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  mov    %edi,%ebx
  cmp    $0x9,%di
  jbe    L66
  cmp    $0x63,%di
  jbe    L15
  cmp    $0x3e7,%di
  jbe    L16
  cmp    $0x270f,%di
  ja     L33
  mov    $0x20,%edi
  call   <Nokia5110_OutChar@plt>
  mov    %ebx,%ebp
  shr    $0x3,%bp
  movzwl %bp,%ebp
  imul   $0x20c5,%ebp,%ebp
  shr    $0x14,%ebp
  lea    0x30(%rbp),%edi
  movzwl %di,%edi
  call   <Nokia5110_OutChar@plt>
  imul   $0x3e8,%bp,%bp
  sub    %ebp,%ebx
  mov    %ebx,%ebp
  shr    $0x2,%bp
  movzwl %bp,%ebp
  imul   $0x147b,%ebp,%ebp
  shr    $0x11,%ebp
  lea    0x30(%rbp),%edi
  movzwl %di,%edi
  call   <Nokia5110_OutChar@plt>
  lea    0x0(%rbp,%rbp,4),%ebp
  lea    0x0(%rbp,%rbp,4),%ebp
  shl    $0x2,%ebp
  sub    %ebp,%ebx
  movzwl %bx,%ebp
  imul   $0xcccd,%ebp,%ebp
  shr    $0x13,%ebp
  lea    0x30(%rbp),%edi
  movzwl %di,%edi
  call   <Nokia5110_OutChar@plt>
  lea    0x0(%rbp,%rbp,4),%ebp
  add    %ebp,%ebp
  sub    %ebp,%ebx
  lea    0x30(%rbx),%edi
  movzwl %di,%edi
  call   <Nokia5110_OutChar@plt>
  jmp    L71
L66:
  lea    D17(%rip),%rdi
  call   <Nokia5110_OutString@plt>
  lea    0x30(%rbx),%edi
  movzwl %di,%edi
  call   <Nokia5110_OutChar@plt>
L71:
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  ret
L15:
  lea    D26(%rip),%rdi
  call   <Nokia5110_OutString@plt>
  movzwl %bx,%ebp
  imul   $0xcccd,%ebp,%ebp
  shr    $0x13,%ebp
  lea    0x30(%rbp),%edi
  movzwl %di,%edi
  call   <Nokia5110_OutChar@plt>
  lea    0x0(%rbp,%rbp,4),%ebp
  add    %ebp,%ebp
  sub    %ebp,%ebx
  lea    0x30(%rbx),%edi
  movzwl %di,%edi
  call   <Nokia5110_OutChar@plt>
  jmp    L71
L16:
  lea    D12(%rip),%rdi
  call   <Nokia5110_OutString@plt>
  mov    %ebx,%ebp
  shr    $0x2,%bp
  movzwl %bp,%ebp
  imul   $0x147b,%ebp,%ebp
  shr    $0x11,%ebp
  lea    0x30(%rbp),%edi
  movzwl %di,%edi
  call   <Nokia5110_OutChar@plt>
  lea    0x0(%rbp,%rbp,4),%ebp
  lea    0x0(%rbp,%rbp,4),%ebp
  shl    $0x2,%ebp
  sub    %ebp,%ebx
  movzwl %bx,%ebp
  imul   $0xcccd,%ebp,%ebp
  shr    $0x13,%ebp
  lea    0x30(%rbp),%edi
  movzwl %di,%edi
  call   <Nokia5110_OutChar@plt>
  lea    0x0(%rbp,%rbp,4),%ebp
  add    %ebp,%ebp
  sub    %ebp,%ebx
  lea    0x30(%rbx),%edi
  movzwl %di,%edi
  call   <Nokia5110_OutChar@plt>
  jmp    L71
L33:
  mov    %edi,%ebp
  shr    $0x4,%bp
  movzwl %bp,%ebp
  imul   $0x347,%ebp,%ebp
  shr    $0x13,%ebp
  lea    0x30(%rbp),%edi
  movzwl %di,%edi
  call   <Nokia5110_OutChar@plt>
  imul   $0x2710,%bp,%bp
  sub    %ebp,%ebx
  mov    %ebx,%ebp
  shr    $0x3,%bp
  movzwl %bp,%ebp
  imul   $0x20c5,%ebp,%ebp
  shr    $0x14,%ebp
  lea    0x30(%rbp),%edi
  movzwl %di,%edi
  call   <Nokia5110_OutChar@plt>
  imul   $0x3e8,%bp,%bp
  sub    %ebp,%ebx
  mov    %ebx,%ebp
  shr    $0x2,%bp
  movzwl %bp,%ebp
  imul   $0x147b,%ebp,%ebp
  shr    $0x11,%ebp
  lea    0x30(%rbp),%edi
  movzwl %di,%edi
  call   <Nokia5110_OutChar@plt>
  lea    0x0(%rbp,%rbp,4),%ebp
  lea    0x0(%rbp,%rbp,4),%ebp
  shl    $0x2,%ebp
  sub    %ebp,%ebx
  movzwl %bx,%ebp
  imul   $0xcccd,%ebp,%ebp
  shr    $0x13,%ebp
  lea    0x30(%rbp),%edi
  movzwl %di,%edi
  call   <Nokia5110_OutChar@plt>
  lea    0x0(%rbp,%rbp,4),%ebp
  add    %ebp,%ebp
  sub    %ebp,%ebx
  lea    0x30(%rbx),%edi
  movzwl %di,%edi
  call   <Nokia5110_OutChar@plt>
  jmp    L71
```

tool_calls: name: parse_data
arguments: label: D17
data_type: string
name: parse_data
arguments: label: D26
data_type: string
name: parse_data
arguments: label: D12
data_type: string

tool: D17:     

tool: D26:    

tool: D12:   

assistant: ```c
void Nokia5110_OutUDec(unsigned short n) {
  if (n < 10) {
    Nokia5110_OutString("    ");
    Nokia5110_OutChar(n + '0');
  } else if (n < 100) {
    Nokia5110_OutString("   ");
    Nokia5110_OutChar(n / 10 + '0');
    Nokia5110_OutChar(n % 10 + '0');
  } else if (n < 1000) {
    Nokia5110_OutString("  ");
    Nokia5110_OutChar(n / 100 + '0');
    n = n % 100;
    Nokia5110_OutChar(n / 10 + '0');
    Nokia5110_OutChar(n % 10 + '0');
  } else if (n < 10000) {
    Nokia5110_OutChar(' ');
    Nokia5110_OutChar(n / 1000 + '0');
    n = n % 1000;
    Nokia5110_OutChar(n / 100 + '0');
    n = n % 100;
    Nokia5110_OutChar(n / 10 + '0');
    Nokia5110_OutChar(n % 10 + '0');
  } else {
    Nokia5110_OutChar(n / 10000 + '0');
    n = n % 10000;
    Nokia5110_OutChar(n / 1000 + '0');
    n = n % 1000;
    Nokia5110_OutChar(n / 100 + '0');
    n = n % 100;
    Nokia5110_OutChar(n / 10 + '0');
    Nokia5110_OutChar(n % 10 + '0');
  }
}
```