user: Converte this assembly snippet into its equivalent C code:

```asm
<Nokia5110_OutUDec>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %edi,%eax
  mov    %ax,-0x4(%rbp)
  cmpw   $0x9,-0x4(%rbp)
  ja     L44
  lea    D25(%rip),%rax
  mov    %rax,%rdi
  call   <Nokia5110_OutString@plt>
  movzwl -0x4(%rbp),%eax
  add    $0x30,%eax
  movzwl %ax,%eax
  mov    %eax,%edi
  call   <Nokia5110_OutChar@plt>
  jmp    L33
L44:
  cmpw   $0x63,-0x4(%rbp)
  ja     L3
  lea    D0(%rip),%rax
  mov    %rax,%rdi
  call   <Nokia5110_OutString@plt>
  movzwl -0x4(%rbp),%eax
  movzwl %ax,%eax
  imul   $0xcccd,%eax,%eax
  shr    $0x10,%eax
  shr    $0x3,%ax
  add    $0x30,%eax
  movzwl %ax,%eax
  mov    %eax,%edi
  call   <Nokia5110_OutChar@plt>
  movzwl -0x4(%rbp),%ecx
  movzwl %cx,%eax
  imul   $0xcccd,%eax,%eax
  shr    $0x10,%eax
  mov    %eax,%edx
  shr    $0x3,%dx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  add    %eax,%eax
  sub    %eax,%ecx
  mov    %ecx,%edx
  lea    0x30(%rdx),%eax
  movzwl %ax,%eax
  mov    %eax,%edi
  call   <Nokia5110_OutChar@plt>
  jmp    L33
L3:
  cmpw   $0x3e7,-0x4(%rbp)
  ja     L62
  lea    D20(%rip),%rax
  mov    %rax,%rdi
  call   <Nokia5110_OutString@plt>
  movzwl -0x4(%rbp),%eax
  shr    $0x2,%ax
  movzwl %ax,%eax
  imul   $0x147b,%eax,%eax
  shr    $0x10,%eax
  shr    %ax
  add    $0x30,%eax
  movzwl %ax,%eax
  mov    %eax,%edi
  call   <Nokia5110_OutChar@plt>
  movzwl -0x4(%rbp),%edx
  mov    %edx,%eax
  shr    $0x2,%ax
  movzwl %ax,%eax
  imul   $0x147b,%eax,%eax
  shr    $0x10,%eax
  mov    %eax,%ecx
  shr    %cx
  mov    %ecx,%eax
  shl    $0x2,%eax
  add    %ecx,%eax
  lea    0x0(,%rax,4),%ecx
  add    %ecx,%eax
  shl    $0x2,%eax
  sub    %eax,%edx
  mov    %dx,-0x4(%rbp)
  movzwl -0x4(%rbp),%eax
  movzwl %ax,%eax
  imul   $0xcccd,%eax,%eax
  shr    $0x10,%eax
  shr    $0x3,%ax
  add    $0x30,%eax
  movzwl %ax,%eax
  mov    %eax,%edi
  call   <Nokia5110_OutChar@plt>
  movzwl -0x4(%rbp),%ecx
  movzwl %cx,%eax
  imul   $0xcccd,%eax,%eax
  shr    $0x10,%eax
  mov    %eax,%edx
  shr    $0x3,%dx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  add    %eax,%eax
  sub    %eax,%ecx
  mov    %ecx,%edx
  lea    0x30(%rdx),%eax
  movzwl %ax,%eax
  mov    %eax,%edi
  call   <Nokia5110_OutChar@plt>
  jmp    L33
L62:
  cmpw   $0x270f,-0x4(%rbp)
  ja     L36
  mov    $0x20,%edi
  call   <Nokia5110_OutChar@plt>
  movzwl -0x4(%rbp),%eax
  shr    $0x3,%ax
  movzwl %ax,%eax
  imul   $0x20c5,%eax,%eax
  shr    $0x10,%eax
  shr    $0x4,%ax
  add    $0x30,%eax
  movzwl %ax,%eax
  mov    %eax,%edi
  call   <Nokia5110_OutChar@plt>
  movzwl -0x4(%rbp),%eax
  mov    %eax,%edx
  shr    $0x3,%dx
  movzwl %dx,%edx
  imul   $0x20c5,%edx,%edx
  shr    $0x10,%edx
  shr    $0x4,%dx
  imul   $0x3e8,%dx,%dx
  sub    %edx,%eax
  mov    %ax,-0x4(%rbp)
  movzwl -0x4(%rbp),%eax
  shr    $0x2,%ax
  movzwl %ax,%eax
  imul   $0x147b,%eax,%eax
  shr    $0x10,%eax
  shr    %ax
  add    $0x30,%eax
  movzwl %ax,%eax
  mov    %eax,%edi
  call   <Nokia5110_OutChar@plt>
  movzwl -0x4(%rbp),%edx
  mov    %edx,%eax
  shr    $0x2,%ax
  movzwl %ax,%eax
  imul   $0x147b,%eax,%eax
  shr    $0x10,%eax
  mov    %eax,%ecx
  shr    %cx
  mov    %ecx,%eax
  shl    $0x2,%eax
  add    %ecx,%eax
  lea    0x0(,%rax,4),%ecx
  add    %ecx,%eax
  shl    $0x2,%eax
  sub    %eax,%edx
  mov    %dx,-0x4(%rbp)
  movzwl -0x4(%rbp),%eax
  movzwl %ax,%eax
  imul   $0xcccd,%eax,%eax
  shr    $0x10,%eax
  shr    $0x3,%ax
  add    $0x30,%eax
  movzwl %ax,%eax
  mov    %eax,%edi
  call   <Nokia5110_OutChar@plt>
  movzwl -0x4(%rbp),%ecx
  movzwl %cx,%eax
  imul   $0xcccd,%eax,%eax
  shr    $0x10,%eax
  mov    %eax,%edx
  shr    $0x3,%dx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  add    %eax,%eax
  sub    %eax,%ecx
  mov    %ecx,%edx
  lea    0x30(%rdx),%eax
  movzwl %ax,%eax
  mov    %eax,%edi
  call   <Nokia5110_OutChar@plt>
  jmp    L33
L36:
  movzwl -0x4(%rbp),%eax
  shr    $0x4,%ax
  movzwl %ax,%eax
  imul   $0x347,%eax,%eax
  shr    $0x10,%eax
  shr    $0x3,%ax
  add    $0x30,%eax
  movzwl %ax,%eax
  mov    %eax,%edi
  call   <Nokia5110_OutChar@plt>
  movzwl -0x4(%rbp),%eax
  mov    %eax,%edx
  shr    $0x4,%dx
  movzwl %dx,%edx
  imul   $0x347,%edx,%edx
  shr    $0x10,%edx
  shr    $0x3,%dx
  imul   $0x2710,%dx,%dx
  sub    %edx,%eax
  mov    %ax,-0x4(%rbp)
  movzwl -0x4(%rbp),%eax
  shr    $0x3,%ax
  movzwl %ax,%eax
  imul   $0x20c5,%eax,%eax
  shr    $0x10,%eax
  shr    $0x4,%ax
  add    $0x30,%eax
  movzwl %ax,%eax
  mov    %eax,%edi
  call   <Nokia5110_OutChar@plt>
  movzwl -0x4(%rbp),%eax
  mov    %eax,%edx
  shr    $0x3,%dx
  movzwl %dx,%edx
  imul   $0x20c5,%edx,%edx
  shr    $0x10,%edx
  shr    $0x4,%dx
  imul   $0x3e8,%dx,%dx
  sub    %edx,%eax
  mov    %ax,-0x4(%rbp)
  movzwl -0x4(%rbp),%eax
  shr    $0x2,%ax
  movzwl %ax,%eax
  imul   $0x147b,%eax,%eax
  shr    $0x10,%eax
  shr    %ax
  add    $0x30,%eax
  movzwl %ax,%eax
  mov    %eax,%edi
  call   <Nokia5110_OutChar@plt>
  movzwl -0x4(%rbp),%edx
  mov    %edx,%eax
  shr    $0x2,%ax
  movzwl %ax,%eax
  imul   $0x147b,%eax,%eax
  shr    $0x10,%eax
  mov    %eax,%ecx
  shr    %cx
  mov    %ecx,%eax
  shl    $0x2,%eax
  add    %ecx,%eax
  lea    0x0(,%rax,4),%ecx
  add    %ecx,%eax
  shl    $0x2,%eax
  sub    %eax,%edx
  mov    %dx,-0x4(%rbp)
  movzwl -0x4(%rbp),%eax
  movzwl %ax,%eax
  imul   $0xcccd,%eax,%eax
  shr    $0x10,%eax
  shr    $0x3,%ax
  add    $0x30,%eax
  movzwl %ax,%eax
  mov    %eax,%edi
  call   <Nokia5110_OutChar@plt>
  movzwl -0x4(%rbp),%ecx
  movzwl %cx,%eax
  imul   $0xcccd,%eax,%eax
  shr    $0x10,%eax
  mov    %eax,%edx
  shr    $0x3,%dx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  add    %eax,%eax
  sub    %eax,%ecx
  mov    %ecx,%edx
  lea    0x30(%rdx),%eax
  movzwl %ax,%eax
  mov    %eax,%edi
  call   <Nokia5110_OutChar@plt>
L33:
  nop
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D25
data_type: string
name: extract_symbolic_data
arguments: data_tag: D0
data_type: string
name: extract_symbolic_data
arguments: data_tag: D20
data_type: string

tool: D25:     

tool: D0:    

tool: D20:   

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');
  }
}
```