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

```asm
<jbg_int2dppriv>:
  endbr64
  movq   $0x0,(%rdi)
  mov    %rdi,%r8
  lea    0x8(%rdi),%rdi
  xor    %eax,%eax
  mov    %r8,%rcx
  mov    %rsi,%r9
  xor    %edx,%edx
  xor    %esi,%esi
  movq   $0x0,0x6b0(%rdi)
  and    $0xfffffffffffffff8,%rdi
  mov    $0xfffffffe,%r10d
  sub    %rdi,%rcx
  add    $0x6c0,%ecx
  shr    $0x3,%ecx
  rep stos %rax,%es:(%rdi)
  nopw   0x0(%rax,%rax,1)
L24:
  mov    %edx,%eax
  mov    %esi,%r11d
  mov    %edx,%ecx
  sar    %eax
  and    $0x2,%r11d
  sar    $0x2,%ecx
  and    $0x1,%eax
  movslq %ecx,%rdi
  shl    $0x3,%ecx
  or     %r11d,%eax
  mov    %edx,%r11d
  and    $0x8,%ecx
  sar    $0x7,%r11d
  shl    $0x4,%r11d
  or     %r11d,%eax
  or     %ecx,%eax
  mov    %edx,%ecx
  shr    %ecx
  and    $0x4,%ecx
  or     %ecx,%eax
  lea    0x0(,%rdx,8),%ecx
  and    $0x80,%ecx
  or     %ecx,%eax
  lea    (%rdx,%rdx,1),%ecx
  and    $0x40,%ecx
  or     %ecx,%eax
  mov    %edx,%ecx
  add    $0x1,%edx
  shr    %ecx
  and    $0x20,%ecx
  or     %ecx,%eax
  mov    %r10d,%ecx
  cltq
  sub    %esi,%ecx
  add    $0x2,%esi
  movzbl (%r9,%rax,1),%eax
  and    $0x6,%ecx
  and    $0x3,%eax
  shl    %cl,%eax
  or     %al,(%r8,%rdi,1)
  cmp    $0x100,%edx
  jne    L24
  xor    %esi,%esi
  xor    %edx,%edx
  mov    $0xfffffffe,%edi
  nop
L2:
  mov    %edx,%eax
  mov    %esi,%ecx
  lea    0x100(%rdx),%r10d
  sar    %eax
  and    $0x2,%ecx
  sar    $0x2,%r10d
  and    $0x1,%eax
  movslq %r10d,%r10
  or     %ecx,%eax
  mov    %edx,%ecx
  and    $0x40,%ecx
  or     %ecx,%eax
  lea    (%rdx,%rdx,1),%ecx
  and    $0x8,%ecx
  or     %ecx,%eax
  mov    %edx,%ecx
  shr    %ecx
  and    $0x4,%ecx
  or     %ecx,%eax
  mov    %edx,%ecx
  shl    $0x4,%ecx
  and    $0x100,%ecx
  or     %ecx,%eax
  lea    0x0(,%rdx,4),%ecx
  and    $0x80,%ecx
  or     %ecx,%eax
  mov    %edx,%ecx
  add    $0x1,%edx
  shr    $0x2,%ecx
  and    $0x20,%ecx
  or     %ecx,%eax
  mov    %edi,%ecx
  add    $0x100,%eax
  sub    %esi,%ecx
  add    $0x2,%esi
  cltq
  and    $0x6,%ecx
  movzbl (%r9,%rax,1),%eax
  and    $0x3,%eax
  shl    %cl,%eax
  or     %al,(%r8,%r10,1)
  cmp    $0x200,%edx
  jne    L2
  xor    %edi,%edi
  xor    %edx,%edx
  mov    $0xfffffffe,%r10d
  nopw   0x0(%rax,%rax,1)
L9:
  mov    %edx,%eax
  mov    %edi,%ecx
  lea    0x300(%rdx),%esi
  sar    %eax
  and    $0x2,%ecx
  sar    $0x2,%esi
  and    $0x1,%eax
  movslq %esi,%rsi
  or     %ecx,%eax
  mov    %edx,%ecx
  and    $0x80,%ecx
  or     %ecx,%eax
  lea    (%rdx,%rdx,1),%ecx
  and    $0x8,%ecx
  or     %ecx,%eax
  mov    %edx,%ecx
  shr    %ecx
  and    $0x4,%ecx
  or     %ecx,%eax
  mov    %edx,%ecx
  shl    $0x6,%ecx
  and    $0x400,%ecx
  or     %ecx,%eax
  mov    %edx,%ecx
  shl    $0x4,%ecx
  and    $0x200,%ecx
  or     %ecx,%eax
  lea    0x0(,%rdx,4),%ecx
  add    $0x1,%edx
  and    $0x100,%ecx
  or     %ecx,%eax
  mov    %r10d,%ecx
  add    $0x300,%eax
  sub    %edi,%ecx
  add    $0x2,%edi
  cltq
  and    $0x6,%ecx
  movzbl (%r9,%rax,1),%eax
  and    $0x3,%eax
  shl    %cl,%eax
  or     %al,(%r8,%rsi,1)
  cmp    $0x800,%edx
  jne    L9
  xor    %edi,%edi
  xor    %eax,%eax
  mov    $0xfffffffe,%r10d
  nop
L28:
  mov    %eax,%edx
  mov    %edi,%ecx
  lea    0xb00(%rax),%esi
  sar    %edx
  and    $0x2,%ecx
  sar    $0x2,%esi
  and    $0x1,%edx
  movslq %esi,%rsi
  or     %ecx,%edx
  lea    (%rax,%rax,1),%ecx
  and    $0x8,%ecx
  or     %edx,%ecx
  mov    %eax,%edx
  shr    %edx
  and    $0x4,%edx
  or     %ecx,%edx
  mov    %eax,%ecx
  shl    $0x7,%ecx
  and    $0x800,%ecx
  or     %edx,%ecx
  mov    %eax,%edx
  shl    $0x5,%edx
  and    $0x400,%edx
  or     %ecx,%edx
  lea    0x0(,%rax,8),%ecx
  and    $0x200,%ecx
  or     %edx,%ecx
  lea    (%rax,%rax,1),%edx
  add    $0x1,%eax
  and    $0x100,%edx
  or     %ecx,%edx
  mov    %r10d,%ecx
  add    $0xb00,%edx
  sub    %edi,%ecx
  add    $0x2,%edi
  movslq %edx,%rdx
  and    $0x6,%ecx
  movzbl (%r9,%rdx,1),%edx
  and    $0x3,%edx
  shl    %cl,%edx
  or     %dl,(%r8,%rsi,1)
  cmp    $0x1000,%eax
  jne    L28
  ret
```

assistant: ```c
void jbg_int2dppriv(unsigned char *dptable, const char *internal) {
  int i, j, k;
  int trans0[8] = {1, 0, 3, 2, 7, 6, 5, 4};
  int trans1[9] = {1, 0, 3, 2, 8, 7, 6, 5, 4};
  int trans2[11] = {1, 0, 3, 2, 10, 9, 8, 7, 6, 5, 4};
  int trans3[12] = {1, 0, 3, 2, 11, 10, 9, 8, 7, 6, 5, 4};
  for (i = 0; i < 1728; dptable[i++] = 0)
    ;
  for (i = 0; i < 256; i++) {
    k = 0;
    for (j = 0; j < 8; j++)
      k |= ((i >> j) & 1) << trans0[j];
    dptable[(i + 0) >> 2] |= (internal[k + 0] & 3) << ((3 - (i & 3)) << 1);
  };
  for (i = 0; i < 512; i++) {
    k = 0;
    for (j = 0; j < 8; j++)
      k |= ((i >> j) & 1) << trans1[j];
    dptable[(i + 256) >> 2] |= (internal[k + 256] & 3) << ((3 - (i & 3)) << 1);
  };
  for (i = 0; i < 2048; i++) {
    k = 0;
    for (j = 0; j < 8; j++)
      k |= ((i >> j) & 1) << trans2[j];
    dptable[(i + 768) >> 2] |= (internal[k + 768] & 3) << ((3 - (i & 3)) << 1);
  };
  for (i = 0; i < 4096; i++) {
    k = 0;
    for (j = 0; j < 8; j++)
      k |= ((i >> j) & 1) << trans3[j];
    dptable[(i + 2816) >> 2] |= (internal[k + 2816] & 3) << ((3 - (i & 3)) << 1);
  };
  return;
}
```