user: 请显示与下面列出的汇编代码相匹配的C语言实现:

```asm
<mp2vseq_get_nonintramatrix>:
  endbr64
  mov    0x2c(%rdi),%eax
  mov    %rsi,%r8
  and    $0x2,%eax
  cmp    $0x1,%eax
  sbb    %rcx,%rcx
  xor    %cl,%cl
  cmp    $0x1,%eax
  sbb    %edx,%edx
  mov    0x12c(%rdi,%rcx,1),%eax
  and    $0xffffffc0,%edx
  add    $0x4b,%edx
  and    $0x1,%eax
  je     L25
  test   %rsi,%rsi
  je     L25
  mov    %edx,%ecx
  mov    %r8,%r9
  lea    0x4(,%rcx,4),%rsi
  lea    (%rdi,%rsi,1),%rdx
  sub    %rdx,%r9
  cmp    $0xc,%r9
  jbe    L19
  lea    -0x4(%rdi,%rsi,1),%rcx
  movdqa D9(%rip),%xmm0
  movdqu (%rdx),%xmm2
  movdqu (%rcx),%xmm1
  psrad  $0x1,%xmm2
  pslld  $0x7,%xmm1
  pand   %xmm0,%xmm1
  por    %xmm2,%xmm1
  movups %xmm1,(%r8)
  movdqu 0x10(%rcx),%xmm1
  movdqu 0x10(%rdx),%xmm2
  pslld  $0x7,%xmm1
  psrad  $0x1,%xmm2
  pand   %xmm0,%xmm1
  por    %xmm2,%xmm1
  movups %xmm1,0x10(%r8)
  movdqu 0x20(%rcx),%xmm1
  movdqu 0x20(%rdx),%xmm2
  pslld  $0x7,%xmm1
  psrad  $0x1,%xmm2
  pand   %xmm0,%xmm1
  por    %xmm2,%xmm1
  movups %xmm1,0x20(%r8)
  movdqu 0x30(%rcx),%xmm1
  movdqu 0x30(%rdx),%xmm2
  pslld  $0x7,%xmm1
  psrad  $0x1,%xmm2
  pand   %xmm0,%xmm1
  por    %xmm2,%xmm1
  movups %xmm1,0x30(%r8)
  movdqu 0x40(%rcx),%xmm1
  movdqu 0x40(%rdx),%xmm2
  pslld  $0x7,%xmm1
  psrad  $0x1,%xmm2
  pand   %xmm0,%xmm1
  por    %xmm2,%xmm1
  movups %xmm1,0x40(%r8)
  movdqu 0x50(%rcx),%xmm1
  movdqu 0x50(%rdx),%xmm2
  pslld  $0x7,%xmm1
  psrad  $0x1,%xmm2
  pand   %xmm0,%xmm1
  por    %xmm2,%xmm1
  movups %xmm1,0x50(%r8)
  movdqu 0x60(%rcx),%xmm1
  movdqu 0x60(%rdx),%xmm2
  pslld  $0x7,%xmm1
  psrad  $0x1,%xmm2
  pand   %xmm0,%xmm1
  por    %xmm2,%xmm1
  movups %xmm1,0x60(%r8)
  movdqu 0x70(%rcx),%xmm1
  movdqu 0x70(%rdx),%xmm2
  pslld  $0x7,%xmm1
  psrad  $0x1,%xmm2
  pand   %xmm0,%xmm1
  por    %xmm2,%xmm1
  movups %xmm1,0x70(%r8)
  movdqu 0x80(%rcx),%xmm1
  movdqu 0x80(%rdx),%xmm2
  pslld  $0x7,%xmm1
  psrad  $0x1,%xmm2
  pand   %xmm0,%xmm1
  por    %xmm2,%xmm1
  movups %xmm1,0x80(%r8)
  movdqu 0x90(%rcx),%xmm1
  movdqu 0x90(%rdx),%xmm2
  pslld  $0x7,%xmm1
  psrad  $0x1,%xmm2
  pand   %xmm0,%xmm1
  por    %xmm2,%xmm1
  movups %xmm1,0x90(%r8)
  movdqu 0xa0(%rcx),%xmm1
  movdqu 0xa0(%rdx),%xmm2
  pslld  $0x7,%xmm1
  psrad  $0x1,%xmm2
  pand   %xmm0,%xmm1
  por    %xmm2,%xmm1
  movups %xmm1,0xa0(%r8)
  movdqu 0xb0(%rcx),%xmm1
  movdqu 0xb0(%rdx),%xmm2
  pslld  $0x7,%xmm1
  psrad  $0x1,%xmm2
  pand   %xmm0,%xmm1
  por    %xmm2,%xmm1
  movups %xmm1,0xb0(%r8)
  movdqu 0xc0(%rcx),%xmm1
  movdqu 0xc0(%rdx),%xmm2
  pslld  $0x7,%xmm1
  psrad  $0x1,%xmm2
  pand   %xmm0,%xmm1
  por    %xmm2,%xmm1
  movups %xmm1,0xc0(%r8)
  movdqu 0xd0(%rcx),%xmm1
  movdqu 0xd0(%rdx),%xmm2
  pslld  $0x7,%xmm1
  psrad  $0x1,%xmm2
  pand   %xmm0,%xmm1
  por    %xmm2,%xmm1
  movups %xmm1,0xd0(%r8)
  movdqu 0xe0(%rcx),%xmm1
  movdqu 0xe0(%rdx),%xmm2
  pslld  $0x7,%xmm1
  psrad  $0x1,%xmm2
  pand   %xmm0,%xmm1
  por    %xmm2,%xmm1
  movups %xmm1,0xe0(%r8)
  movdqu 0xf0(%rcx),%xmm1
  pslld  $0x7,%xmm1
  pand   %xmm1,%xmm0
  movdqu 0xf0(%rdx),%xmm1
  psrad  $0x1,%xmm1
  por    %xmm1,%xmm0
  movups %xmm0,0xf0(%r8)
  ret
L19:
  lea    (%rdi,%rcx,4),%rdi
  xor    %ecx,%ecx
L8:
  mov    (%rdi,%rcx,1),%edx
  mov    0x4(%rdi,%rcx,1),%esi
  shl    $0x7,%edx
  sar    %esi
  movzbl %dl,%edx
  or     %esi,%edx
  mov    %edx,(%r8,%rcx,1)
  add    $0x4,%rcx
  cmp    $0x100,%rcx
  jne    L8
L25:
  ret
```

tool_calls: name: parse_data
arguments: data_tag: D9
type: byte[16]

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

assistant: ```c
bool mp2vseq_get_nonintramatrix(const uint8_t *p_mp2vseq, uint64_t p_matrix[64]) {
  unsigned int offset = 11;
  if (p_mp2vseq[11] & 0x2)
    offset += 64;
  if (!(p_mp2vseq[offset] & 0x1))
    return false;
  if (p_matrix != NULL) {
    int i;
    for (i = 0; i < 64; i++)
      p_matrix[i] = ((p_mp2vseq[offset + i] << 7) & 0x80) | (p_mp2vseq[offset + 1 + i] >> 1);
  }
  return true;
}
```