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

```asm
<get_hor_pred>:
  endbr64
  movslq %edx,%rax
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  test   %eax,%eax
  jle    L104
  test   %r8d,%r8d
  jle    L79
  imul   %ecx,%esi
  movslq %ecx,%r12
  movslq %r8d,%rbp
  mov    %r8d,%r11d
  shl    $0x2,%r12
  shl    $0x2,%rbp
  lea    -0x1(%r8),%r13d
  and    $0xfffffffc,%r11d
  movslq %esi,%rdx
  mov    %r9,%rsi
  add    %rdx,%rax
  xor    %edx,%edx
  lea    (%rdi,%rax,4),%r10
  mov    %r8d,%eax
  xor    %edi,%edi
  shr    $0x2,%eax
  lea    -0x1(%rax),%ebx
  add    $0x1,%rbx
  shl    $0x4,%rbx
  xchg   %ax,%ax
L8:
  mov    -0x4(%r10),%ecx
  cmp    $0x2,%r13d
  jbe    L42
  movd   %ecx,%xmm1
  lea    (%rbx,%rsi,1),%r14
  mov    %rsi,%rax
  pshufd $0x0,%xmm1,%xmm0
  nopw   0x0(%rax,%rax,1)
L174:
  movups %xmm0,(%rax)
  add    $0x10,%rax
  cmp    %r14,%rax
  jne    L174
  mov    %r11d,%eax
  cmp    %r8d,%r11d
  je     L177
L48:
  lea    (%rdx,%rax,1),%r14d
  movslq %r14d,%r14
  mov    %ecx,(%r9,%r14,4)
  lea    0x1(%rax),%r14d
  cmp    %r8d,%r14d
  jge    L177
  add    %edx,%r14d
  add    $0x2,%eax
  movslq %r14d,%r14
  mov    %ecx,(%r9,%r14,4)
  cmp    %eax,%r8d
  jle    L177
  add    %edx,%eax
  cltq
  mov    %ecx,(%r9,%rax,4)
L177:
  add    $0x1,%edi
  add    %r12,%r10
  add    %r8d,%edx
  add    %rbp,%rsi
  cmp    %edi,%r8d
  jne    L8
L79:
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
  nopl   0x0(%rax)
L42:
  xor    %eax,%eax
  jmp    L48
L104:
  test   %r8d,%r8d
  jle    L79
  mov    %r8d,%eax
  movslq %r8d,%rbx
  mov    %r8d,%r10d
  mov    %r9,%rsi
  shr    $0x2,%eax
  lea    -0x1(%r8),%ebp
  shl    $0x2,%rbx
  and    $0xfffffffc,%r10d
  lea    -0x1(%rax),%r11d
  movdqa D1(%rip),%xmm0
  xor    %ecx,%ecx
  xor    %edi,%edi
  add    $0x1,%r11
  shl    $0x4,%r11
  cmp    $0x2,%ebp
  jbe    L152
  nopl   0x0(%rax)
L148:
  lea    (%r11,%rsi,1),%rdx
  mov    %rsi,%rax
  nop
L89:
  movups %xmm0,(%rax)
  add    $0x10,%rax
  cmp    %rdx,%rax
  jne    L89
  mov    %r10d,%eax
  cmp    %r8d,%r10d
  je     L168
L130:
  lea    (%rcx,%rax,1),%edx
  movslq %edx,%rdx
  movl   $0x80,(%r9,%rdx,4)
  lea    0x1(%rax),%edx
  cmp    %edx,%r8d
  jle    L168
  add    %ecx,%edx
  add    $0x2,%eax
  movslq %edx,%rdx
  movl   $0x80,(%r9,%rdx,4)
  cmp    %eax,%r8d
  jle    L168
  add    %ecx,%eax
  cltq
  movl   $0x80,(%r9,%rax,4)
L168:
  add    $0x1,%edi
  add    %r8d,%ecx
  add    %rbx,%rsi
  cmp    %edi,%r8d
  je     L79
  cmp    $0x2,%ebp
  ja     L148
L152:
  xor    %eax,%eax
  jmp    L130
```

tool_calls: name: unpack_data
arguments: data_label: D1
type_guessed: byte[16]

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

assistant: ```c
void get_hor_pred(uint8_t *rec, int ypos, int xpos, int stride, int size, uint8_t *pblock) {
  int i, j, val;
  if (xpos > 0) {
    for (i = 0; i < size; i++) {
      val = rec[(ypos + i) * stride + xpos - 1];
      for (j = 0; j < size; j++) {
        pblock[i * size + j] = val;
      }
    }
  } else {
    for (i = 0; i < size; i++) {
      for (j = 0; j < size; j++) {
        pblock[i * size + j] = 128;
      }
    }
  }
}
```