user: Demonstrate the C code that generates the assembly output below:

```asm
<form_component_prediction>:
  endbr64
  push   %r15
  mov    %ecx,%r15d
  push   %r14
  mov    %edx,%r14d
  push   %r13
  push   %r12
  push   %rbp
  mov    %r8d,%ebp
  push   %rbx
  sub    $0x28,%rsp
  mov    0x78(%rsp),%r8d
  mov    0x68(%rsp),%eax
  mov    %r9d,0x4(%rsp)
  mov    0x70(%rsp),%ecx
  movslq 0x60(%rsp),%r9
  mov    %r8d,%edx
  mov    0x80(%rsp),%r12d
  and    $0x1,%r8d
  sar    %edx
  mov    %ecx,%r10d
  and    $0x1,%ecx
  add    %eax,%edx
  imul   %r14d,%eax
  sar    %r10d
  imul   %r14d,%edx
  movslq %r10d,%r10
  add    %r9,%r10
  cltq
  movslq %edx,%rdx
  add    %r9,%rax
  mov    %ecx,%r9d
  add    %r10,%rdx
  lea    (%rsi,%rax,1),%rbx
  lea    (%rdi,%rdx,1),%r13
  cmp    %rbx,%r13
  je     L321
L853:
  test   %r9d,%r9d
  je     L510
  test   %r8d,%r8d
  jne    L1114
  test   %r12d,%r12d
  jne    L730
  mov    0x4(%rsp),%esi
  test   %esi,%esi
  jle    L238
  movslq %r15d,%rax
  test   %ebp,%ebp
  jle    L238
  mov    %ebp,%r15d
  mov    %ebp,%edx
  mov    %ebp,%r8d
  xor    %edi,%edi
  and    $0xf,%r15d
  shr    $0x4,%edx
  lea    -0x1(%rbp),%r11d
  and    $0xfffffff0,%r8d
  lea    -0x1(%r15),%ecx
  lea    -0x1(%rdx),%esi
  mov    %ebp,%r10d
  mov    %ecx,0x8(%rsp)
  add    $0x1,%rsi
  shl    $0x4,%rsi
  nopl   0x0(%rax)
L645:
  lea    0x1(%r13),%rcx
  mov    %rbx,%rdx
  sub    %rcx,%rdx
  cmp    $0xf,%rdx
  jbe    L820
  cmp    $0x6,%r11d
  jbe    L820
  cmp    $0xe,%r11d
  jbe    L1034
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L1336:
  movdqu 0x0(%r13,%rdx,1),%xmm0
  movdqu 0x1(%r13,%rdx,1),%xmm4
  pavgb  %xmm4,%xmm0
  movups %xmm0,(%rbx,%rdx,1)
  add    $0x10,%rdx
  cmp    %rsi,%rdx
  jne    L1336
  cmp    %r8d,%ebp
  je     L1523
  cmpl   $0x6,0x8(%rsp)
  mov    %r15d,%r9d
  jbe    L1358
  mov    %r8d,%edx
  mov    %r8d,%ecx
L265:
  movq   0x0(%r13,%rdx,1),%xmm0
  movq   0x1(%r13,%rdx,1),%xmm1
  pavgb  %xmm1,%xmm0
  movq   %xmm0,(%rbx,%rdx,1)
  mov    %r9d,%edx
  and    $0xfffffff8,%edx
  add    %edx,%ecx
  cmp    %edx,%r9d
  je     L1523
L1165:
  movslq %ecx,%rdx
  lea    0x1(%r13,%rdx,1),%r9
  movzbl 0x0(%r13,%rdx,1),%r14d
  movzbl (%r9),%r12d
  lea    0x1(%r14,%r12,1),%r12d
  shr    %r12d
  mov    %r12b,(%rbx,%rdx,1)
  lea    0x1(%rcx),%r12d
  cmp    %r12d,%ebp
  jle    L1523
  lea    0x2(%r13,%rdx,1),%r12
  movzbl (%r9),%r9d
  movzbl (%r12),%r14d
  lea    0x1(%r14,%r9,1),%r9d
  shr    %r9d
  mov    %r9b,0x1(%rbx,%rdx,1)
  lea    0x2(%rcx),%r9d
  cmp    %r9d,%ebp
  jle    L1523
  lea    0x3(%r13,%rdx,1),%r9
  movzbl (%r12),%r12d
  movzbl (%r9),%r14d
  lea    0x1(%r14,%r12,1),%r12d
  shr    %r12d
  mov    %r12b,0x2(%rbx,%rdx,1)
  lea    0x3(%rcx),%r12d
  cmp    %r12d,%ebp
  jle    L1523
  lea    0x4(%r13,%rdx,1),%r12
  movzbl (%r9),%r9d
  movzbl (%r12),%r14d
  lea    0x1(%r14,%r9,1),%r9d
  shr    %r9d
  mov    %r9b,0x3(%rbx,%rdx,1)
  lea    0x4(%rcx),%r9d
  cmp    %r9d,%ebp
  jle    L1523
  lea    0x5(%r13,%rdx,1),%r9
  movzbl (%r12),%r12d
  movzbl (%r9),%r14d
  lea    0x1(%r14,%r12,1),%r12d
  shr    %r12d
  mov    %r12b,0x4(%rbx,%rdx,1)
  lea    0x5(%rcx),%r12d
  cmp    %r12d,%ebp
  jle    L1523
  lea    0x6(%r13,%rdx,1),%r12
  movzbl (%r9),%r9d
  add    $0x6,%ecx
  movzbl (%r12),%r14d
  lea    0x1(%r14,%r9,1),%r9d
  shr    %r9d
  mov    %r9b,0x5(%rbx,%rdx,1)
  cmp    %ecx,%ebp
  jle    L1523
  movzbl 0x7(%r13,%rdx,1),%ecx
  movzbl (%r12),%r9d
  lea    0x1(%rcx,%r9,1),%ecx
  shr    %ecx
  mov    %cl,0x6(%rbx,%rdx,1)
L1523:
  add    %rax,%r13
  add    %rax,%rbx
  add    $0x1,%edi
  cmp    %edi,0x4(%rsp)
  jne    L645
  jmp    L238
L1114:
  test   %r12d,%r12d
  je     L793
  mov    0x4(%rsp),%eax
  test   %eax,%eax
  jle    L238
  movslq %r15d,%r8
  test   %ebp,%ebp
  jle    L238
  movslq %r14d,%rcx
  mov    %ebp,%r14d
  mov    %ebp,%edx
  movdqa D43(%rip),%xmm5
  and    $0xfffffff0,%r14d
  shr    $0x4,%edx
  lea    0x1(%r13,%rcx,1),%r9
  lea    0x1(%r13),%rax
  mov    %r14d,%esi
  lea    -0x1(%rdx),%r10d
  add    %r13,%rcx
  xor    %r11d,%r11d
  mov    %rsi,0x8(%rsp)
  add    $0x1,%r10
  lea    -0x1(%rbp),%r13d
  mov    %ebp,%r12d
  movdqa D6(%rip),%xmm4
  movdqa D66(%rip),%xmm3
  shl    $0x4,%r10
  pxor   %xmm2,%xmm2
  nopl   0x0(%rax)
L1410:
  mov    %rbx,%rdx
  lea    -0x1(%rax),%rsi
  sub    %r9,%rdx
  cmp    $0xf,%rdx
  mov    %rbx,%rdx
  seta   %dil
  sub    %rax,%rdx
  cmp    $0xf,%rdx
  seta   %dl
  test   %dl,%dil
  je     L644
  xor    %edx,%edx
  cmp    $0xe,%r13d
  jbe    L644
  nopl   0x0(%rax)
L244:
  movdqu (%rsi,%rdx,1),%xmm9
  movdqu 0x1(%rsi,%rdx,1),%xmm0
  movdqu (%rcx,%rdx,1),%xmm8
  movdqu (%r9,%rdx,1),%xmm7
  movdqa %xmm9,%xmm10
  movdqa %xmm0,%xmm1
  movdqu (%rbx,%rdx,1),%xmm6
  punpckhbw %xmm2,%xmm9
  punpcklbw %xmm2,%xmm10
  punpcklbw %xmm2,%xmm1
  movdqa %xmm8,%xmm11
  paddw  %xmm10,%xmm1
  movdqa %xmm7,%xmm10
  punpcklbw %xmm2,%xmm11
  punpcklbw %xmm2,%xmm10
  punpckhbw %xmm2,%xmm0
  punpckhbw %xmm2,%xmm8
  punpckhbw %xmm2,%xmm7
  paddw  %xmm11,%xmm10
  paddw  %xmm9,%xmm0
  paddw  %xmm8,%xmm7
  paddw  %xmm10,%xmm1
  movdqa %xmm6,%xmm10
  paddw  %xmm7,%xmm0
  paddw  %xmm5,%xmm1
  punpcklbw %xmm2,%xmm10
  paddw  %xmm5,%xmm0
  punpckhbw %xmm2,%xmm6
  paddw  %xmm4,%xmm10
  psrlw  $0x2,%xmm1
  psrlw  $0x2,%xmm0
  paddw  %xmm4,%xmm6
  paddw  %xmm10,%xmm1
  paddw  %xmm6,%xmm0
  psrlw  $0x1,%xmm1
  psrlw  $0x1,%xmm0
  pand   %xmm3,%xmm1
  pand   %xmm3,%xmm0
  packuswb %xmm0,%xmm1
  movups %xmm1,(%rbx,%rdx,1)
  add    $0x10,%rdx
  cmp    %rdx,%r10
  jne    L244
  cmp    %r14d,%ebp
  je     L1362
  mov    0x8(%rsp),%rdx
  nopl   (%rax)
L1279:
  movzbl 0x1(%rsi,%rdx,1),%r15d
  movzbl (%rsi,%rdx,1),%edi
  add    %r15d,%edi
  movzbl (%rcx,%rdx,1),%r15d
  add    %r15d,%edi
  movzbl 0x1(%rcx,%rdx,1),%r15d
  lea    0x2(%rdi,%r15,1),%edi
  movzbl (%rbx,%rdx,1),%r15d
  shr    $0x2,%edi
  lea    0x1(%rdi,%r15,1),%edi
  sar    %edi
  mov    %dil,(%rbx,%rdx,1)
  add    $0x1,%rdx
  cmp    %edx,%ebp
  jg     L1279
L1362:
  add    %r8,%rbx
  add    $0x1,%r11d
  add    %r8,%r9
  add    %r8,%rcx
  add    %r8,%rax
  cmp    %r11d,0x4(%rsp)
  jne    L1410
  jmp    L238
  nopl   0x0(%rax,%rax,1)
L510:
  test   %r8d,%r8d
  jne    L812
  test   %r12d,%r12d
  je     L1348
  mov    0x4(%rsp),%ecx
  test   %ecx,%ecx
  jle    L238
  movslq %r15d,%rax
  test   %ebp,%ebp
  jle    L238
  mov    %ebp,%edx
  mov    %ebp,%r12d
  mov    %ebp,%r9d
  xor    %r8d,%r8d
  and    $0xf,%r12d
  shr    $0x4,%edx
  lea    -0x1(%rbp),%r11d
  and    $0xfffffff0,%r9d
  lea    -0x1(%rdx),%esi
  mov    %r12d,0x4(%rsp)
  lea    -0x1(%r12),%r14d
  mov    %rbx,%rdx
  mov    %ecx,%r12d
  lea    0x1(%r13),%rcx
  add    $0x1,%rsi
  mov    %ebp,%r10d
  sub    %rcx,%rdx
  shl    $0x4,%rsi
  cmp    $0xe,%rdx
  jbe    L1202
  nopw   0x0(%rax,%rax,1)
L306:
  cmp    $0x6,%r11d
  jbe    L1202
  cmp    $0xe,%r11d
  jbe    L755
  xor    %edx,%edx
  xchg   %ax,%ax
L1045:
  movdqu (%rbx,%rdx,1),%xmm0
  movdqu 0x0(%r13,%rdx,1),%xmm4
  pavgb  %xmm4,%xmm0
  movups %xmm0,(%rbx,%rdx,1)
  add    $0x10,%rdx
  cmp    %rsi,%rdx
  jne    L1045
  cmp    %ebp,%r9d
  je     L904
  mov    0x4(%rsp),%edi
  mov    %r9d,%edx
  mov    %r9d,%ecx
  cmp    $0x6,%r14d
  jbe    L557
L222:
  lea    (%rbx,%rcx,1),%r15
  movq   0x0(%r13,%rcx,1),%xmm1
  mov    %edi,%ecx
  movq   (%r15),%xmm0
  and    $0xfffffff8,%ecx
  add    %ecx,%edx
  pavgb  %xmm1,%xmm0
  movq   %xmm0,(%r15)
  cmp    %edi,%ecx
  je     L904
L557:
  movslq %edx,%rdi
  lea    (%rbx,%rdi,1),%rcx
  movzbl 0x0(%r13,%rdi,1),%r15d
  movzbl (%rcx),%edi
  lea    0x1(%r15,%rdi,1),%edi
  sar    %edi
  mov    %dil,(%rcx)
  lea    0x1(%rdx),%ecx
  cmp    %ebp,%ecx
  jge    L904
  movslq %ecx,%rdi
  lea    (%rbx,%rdi,1),%rcx
  movzbl 0x0(%r13,%rdi,1),%r15d
  movzbl (%rcx),%edi
  lea    0x1(%r15,%rdi,1),%edi
  sar    %edi
  mov    %dil,(%rcx)
  lea    0x2(%rdx),%ecx
  cmp    %ebp,%ecx
  jge    L904
  movslq %ecx,%rdi
  lea    (%rbx,%rdi,1),%rcx
  movzbl 0x0(%r13,%rdi,1),%r15d
  movzbl (%rcx),%edi
  lea    0x1(%r15,%rdi,1),%edi
  sar    %edi
  mov    %dil,(%rcx)
  lea    0x3(%rdx),%ecx
  cmp    %ebp,%ecx
  jge    L904
  movslq %ecx,%rdi
  lea    (%rbx,%rdi,1),%rcx
  movzbl 0x0(%r13,%rdi,1),%r15d
  movzbl (%rcx),%edi
  lea    0x1(%r15,%rdi,1),%edi
  sar    %edi
  mov    %dil,(%rcx)
  lea    0x4(%rdx),%ecx
  cmp    %ecx,%ebp
  jle    L904
  movslq %ecx,%rdi
  lea    (%rbx,%rdi,1),%rcx
  movzbl 0x0(%r13,%rdi,1),%r15d
  movzbl (%rcx),%edi
  lea    0x1(%r15,%rdi,1),%edi
  sar    %edi
  mov    %dil,(%rcx)
  lea    0x5(%rdx),%ecx
  cmp    %ebp,%ecx
  jge    L904
  movslq %ecx,%rdi
  add    $0x6,%edx
  lea    (%rbx,%rdi,1),%rcx
  movzbl 0x0(%r13,%rdi,1),%r15d
  movzbl (%rcx),%edi
  lea    0x1(%r15,%rdi,1),%edi
  sar    %edi
  mov    %dil,(%rcx)
  cmp    %ebp,%edx
  jge    L904
  movslq %edx,%rdx
  lea    (%rbx,%rdx,1),%rcx
  movzbl 0x0(%r13,%rdx,1),%edi
  movzbl (%rcx),%edx
  lea    0x1(%rdi,%rdx,1),%edx
  sar    %edx
  mov    %dl,(%rcx)
L904:
  add    $0x1,%r8d
  add    %rax,%r13
  add    %rax,%rbx
  cmp    %r8d,%r12d
  je     L238
  lea    0x1(%r13),%rcx
  mov    %rbx,%rdx
  sub    %rcx,%rdx
  cmp    $0xe,%rdx
  ja     L306
L1202:
  xor    %edx,%edx
  nopl   (%rax)
L953:
  movzbl 0x0(%r13,%rdx,1),%edi
  movzbl (%rbx,%rdx,1),%ecx
  lea    0x1(%rdi,%rcx,1),%ecx
  sar    %ecx
  mov    %cl,(%rbx,%rdx,1)
  add    $0x1,%rdx
  cmp    %rdx,%r10
  jne    L953
  jmp    L904
  xchg   %ax,%ax
L812:
  test   %r12d,%r12d
  je     L320
  mov    0x4(%rsp),%edi
  test   %edi,%edi
  jle    L238
  movslq %r15d,%rax
  test   %ebp,%ebp
  jle    L238
  movslq %r14d,%rsi
  mov    %ebp,%edx
  mov    %ebp,%r12d
  xor    %r10d,%r10d
  mov    %rsi,0x10(%rsp)
  lea    0x0(%r13,%rsi,1),%rcx
  lea    -0x1(%rbp),%esi
  shr    $0x4,%edx
  mov    %esi,0x8(%rsp)
  mov    %ebp,%esi
  lea    -0x1(%rdx),%edi
  and    $0xfffffff0,%r12d
  and    $0xf,%esi
  add    $0x1,%rdi
  mov    %ebp,%r15d
  mov    %esi,0x18(%rsp)
  sub    $0x1,%esi
  shl    $0x4,%rdi
  mov    %esi,0x1c(%rsp)
  nopl   0x0(%rax)
L12:
  lea    0x1(%rcx),%rsi
  mov    %rbx,%rdx
  sub    %rsi,%rdx
  cmp    $0xe,%rdx
  seta   %sil
  cmpl   $0x6,0x8(%rsp)
  seta   %dl
  test   %dl,%sil
  je     L784
  lea    0x1(%r13),%rsi
  mov    %rbx,%rdx
  sub    %rsi,%rdx
  cmp    $0xe,%rdx
  jbe    L784
  cmpl   $0xe,0x8(%rsp)
  jbe    L1122
  xor    %edx,%edx
  nopl   0x0(%rax)
L1139:
  movdqu 0x0(%r13,%rdx,1),%xmm0
  movdqu (%rcx,%rdx,1),%xmm4
  movdqu (%rbx,%rdx,1),%xmm5
  pavgb  %xmm4,%xmm0
  pavgb  %xmm5,%xmm0
  movups %xmm0,(%rbx,%rdx,1)
  add    $0x10,%rdx
  cmp    %rdx,%rdi
  jne    L1139
  cmp    %r12d,%ebp
  je     L907
  cmpl   $0x6,0x1c(%rsp)
  mov    0x18(%rsp),%r9d
  jbe    L1534
  mov    %r12d,%esi
  mov    %r12d,%edx
L1281:
  mov    0x10(%rsp),%r11
  movq   0x0(%r13,%rsi,1),%xmm1
  lea    (%rbx,%rsi,1),%r8
  add    %r13,%r11
  movq   (%r11,%rsi,1),%xmm0
  mov    %r9d,%esi
  and    $0xfffffff8,%esi
  pavgb  %xmm0,%xmm1
  movq   (%r8),%xmm0
  add    %esi,%edx
  pavgb  %xmm1,%xmm0
  movq   %xmm0,(%r8)
  cmp    %r9d,%esi
  je     L907
L1141:
  lea    (%r14,%rdx,1),%esi
  movslq %edx,%r9
  movslq %esi,%rsi
  lea    (%rbx,%r9,1),%r8
  movzbl 0x0(%r13,%r9,1),%r9d
  movzbl 0x0(%r13,%rsi,1),%esi
  lea    0x1(%rsi,%r9,1),%esi
  movzbl (%r8),%r9d
  shr    %esi
  lea    0x1(%rsi,%r9,1),%esi
  sar    %esi
  mov    %sil,(%r8)
  lea    0x1(%rdx),%esi
  cmp    %esi,%ebp
  jle    L907
  movslq %esi,%r9
  add    %r14d,%esi
  movslq %esi,%rsi
  lea    (%rbx,%r9,1),%r8
  movzbl 0x0(%r13,%r9,1),%r9d
  movzbl 0x0(%r13,%rsi,1),%esi
  lea    0x1(%rsi,%r9,1),%esi
  movzbl (%r8),%r9d
  shr    %esi
  lea    0x1(%rsi,%r9,1),%esi
  sar    %esi
  mov    %sil,(%r8)
  lea    0x2(%rdx),%esi
  cmp    %esi,%ebp
  jle    L907
  movslq %esi,%r9
  add    %r14d,%esi
  movslq %esi,%rsi
  lea    (%rbx,%r9,1),%r8
  movzbl 0x0(%r13,%r9,1),%r9d
  movzbl 0x0(%r13,%rsi,1),%esi
  lea    0x1(%rsi,%r9,1),%esi
  movzbl (%r8),%r9d
  shr    %esi
  lea    0x1(%rsi,%r9,1),%esi
  sar    %esi
  mov    %sil,(%r8)
  lea    0x3(%rdx),%esi
  cmp    %ebp,%esi
  jge    L907
  movslq %esi,%r9
  add    %r14d,%esi
  movslq %esi,%rsi
  lea    (%rbx,%r9,1),%r8
  movzbl 0x0(%r13,%r9,1),%r9d
  movzbl 0x0(%r13,%rsi,1),%esi
  lea    0x1(%rsi,%r9,1),%esi
  movzbl (%r8),%r9d
  shr    %esi
  lea    0x1(%rsi,%r9,1),%esi
  sar    %esi
  mov    %sil,(%r8)
  lea    0x4(%rdx),%esi
  cmp    %esi,%ebp
  jle    L907
  movslq %esi,%r9
  add    %r14d,%esi
  movslq %esi,%rsi
  lea    (%rbx,%r9,1),%r8
  movzbl 0x0(%r13,%r9,1),%r9d
  movzbl 0x0(%r13,%rsi,1),%esi
  lea    0x1(%rsi,%r9,1),%esi
  movzbl (%r8),%r9d
  shr    %esi
  lea    0x1(%rsi,%r9,1),%esi
  sar    %esi
  mov    %sil,(%r8)
  lea    0x5(%rdx),%esi
  cmp    %esi,%ebp
  jle    L907
  movslq %esi,%r9
  add    %r14d,%esi
  add    $0x6,%edx
  movslq %esi,%rsi
  lea    (%rbx,%r9,1),%r8
  movzbl 0x0(%r13,%r9,1),%r9d
  movzbl 0x0(%r13,%rsi,1),%esi
  lea    0x1(%rsi,%r9,1),%esi
  movzbl (%r8),%r9d
  shr    %esi
  lea    0x1(%rsi,%r9,1),%esi
  sar    %esi
  mov    %sil,(%r8)
  cmp    %edx,%ebp
  jle    L907
  movslq %edx,%r8
  add    %r14d,%edx
  movslq %edx,%rdx
  lea    (%rbx,%r8,1),%rsi
  movzbl 0x0(%r13,%r8,1),%r8d
  movzbl 0x0(%r13,%rdx,1),%edx
  lea    0x1(%rdx,%r8,1),%edx
  movzbl (%rsi),%r8d
  shr    %edx
  lea    0x1(%rdx,%r8,1),%edx
  sar    %edx
  mov    %dl,(%rsi)
L907:
  add    %rax,%r13
  add    %rax,%rbx
  add    $0x1,%r10d
  add    %rax,%rcx
  cmp    %r10d,0x4(%rsp)
  jne    L12
  jmp    L238
  nopw   0x0(%rax,%rax,1)
L321:
  mov    %ecx,0x8(%rsp)
  mov    $0x1da,%edx
  lea    D26(%rip),%rcx
  lea    D15(%rip),%rsi
  lea    D55(%rip),%rdi
  mov    %r8d,0x10(%rsp)
  call   <__assert_fail@plt>
  mov    0x10(%rsp),%r8d
  mov    0x8(%rsp),%r9d
  jmp    L853
  nopw   0x0(%rax,%rax,1)
L1348:
  mov    0x4(%rsp),%edx
  test   %edx,%edx
  jle    L238
  movslq %r15d,%r8
  test   %ebp,%ebp
  jle    L238
  mov    %ebp,%eax
  mov    %ebp,%r11d
  mov    %ebp,%edi
  xor    %esi,%esi
  shr    $0x4,%eax
  and    $0xf,%r11d
  lea    -0x1(%rbp),%r10d
  and    $0xfffffff0,%edi
  lea    -0x1(%rax),%ecx
  lea    -0x1(%r11),%r12d
  mov    %ebp,%r9d
  add    $0x1,%rcx
  shl    $0x4,%rcx
L504:
  lea    0x1(%r13),%r14
  mov    %rbx,%rax
  sub    %r14,%rax
  cmp    $0xe,%rax
  jbe    L97
  cmp    $0x6,%r10d
  jbe    L97
  cmp    $0xe,%r10d
  jbe    L4
  xor    %eax,%eax
  nopw   0x0(%rax,%rax,1)
L785:
  movdqu 0x0(%r13,%rax,1),%xmm5
  movups %xmm5,(%rbx,%rax,1)
  add    $0x10,%rax
  cmp    %rax,%rcx
  jne    L785
  cmp    %ebp,%edi
  je     L967
  mov    %r11d,%r15d
  mov    %edi,%eax
  mov    %edi,%r14d
  cmp    $0x6,%r12d
  jbe    L1166
L1448:
  movq   0x0(%r13,%r14,1),%xmm0
  movq   %xmm0,(%rbx,%r14,1)
  mov    %r15d,%r14d
  and    $0xfffffff8,%r14d
  add    %r14d,%eax
  cmp    %r15d,%r14d
  je     L967
L1166:
  movslq %eax,%r14
  movzbl 0x0(%r13,%r14,1),%r15d
  mov    %r15b,(%rbx,%r14,1)
  lea    0x1(%rax),%r14d
  cmp    %ebp,%r14d
  jge    L967
  movslq %r14d,%r14
  movzbl 0x0(%r13,%r14,1),%r15d
  mov    %r15b,(%rbx,%r14,1)
  lea    0x2(%rax),%r14d
  cmp    %ebp,%r14d
  jge    L967
  movslq %r14d,%r14
  movzbl 0x0(%r13,%r14,1),%r15d
  mov    %r15b,(%rbx,%r14,1)
  lea    0x3(%rax),%r14d
  cmp    %ebp,%r14d
  jge    L967
  movslq %r14d,%r14
  movzbl 0x0(%r13,%r14,1),%r15d
  mov    %r15b,(%rbx,%r14,1)
  lea    0x4(%rax),%r14d
  cmp    %ebp,%r14d
  jge    L967
  movslq %r14d,%r14
  movzbl 0x0(%r13,%r14,1),%r15d
  mov    %r15b,(%rbx,%r14,1)
  lea    0x5(%rax),%r14d
  cmp    %ebp,%r14d
  jge    L967
  movslq %r14d,%r14
  add    $0x6,%eax
  movzbl 0x0(%r13,%r14,1),%r15d
  mov    %r15b,(%rbx,%r14,1)
  cmp    %ebp,%eax
  jge    L967
  cltq
  movzbl 0x0(%r13,%rax,1),%r14d
  mov    %r14b,(%rbx,%rax,1)
L967:
  add    $0x1,%esi
  add    %r8,%r13
  add    %r8,%rbx
  cmp    %esi,%edx
  jne    L504
L238:
  add    $0x28,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax,%rax,1)
L793:
  mov    0x4(%rsp),%edx
  test   %edx,%edx
  jle    L238
  movslq %r15d,%r8
  test   %ebp,%ebp
  jle    L238
  movslq %r14d,%rdx
  mov    %ebp,%r14d
  mov    %ebp,%ecx
  movdqa D43(%rip),%xmm5
  and    $0xfffffff0,%r14d
  shr    $0x4,%ecx
  lea    0x1(%r13,%rdx,1),%r9
  lea    0x1(%r13),%rax
  mov    %r14d,%esi
  lea    -0x1(%rcx),%r10d
  add    %r13,%rdx
  mov    %ebp,%r11d
  mov    %rsi,0x8(%rsp)
  add    $0x1,%r10
  lea    -0x1(%rbp),%r13d
  pxor   %xmm2,%xmm2
  movdqa D66(%rip),%xmm4
  shl    $0x4,%r10
  nopl   0x0(%rax)
L1339:
  mov    %rbx,%rcx
  lea    -0x1(%rax),%rsi
  sub    %r9,%rcx
  cmp    $0xf,%rcx
  mov    %rbx,%rcx
  seta   %dil
  sub    %rax,%rcx
  cmp    $0xf,%rcx
  seta   %cl
  test   %cl,%dil
  je     L1447
  xor    %ecx,%ecx
  cmp    $0xe,%r13d
  jbe    L1447
  nopl   0x0(%rax)
L169:
  movdqu (%rsi,%rcx,1),%xmm7
  movdqu 0x1(%rsi,%rcx,1),%xmm0
  movdqu (%rdx,%rcx,1),%xmm6
  movdqu (%r9,%rcx,1),%xmm3
  movdqa %xmm7,%xmm8
  movdqa %xmm0,%xmm1
  punpckhbw %xmm2,%xmm7
  punpcklbw %xmm2,%xmm8
  punpcklbw %xmm2,%xmm1
  movdqa %xmm6,%xmm9
  paddw  %xmm8,%xmm1
  movdqa %xmm3,%xmm8
  punpcklbw %xmm2,%xmm9
  punpcklbw %xmm2,%xmm8
  punpckhbw %xmm2,%xmm0
  punpckhbw %xmm2,%xmm6
  punpckhbw %xmm2,%xmm3
  paddw  %xmm9,%xmm8
  paddw  %xmm7,%xmm0
  paddw  %xmm6,%xmm3
  paddw  %xmm8,%xmm1
  paddw  %xmm3,%xmm0
  paddw  %xmm5,%xmm1
  paddw  %xmm5,%xmm0
  psrlw  $0x2,%xmm1
  psrlw  $0x2,%xmm0
  pand   %xmm4,%xmm1
  pand   %xmm4,%xmm0
  packuswb %xmm0,%xmm1
  movups %xmm1,(%rbx,%rcx,1)
  add    $0x10,%rcx
  cmp    %r10,%rcx
  jne    L169
  cmp    %r14d,%ebp
  je     L1497
  mov    0x8(%rsp),%rcx
  nopl   0x0(%rax,%rax,1)
L775:
  movzbl 0x1(%rsi,%rcx,1),%r15d
  movzbl (%rsi,%rcx,1),%edi
  add    %r15d,%edi
  movzbl (%rdx,%rcx,1),%r15d
  add    %r15d,%edi
  movzbl 0x1(%rdx,%rcx,1),%r15d
  lea    0x2(%rdi,%r15,1),%edi
  shr    $0x2,%edi
  mov    %dil,(%rbx,%rcx,1)
  add    $0x1,%rcx
  cmp    %ecx,%ebp
  jg     L775
L1497:
  add    %r8,%rbx
  add    $0x1,%r12d
  add    %r8,%r9
  add    %r8,%rdx
  add    %r8,%rax
  cmp    %r12d,0x4(%rsp)
  jne    L1339
  jmp    L238
L320:
  mov    0x4(%rsp),%r8d
  test   %r8d,%r8d
  jle    L238
  movslq %r15d,%rax
  test   %ebp,%ebp
  jle    L238
  movslq %r14d,%rsi
  mov    %ebp,%edx
  mov    %ebp,%r10d
  xor    %r9d,%r9d
  mov    %rsi,0x8(%rsp)
  lea    0x0(%r13,%rsi,1),%rcx
  mov    %ebp,%esi
  shr    $0x4,%edx
  and    $0xf,%esi
  lea    -0x1(%rdx),%edi
  lea    -0x1(%rbp),%r15d
  and    $0xfffffff0,%r10d
  mov    %esi,0x10(%rsp)
  sub    $0x1,%esi
  add    $0x1,%rdi
  mov    %ebp,%r11d
  mov    %esi,0x18(%rsp)
  shl    $0x4,%rdi
  cs nopw 0x0(%rax,%rax,1)
L586:
  lea    0x1(%rcx),%rsi
  mov    %rbx,%rdx
  sub    %rsi,%rdx
  cmp    $0xe,%rdx
  seta   %sil
  cmp    $0x6,%r15d
  seta   %dl
  test   %dl,%sil
  je     L240
  lea    0x1(%r13),%rsi
  mov    %rbx,%rdx
  sub    %rsi,%rdx
  cmp    $0xe,%rdx
  jbe    L240
  cmp    $0xe,%r15d
  jbe    L275
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L43:
  movdqu 0x0(%r13,%rdx,1),%xmm0
  movdqu (%rcx,%rdx,1),%xmm4
  pavgb  %xmm4,%xmm0
  movups %xmm0,(%rbx,%rdx,1)
  add    $0x10,%rdx
  cmp    %rdi,%rdx
  jne    L43
  cmp    %r10d,%ebp
  je     L814
  cmpl   $0x6,0x18(%rsp)
  mov    0x10(%rsp),%r8d
  jbe    L1347
  mov    %r10d,%esi
  mov    %r10d,%edx
L1392:
  mov    0x8(%rsp),%r12
  movq   0x0(%r13,%rsi,1),%xmm0
  add    %r13,%r12
  movq   (%r12,%rsi,1),%xmm1
  pavgb  %xmm1,%xmm0
  movq   %xmm0,(%rbx,%rsi,1)
  mov    %r8d,%esi
  and    $0xfffffff8,%esi
  add    %esi,%edx
  cmp    %r8d,%esi
  je     L814
L432:
  lea    (%r14,%rdx,1),%r8d
  movslq %edx,%rsi
  movslq %r8d,%r8
  movzbl 0x0(%r13,%r8,1),%r12d
  movzbl 0x0(%r13,%rsi,1),%r8d
  lea    0x1(%r12,%r8,1),%r8d
  shr    %r8d
  mov    %r8b,(%rbx,%rsi,1)
  lea    0x1(%rdx),%r8d
  cmp    %r8d,%ebp
  jle    L814
  movslq %r8d,%rsi
  add    %r14d,%r8d
  movslq %r8d,%r8
  movzbl 0x0(%r13,%r8,1),%r12d
  movzbl 0x0(%r13,%rsi,1),%r8d
  lea    0x1(%r12,%r8,1),%r8d
  shr    %r8d
  mov    %r8b,(%rbx,%rsi,1)
  lea    0x2(%rdx),%r8d
  cmp    %r8d,%ebp
  jle    L814
  movslq %r8d,%rsi
  add    %r14d,%r8d
  movslq %r8d,%r8
  movzbl 0x0(%r13,%r8,1),%r12d
  movzbl 0x0(%r13,%rsi,1),%r8d
  lea    0x1(%r12,%r8,1),%r8d
  shr    %r8d
  mov    %r8b,(%rbx,%rsi,1)
  lea    0x3(%rdx),%r8d
  cmp    %r8d,%ebp
  jle    L814
  movslq %r8d,%rsi
  add    %r14d,%r8d
  movslq %r8d,%r8
  movzbl 0x0(%r13,%r8,1),%r12d
  movzbl 0x0(%r13,%rsi,1),%r8d
  lea    0x1(%r12,%r8,1),%r8d
  shr    %r8d
  mov    %r8b,(%rbx,%rsi,1)
  lea    0x4(%rdx),%r8d
  cmp    %r8d,%ebp
  jle    L814
  movslq %r8d,%rsi
  add    %r14d,%r8d
  movslq %r8d,%r8
  movzbl 0x0(%r13,%r8,1),%r12d
  movzbl 0x0(%r13,%rsi,1),%r8d
  lea    0x1(%r12,%r8,1),%r8d
  shr    %r8d
  mov    %r8b,(%rbx,%rsi,1)
  lea    0x5(%rdx),%r8d
  cmp    %r8d,%ebp
  jle    L814
  movslq %r8d,%rsi
  add    %r14d,%r8d
  add    $0x6,%edx
  movslq %r8d,%r8
  movzbl 0x0(%r13,%r8,1),%r12d
  movzbl 0x0(%r13,%rsi,1),%r8d
  lea    0x1(%r12,%r8,1),%r8d
  shr    %r8d
  mov    %r8b,(%rbx,%rsi,1)
  cmp    %edx,%ebp
  jle    L814
  movslq %edx,%rsi
  add    %r14d,%edx
  movslq %edx,%rdx
  movzbl 0x0(%r13,%rdx,1),%r8d
  movzbl 0x0(%r13,%rsi,1),%edx
  lea    0x1(%r8,%rdx,1),%edx
  shr    %edx
  mov    %dl,(%rbx,%rsi,1)
L814:
  add    %rax,%r13
  add    %rax,%rbx
  add    $0x1,%r9d
  add    %rax,%rcx
  cmp    %r9d,0x4(%rsp)
  jne    L586
  jmp    L238
  cs nopw 0x0(%rax,%rax,1)
L97:
  xor    %eax,%eax
  nopw   0x0(%rax,%rax,1)
L763:
  movzbl 0x0(%r13,%rax,1),%r14d
  mov    %r14b,(%rbx,%rax,1)
  add    $0x1,%rax
  cmp    %rax,%r9
  jne    L763
  jmp    L967
L644:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L993:
  movzbl 0x1(%rsi,%rdx,1),%r15d
  movzbl (%rsi,%rdx,1),%edi
  add    %r15d,%edi
  movzbl (%rcx,%rdx,1),%r15d
  add    %r15d,%edi
  movzbl 0x1(%rcx,%rdx,1),%r15d
  lea    0x2(%rdi,%r15,1),%edi
  movzbl (%rbx,%rdx,1),%r15d
  shr    $0x2,%edi
  lea    0x1(%rdi,%r15,1),%edi
  sar    %edi
  mov    %dil,(%rbx,%rdx,1)
  add    $0x1,%rdx
  cmp    %r12,%rdx
  jne    L993
  jmp    L1362
  nopl   0x0(%rax)
L1447:
  xor    %ecx,%ecx
  nopw   0x0(%rax,%rax,1)
L300:
  movzbl 0x1(%rsi,%rcx,1),%r15d
  movzbl (%rsi,%rcx,1),%edi
  add    %r15d,%edi
  movzbl (%rdx,%rcx,1),%r15d
  add    %r15d,%edi
  movzbl 0x1(%rdx,%rcx,1),%r15d
  lea    0x2(%rdi,%r15,1),%edi
  shr    $0x2,%edi
  mov    %dil,(%rbx,%rcx,1)
  add    $0x1,%rcx
  cmp    %r11,%rcx
  jne    L300
  jmp    L1497
  nopl   (%rax)
L784:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L1401:
  movzbl (%rcx,%rdx,1),%r8d
  movzbl 0x0(%r13,%rdx,1),%esi
  lea    0x1(%r8,%rsi,1),%esi
  movzbl (%rbx,%rdx,1),%r8d
  shr    %esi
  lea    0x1(%rsi,%r8,1),%esi
  sar    %esi
  mov    %sil,(%rbx,%rdx,1)
  add    $0x1,%rdx
  cmp    %r15,%rdx
  jne    L1401
  jmp    L907
  nopl   0x0(%rax,%rax,1)
L240:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L1316:
  movzbl 0x0(%r13,%rdx,1),%r8d
  movzbl (%rcx,%rdx,1),%esi
  lea    0x1(%r8,%rsi,1),%esi
  shr    %esi
  mov    %sil,(%rbx,%rdx,1)
  add    $0x1,%rdx
  cmp    %r11,%rdx
  jne    L1316
  jmp    L814
L820:
  xor    %edx,%edx
  nopl   (%rax)
L1388:
  movzbl 0x0(%r13,%rdx,1),%r9d
  movzbl 0x1(%r13,%rdx,1),%ecx
  lea    0x1(%r9,%rcx,1),%ecx
  shr    %ecx
  mov    %cl,(%rbx,%rdx,1)
  add    $0x1,%rdx
  cmp    %r10,%rdx
  jne    L1388
  jmp    L1523
L755:
  xor    %edx,%edx
  mov    %ebp,%edi
  xor    %ecx,%ecx
  jmp    L222
L4:
  xor    %eax,%eax
  mov    %ebp,%r15d
  xor    %r14d,%r14d
  jmp    L1448
L730:
  mov    0x4(%rsp),%ecx
  test   %ecx,%ecx
  jle    L238
  movslq %r15d,%rax
  test   %ebp,%ebp
  jle    L238
  mov    %ebp,%ecx
  mov    %ebp,%edx
  lea    -0x1(%rbp),%esi
  mov    %ebp,%r10d
  and    $0xf,%ecx
  shr    $0x4,%edx
  mov    %esi,0x8(%rsp)
  and    $0xfffffff0,%r10d
  mov    %ecx,0x10(%rsp)
  sub    $0x1,%ecx
  lea    -0x1(%rdx),%esi
  xor    %r9d,%r9d
  mov    %ecx,0x18(%rsp)
  add    $0x1,%rsi
  mov    %ebp,%r15d
  shl    $0x4,%rsi
  nopw   0x0(%rax,%rax,1)
L631:
  lea    0x1(%r13),%rcx
  mov    %rbx,%rdx
  sub    %rcx,%rdx
  cmp    $0xf,%rdx
  jbe    L601
  cmpl   $0x6,0x8(%rsp)
  jbe    L601
  cmpl   $0xe,0x8(%rsp)
  jbe    L577
  xor    %edx,%edx
  nopl   0x0(%rax)
L821:
  movdqu 0x1(%r13,%rdx,1),%xmm5
  movdqu 0x0(%r13,%rdx,1),%xmm0
  pavgb  %xmm5,%xmm0
  movdqu (%rbx,%rdx,1),%xmm5
  pavgb  %xmm5,%xmm0
  movups %xmm0,(%rbx,%rdx,1)
  add    $0x10,%rdx
  cmp    %rsi,%rdx
  jne    L821
  cmp    %r10d,%ebp
  je     L891
  cmpl   $0x6,0x18(%rsp)
  mov    0x10(%rsp),%edi
  jbe    L279
  mov    %r10d,%ecx
  mov    %r10d,%edx
L748:
  movq   0x1(%r13,%rcx,1),%xmm0
  movq   0x0(%r13,%rcx,1),%xmm1
  lea    (%rbx,%rcx,1),%r8
  mov    %edi,%ecx
  and    $0xfffffff8,%ecx
  pavgb  %xmm0,%xmm1
  movq   (%r8),%xmm0
  add    %ecx,%edx
  pavgb  %xmm1,%xmm0
  movq   %xmm0,(%r8)
  cmp    %edi,%ecx
  je     L891
L459:
  movslq %edx,%rcx
  lea    0x1(%rcx),%rdi
  movzbl 0x0(%r13,%rcx,1),%r14d
  lea    (%rbx,%rcx,1),%r12
  lea    0x0(%r13,%rdi,1),%r11
  movzbl (%r11),%r8d
  lea    0x1(%r14,%r8,1),%r8d
  movzbl (%r12),%r14d
  shr    %r8d
  lea    0x1(%r8,%r14,1),%r8d
  sar    %r8d
  mov    %r8b,(%r12)
  lea    0x1(%rdx),%r8d
  cmp    %r8d,%ebp
  jle    L891
  lea    0x2(%rcx),%r8
  movzbl (%r11),%r11d
  add    %rbx,%rdi
  lea    0x0(%r13,%r8,1),%r12
  movzbl (%r12),%r14d
  lea    0x1(%r14,%r11,1),%r11d
  movzbl (%rdi),%r14d
  shr    %r11d
  lea    0x1(%r11,%r14,1),%r11d
  sar    %r11d
  mov    %r11b,(%rdi)
  lea    0x2(%rdx),%edi
  cmp    %edi,%ebp
  jle    L891
  lea    0x3(%rcx),%rdi
  movzbl (%r12),%r12d
  add    %rbx,%r8
  lea    0x0(%r13,%rdi,1),%r14
  movzbl (%r14),%r11d
  lea    0x1(%r11,%r12,1),%r11d
  movzbl (%r8),%r12d
  shr    %r11d
  lea    0x1(%r11,%r12,1),%r11d
  sar    %r11d
  mov    %r11b,(%r8)
  lea    0x3(%rdx),%r8d
  cmp    %r8d,%ebp
  jle    L891
  lea    0x4(%rcx),%r8
  movzbl (%r14),%r14d
  add    %rbx,%rdi
  lea    0x0(%r13,%r8,1),%r12
  movzbl (%r12),%r11d
  lea    0x1(%r11,%r14,1),%r11d
  movzbl (%rdi),%r14d
  shr    %r11d
  lea    0x1(%r11,%r14,1),%r11d
  sar    %r11d
  mov    %r11b,(%rdi)
  lea    0x4(%rdx),%edi
  cmp    %edi,%ebp
  jle    L891
  lea    0x5(%rcx),%rdi
  movzbl (%r12),%r12d
  add    %rbx,%r8
  lea    0x0(%r13,%rdi,1),%r14
  movzbl (%r14),%r11d
  lea    0x1(%r11,%r12,1),%r11d
  movzbl (%r8),%r12d
  shr    %r11d
  lea    0x1(%r11,%r12,1),%r11d
  sar    %r11d
  mov    %r11b,(%r8)
  lea    0x5(%rdx),%r8d
  cmp    %r8d,%ebp
  jle    L891
  lea    0x6(%rcx),%r8
  movzbl (%r14),%r14d
  add    %rbx,%rdi
  add    $0x6,%edx
  lea    0x0(%r13,%r8,1),%r12
  movzbl (%r12),%r11d
  lea    0x1(%r11,%r14,1),%r11d
  movzbl (%rdi),%r14d
  shr    %r11d
  lea    0x1(%r11,%r14,1),%r11d
  sar    %r11d
  mov    %r11b,(%rdi)
  cmp    %edx,%ebp
  jle    L891
  movzbl 0x7(%r13,%rcx,1),%edx
  movzbl (%r12),%ecx
  add    %rbx,%r8
  lea    0x1(%rdx,%rcx,1),%edx
  movzbl (%r8),%ecx
  shr    %edx
  lea    0x1(%rdx,%rcx,1),%edx
  sar    %edx
  mov    %dl,(%r8)
L891:
  add    %rax,%r13
  add    %rax,%rbx
  add    $0x1,%r9d
  cmp    %r9d,0x4(%rsp)
  jne    L631
  jmp    L238
L601:
  xor    %edx,%edx
  nopl   (%rax)
L228:
  movzbl 0x0(%r13,%rdx,1),%edi
  movzbl 0x1(%r13,%rdx,1),%ecx
  lea    0x1(%rdi,%rcx,1),%ecx
  movzbl (%rbx,%rdx,1),%edi
  shr    %ecx
  lea    0x1(%rcx,%rdi,1),%ecx
  sar    %ecx
  mov    %cl,(%rbx,%rdx,1)
  add    $0x1,%rdx
  cmp    %r15,%rdx
  jne    L228
  jmp    L891
L275:
  mov    %ebp,%r8d
  xor    %edx,%edx
  xor    %esi,%esi
  jmp    L1392
L1122:
  mov    %ebp,%r9d
  xor    %edx,%edx
  xor    %esi,%esi
  jmp    L1281
L1347:
  mov    %r10d,%edx
  jmp    L432
L1534:
  mov    %r12d,%edx
  jmp    L1141
L1034:
  mov    %ebp,%r9d
  xor    %ecx,%ecx
  xor    %edx,%edx
  jmp    L265
L577:
  mov    %ebp,%edi
  xor    %edx,%edx
  xor    %ecx,%ecx
  jmp    L748
L279:
  mov    %r10d,%edx
  jmp    L459
L1358:
  mov    %r8d,%ecx
  jmp    L1165
```

tool_calls: name: retrieve_data
arguments: data_tag: D43
type_guessed: byte[16]
name: retrieve_data
arguments: data_tag: D6
type_guessed: byte[16]
name: retrieve_data
arguments: data_tag: D66
type_guessed: byte[16]
name: retrieve_data
arguments: data_tag: D26
type_guessed: string
name: retrieve_data
arguments: data_tag: D15
type_guessed: string
name: retrieve_data
arguments: data_tag: D55
type_guessed: string

tool: {"D43": [0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00]}

tool: {"D6": [0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00]}

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

tool: D26: form_component_prediction

tool: D15: src/recon.c

tool: D55: s!=d

assistant: ```c
void form_component_prediction(unsigned char *src, unsigned char *dst, int lx, int lx2, int w, int h, int x, int y, int dx, int dy, int average_flag) {
  int xint;
  int yint;
  int xh;
  int yh;
  int i;
  int j;
  int v;
  unsigned char *s;
  unsigned char *d;
  int tmp;
  int tmp___0;
  int tmp___1;
  int tmp___2;
  {
    xint = dx >> 1;
    yint = dy >> 1;
    s = ((src + lx * (y + yint)) + x) + xint;
    d = (dst + lx * y) + x;
    xh = dx & 1;
    yh = dy & 1;
    if (!((unsigned long)s != (unsigned long)d)) {
      __assert_fail("s!=d", "src/recon.c", 474U, "form_component_prediction");
    }
    if (!xh) {
      if (!yh) {
        if (average_flag) {
          j = 0;
          while (j < h) {
            i = 0;
            while (i < w) {
              v = (int)*(d + i) + (int)*(s + i);
              if (v >= 0) {
                tmp = 1;
              } else {
                tmp = 0;
              }
              *(d + i) = (unsigned char)((v + tmp) >> 1);
              i++;
            }
            s += lx2;
            d += lx2;
            j++;
          }
        } else {
          j = 0;
          while (j < h) {
            i = 0;
            while (i < w) {
              *(d + i) = *(s + i);
              i++;
            }
            s += lx2;
            d += lx2;
            j++;
          }
        }
      } else {
        goto _L___1;
      }
    } else
    _L___1:
      if (!xh) {
        if (yh) {
          if (average_flag) {
            j = 0;
            while (j < h) {
              i = 0;
              while (i < w) {
                v = (int)((unsigned int)*(d + i) + ((unsigned int)(((int)*(s + i) + (int)*(s + (i + lx))) + 1) >> 1));
                if (v >= 0) {
                  tmp___0 = 1;
                } else {
                  tmp___0 = 0;
                }
                *(d + i) = (unsigned char)((v + tmp___0) >> 1);
                i++;
              }
              s += lx2;
              d += lx2;
              j++;
            }
          } else {
            j = 0;
            while (j < h) {
              i = 0;
              while (i < w) {
                *(d + i) = (unsigned char)((unsigned int)(((int)*(s + i) + (int)*(s + (i + lx))) + 1) >> 1);
                i++;
              }
              s += lx2;
              d += lx2;
              j++;
            }
          }
        } else {
          goto _L___0;
        }
      } else
      _L___0:
        if (xh) {
          if (!yh) {
            if (average_flag) {
              j = 0;
              while (j < h) {
                i = 0;
                while (i < w) {
                  v = (int)((unsigned int)*(d + i) + ((unsigned int)(((int)*(s + i) + (int)*(s + (i + 1))) + 1) >> 1));
                  if (v >= 0) {
                    tmp___1 = 1;
                  } else {
                    tmp___1 = 0;
                  }
                  *(d + i) = (unsigned char)((v + tmp___1) >> 1);
                  i++;
                }
                s += lx2;
                d += lx2;
                j++;
              }
            } else {
              j = 0;
              while (j < h) {
                i = 0;
                while (i < w) {
                  *(d + i) = (unsigned char)((unsigned int)(((int)*(s + i) + (int)*(s + (i + 1))) + 1) >> 1);
                  i++;
                }
                s += lx2;
                d += lx2;
                j++;
              }
            }
          } else {
            goto _L;
          }
        } else
        _L:
          if (average_flag) {
            j = 0;
            while (j < h) {
              i = 0;
              while (i < w) {
                v = (int)((unsigned int)*(d + i) + ((unsigned int)(((((int)*(s + i) + (int)*(s + (i + 1))) + (int)*(s + (i + lx))) + (int)*(s + ((i + lx) + 1))) + 2) >> 2));
                if (v >= 0) {
                  tmp___2 = 1;
                } else {
                  tmp___2 = 0;
                }
                *(d + i) = (unsigned char)((v + tmp___2) >> 1);
                i++;
              }
              s += lx2;
              d += lx2;
              j++;
            }
          } else {
            j = 0;
            while (j < h) {
              i = 0;
              while (i < w) {
                *(d + i) = (unsigned char)((unsigned int)(((((int)*(s + i) + (int)*(s + (i + 1))) + (int)*(s + (i + lx))) + (int)*(s + ((i + lx) + 1))) + 2) >> 2);
                i++;
              }
              s += lx2;
              d += lx2;
              j++;
            }
          }
    return;
  }
}
```