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

```asm
<nessie_print_set_vector>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %edi,-0x4(%rbp)
  mov    %esi,-0x8(%rbp)
  lea    D13(%rip),%rax
  mov    %rax,%rdi
  call   <cli_putstr@plt>
  mov    -0x4(%rbp),%edx
  movslq %edx,%rax
  imul   $0x66666667,%rax,%rax
  shr    $0x20,%rax
  sar    $0x2,%eax
  mov    %edx,%esi
  sar    $0x1f,%esi
  sub    %esi,%eax
  mov    %eax,%ecx
  mov    %ecx,%eax
  shl    $0x2,%eax
  add    %ecx,%eax
  add    %eax,%eax
  mov    %edx,%ecx
  sub    %eax,%ecx
  mov    %ecx,%eax
  add    $0x30,%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <cli_putc@plt>
  lea    D18(%rip),%rax
  mov    %rax,%rdi
  call   <cli_putstr@plt>
  cmpl   $0x3e7,-0x8(%rbp)
  jle    L51
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x10624dd3,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x6,%edx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  add    $0x30,%eax
  movsbl %al,%eax
  jmp    L58
L51:
  mov    $0x20,%eax
L58:
  mov    %eax,%edi
  call   <cli_putc@plt>
  cmpl   $0x63,-0x8(%rbp)
  jle    L16
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x51eb851f,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x5,%edx
  sar    $0x1f,%eax
  sub    %eax,%edx
  movslq %edx,%rax
  imul   $0x66666667,%rax,%rax
  shr    $0x20,%rax
  sar    $0x2,%eax
  mov    %edx,%esi
  sar    $0x1f,%esi
  sub    %esi,%eax
  mov    %eax,%ecx
  mov    %ecx,%eax
  shl    $0x2,%eax
  add    %ecx,%eax
  add    %eax,%eax
  mov    %edx,%ecx
  sub    %eax,%ecx
  mov    %ecx,%eax
  add    $0x30,%eax
  movsbl %al,%eax
  jmp    L12
L16:
  mov    $0x20,%eax
L12:
  mov    %eax,%edi
  call   <cli_putc@plt>
  cmpl   $0x9,-0x8(%rbp)
  jle    L34
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x66666667,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x2,%edx
  sar    $0x1f,%eax
  sub    %eax,%edx
  movslq %edx,%rax
  imul   $0x66666667,%rax,%rax
  shr    $0x20,%rax
  sar    $0x2,%eax
  mov    %edx,%esi
  sar    $0x1f,%esi
  sub    %esi,%eax
  mov    %eax,%ecx
  mov    %ecx,%eax
  shl    $0x2,%eax
  add    %ecx,%eax
  add    %eax,%eax
  mov    %edx,%ecx
  sub    %eax,%ecx
  mov    %ecx,%eax
  add    $0x30,%eax
  movsbl %al,%eax
  jmp    L22
L34:
  mov    $0x20,%eax
L22:
  mov    %eax,%edi
  call   <cli_putc@plt>
  mov    -0x8(%rbp),%edx
  movslq %edx,%rax
  imul   $0x66666667,%rax,%rax
  shr    $0x20,%rax
  sar    $0x2,%eax
  mov    %edx,%esi
  sar    $0x1f,%esi
  sub    %esi,%eax
  mov    %eax,%ecx
  mov    %ecx,%eax
  shl    $0x2,%eax
  add    %ecx,%eax
  add    %eax,%eax
  mov    %edx,%ecx
  sub    %eax,%ecx
  mov    %ecx,%eax
  add    $0x30,%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <cli_putc@plt>
  mov    $0x3a,%edi
  call   <cli_putc@plt>
  nop
  leave
  ret
```

tool_calls: name: read_data
arguments: data_tag: D13
type_guessed: string
name: read_data
arguments: data_tag: D18
type_guessed: string

tool: D13: 

Set 

tool: D18: , vector#

assistant: ```c
void nessie_print_set_vector(uint8_t set, uint16_t vector) {
  cli_putstr("\r\n\r\nSet ");
  cli_putc('0' + set % 10);
  cli_putstr(", vector#");
  cli_putc((vector < 1000) ? ' ' : '0' + vector / 1000);
  cli_putc((vector < 100) ? ' ' : '0' + (vector / 100) % 10);
  cli_putc((vector < 10) ? ' ' : '0' + (vector / 10) % 10);
  cli_putc('0' + vector % 10);
  cli_putc(':');
}
```