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

```asm
<__imlib_BlendSpanToRGB>:
  endbr64
  test   %edx,%edx
  je     L8
  mov    %edi,%r8d
  mov    %edi,%eax
  mov    %rsi,%rcx
  mov    %edi,%esi
  shr    $0x10,%r8d
  movzbl %ah,%eax
  lea    -0x1(%rdx),%r10d
  shr    $0x18,%esi
  sub    $0x290,%rsp
  movzbl %r8b,%r8d
  mov    %eax,%r9d
  movzbl %dil,%edi
  cmp    $0xf,%r10d
  jbe    L36
  movd   %r8d,%xmm7
  mov    %r10d,%edx
  movd   %esi,%xmm6
  movdqa D17(%rip),%xmm5
  pshufd $0x0,%xmm7,%xmm7
  shr    $0x4,%edx
  pshufd $0x0,%xmm6,%xmm6
  movdqa D13(%rip),%xmm12
  movaps %xmm7,-0x78(%rsp)
  movd   %eax,%xmm7
  sub    $0x1,%edx
  mov    %rcx,%rax
  pshufd $0x0,%xmm7,%xmm7
  shl    $0x6,%rdx
  movdqa %xmm6,%xmm8
  pxor   %xmm11,%xmm11
  movaps %xmm7,-0x68(%rsp)
  movd   %edi,%xmm7
  lea    0x40(%rcx,%rdx,1),%r11
  pshufd $0x0,%xmm7,%xmm7
  psrlq  $0x20,%xmm8
  movaps %xmm7,-0x58(%rsp)
  pxor   %xmm7,%xmm7
  xchg   %ax,%ax
L28:
  movdqu (%rax),%xmm3
  movdqu 0x10(%rax),%xmm0
  movdqa %xmm5,%xmm13
  add    $0x40,%rax
  movdqu -0x10(%rax),%xmm1
  movdqu -0x40(%rax),%xmm4
  pand   %xmm5,%xmm0
  pand   %xmm5,%xmm3
  movdqa -0x78(%rsp),%xmm15
  packuswb %xmm0,%xmm3
  movdqu -0x20(%rax),%xmm0
  pand   %xmm5,%xmm1
  pand   %xmm3,%xmm13
  psrlw  $0x8,%xmm3
  pand   %xmm5,%xmm0
  psrlw  $0x8,%xmm4
  packuswb %xmm1,%xmm0
  movdqa %xmm5,%xmm1
  pand   %xmm0,%xmm1
  psrlw  $0x8,%xmm0
  packuswb %xmm0,%xmm3
  movdqu -0x30(%rax),%xmm0
  packuswb %xmm1,%xmm13
  movdqu -0x10(%rax),%xmm1
  movdqa %xmm3,%xmm9
  psrlw  $0x8,%xmm0
  psrlw  $0x8,%xmm1
  punpckhbw %xmm11,%xmm9
  packuswb %xmm0,%xmm4
  movdqu -0x20(%rax),%xmm0
  pand   %xmm5,%xmm4
  psrlw  $0x8,%xmm0
  packuswb %xmm1,%xmm0
  movdqa %xmm3,%xmm1
  punpcklbw %xmm11,%xmm1
  pand   %xmm5,%xmm0
  movdqa %xmm1,%xmm2
  packuswb %xmm0,%xmm4
  movdqa %xmm15,%xmm0
  punpcklwd %xmm7,%xmm2
  punpckhwd %xmm7,%xmm1
  psubd  %xmm2,%xmm0
  movdqa %xmm0,%xmm2
  psrlq  $0x20,%xmm0
  pmuludq %xmm6,%xmm2
  pmuludq %xmm8,%xmm0
  pshufd $0x8,%xmm2,%xmm2
  pshufd $0x8,%xmm0,%xmm0
  punpckldq %xmm0,%xmm2
  movdqa %xmm15,%xmm0
  psubd  %xmm1,%xmm0
  movdqa %xmm9,%xmm1
  punpckhwd %xmm7,%xmm9
  movdqa %xmm0,%xmm10
  psrlq  $0x20,%xmm0
  punpcklwd %xmm7,%xmm1
  pmuludq %xmm6,%xmm10
  pmuludq %xmm8,%xmm0
  pshufd $0x8,%xmm10,%xmm10
  pshufd $0x8,%xmm0,%xmm0
  punpckldq %xmm0,%xmm10
  movdqa %xmm15,%xmm0
  psubd  %xmm1,%xmm0
  movdqa %xmm0,%xmm1
  psrlq  $0x20,%xmm0
  pmuludq %xmm6,%xmm1
  pmuludq %xmm8,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  pshufd $0x8,%xmm0,%xmm0
  punpckldq %xmm0,%xmm1
  movdqa %xmm15,%xmm0
  movdqa %xmm10,%xmm15
  psubd  %xmm9,%xmm0
  psrld  $0x8,%xmm15
  movdqa %xmm0,%xmm9
  psrlq  $0x20,%xmm0
  pmuludq %xmm6,%xmm9
  pmuludq %xmm8,%xmm0
  pshufd $0x8,%xmm9,%xmm9
  pshufd $0x8,%xmm0,%xmm0
  punpckldq %xmm0,%xmm9
  movdqa %xmm2,%xmm0
  psrld  $0x8,%xmm0
  movdqa %xmm0,%xmm14
  punpcklwd %xmm15,%xmm0
  punpckhwd %xmm15,%xmm14
  movdqa %xmm0,%xmm15
  punpckhwd %xmm14,%xmm15
  punpcklwd %xmm14,%xmm0
  movdqa %xmm2,%xmm14
  punpcklwd %xmm10,%xmm2
  punpckhwd %xmm10,%xmm14
  punpcklwd %xmm15,%xmm0
  movdqa -0x68(%rsp),%xmm15
  movdqa %xmm2,%xmm10
  punpcklwd %xmm14,%xmm2
  punpckhwd %xmm14,%xmm10
  movdqa %xmm9,%xmm14
  punpcklwd %xmm10,%xmm2
  psrld  $0x8,%xmm14
  movdqa %xmm1,%xmm10
  paddw  %xmm12,%xmm2
  psrld  $0x8,%xmm10
  paddw  %xmm2,%xmm0
  movdqa %xmm10,%xmm2
  punpcklwd %xmm14,%xmm10
  punpckhwd %xmm14,%xmm2
  psrlw  $0x8,%xmm0
  movdqa %xmm10,%xmm14
  punpckhwd %xmm2,%xmm14
  punpcklwd %xmm2,%xmm10
  movdqa %xmm1,%xmm2
  punpcklwd %xmm9,%xmm1
  punpckhwd %xmm9,%xmm2
  punpcklwd %xmm14,%xmm10
  movdqa %xmm1,%xmm9
  punpcklwd %xmm2,%xmm1
  pand   %xmm5,%xmm0
  punpckhwd %xmm2,%xmm9
  movdqa %xmm4,%xmm2
  punpcklwd %xmm9,%xmm1
  punpcklbw %xmm11,%xmm2
  movdqa %xmm4,%xmm9
  paddw  %xmm12,%xmm1
  punpckhbw %xmm11,%xmm9
  paddw  %xmm1,%xmm10
  movdqa %xmm15,%xmm1
  psrlw  $0x8,%xmm10
  pand   %xmm5,%xmm10
  packuswb %xmm10,%xmm0
  paddb  %xmm3,%xmm0
  movdqa %xmm2,%xmm3
  punpckhwd %xmm7,%xmm2
  punpcklwd %xmm7,%xmm3
  psubd  %xmm3,%xmm1
  movdqa %xmm1,%xmm3
  psrlq  $0x20,%xmm1
  pmuludq %xmm6,%xmm3
  pmuludq %xmm8,%xmm1
  pshufd $0x8,%xmm3,%xmm3
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm3
  movdqa %xmm15,%xmm1
  psubd  %xmm2,%xmm1
  movdqa %xmm9,%xmm2
  punpckhwd %xmm7,%xmm9
  movdqa %xmm1,%xmm10
  psrlq  $0x20,%xmm1
  punpcklwd %xmm7,%xmm2
  pmuludq %xmm6,%xmm10
  pmuludq %xmm8,%xmm1
  pshufd $0x8,%xmm10,%xmm10
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm10
  movdqa %xmm15,%xmm1
  psubd  %xmm2,%xmm1
  movdqa %xmm1,%xmm2
  psrlq  $0x20,%xmm1
  pmuludq %xmm6,%xmm2
  pmuludq %xmm8,%xmm1
  pshufd $0x8,%xmm2,%xmm2
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm2
  movdqa %xmm15,%xmm1
  movdqa %xmm10,%xmm15
  psubd  %xmm9,%xmm1
  psrld  $0x8,%xmm15
  movdqa %xmm1,%xmm9
  psrlq  $0x20,%xmm1
  pmuludq %xmm6,%xmm9
  pmuludq %xmm8,%xmm1
  pshufd $0x8,%xmm9,%xmm9
  pshufd $0x8,%xmm1,%xmm1
  punpckldq %xmm1,%xmm9
  movdqa %xmm3,%xmm1
  psrld  $0x8,%xmm1
  movdqa %xmm1,%xmm14
  punpcklwd %xmm15,%xmm1
  punpckhwd %xmm15,%xmm14
  movdqa %xmm1,%xmm15
  punpckhwd %xmm14,%xmm15
  punpcklwd %xmm14,%xmm1
  movdqa %xmm3,%xmm14
  punpcklwd %xmm10,%xmm3
  punpckhwd %xmm10,%xmm14
  punpcklwd %xmm15,%xmm1
  movdqa %xmm3,%xmm10
  punpcklwd %xmm14,%xmm3
  punpckhwd %xmm14,%xmm10
  movdqa %xmm9,%xmm14
  punpcklwd %xmm10,%xmm3
  psrld  $0x8,%xmm14
  movdqa %xmm2,%xmm10
  paddw  %xmm12,%xmm3
  psrld  $0x8,%xmm10
  paddw  %xmm3,%xmm1
  movdqa %xmm10,%xmm3
  punpcklwd %xmm14,%xmm10
  punpckhwd %xmm14,%xmm3
  psrlw  $0x8,%xmm1
  movdqa %xmm10,%xmm14
  punpckhwd %xmm3,%xmm14
  punpcklwd %xmm3,%xmm10
  movdqa %xmm2,%xmm3
  punpcklwd %xmm9,%xmm2
  punpckhwd %xmm9,%xmm3
  punpcklwd %xmm14,%xmm10
  movdqa -0x58(%rsp),%xmm14
  movdqa %xmm2,%xmm9
  punpcklwd %xmm3,%xmm2
  pand   %xmm5,%xmm1
  punpckhwd %xmm3,%xmm9
  movdqa %xmm13,%xmm3
  punpcklwd %xmm9,%xmm2
  punpcklbw %xmm11,%xmm3
  movdqa %xmm13,%xmm9
  paddw  %xmm12,%xmm2
  punpckhbw %xmm11,%xmm9
  paddw  %xmm2,%xmm10
  movdqa %xmm14,%xmm2
  psrlw  $0x8,%xmm10
  pand   %xmm5,%xmm10
  packuswb %xmm10,%xmm1
  paddb  %xmm4,%xmm1
  movdqa %xmm3,%xmm4
  punpckhwd %xmm7,%xmm3
  punpcklwd %xmm7,%xmm4
  psubd  %xmm4,%xmm2
  movdqa %xmm2,%xmm4
  psrlq  $0x20,%xmm2
  pmuludq %xmm6,%xmm4
  pmuludq %xmm8,%xmm2
  pshufd $0x8,%xmm4,%xmm4
  pshufd $0x8,%xmm2,%xmm2
  punpckldq %xmm2,%xmm4
  movdqa %xmm14,%xmm2
  psubd  %xmm3,%xmm2
  movdqa %xmm9,%xmm3
  punpckhwd %xmm7,%xmm9
  movdqa %xmm2,%xmm10
  psrlq  $0x20,%xmm2
  punpcklwd %xmm7,%xmm3
  pmuludq %xmm6,%xmm10
  pmuludq %xmm8,%xmm2
  pshufd $0x8,%xmm10,%xmm10
  pshufd $0x8,%xmm2,%xmm2
  punpckldq %xmm2,%xmm10
  movdqa %xmm14,%xmm2
  psubd  %xmm3,%xmm2
  movdqa %xmm10,%xmm15
  movdqa %xmm2,%xmm3
  psrlq  $0x20,%xmm2
  pmuludq %xmm6,%xmm3
  pmuludq %xmm8,%xmm2
  psrld  $0x8,%xmm15
  pshufd $0x8,%xmm2,%xmm2
  pshufd $0x8,%xmm3,%xmm3
  punpckldq %xmm2,%xmm3
  movdqa %xmm14,%xmm2
  psubd  %xmm9,%xmm2
  movdqa %xmm2,%xmm9
  psrlq  $0x20,%xmm2
  pmuludq %xmm6,%xmm9
  pmuludq %xmm8,%xmm2
  pshufd $0x8,%xmm9,%xmm9
  pshufd $0x8,%xmm2,%xmm2
  punpckldq %xmm2,%xmm9
  movdqa %xmm4,%xmm2
  psrld  $0x8,%xmm2
  movdqa %xmm2,%xmm14
  punpcklwd %xmm15,%xmm2
  punpckhwd %xmm15,%xmm14
  movdqa %xmm2,%xmm15
  punpckhwd %xmm14,%xmm15
  punpcklwd %xmm14,%xmm2
  movdqa %xmm4,%xmm14
  punpcklwd %xmm10,%xmm4
  punpckhwd %xmm10,%xmm14
  punpcklwd %xmm15,%xmm2
  movdqa %xmm4,%xmm10
  punpcklwd %xmm14,%xmm4
  punpckhwd %xmm14,%xmm10
  movdqa %xmm9,%xmm14
  punpcklwd %xmm10,%xmm4
  psrld  $0x8,%xmm14
  paddw  %xmm12,%xmm4
  paddw  %xmm4,%xmm2
  movdqa %xmm3,%xmm4
  psrld  $0x8,%xmm4
  psrlw  $0x8,%xmm2
  movdqa %xmm4,%xmm10
  punpcklwd %xmm14,%xmm4
  pand   %xmm5,%xmm2
  punpckhwd %xmm14,%xmm10
  movdqa %xmm4,%xmm14
  punpckhwd %xmm10,%xmm14
  punpcklwd %xmm10,%xmm4
  movdqa %xmm3,%xmm10
  punpcklwd %xmm9,%xmm3
  punpckhwd %xmm9,%xmm10
  punpcklwd %xmm14,%xmm4
  movdqa %xmm3,%xmm9
  punpcklwd %xmm10,%xmm3
  punpckhwd %xmm10,%xmm9
  punpcklwd %xmm9,%xmm3
  paddw  %xmm12,%xmm3
  paddw  %xmm3,%xmm4
  psrlw  $0x8,%xmm4
  pand   %xmm5,%xmm4
  packuswb %xmm4,%xmm2
  paddb  %xmm13,%xmm2
  movd   %xmm2,%edx
  mov    %dl,-0x40(%rax)
  movaps %xmm2,0x278(%rsp)
  movzbl 0x279(%rsp),%edx
  mov    %dl,-0x3c(%rax)
  movaps %xmm2,0x268(%rsp)
  movzbl 0x26a(%rsp),%edx
  mov    %dl,-0x38(%rax)
  movaps %xmm2,0x258(%rsp)
  movzbl 0x25b(%rsp),%edx
  mov    %dl,-0x34(%rax)
  movaps %xmm2,0x248(%rsp)
  movzbl 0x24c(%rsp),%edx
  mov    %dl,-0x30(%rax)
  movaps %xmm2,0x238(%rsp)
  movzbl 0x23d(%rsp),%edx
  mov    %dl,-0x2c(%rax)
  movaps %xmm2,0x228(%rsp)
  movzbl 0x22e(%rsp),%edx
  mov    %dl,-0x28(%rax)
  movaps %xmm2,0x218(%rsp)
  movzbl 0x21f(%rsp),%edx
  mov    %dl,-0x24(%rax)
  movaps %xmm2,0x208(%rsp)
  movzbl 0x210(%rsp),%edx
  mov    %dl,-0x20(%rax)
  movaps %xmm2,0x1f8(%rsp)
  movzbl 0x201(%rsp),%edx
  mov    %dl,-0x1c(%rax)
  movaps %xmm2,0x1e8(%rsp)
  movzbl 0x1f2(%rsp),%edx
  mov    %dl,-0x18(%rax)
  movaps %xmm2,0x1d8(%rsp)
  movzbl 0x1e3(%rsp),%edx
  mov    %dl,-0x14(%rax)
  movaps %xmm2,0x1c8(%rsp)
  movzbl 0x1d4(%rsp),%edx
  mov    %dl,-0x10(%rax)
  movaps %xmm2,0x1b8(%rsp)
  movzbl 0x1c5(%rsp),%edx
  mov    %dl,-0xc(%rax)
  movaps %xmm2,0x1a8(%rsp)
  movzbl 0x1b6(%rsp),%edx
  mov    %dl,-0x8(%rax)
  movaps %xmm2,0x198(%rsp)
  movzbl 0x1a7(%rsp),%edx
  mov    %dl,-0x4(%rax)
  movd   %xmm1,%edx
  mov    %dl,-0x3f(%rax)
  movaps %xmm1,0x188(%rsp)
  movzbl 0x189(%rsp),%edx
  mov    %dl,-0x3b(%rax)
  movaps %xmm1,0x178(%rsp)
  movzbl 0x17a(%rsp),%edx
  mov    %dl,-0x37(%rax)
  movaps %xmm1,0x168(%rsp)
  movzbl 0x16b(%rsp),%edx
  mov    %dl,-0x33(%rax)
  movaps %xmm1,0x158(%rsp)
  movzbl 0x15c(%rsp),%edx
  mov    %dl,-0x2f(%rax)
  movaps %xmm1,0x148(%rsp)
  movzbl 0x14d(%rsp),%edx
  mov    %dl,-0x2b(%rax)
  movaps %xmm1,0x138(%rsp)
  movzbl 0x13e(%rsp),%edx
  mov    %dl,-0x27(%rax)
  movaps %xmm1,0x128(%rsp)
  movzbl 0x12f(%rsp),%edx
  mov    %dl,-0x23(%rax)
  movaps %xmm1,0x118(%rsp)
  movzbl 0x120(%rsp),%edx
  mov    %dl,-0x1f(%rax)
  movaps %xmm1,0x108(%rsp)
  movzbl 0x111(%rsp),%edx
  mov    %dl,-0x1b(%rax)
  movaps %xmm1,0xf8(%rsp)
  movzbl 0x102(%rsp),%edx
  mov    %dl,-0x17(%rax)
  movaps %xmm1,0xe8(%rsp)
  movzbl 0xf3(%rsp),%edx
  mov    %dl,-0x13(%rax)
  movaps %xmm1,0xd8(%rsp)
  movzbl 0xe4(%rsp),%edx
  mov    %dl,-0xf(%rax)
  movaps %xmm1,0xc8(%rsp)
  movzbl 0xd5(%rsp),%edx
  mov    %dl,-0xb(%rax)
  movaps %xmm1,0xb8(%rsp)
  movzbl 0xc6(%rsp),%edx
  mov    %dl,-0x7(%rax)
  movaps %xmm1,0xa8(%rsp)
  movzbl 0xb7(%rsp),%edx
  mov    %dl,-0x3(%rax)
  movd   %xmm0,%edx
  mov    %dl,-0x3e(%rax)
  movaps %xmm0,0x98(%rsp)
  movzbl 0x99(%rsp),%edx
  mov    %dl,-0x3a(%rax)
  movaps %xmm0,0x88(%rsp)
  movzbl 0x8a(%rsp),%edx
  mov    %dl,-0x36(%rax)
  movaps %xmm0,0x78(%rsp)
  movzbl 0x7b(%rsp),%edx
  mov    %dl,-0x32(%rax)
  movaps %xmm0,0x68(%rsp)
  movzbl 0x6c(%rsp),%edx
  mov    %dl,-0x2e(%rax)
  movaps %xmm0,0x58(%rsp)
  movzbl 0x5d(%rsp),%edx
  mov    %dl,-0x2a(%rax)
  movaps %xmm0,0x48(%rsp)
  movzbl 0x4e(%rsp),%edx
  mov    %dl,-0x26(%rax)
  movaps %xmm0,0x38(%rsp)
  movzbl 0x3f(%rsp),%edx
  mov    %dl,-0x22(%rax)
  movaps %xmm0,0x28(%rsp)
  movzbl 0x30(%rsp),%edx
  mov    %dl,-0x1e(%rax)
  movaps %xmm0,0x18(%rsp)
  movzbl 0x21(%rsp),%edx
  mov    %dl,-0x1a(%rax)
  movaps %xmm0,0x8(%rsp)
  movzbl 0x12(%rsp),%edx
  mov    %dl,-0x16(%rax)
  movaps %xmm0,-0x8(%rsp)
  movzbl 0x3(%rsp),%edx
  mov    %dl,-0x12(%rax)
  movaps %xmm0,-0x18(%rsp)
  movzbl -0xc(%rsp),%edx
  mov    %dl,-0xe(%rax)
  movaps %xmm0,-0x28(%rsp)
  movzbl -0x1b(%rsp),%edx
  mov    %dl,-0xa(%rax)
  movaps %xmm0,-0x38(%rsp)
  movzbl -0x2a(%rsp),%edx
  mov    %dl,-0x6(%rax)
  movaps %xmm0,-0x48(%rsp)
  movzbl -0x39(%rsp),%edx
  mov    %dl,-0x2(%rax)
  cmp    %r11,%rax
  jne    L28
  mov    %r10d,%eax
  and    $0xfffffff0,%eax
  mov    %eax,%edx
  sub    %eax,%r10d
  lea    (%rcx,%rdx,4),%rcx
L36:
  lea    0x4(%rcx,%r10,4),%r10
  nopl   0x0(%rax,%rax,1)
L32:
  movzbl 0x2(%rcx),%r11d
  mov    %r8d,%edx
  add    $0x4,%rcx
  sub    %r11d,%edx
  mov    %r11d,%eax
  imul   %esi,%edx
  mov    %edx,%r11d
  shr    $0x8,%r11d
  lea    0x80(%rdx,%r11,1),%edx
  movzbl -0x3(%rcx),%r11d
  shr    $0x8,%edx
  add    %edx,%eax
  mov    %r9d,%edx
  sub    %r11d,%edx
  mov    %al,-0x2(%rcx)
  mov    %r11d,%eax
  imul   %esi,%edx
  mov    %edx,%r11d
  shr    $0x8,%r11d
  lea    0x80(%rdx,%r11,1),%edx
  movzbl -0x4(%rcx),%r11d
  shr    $0x8,%edx
  add    %edx,%eax
  mov    %edi,%edx
  sub    %r11d,%edx
  mov    %al,-0x3(%rcx)
  mov    %r11d,%eax
  imul   %esi,%edx
  mov    %edx,%r11d
  shr    $0x8,%r11d
  lea    0x80(%rdx,%r11,1),%edx
  shr    $0x8,%edx
  add    %edx,%eax
  mov    %al,-0x4(%rcx)
  cmp    %rcx,%r10
  jne    L32
  add    $0x290,%rsp
  ret
  nopl   0x0(%rax,%rax,1)
L8:
  ret
```

tool_calls: name: retrieve_data
arguments: data_tag: D17
type: byte[16]
name: retrieve_data
arguments: data_tag: D13
type: byte[16]

tool: {"D17": [0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00]}

tool: {"D13": [0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00]}

assistant: ```c
void __imlib_BlendSpanToRGB(unsigned int color, unsigned int *dst, int len) {
  while (len--) {
    unsigned int tmp;
    tmp = ((((unsigned char *)(&color))[2]) - (((unsigned char *)(dst))[2])) * (((unsigned char *)(&color))[3]);
    ((unsigned char *)(dst))[2] = (((unsigned char *)(dst))[2]) + ((tmp + (tmp >> 8) + 0x80) >> 8);
    ;
    tmp = ((((unsigned char *)(&color))[1]) - (((unsigned char *)(dst))[1])) * (((unsigned char *)(&color))[3]);
    ((unsigned char *)(dst))[1] = (((unsigned char *)(dst))[1]) + ((tmp + (tmp >> 8) + 0x80) >> 8);
    ;
    tmp = ((((unsigned char *)(&color))[0]) - (((unsigned char *)(dst))[0])) * (((unsigned char *)(&color))[3]);
    ((unsigned char *)(dst))[0] = (((unsigned char *)(dst))[0]) + ((tmp + (tmp >> 8) + 0x80) >> 8);
    ;
    ;
    dst++;
  }
}
```