user: 下面的汇编指令对应的C源代码是什么:

```asm
<rastafont8x8_blit8>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x28,%rsp
  mov    %rdi,-0x18(%rbp)
  mov    %esi,-0x1c(%rbp)
  mov    %edx,-0x20(%rbp)
  mov    %ecx,-0x24(%rbp)
  mov    $0x1f,%eax
  sub    -0x24(%rbp),%eax
  mov    -0x20(%rbp),%edx
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    %edx,%eax
  cltd
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  mov    -0x1c(%rbp),%ecx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <rastafont8x8_select@plt>
  mov    -0x18(%rbp),%rdx
  mov    %eax,(%rdx)
  mov    $0x1e,%eax
  sub    -0x24(%rbp),%eax
  mov    -0x20(%rbp),%edx
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    %edx,%eax
  cltd
  mov    -0x18(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  mov    -0x18(%rbp),%rcx
  lea    0x4(%rcx),%rbx
  mov    -0x1c(%rbp),%ecx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <rastafont8x8_select@plt>
  mov    %eax,(%rbx)
  mov    $0x1d,%eax
  sub    -0x24(%rbp),%eax
  mov    -0x20(%rbp),%edx
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    %edx,%eax
  cltd
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  mov    -0x18(%rbp),%rcx
  lea    0x8(%rcx),%rbx
  mov    -0x1c(%rbp),%ecx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <rastafont8x8_select@plt>
  mov    %eax,(%rbx)
  mov    $0x1c,%eax
  sub    -0x24(%rbp),%eax
  mov    -0x20(%rbp),%edx
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    %edx,%eax
  cltd
  mov    -0x18(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  mov    -0x18(%rbp),%rcx
  lea    0xc(%rcx),%rbx
  mov    -0x1c(%rbp),%ecx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <rastafont8x8_select@plt>
  mov    %eax,(%rbx)
  mov    $0x1b,%eax
  sub    -0x24(%rbp),%eax
  mov    -0x20(%rbp),%edx
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    %edx,%eax
  cltd
  mov    -0x18(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%eax
  mov    -0x18(%rbp),%rcx
  lea    0x10(%rcx),%rbx
  mov    -0x1c(%rbp),%ecx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <rastafont8x8_select@plt>
  mov    %eax,(%rbx)
  mov    $0x1a,%eax
  sub    -0x24(%rbp),%eax
  mov    -0x20(%rbp),%edx
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    %edx,%eax
  cltd
  mov    -0x18(%rbp),%rax
  add    $0x14,%rax
  mov    (%rax),%eax
  mov    -0x18(%rbp),%rcx
  lea    0x14(%rcx),%rbx
  mov    -0x1c(%rbp),%ecx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <rastafont8x8_select@plt>
  mov    %eax,(%rbx)
  mov    $0x19,%eax
  sub    -0x24(%rbp),%eax
  mov    -0x20(%rbp),%edx
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    %edx,%eax
  cltd
  mov    -0x18(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%eax
  mov    -0x18(%rbp),%rcx
  lea    0x18(%rcx),%rbx
  mov    -0x1c(%rbp),%ecx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <rastafont8x8_select@plt>
  mov    %eax,(%rbx)
  mov    $0x18,%eax
  sub    -0x24(%rbp),%eax
  mov    -0x20(%rbp),%edx
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    %edx,%eax
  cltd
  mov    -0x18(%rbp),%rax
  add    $0x1c,%rax
  mov    (%rax),%eax
  mov    -0x18(%rbp),%rcx
  lea    0x1c(%rcx),%rbx
  mov    -0x1c(%rbp),%ecx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <rastafont8x8_select@plt>
  mov    %eax,(%rbx)
  nop
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

assistant: ```c
__attribute__((always_)) void rastafont8x8_blit8(unsigned *output, unsigned colour, unsigned m, unsigned b) {
  output[0] = rastafont8x8_select(output[0], colour, (int)(m << (31 - b)) >> 31);
  output[1] = rastafont8x8_select(output[1], colour, (int)(m << (30 - b)) >> 31);
  output[2] = rastafont8x8_select(output[2], colour, (int)(m << (29 - b)) >> 31);
  output[3] = rastafont8x8_select(output[3], colour, (int)(m << (28 - b)) >> 31);
  output[4] = rastafont8x8_select(output[4], colour, (int)(m << (27 - b)) >> 31);
  output[5] = rastafont8x8_select(output[5], colour, (int)(m << (26 - b)) >> 31);
  output[6] = rastafont8x8_select(output[6], colour, (int)(m << (25 - b)) >> 31);
  output[7] = rastafont8x8_select(output[7], colour, (int)(m << (24 - b)) >> 31);
}
```