user: Translate the below assembly code into C programming language:

```asm
<fc8300b_13seg_init>:
  endbr64
  push   %r12
  movzwl %si,%r12d
  xor    %ecx,%ecx
  push   %rbp
  mov    %r12d,%esi
  mov    %rdi,%rbp
  push   %rbx
  mov    %edx,%ebx
  xor    %edx,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x1,%ecx
  mov    $0x2,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x4,%ecx
  mov    $0x3,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x10,%ecx
  mov    $0x4,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0xe4,%ecx
  mov    $0x8,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x7,%ecx
  mov    $0x13,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x46,%ecx
  mov    $0x15,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x53,%ecx
  mov    $0x19,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x10,%ecx
  mov    $0x1d,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x74,%ecx
  mov    $0x1f,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x42,%ecx
  mov    $0x20,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x30,%ecx
  mov    $0x21,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x98,%ecx
  mov    $0x24,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x1,%ecx
  mov    $0x3f,%edx
  call   <fc8300b_write@plt>
  movzbl %bl,%ecx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x41,%edx
  call   <fc8300b_write@plt>
  xor    %ecx,%ecx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x3f,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x86,%ecx
  mov    $0x33,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x44,%ecx
  mov    $0x34,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x65,%ecx
  mov    $0x37,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x55,%ecx
  mov    $0x38,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x5,%ecx
  mov    $0x39,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0xff,%ecx
  mov    $0x3c,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0xff,%ecx
  mov    $0x3d,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0xab,%ecx
  mov    $0x3e,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x1,%ecx
  mov    $0x4d,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0xff,%ecx
  mov    $0x50,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x1a,%ecx
  mov    $0x53,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x80,%ecx
  mov    $0x54,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x5f,%ecx
  mov    $0x70,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x31,%ecx
  mov    $0x78,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x88,%ecx
  mov    $0x82,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x18,%ecx
  mov    $0x84,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0xc,%ecx
  mov    $0x85,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x3f,%ecx
  mov    $0x86,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x18,%ecx
  mov    $0x87,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0xe,%ecx
  mov    $0x88,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0xb,%ecx
  mov    $0x89,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x15,%ecx
  mov    $0x8a,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0xe,%ecx
  mov    $0x8b,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0xb6,%ecx
  mov    $0x8f,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0xf8,%ecx
  mov    $0x91,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0xb2,%ecx
  mov    $0x90,%edx
  call   <fc8300b_write@plt>
  xor    %ecx,%ecx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0xb2,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x4,%ecx
  mov    $0xb3,%edx
  call   <fc8300b_write@plt>
  xor    %ecx,%ecx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0xb4,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x2,%ecx
  mov    $0xb5,%edx
  call   <fc8300b_write@plt>
  xor    %ecx,%ecx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0xb6,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x7,%ecx
  mov    $0xb7,%edx
  call   <fc8300b_write@plt>
  xor    %ecx,%ecx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0xb8,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0xa,%ecx
  mov    $0xb9,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x5,%ecx
  mov    $0xba,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0xc,%ecx
  mov    $0xbb,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x5,%ecx
  mov    $0xbc,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0xc,%ecx
  mov    $0xbd,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x5,%ecx
  mov    $0xbe,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0xc,%ecx
  mov    $0xbf,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0xc,%ecx
  mov    $0xc0,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x5,%ecx
  mov    $0xc1,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x13,%ecx
  mov    $0xc2,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x5,%ecx
  mov    $0xc3,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  xor    %ecx,%ecx
  mov    $0xd3,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x1,%ecx
  mov    $0xd4,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x5,%ecx
  mov    $0xd5,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0xd,%ecx
  mov    $0xd6,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0xe,%ecx
  mov    $0xd7,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0xf,%ecx
  mov    $0xd8,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x2f,%ecx
  mov    $0xd9,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x4f,%ecx
  mov    $0xda,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x6f,%ecx
  mov    $0xdb,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x77,%ecx
  mov    $0xdc,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x97,%ecx
  mov    $0xdd,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x79,%ecx
  mov    $0xe9,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0xc,%ecx
  mov    $0xed,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0xb7,%ecx
  mov    $0xef,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x41,%ecx
  mov    $0xcd,%edx
  call   <fc8300b_write@plt>
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x88,%ecx
  mov    $0xce,%edx
  call   <fc8300b_write@plt>
  pop    %rbx
  mov    %r12d,%esi
  mov    %rbp,%rdi
  mov    $0x3,%ecx
  pop    %rbp
  mov    $0xcf,%edx
  pop    %r12
  jmp    1050 <fc8300b_write@plt>
```

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