user: 请从给定的汇编指令推导出C源代码：

```asm
<get_upupleft_pred>:
  endbr64
  push   %r15
  mov    %rdi,%r10
  mov    %ecx,%r15d
  push   %r14
  push   %r13
  mov    %edx,%r13d
  push   %r12
  mov    %esi,%r12d
  push   %rbp
  mov    %r9,%rbp
  push   %rbx
  mov    %r8d,%ebx
  sub    $0x428,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x418(%rsp)
  xor    %eax,%eax
  test   %esi,%esi
  jle    L854
  test   %r8d,%r8d
  jle    L176
  lea    -0x1(%rsi),%eax
  movslq %r8d,%rdx
  lea    0x10(%rsp),%rdi
  mov    %r10,0x8(%rsp)
  imul   %ecx,%eax
  shl    $0x2,%rdx
  lea    -0x1(%rbx),%r14d
  add    %r13d,%eax
  cltq
  lea    (%r10,%rax,4),%rsi
  call   <memcpy@plt>
  test   %r13d,%r13d
  mov    0x8(%rsp),%r10
  jg     L372
L376:
  test   %ebx,%ebx
  mov    $0x1,%edx
  cmovg  %ebx,%edx
  cmp    $0x3,%ebx
  jle    L60
  movdqa D4(%rip),%xmm0
  mov    %edx,%eax
  shr    $0x2,%eax
  movaps %xmm0,0x110(%rsp)
  cmp    $0x1,%eax
  je     L131
  movaps %xmm0,0x120(%rsp)
  cmp    $0x2,%eax
  je     L131
  movaps %xmm0,0x130(%rsp)
  cmp    $0x3,%eax
  je     L131
  movaps %xmm0,0x140(%rsp)
  cmp    $0x4,%eax
  je     L131
  movaps %xmm0,0x150(%rsp)
  cmp    $0x5,%eax
  je     L131
  movaps %xmm0,0x160(%rsp)
  cmp    $0x6,%eax
  je     L131
  movaps %xmm0,0x170(%rsp)
  cmp    $0x7,%eax
  je     L131
  movaps %xmm0,0x180(%rsp)
  cmp    $0x8,%eax
  je     L131
  movaps %xmm0,0x190(%rsp)
  cmp    $0x9,%eax
  je     L131
  movaps %xmm0,0x1a0(%rsp)
  cmp    $0xa,%eax
  je     L131
  movaps %xmm0,0x1b0(%rsp)
  cmp    $0xb,%eax
  je     L131
  movaps %xmm0,0x1c0(%rsp)
  cmp    $0xc,%eax
  je     L131
  movaps %xmm0,0x1d0(%rsp)
  cmp    $0xd,%eax
  je     L131
  movaps %xmm0,0x1e0(%rsp)
  cmp    $0xe,%eax
  je     L131
  movaps %xmm0,0x1f0(%rsp)
  cmp    $0xf,%eax
  je     L131
  movaps %xmm0,0x200(%rsp)
L131:
  mov    %edx,%eax
  and    $0xfffffffc,%eax
  and    $0x3,%edx
  je     L801
L672:
  movslq %eax,%rdx
  movl   $0x80,0x110(%rsp,%rdx,4)
  lea    0x1(%rax),%edx
  cmp    %edx,%ebx
  jle    L801
  movslq %edx,%rdx
  add    $0x2,%eax
  movl   $0x80,0x110(%rsp,%rdx,4)
  cmp    %eax,%ebx
  jle    L801
  cltq
  movl   $0x80,0x110(%rsp,%rax,4)
L801:
  mov    $0x100,%esi
  jmp    L504
L854:
  lea    -0x1(%r8),%r14d
  test   %r8d,%r8d
  jle    L801
  cmp    $0x2,%r14d
  jbe    L386
  movdqa D4(%rip),%xmm0
  mov    %r8d,%eax
  shr    $0x2,%eax
  movaps %xmm0,0x10(%rsp)
  cmp    $0x1,%eax
  je     L473
  movaps %xmm0,0x20(%rsp)
  cmp    $0x2,%eax
  je     L473
  movaps %xmm0,0x30(%rsp)
  cmp    $0x3,%eax
  jne    L774
L473:
  mov    %ebx,%eax
  and    $0xfffffffc,%eax
  test   $0x3,%bl
  je     L628
L236:
  movslq %eax,%rdx
  movl   $0x80,0x10(%rsp,%rdx,4)
  lea    0x1(%rax),%edx
  cmp    %edx,%ebx
  jle    L628
  movslq %edx,%rdx
  add    $0x2,%eax
  movl   $0x80,0x10(%rsp,%rdx,4)
  cmp    %eax,%ebx
  jle    L628
  cltq
  movl   $0x80,0x10(%rsp,%rax,4)
L628:
  test   %r13d,%r13d
  jle    L376
L372:
  cmp    $0x1,%r15d
  jne    L876
  mov    %r14d,%eax
  test   %ebx,%ebx
  movslq %r12d,%rcx
  mov    %r10,0x8(%rsp)
  lea    0x4(,%rax,4),%rdx
  mov    $0x4,%eax
  lea    0x110(%rsp),%rdi
  cmovle %rax,%rdx
  movslq %r13d,%rax
  add    %rcx,%rax
  lea    -0x4(%r10,%rax,4),%rsi
  call   <memcpy@plt>
  mov    0x8(%rsp),%r10
L150:
  test   %r12d,%r12d
  jle    L801
L332:
  lea    -0x1(%r12),%eax
  imul   %r15d,%eax
  add    %r13d,%eax
  cltq
  mov    -0x4(%r10,%rax,4),%esi
  add    %esi,%esi
L504:
  mov    0x10(%rsp),%ecx
  mov    %r14d,%r11d
  lea    -0x2(%rbx),%edi
  lea    (%rcx,%rcx,2),%eax
  add    0x14(%rsp),%eax
  add    $0x2,%eax
  sar    $0x2,%eax
  mov    %eax,0x210(%rsp)
  cmp    $0x1,%r14d
  jle    L13
  lea    -0x3(%rbx),%eax
  cmp    $0x2,%eax
  jbe    L930
  movdqu 0x14(%rsp),%xmm1
  movdqu 0x18(%rsp),%xmm2
  mov    %edi,%eax
  movdqa D55(%rip),%xmm0
  shr    $0x2,%eax
  pslld  $0x1,%xmm1
  paddd  0x10(%rsp),%xmm1
  paddd  %xmm2,%xmm1
  paddd  %xmm0,%xmm1
  psrad  $0x2,%xmm1
  movups %xmm1,0x214(%rsp)
  cmp    $0x1,%eax
  je     L476
  movdqu 0x24(%rsp),%xmm1
  movdqu 0x28(%rsp),%xmm4
  pslld  $0x1,%xmm1
  paddd  0x20(%rsp),%xmm1
  paddd  %xmm4,%xmm1
  paddd  %xmm0,%xmm1
  psrad  $0x2,%xmm1
  movups %xmm1,0x224(%rsp)
  cmp    $0x2,%eax
  je     L476
  movdqu 0x34(%rsp),%xmm1
  movdqu 0x38(%rsp),%xmm6
  pslld  $0x1,%xmm1
  paddd  0x30(%rsp),%xmm1
  paddd  %xmm6,%xmm1
  paddd  %xmm0,%xmm1
  psrad  $0x2,%xmm1
  movups %xmm1,0x234(%rsp)
  cmp    $0x3,%eax
  je     L476
  movdqu 0x44(%rsp),%xmm1
  movdqu 0x48(%rsp),%xmm6
  pslld  $0x1,%xmm1
  paddd  0x40(%rsp),%xmm1
  paddd  %xmm6,%xmm1
  paddd  %xmm0,%xmm1
  psrad  $0x2,%xmm1
  movups %xmm1,0x244(%rsp)
  cmp    $0x4,%eax
  je     L476
  movdqu 0x54(%rsp),%xmm1
  movdqu 0x58(%rsp),%xmm4
  pslld  $0x1,%xmm1
  paddd  0x50(%rsp),%xmm1
  paddd  %xmm4,%xmm1
  paddd  %xmm0,%xmm1
  psrad  $0x2,%xmm1
  movups %xmm1,0x254(%rsp)
  cmp    $0x5,%eax
  je     L476
  movdqu 0x64(%rsp),%xmm1
  movdqu 0x68(%rsp),%xmm2
  pslld  $0x1,%xmm1
  paddd  0x60(%rsp),%xmm1
  paddd  %xmm2,%xmm1
  paddd  %xmm0,%xmm1
  psrad  $0x2,%xmm1
  movups %xmm1,0x264(%rsp)
  cmp    $0x6,%eax
  je     L476
  movdqu 0x74(%rsp),%xmm1
  movdqu 0x78(%rsp),%xmm6
  pslld  $0x1,%xmm1
  paddd  0x70(%rsp),%xmm1
  paddd  %xmm6,%xmm1
  paddd  %xmm0,%xmm1
  psrad  $0x2,%xmm1
  movups %xmm1,0x274(%rsp)
  cmp    $0x7,%eax
  je     L476
  movdqu 0x84(%rsp),%xmm1
  movdqu 0x88(%rsp),%xmm7
  pslld  $0x1,%xmm1
  paddd  0x80(%rsp),%xmm1
  paddd  %xmm7,%xmm1
  paddd  %xmm0,%xmm1
  psrad  $0x2,%xmm1
  movups %xmm1,0x284(%rsp)
  cmp    $0x8,%eax
  je     L476
  movdqu 0x94(%rsp),%xmm1
  movdqu 0x98(%rsp),%xmm4
  pslld  $0x1,%xmm1
  paddd  0x90(%rsp),%xmm1
  paddd  %xmm4,%xmm1
  paddd  %xmm0,%xmm1
  psrad  $0x2,%xmm1
  movups %xmm1,0x294(%rsp)
  cmp    $0x9,%eax
  je     L476
  movdqu 0xa4(%rsp),%xmm1
  movdqu 0xa8(%rsp),%xmm5
  pslld  $0x1,%xmm1
  paddd  0xa0(%rsp),%xmm1
  paddd  %xmm5,%xmm1
  paddd  %xmm0,%xmm1
  psrad  $0x2,%xmm1
  movups %xmm1,0x2a4(%rsp)
  cmp    $0xa,%eax
  je     L476
  movdqu 0xb4(%rsp),%xmm1
  movdqu 0xb8(%rsp),%xmm6
  pslld  $0x1,%xmm1
  paddd  0xb0(%rsp),%xmm1
  paddd  %xmm6,%xmm1
  paddd  %xmm0,%xmm1
  psrad  $0x2,%xmm1
  movups %xmm1,0x2b4(%rsp)
  cmp    $0xb,%eax
  je     L476
  movdqu 0xc4(%rsp),%xmm1
  movdqu 0xc8(%rsp),%xmm7
  pslld  $0x1,%xmm1
  paddd  0xc0(%rsp),%xmm1
  paddd  %xmm7,%xmm1
  paddd  %xmm0,%xmm1
  psrad  $0x2,%xmm1
  movups %xmm1,0x2c4(%rsp)
  cmp    $0xc,%eax
  je     L476
  movdqu 0xd4(%rsp),%xmm1
  movdqu 0xd8(%rsp),%xmm2
  pslld  $0x1,%xmm1
  paddd  0xd0(%rsp),%xmm1
  paddd  %xmm2,%xmm1
  paddd  %xmm0,%xmm1
  psrad  $0x2,%xmm1
  movups %xmm1,0x2d4(%rsp)
  cmp    $0xd,%eax
  je     L476
  movdqu 0xe4(%rsp),%xmm1
  movdqu 0xe8(%rsp),%xmm3
  pslld  $0x1,%xmm1
  paddd  0xe0(%rsp),%xmm1
  paddd  %xmm3,%xmm1
  paddd  %xmm0,%xmm1
  psrad  $0x2,%xmm1
  movups %xmm1,0x2e4(%rsp)
  cmp    $0xe,%eax
  je     L476
  movdqu 0xf4(%rsp),%xmm1
  movdqu 0xf8(%rsp),%xmm6
  pslld  $0x1,%xmm1
  paddd  0xf0(%rsp),%xmm1
  paddd  %xmm6,%xmm1
  paddd  %xmm1,%xmm0
  psrad  $0x2,%xmm0
  movups %xmm0,0x2f4(%rsp)
  cs nopw 0x0(%rax,%rax,1)
L476:
  mov    %edi,%eax
  and    $0xfffffffc,%eax
  lea    0x1(%rax),%edx
  cmp    %edi,%eax
  je     L13
L181:
  mov    %ebx,%r9d
  sub    %eax,%r9d
  lea    -0x2(%r9),%r8d
  cmp    $0x3,%r9d
  je     L809
  shl    $0x2,%rax
  movq   0x14(%rsp,%rax,1),%xmm0
  movq   0x10(%rsp,%rax,1),%xmm1
  pslld  $0x1,%xmm0
  paddd  %xmm1,%xmm0
  movq   0x18(%rsp,%rax,1),%xmm1
  paddd  %xmm1,%xmm0
  movq   D55(%rip),%xmm1
  paddd  %xmm1,%xmm0
  psrad  $0x2,%xmm0
  movq   %xmm0,0x214(%rsp,%rax,1)
  mov    %r8d,%eax
  and    $0xfffffffe,%eax
  add    %eax,%edx
  cmp    %r8d,%eax
  je     L13
L809:
  lea    -0x1(%rdx),%eax
  movslq %edx,%r8
  add    $0x1,%edx
  cltq
  mov    0x10(%rsp,%r8,4),%r9d
  movslq %edx,%rdx
  mov    0x10(%rsp,%rax,4),%eax
  lea    (%rax,%r9,2),%eax
  add    0x10(%rsp,%rdx,4),%eax
  add    $0x2,%eax
  sar    $0x2,%eax
  mov    %eax,0x210(%rsp,%r8,4)
L13:
  movslq %r11d,%r9
  movslq %edi,%r10
  mov    0x110(%rsp),%r8d
  mov    0x10(%rsp,%r9,4),%eax
  mov    0x10(%rsp,%r10,4),%edx
  lea    (%rdx,%rax,2),%edx
  lea    0x2(%rax,%rdx,1),%eax
  sar    $0x2,%eax
  mov    %eax,0x210(%rsp,%r9,4)
  lea    (%r8,%r8,2),%eax
  add    0x114(%rsp),%eax
  add    $0x2,%eax
  sar    $0x2,%eax
  mov    %eax,0x310(%rsp)
  cmp    $0x1,%r11d
  jle    L670
  lea    -0x3(%rbx),%eax
  cmp    $0x2,%eax
  jbe    L771
  movdqu 0x114(%rsp),%xmm1
  movdqa D55(%rip),%xmm0
  mov    %edi,%eax
  movdqu 0x118(%rsp),%xmm3
  shr    $0x2,%eax
  pslld  $0x1,%xmm1
  paddd  0x110(%rsp),%xmm1
  paddd  %xmm3,%xmm1
  paddd  %xmm0,%xmm1
  psrad  $0x2,%xmm1
  movups %xmm1,0x314(%rsp)
  cmp    $0x1,%eax
  je     L783
  movdqu 0x124(%rsp),%xmm1
  movdqu 0x128(%rsp),%xmm5
  pslld  $0x1,%xmm1
  paddd  0x120(%rsp),%xmm1
  paddd  %xmm5,%xmm1
  paddd  %xmm0,%xmm1
  psrad  $0x2,%xmm1
  movups %xmm1,0x324(%rsp)
  cmp    $0x2,%eax
  je     L783
  movdqu 0x134(%rsp),%xmm1
  movdqu 0x138(%rsp),%xmm7
  pslld  $0x1,%xmm1
  paddd  0x130(%rsp),%xmm1
  paddd  %xmm7,%xmm1
  paddd  %xmm0,%xmm1
  psrad  $0x2,%xmm1
  movups %xmm1,0x334(%rsp)
  cmp    $0x3,%eax
  je     L783
  movdqu 0x144(%rsp),%xmm1
  movdqu 0x148(%rsp),%xmm7
  pslld  $0x1,%xmm1
  paddd  0x140(%rsp),%xmm1
  paddd  %xmm7,%xmm1
  paddd  %xmm0,%xmm1
  psrad  $0x2,%xmm1
  movups %xmm1,0x344(%rsp)
  cmp    $0x4,%eax
  je     L783
  movdqu 0x154(%rsp),%xmm1
  movdqu 0x158(%rsp),%xmm5
  pslld  $0x1,%xmm1
  paddd  0x150(%rsp),%xmm1
  paddd  %xmm5,%xmm1
  paddd  %xmm0,%xmm1
  psrad  $0x2,%xmm1
  movups %xmm1,0x354(%rsp)
  cmp    $0x5,%eax
  je     L783
  movdqu 0x164(%rsp),%xmm1
  movdqu 0x168(%rsp),%xmm3
  pslld  $0x1,%xmm1
  paddd  0x160(%rsp),%xmm1
  paddd  %xmm3,%xmm1
  paddd  %xmm0,%xmm1
  psrad  $0x2,%xmm1
  movups %xmm1,0x364(%rsp)
  cmp    $0x6,%eax
  je     L783
  movdqu 0x174(%rsp),%xmm1
  movdqu 0x178(%rsp),%xmm2
  pslld  $0x1,%xmm1
  paddd  0x170(%rsp),%xmm1
  paddd  %xmm2,%xmm1
  paddd  %xmm0,%xmm1
  psrad  $0x2,%xmm1
  movups %xmm1,0x374(%rsp)
  cmp    $0x7,%eax
  je     L783
  movdqu 0x184(%rsp),%xmm1
  movdqu 0x188(%rsp),%xmm3
  pslld  $0x1,%xmm1
  paddd  0x180(%rsp),%xmm1
  paddd  %xmm3,%xmm1
  paddd  %xmm0,%xmm1
  psrad  $0x2,%xmm1
  movups %xmm1,0x384(%rsp)
  cmp    $0x8,%eax
  je     L783
  movdqu 0x194(%rsp),%xmm1
  movdqu 0x198(%rsp),%xmm4
  pslld  $0x1,%xmm1
  paddd  0x190(%rsp),%xmm1
  paddd  %xmm4,%xmm1
  paddd  %xmm0,%xmm1
  psrad  $0x2,%xmm1
  movups %xmm1,0x394(%rsp)
  cmp    $0x9,%eax
  je     L783
  movdqu 0x1a4(%rsp),%xmm1
  movdqu 0x1a8(%rsp),%xmm5
  pslld  $0x1,%xmm1
  paddd  0x1a0(%rsp),%xmm1
  paddd  %xmm5,%xmm1
  paddd  %xmm0,%xmm1
  psrad  $0x2,%xmm1
  movups %xmm1,0x3a4(%rsp)
  cmp    $0xa,%eax
  je     L783
  movdqu 0x1b4(%rsp),%xmm1
  movdqu 0x1b8(%rsp),%xmm7
  pslld  $0x1,%xmm1
  paddd  0x1b0(%rsp),%xmm1
  paddd  %xmm7,%xmm1
  paddd  %xmm0,%xmm1
  psrad  $0x2,%xmm1
  movups %xmm1,0x3b4(%rsp)
  cmp    $0xb,%eax
  je     L783
  movdqu 0x1c4(%rsp),%xmm1
  movdqu 0x1c8(%rsp),%xmm2
  pslld  $0x1,%xmm1
  paddd  0x1c0(%rsp),%xmm1
  paddd  %xmm2,%xmm1
  paddd  %xmm0,%xmm1
  psrad  $0x2,%xmm1
  movups %xmm1,0x3c4(%rsp)
  cmp    $0xc,%eax
  je     L783
  movdqu 0x1d4(%rsp),%xmm1
  movdqu 0x1d8(%rsp),%xmm3
  pslld  $0x1,%xmm1
  paddd  0x1d0(%rsp),%xmm1
  paddd  %xmm3,%xmm1
  paddd  %xmm0,%xmm1
  psrad  $0x2,%xmm1
  movups %xmm1,0x3d4(%rsp)
  cmp    $0xd,%eax
  je     L783
  movdqu 0x1e4(%rsp),%xmm1
  movdqu 0x1e8(%rsp),%xmm4
  pslld  $0x1,%xmm1
  paddd  0x1e0(%rsp),%xmm1
  paddd  %xmm4,%xmm1
  paddd  %xmm0,%xmm1
  psrad  $0x2,%xmm1
  movups %xmm1,0x3e4(%rsp)
  cmp    $0xe,%eax
  je     L783
  movdqu 0x1f4(%rsp),%xmm1
  movdqu 0x1f8(%rsp),%xmm5
  pslld  $0x1,%xmm1
  paddd  0x1f0(%rsp),%xmm1
  paddd  %xmm5,%xmm1
  paddd  %xmm1,%xmm0
  psrad  $0x2,%xmm0
  movups %xmm0,0x3f4(%rsp)
  nopl   (%rax)
L783:
  mov    %edi,%r11d
  and    $0xfffffffc,%r11d
  lea    0x1(%r11),%edx
  cmp    %r11d,%edi
  je     L670
L1046:
  mov    %ebx,%eax
  sub    %r11d,%eax
  lea    -0x2(%rax),%edi
  cmp    $0x3,%eax
  je     L7
  shl    $0x2,%r11
  mov    %edi,%eax
  movq   0x114(%rsp,%r11,1),%xmm0
  and    $0xfffffffe,%eax
  movq   0x110(%rsp,%r11,1),%xmm1
  add    %eax,%edx
  pslld  $0x1,%xmm0
  paddd  %xmm1,%xmm0
  movq   0x118(%rsp,%r11,1),%xmm1
  paddd  %xmm1,%xmm0
  movq   D55(%rip),%xmm1
  paddd  %xmm1,%xmm0
  psrad  $0x2,%xmm0
  movq   %xmm0,0x314(%rsp,%r11,1)
  cmp    %edi,%eax
  je     L670
L7:
  lea    -0x1(%rdx),%eax
  movslq %edx,%rdi
  add    $0x1,%edx
  cltq
  mov    0x110(%rsp,%rdi,4),%r11d
  movslq %edx,%rdx
  mov    0x110(%rsp,%rax,4),%eax
  lea    (%rax,%r11,2),%eax
  add    0x110(%rsp,%rdx,4),%eax
  add    $0x2,%eax
  sar    $0x2,%eax
  mov    %eax,0x310(%rsp,%rdi,4)
L670:
  mov    0x110(%rsp,%r9,4),%eax
  mov    0x110(%rsp,%r10,4),%edx
  add    %esi,%r8d
  lea    0x2(%rcx,%r8,1),%r13d
  lea    (%rdx,%rax,2),%edx
  sar    $0x2,%r13d
  lea    0x2(%rax,%rdx,1),%eax
  sar    $0x2,%eax
  mov    %eax,0x310(%rsp,%r9,4)
  test   %ebx,%ebx
  jle    L969
  mov    0x210(%rsp),%r8d
  mov    %ebx,%r12d
  xor    %r11d,%r11d
  neg    %r12d
  add    %r13d,%r8d
  lea    (%r12,%r12,1),%r9d
  sar    %r8d
  mov    %r9d,%r10d
  nop
L35:
  mov    %r10d,%eax
  movslq %r11d,%rdx
  sub    %r9d,%eax
  lea    0x0(%rbp,%rdx,4),%rdx
  jmp    L580
L276:
  lea    -0x2(%rax),%ecx
  movslq %ecx,%rax
  mov    0x310(%rsp,%rax,4),%esi
L308:
  mov    %esi,(%rdx)
  mov    %ecx,%eax
  add    $0x4,%rdx
  cmp    %r10d,%ecx
  je     L59
L580:
  cmp    $0x1,%eax
  jg     L276
  je     L733
  test   %eax,%eax
  je     L599
  mov    %eax,%edi
  shr    $0x1f,%edi
  add    %eax,%edi
  sar    %edi
  neg    %edi
  movslq %edi,%rcx
  mov    0x210(%rsp,%rcx,4),%esi
  lea    -0x2(%rax),%ecx
  test   $0x1,%al
  jne    L308
  sub    $0x1,%edi
  mov    %ecx,%eax
  add    $0x4,%rdx
  movslq %edi,%rdi
  add    0x210(%rsp,%rdi,4),%esi
  sar    %esi
  mov    %esi,-0x4(%rdx)
  cmp    %r10d,%ecx
  jne    L580
  nopw   0x0(%rax,%rax,1)
L59:
  add    $0x1,%r10d
  add    %ebx,%r11d
  cmp    %r12d,%r10d
  jne    L35
L969:
  mov    0x418(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L940
  add    $0x428,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L599:
  mov    %r8d,%esi
  mov    $0xfffffffe,%ecx
  jmp    L308
  nopl   (%rax)
L733:
  mov    %r13d,%esi
  mov    $0xffffffff,%ecx
  jmp    L308
L774:
  movaps %xmm0,0x40(%rsp)
  cmp    $0x4,%eax
  je     L473
  movaps %xmm0,0x50(%rsp)
  cmp    $0x5,%eax
  je     L473
  movaps %xmm0,0x60(%rsp)
  cmp    $0x6,%eax
  je     L473
  movaps %xmm0,0x70(%rsp)
  cmp    $0x7,%eax
  je     L473
  movaps %xmm0,0x80(%rsp)
  cmp    $0x8,%eax
  je     L473
  movaps %xmm0,0x90(%rsp)
  cmp    $0x9,%eax
  je     L473
  movaps %xmm0,0xa0(%rsp)
  cmp    $0xa,%eax
  je     L473
  movaps %xmm0,0xb0(%rsp)
  cmp    $0xb,%eax
  je     L473
  movaps %xmm0,0xc0(%rsp)
  cmp    $0xc,%eax
  je     L473
  movaps %xmm0,0xd0(%rsp)
  cmp    $0xd,%eax
  je     L473
  movaps %xmm0,0xe0(%rsp)
  cmp    $0xe,%eax
  je     L473
  movaps %xmm0,0xf0(%rsp)
  cmp    $0xf,%eax
  je     L473
  movaps %xmm0,0x100(%rsp)
  jmp    L473
L876:
  mov    %r12d,%eax
  movslq %r13d,%rdx
  movslq %r15d,%rsi
  imul   %r15d,%eax
  shl    $0x2,%rsi
  lea    0x110(%rsp),%rdi
  cltq
  add    %rdx,%rax
  lea    (%r10,%rax,4),%rdx
  xor    %eax,%eax
  cs nopw 0x0(%rax,%rax,1)
L49:
  mov    -0x4(%rdx),%ecx
  add    %rsi,%rdx
  mov    %ecx,(%rdi,%rax,4)
  add    $0x1,%rax
  cmp    %eax,%ebx
  jg     L49
  jmp    L150
L930:
  xor    %eax,%eax
  mov    $0x1,%edx
  jmp    L181
L771:
  xor    %r11d,%r11d
  mov    $0x1,%edx
  jmp    L1046
L176:
  lea    -0x1(%r8),%r14d
  test   %edx,%edx
  jg     L332
  mov    0x10(%rsp),%ecx
  lea    -0x1(%r8),%r11d
  mov    $0x100,%esi
  lea    -0x2(%r8),%edi
  lea    (%rcx,%rcx,2),%eax
  add    0x14(%rsp),%eax
  add    $0x2,%eax
  sar    $0x2,%eax
  mov    %eax,0x210(%rsp)
  jmp    L13
L386:
  xor    %eax,%eax
  jmp    L236
L60:
  xor    %eax,%eax
  jmp    L672
L940:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: extract_symbolic_data
arguments: label: D4
type: byte[16]
name: extract_symbolic_data
arguments: label: D55
type: byte[16]

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

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

assistant: ```c
void get_upupleft_pred(uint8_t *rec, int ypos, int xpos, int stride, int size, uint8_t *pblock) {
  int i, j, diag;
  uint16_t ver[64];
  uint16_t hor[64];
  uint16_t up_left;
  uint8_t verF[64];
  uint8_t horF[64];
  uint8_t up_leftF;
  if (ypos > 0) {
    for (j = 0; j < size; j++) {
      ver[j] = rec[(ypos - 1) * stride + xpos + j];
    }
  } else {
    for (j = 0; j < size; j++) {
      ver[j] = 128;
    }
  }
  if (xpos > 0) {
    for (i = 0; i < size; i++) {
      hor[i] = rec[(ypos + i) * stride + xpos - 1];
    }
  } else {
    for (i = 0; i < size; i++) {
      hor[i] = 128;
    }
  }
  if (xpos > 0 && ypos > 0) {
    up_left = rec[(ypos - 1) * stride + xpos - 1];
  } else {
    up_left = 128;
  }
  verF[0] = (uint8_t)((ver[0] + 2 * ver[0] + ver[1] + 2) >> 2);
  for (j = 1; j < size - 1; j++) {
    verF[j] = (uint8_t)((ver[j - 1] + 2 * ver[j] + ver[j + 1] + 2) >> 2);
  }
  verF[size - 1] = (uint8_t)((ver[size - 2] + 2 * ver[size - 1] + ver[size - 1] + 2) >> 2);
  horF[0] = (uint8_t)((hor[0] + 2 * hor[0] + hor[1] + 2) >> 2);
  for (j = 1; j < size - 1; j++) {
    horF[j] = (uint8_t)((hor[j - 1] + 2 * hor[j] + hor[j + 1] + 2) >> 2);
  }
  horF[size - 1] = (uint8_t)((hor[size - 2] + 2 * hor[size - 1] + hor[size - 1] + 2) >> 2);
  up_leftF = (uint8_t)((hor[0] + 2 * up_left + ver[0] + 2) >> 2);
  for (i = 0; i < size; i++) {
    for (j = 0; j < size; j++) {
      diag = i - 2 * j;
      if (diag > 1) {
        pblock[i * size + j] = horF[diag - 2];
      } else if (diag == 1)
        pblock[i * size + j] = up_leftF;
      else if (diag == 0)
        pblock[i * size + j] = (up_leftF + verF[0]) >> 1;
      else {
        if (diag & 1)
          pblock[i * size + j] = verF[(-diag) / 2];
        else
          pblock[i * size + j] = (verF[(-diag) / 2] + verF[((-diag) / 2) - 1]) >> 1;
      }
    }
  }
}
```