user: 下面的汇编指令对应的C源代码是什么：

```asm
<unpack20>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x18(%rbp)
  mov    %rsi,-0x20(%rbp)
  movl   $0x0,-0x4(%rbp)
  jmp    L14
L9:
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  shr    $0xc,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  shl    $0x8,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x4,%rax
  and    $0xfffff,%edx
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%edx
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  shr    $0x18,%eax
  mov    %eax,%ecx
  mov    -0x18(%rbp),%rax
  add    $0x4,%rax
  or     %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  shr    $0x4,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  and    $0xfffff,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  shl    $0x10,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0xc,%rax
  and    $0xfffff,%edx
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%edx
  mov    -0x20(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  shr    $0x10,%eax
  mov    %eax,%ecx
  mov    -0x18(%rbp),%rax
  add    $0xc,%rax
  or     %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  shl    $0x4,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x10,%rax
  and    $0xfffff,%edx
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%edx
  mov    -0x20(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  shr    $0x1c,%eax
  mov    %eax,%ecx
  mov    -0x18(%rbp),%rax
  add    $0x10,%rax
  or     %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  shr    $0x8,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x14,%rax
  and    $0xfffff,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  shl    $0xc,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x18,%rax
  and    $0xfffff,%edx
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%edx
  mov    -0x20(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%eax
  shr    $0x14,%eax
  mov    %eax,%ecx
  mov    -0x18(%rbp),%rax
  add    $0x18,%rax
  or     %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%edx
  mov    -0x18(%rbp),%rax
  add    $0x1c,%rax
  and    $0xfffff,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x14,%rax
  mov    (%rax),%edx
  mov    -0x18(%rbp),%rax
  add    $0x20,%rax
  shr    $0xc,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x14,%rax
  mov    (%rax),%eax
  shl    $0x8,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x24,%rax
  and    $0xfffff,%edx
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x24,%rax
  mov    (%rax),%edx
  mov    -0x20(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%eax
  shr    $0x18,%eax
  mov    %eax,%ecx
  mov    -0x18(%rbp),%rax
  add    $0x24,%rax
  or     %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%eax
  shr    $0x4,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x28,%rax
  and    $0xfffff,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%eax
  shl    $0x10,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x2c,%rax
  and    $0xfffff,%edx
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x2c,%rax
  mov    (%rax),%edx
  mov    -0x20(%rbp),%rax
  add    $0x1c,%rax
  mov    (%rax),%eax
  shr    $0x10,%eax
  mov    %eax,%ecx
  mov    -0x18(%rbp),%rax
  add    $0x2c,%rax
  or     %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x1c,%rax
  mov    (%rax),%eax
  shl    $0x4,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x30,%rax
  and    $0xfffff,%edx
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x30,%rax
  mov    (%rax),%edx
  mov    -0x20(%rbp),%rax
  add    $0x20,%rax
  mov    (%rax),%eax
  shr    $0x1c,%eax
  mov    %eax,%ecx
  mov    -0x18(%rbp),%rax
  add    $0x30,%rax
  or     %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x20,%rax
  mov    (%rax),%eax
  shr    $0x8,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x34,%rax
  and    $0xfffff,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x20,%rax
  mov    (%rax),%eax
  shl    $0xc,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x38,%rax
  and    $0xfffff,%edx
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x38,%rax
  mov    (%rax),%edx
  mov    -0x20(%rbp),%rax
  add    $0x24,%rax
  mov    (%rax),%eax
  shr    $0x14,%eax
  mov    %eax,%ecx
  mov    -0x18(%rbp),%rax
  add    $0x38,%rax
  or     %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x24,%rax
  mov    (%rax),%edx
  mov    -0x18(%rbp),%rax
  add    $0x3c,%rax
  and    $0xfffff,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x28,%rax
  mov    (%rax),%edx
  mov    -0x18(%rbp),%rax
  add    $0x40,%rax
  shr    $0xc,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x28,%rax
  mov    (%rax),%eax
  shl    $0x8,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x44,%rax
  and    $0xfffff,%edx
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x44,%rax
  mov    (%rax),%edx
  mov    -0x20(%rbp),%rax
  add    $0x2c,%rax
  mov    (%rax),%eax
  shr    $0x18,%eax
  mov    %eax,%ecx
  mov    -0x18(%rbp),%rax
  add    $0x44,%rax
  or     %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x2c,%rax
  mov    (%rax),%eax
  shr    $0x4,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x48,%rax
  and    $0xfffff,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x2c,%rax
  mov    (%rax),%eax
  shl    $0x10,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x4c,%rax
  and    $0xfffff,%edx
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x4c,%rax
  mov    (%rax),%edx
  mov    -0x20(%rbp),%rax
  add    $0x30,%rax
  mov    (%rax),%eax
  shr    $0x10,%eax
  mov    %eax,%ecx
  mov    -0x18(%rbp),%rax
  add    $0x4c,%rax
  or     %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x30,%rax
  mov    (%rax),%eax
  shl    $0x4,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x50,%rax
  and    $0xfffff,%edx
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x50,%rax
  mov    (%rax),%edx
  mov    -0x20(%rbp),%rax
  add    $0x34,%rax
  mov    (%rax),%eax
  shr    $0x1c,%eax
  mov    %eax,%ecx
  mov    -0x18(%rbp),%rax
  add    $0x50,%rax
  or     %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x34,%rax
  mov    (%rax),%eax
  shr    $0x8,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x54,%rax
  and    $0xfffff,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x34,%rax
  mov    (%rax),%eax
  shl    $0xc,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x58,%rax
  and    $0xfffff,%edx
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x58,%rax
  mov    (%rax),%edx
  mov    -0x20(%rbp),%rax
  add    $0x38,%rax
  mov    (%rax),%eax
  shr    $0x14,%eax
  mov    %eax,%ecx
  mov    -0x18(%rbp),%rax
  add    $0x58,%rax
  or     %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x38,%rax
  mov    (%rax),%edx
  mov    -0x18(%rbp),%rax
  add    $0x5c,%rax
  and    $0xfffff,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x3c,%rax
  mov    (%rax),%edx
  mov    -0x18(%rbp),%rax
  add    $0x60,%rax
  shr    $0xc,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x3c,%rax
  mov    (%rax),%eax
  shl    $0x8,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x64,%rax
  and    $0xfffff,%edx
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x64,%rax
  mov    (%rax),%edx
  mov    -0x20(%rbp),%rax
  add    $0x40,%rax
  mov    (%rax),%eax
  shr    $0x18,%eax
  mov    %eax,%ecx
  mov    -0x18(%rbp),%rax
  add    $0x64,%rax
  or     %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x40,%rax
  mov    (%rax),%eax
  shr    $0x4,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x68,%rax
  and    $0xfffff,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x40,%rax
  mov    (%rax),%eax
  shl    $0x10,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x6c,%rax
  and    $0xfffff,%edx
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x6c,%rax
  mov    (%rax),%edx
  mov    -0x20(%rbp),%rax
  add    $0x44,%rax
  mov    (%rax),%eax
  shr    $0x10,%eax
  mov    %eax,%ecx
  mov    -0x18(%rbp),%rax
  add    $0x6c,%rax
  or     %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x44,%rax
  mov    (%rax),%eax
  shl    $0x4,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x70,%rax
  and    $0xfffff,%edx
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x70,%rax
  mov    (%rax),%edx
  mov    -0x20(%rbp),%rax
  add    $0x48,%rax
  mov    (%rax),%eax
  shr    $0x1c,%eax
  mov    %eax,%ecx
  mov    -0x18(%rbp),%rax
  add    $0x70,%rax
  or     %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x48,%rax
  mov    (%rax),%eax
  shr    $0x8,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x74,%rax
  and    $0xfffff,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x48,%rax
  mov    (%rax),%eax
  shl    $0xc,%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x78,%rax
  and    $0xfffff,%edx
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x78,%rax
  mov    (%rax),%edx
  mov    -0x20(%rbp),%rax
  add    $0x4c,%rax
  mov    (%rax),%eax
  shr    $0x14,%eax
  mov    %eax,%ecx
  mov    -0x18(%rbp),%rax
  add    $0x78,%rax
  or     %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x4c,%rax
  mov    (%rax),%edx
  mov    -0x18(%rbp),%rax
  add    $0x7c,%rax
  and    $0xfffff,%edx
  mov    %edx,(%rax)
  addl   $0x20,-0x4(%rbp)
  subq   $0xffffffffffffff80,-0x18(%rbp)
  addq   $0x50,-0x20(%rbp)
L14:
  cmpl   $0x7f,-0x4(%rbp)
  jle    L9
  nop
  nop
  pop    %rbp
  ret
```

assistant: ```c
void unpack20(unsigned int *p, unsigned int *w) {
  int i;
  for (i = 0; i < 128; i += 32, p += 32, w += 20) {
    p[0] = (w[0] >> 12);
    p[1] = (w[0] << 8) & ((1 << 20) - 1);
    p[1] |= (w[1] >> 24);
    p[2] = (w[1] >> 4) & ((1 << 20) - 1);
    p[3] = (w[1] << 16) & ((1 << 20) - 1);
    p[3] |= (w[2] >> 16);
    p[4] = (w[2] << 4) & ((1 << 20) - 1);
    p[4] |= (w[3] >> 28);
    p[5] = (w[3] >> 8) & ((1 << 20) - 1);
    p[6] = (w[3] << 12) & ((1 << 20) - 1);
    p[6] |= (w[4] >> 20);
    p[7] = (w[4]) & ((1 << 20) - 1);
    p[8] = (w[5] >> 12);
    p[9] = (w[5] << 8) & ((1 << 20) - 1);
    p[9] |= (w[6] >> 24);
    p[10] = (w[6] >> 4) & ((1 << 20) - 1);
    p[11] = (w[6] << 16) & ((1 << 20) - 1);
    p[11] |= (w[7] >> 16);
    p[12] = (w[7] << 4) & ((1 << 20) - 1);
    p[12] |= (w[8] >> 28);
    p[13] = (w[8] >> 8) & ((1 << 20) - 1);
    p[14] = (w[8] << 12) & ((1 << 20) - 1);
    p[14] |= (w[9] >> 20);
    p[15] = (w[9]) & ((1 << 20) - 1);
    p[16] = (w[10] >> 12);
    p[17] = (w[10] << 8) & ((1 << 20) - 1);
    p[17] |= (w[11] >> 24);
    p[18] = (w[11] >> 4) & ((1 << 20) - 1);
    p[19] = (w[11] << 16) & ((1 << 20) - 1);
    p[19] |= (w[12] >> 16);
    p[20] = (w[12] << 4) & ((1 << 20) - 1);
    p[20] |= (w[13] >> 28);
    p[21] = (w[13] >> 8) & ((1 << 20) - 1);
    p[22] = (w[13] << 12) & ((1 << 20) - 1);
    p[22] |= (w[14] >> 20);
    p[23] = (w[14]) & ((1 << 20) - 1);
    p[24] = (w[15] >> 12);
    p[25] = (w[15] << 8) & ((1 << 20) - 1);
    p[25] |= (w[16] >> 24);
    p[26] = (w[16] >> 4) & ((1 << 20) - 1);
    p[27] = (w[16] << 16) & ((1 << 20) - 1);
    p[27] |= (w[17] >> 16);
    p[28] = (w[17] << 4) & ((1 << 20) - 1);
    p[28] |= (w[18] >> 28);
    p[29] = (w[18] >> 8) & ((1 << 20) - 1);
    p[30] = (w[18] << 12) & ((1 << 20) - 1);
    p[30] |= (w[19] >> 20);
    p[31] = (w[19]) & ((1 << 20) - 1);
  }
}
```