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

```asm
<fc8300_tmm_13seg_init>:
  endbr64
  push   %r12
  push   %rbp
  push   %rbx
  mov    %rdi,%rbx
  mov    %edx,%r12d
  movzwl %si,%ebp
  mov    $0x0,%ecx
  mov    $0x0,%edx
  mov    %ebp,%esi
  call   <fc8300_write@plt>
  mov    $0x3,%ecx
  mov    $0x2,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x4,%ecx
  mov    $0x3,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0xe4,%ecx
  mov    $0x8,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x10,%ecx
  mov    $0x4,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x7,%ecx
  mov    $0x13,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x46,%ecx
  mov    $0x15,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x42,%ecx
  mov    $0x16,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x42,%ecx
  mov    $0x17,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x42,%ecx
  mov    $0x1a,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x0,%ecx
  mov    $0x1c,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x0,%ecx
  mov    $0x1d,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x77,%ecx
  mov    $0x1f,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x42,%ecx
  mov    $0x20,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x10,%ecx
  mov    $0x21,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x98,%ecx
  mov    $0x24,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x1,%ecx
  mov    $0x3f,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  movzbl %r12b,%ecx
  mov    $0x41,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x0,%ecx
  mov    $0x3f,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x88,%ecx
  mov    $0x33,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x86,%ecx
  mov    $0x34,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x65,%ecx
  mov    $0x37,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x55,%ecx
  mov    $0x38,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x2,%ecx
  mov    $0x39,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0xff,%ecx
  mov    $0x3c,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0xff,%ecx
  mov    $0x3d,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0xab,%ecx
  mov    $0x3e,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0xff,%ecx
  mov    $0x50,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x5f,%ecx
  mov    $0x70,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x31,%ecx
  mov    $0x78,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x88,%ecx
  mov    $0x82,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x14,%ecx
  mov    $0x84,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0xf,%ecx
  mov    $0x85,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x3f,%ecx
  mov    $0x86,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x18,%ecx
  mov    $0x87,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0xe,%ecx
  mov    $0x88,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0xb,%ecx
  mov    $0x89,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x15,%ecx
  mov    $0x8a,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0xb,%ecx
  mov    $0x8b,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0xb6,%ecx
  mov    $0x8f,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0xb2,%ecx
  mov    $0x90,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x68,%ecx
  mov    $0x91,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x0,%ecx
  mov    $0xb2,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x4,%ecx
  mov    $0xb3,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x0,%ecx
  mov    $0xb4,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x4,%ecx
  mov    $0xb5,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x0,%ecx
  mov    $0xb6,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x7,%ecx
  mov    $0xb7,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x0,%ecx
  mov    $0xb8,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x7,%ecx
  mov    $0xb9,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x0,%ecx
  mov    $0xba,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x7,%ecx
  mov    $0xbb,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x0,%ecx
  mov    $0xbc,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0xa,%ecx
  mov    $0xbd,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x0,%ecx
  mov    $0xbe,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0xa,%ecx
  mov    $0xbf,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0xa,%ecx
  mov    $0xc0,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x0,%ecx
  mov    $0xc1,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x13,%ecx
  mov    $0xc2,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x0,%ecx
  mov    $0xc3,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x1,%ecx
  mov    $0xcf,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x0,%ecx
  mov    $0xd3,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x1,%ecx
  mov    $0xd4,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x5,%ecx
  mov    $0xd5,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0xd,%ecx
  mov    $0xd6,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0xe,%ecx
  mov    $0xd7,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0xf,%ecx
  mov    $0xd8,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x2f,%ecx
  mov    $0xd9,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x4f,%ecx
  mov    $0xda,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x6f,%ecx
  mov    $0xdb,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x77,%ecx
  mov    $0xdc,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x97,%ecx
  mov    $0xdd,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x79,%ecx
  mov    $0xe9,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0x4c,%ecx
  mov    $0xed,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  mov    $0xb7,%ecx
  mov    $0xef,%edx
  mov    %ebp,%esi
  mov    %rbx,%rdi
  call   <fc8300_write@plt>
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
```

assistant: ```c
void fc8300_tmm_13seg_init(void *handle, unsigned short devid, unsigned char filter_cal) {
  fc8300_write(handle, devid, 0x00, 0x00);
  fc8300_write(handle, devid, 0x02, 0x03);
  fc8300_write(handle, devid, 0x03, 0x04);
  fc8300_write(handle, devid, 0x08, 0xe4);
  fc8300_write(handle, devid, 0x04, 0x10);
  fc8300_write(handle, devid, 0x13, 0x07);
  fc8300_write(handle, devid, 0x15, 0x46);
  fc8300_write(handle, devid, 0x16, 0x42);
  fc8300_write(handle, devid, 0x17, 0x42);
  fc8300_write(handle, devid, 0x1a, 0x42);
  fc8300_write(handle, devid, 0x1c, 0x00);
  fc8300_write(handle, devid, 0x1d, 0x00);
  fc8300_write(handle, devid, 0x1f, 0x77);
  fc8300_write(handle, devid, 0x20, 0x42);
  fc8300_write(handle, devid, 0x21, 0x10);
  fc8300_write(handle, devid, 0x24, 0x98);
  fc8300_write(handle, devid, 0x3f, 0x01);
  fc8300_write(handle, devid, 0x41, filter_cal);
  fc8300_write(handle, devid, 0x3f, 0x00);
  fc8300_write(handle, devid, 0x33, 0x88);
  fc8300_write(handle, devid, 0x34, 0x86);
  fc8300_write(handle, devid, 0x37, 0x65);
  fc8300_write(handle, devid, 0x38, 0x55);
  fc8300_write(handle, devid, 0x39, 0x02);
  fc8300_write(handle, devid, 0x3c, 0xff);
  fc8300_write(handle, devid, 0x3d, 0xff);
  fc8300_write(handle, devid, 0x3e, 0xab);
  fc8300_write(handle, devid, 0x50, 0xff);
  fc8300_write(handle, devid, 0x70, 0x5f);
  fc8300_write(handle, devid, 0x78, 0x31);
  fc8300_write(handle, devid, 0x82, 0x88);
  fc8300_write(handle, devid, 0x84, 0x14);
  fc8300_write(handle, devid, 0x85, 0x0f);
  fc8300_write(handle, devid, 0x86, 0x3f);
  fc8300_write(handle, devid, 0x87, 0x18);
  fc8300_write(handle, devid, 0x88, 0x0e);
  fc8300_write(handle, devid, 0x89, 0x0b);
  fc8300_write(handle, devid, 0x8a, 0x15);
  fc8300_write(handle, devid, 0x8b, 0x0b);
  fc8300_write(handle, devid, 0x8f, 0xb6);
  fc8300_write(handle, devid, 0x90, 0xb2);
  fc8300_write(handle, devid, 0x91, 0x68);
  fc8300_write(handle, devid, 0xb2, 0x00);
  fc8300_write(handle, devid, 0xb3, 0x04);
  fc8300_write(handle, devid, 0xb4, 0x00);
  fc8300_write(handle, devid, 0xb5, 0x04);
  fc8300_write(handle, devid, 0xb6, 0x00);
  fc8300_write(handle, devid, 0xb7, 0x07);
  fc8300_write(handle, devid, 0xb8, 0x00);
  fc8300_write(handle, devid, 0xb9, 0x07);
  fc8300_write(handle, devid, 0xba, 0x00);
  fc8300_write(handle, devid, 0xbb, 0x07);
  fc8300_write(handle, devid, 0xbc, 0x00);
  fc8300_write(handle, devid, 0xbd, 0x0a);
  fc8300_write(handle, devid, 0xbe, 0x00);
  fc8300_write(handle, devid, 0xbf, 0x0a);
  fc8300_write(handle, devid, 0xc0, 0x0a);
  fc8300_write(handle, devid, 0xc1, 0x00);
  fc8300_write(handle, devid, 0xc2, 0x13);
  fc8300_write(handle, devid, 0xc3, 0x00);
  fc8300_write(handle, devid, 0xcf, 0x01);
  fc8300_write(handle, devid, 0xd3, 0x00);
  fc8300_write(handle, devid, 0xd4, 0x01);
  fc8300_write(handle, devid, 0xd5, 0x05);
  fc8300_write(handle, devid, 0xd6, 0x0d);
  fc8300_write(handle, devid, 0xd7, 0x0e);
  fc8300_write(handle, devid, 0xd8, 0x0f);
  fc8300_write(handle, devid, 0xd9, 0x2f);
  fc8300_write(handle, devid, 0xda, 0x4f);
  fc8300_write(handle, devid, 0xdb, 0x6f);
  fc8300_write(handle, devid, 0xdc, 0x77);
  fc8300_write(handle, devid, 0xdd, 0x97);
  fc8300_write(handle, devid, 0xe9, 0x79);
  fc8300_write(handle, devid, 0xed, 0x4c);
  fc8300_write(handle, devid, 0xef, 0xb7);
}
```