user: 这段汇编代码用C语言表示是什么样的:

```asm
<last_step_scan>:
  endbr64
  mov    %rsi,%rcx
  mov    %rdx,%rsi
  mov    %rdi,%rax
  lea    0x2000(%rcx),%rdx
  lea    0x200(%rsi),%rdi
  cmp    %rdx,%rsi
  setae  %dl
  cmp    %rdi,%rcx
  setae  %dil
  or     %dil,%dl
  je     L31
  lea    0xff(%rax),%rdx
  sub    %rcx,%rdx
  cmp    $0x1fe,%rdx
  jbe    L31
  mov    %rcx,%rdx
  sub    $0x40,%rsp
  lea    0x2000(%rax),%rcx
  cs nopw 0x0(%rax,%rax,1)
L15:
  movdqu 0x20(%rax),%xmm8
  movdqu 0x30(%rax),%xmm5
  add    $0x100,%rax
  add    $0x10,%rsi
  movdqu -0xc0(%rax),%xmm3
  movdqu -0x100(%rax),%xmm0
  add    $0x100,%rdx
  movdqa %xmm8,%xmm14
  shufps $0xdd,%xmm5,%xmm8
  movdqu -0x80(%rax),%xmm2
  movdqu -0xf0(%rax),%xmm4
  shufps $0x88,%xmm5,%xmm14
  movdqa %xmm3,%xmm13
  movdqa %xmm0,%xmm15
  movdqu -0xb0(%rax),%xmm5
  shufps $0x88,%xmm4,%xmm15
  shufps $0xdd,%xmm4,%xmm0
  movdqu -0x70(%rax),%xmm4
  movdqu -0xa0(%rax),%xmm7
  shufps $0x88,%xmm5,%xmm13
  shufps $0xdd,%xmm5,%xmm3
  movdqu -0x60(%rax),%xmm6
  movdqu -0x90(%rax),%xmm5
  movdqa %xmm7,%xmm12
  movdqu -0x30(%rax),%xmm10
  movdqu -0x40(%rax),%xmm1
  shufps $0x88,%xmm5,%xmm12
  shufps $0xdd,%xmm5,%xmm7
  movdqa %xmm2,%xmm5
  shufps $0xdd,%xmm4,%xmm2
  shufps $0x88,%xmm4,%xmm5
  movdqu -0x50(%rax),%xmm4
  movdqu -0x20(%rax),%xmm9
  movdqa %xmm6,%xmm11
  shufps $0x88,%xmm4,%xmm11
  shufps $0xdd,%xmm4,%xmm6
  movdqa %xmm1,%xmm4
  shufps $0xdd,%xmm10,%xmm1
  movaps %xmm1,-0x78(%rsp)
  movdqu -0x10(%rax),%xmm1
  shufps $0x88,%xmm10,%xmm4
  movdqa %xmm9,%xmm10
  shufps $0x88,%xmm1,%xmm10
  shufps $0xdd,%xmm1,%xmm9
  movdqa %xmm9,%xmm1
  movdqa %xmm15,%xmm9
  shufps $0x88,%xmm14,%xmm9
  shufps $0xdd,%xmm14,%xmm15
  movdqa %xmm13,%xmm14
  shufps $0xdd,%xmm12,%xmm13
  shufps $0x88,%xmm12,%xmm14
  movdqa %xmm5,%xmm12
  shufps $0xdd,%xmm11,%xmm5
  shufps $0x88,%xmm11,%xmm12
  movdqa %xmm4,%xmm11
  shufps $0xdd,%xmm10,%xmm4
  shufps $0x88,%xmm10,%xmm11
  movdqa %xmm0,%xmm10
  shufps $0xdd,%xmm8,%xmm0
  shufps $0x88,%xmm8,%xmm10
  movdqa %xmm3,%xmm8
  shufps $0xdd,%xmm7,%xmm3
  shufps $0x88,%xmm7,%xmm8
  movdqa %xmm2,%xmm7
  shufps $0xdd,%xmm6,%xmm2
  movaps %xmm2,-0x38(%rsp)
  shufps $0x88,%xmm6,%xmm7
  movdqa -0x78(%rsp),%xmm6
  movdqa %xmm1,%xmm2
  shufps $0x88,%xmm1,%xmm6
  movdqa -0x78(%rsp),%xmm1
  shufps $0xdd,%xmm2,%xmm1
  movdqa %xmm9,%xmm2
  shufps $0xdd,%xmm14,%xmm9
  shufps $0x88,%xmm14,%xmm2
  movdqa %xmm12,%xmm14
  shufps $0xdd,%xmm11,%xmm12
  movaps %xmm12,-0x78(%rsp)
  shufps $0x88,%xmm11,%xmm14
  movdqa %xmm10,%xmm11
  shufps $0xdd,%xmm8,%xmm10
  shufps $0x88,%xmm8,%xmm11
  movdqa %xmm7,%xmm8
  shufps $0xdd,%xmm6,%xmm7
  movaps %xmm7,-0x58(%rsp)
  shufps $0x88,%xmm6,%xmm8
  movdqa %xmm15,%xmm6
  movaps %xmm8,-0x68(%rsp)
  movdqu -0x10(%rsi),%xmm8
  shufps $0x88,%xmm13,%xmm6
  movdqa %xmm6,%xmm7
  movdqa %xmm15,%xmm6
  movdqa %xmm5,%xmm15
  shufps $0xdd,%xmm4,%xmm5
  movaps %xmm5,-0x48(%rsp)
  movdqa -0x38(%rsp),%xmm5
  shufps $0x88,%xmm4,%xmm15
  movdqa %xmm0,%xmm4
  shufps $0xdd,%xmm13,%xmm6
  shufps $0xdd,%xmm3,%xmm0
  movaps %xmm15,-0x28(%rsp)
  shufps $0x88,%xmm3,%xmm4
  movdqa %xmm5,%xmm13
  movdqa %xmm5,%xmm3
  shufps $0x88,%xmm1,%xmm3
  shufps $0xdd,%xmm1,%xmm13
  movdqa %xmm2,%xmm1
  movaps %xmm13,-0x38(%rsp)
  shufps $0x88,%xmm14,%xmm1
  paddd  %xmm8,%xmm1
  shufps $0xdd,%xmm14,%xmm2
  movdqa %xmm1,%xmm12
  movdqa %xmm11,%xmm1
  shufps $0x88,-0x68(%rsp),%xmm1
  paddd  %xmm8,%xmm1
  movaps %xmm1,-0x18(%rsp)
  movdqa %xmm7,%xmm1
  shufps $0x88,%xmm15,%xmm1
  paddd  %xmm8,%xmm1
  movdqa %xmm1,%xmm15
  movdqa %xmm4,%xmm1
  shufps $0xdd,%xmm3,%xmm4
  shufps $0x88,%xmm3,%xmm1
  paddd  %xmm8,%xmm1
  movaps %xmm1,-0x8(%rsp)
  movdqa %xmm9,%xmm1
  shufps $0x88,-0x78(%rsp),%xmm1
  movdqa %xmm1,%xmm13
  movdqa %xmm10,%xmm1
  shufps $0x88,-0x58(%rsp),%xmm1
  movdqa %xmm1,%xmm5
  movdqa %xmm6,%xmm1
  paddd  %xmm8,%xmm5
  shufps $0x88,-0x48(%rsp),%xmm1
  shufps $0xdd,-0x68(%rsp),%xmm11
  paddd  %xmm8,%xmm11
  movaps %xmm5,0x8(%rsp)
  movdqa %xmm1,%xmm5
  movdqa %xmm2,%xmm1
  movdqa %xmm4,%xmm2
  paddd  %xmm8,%xmm5
  paddd  %xmm8,%xmm1
  movdqa %xmm6,%xmm4
  movdqa -0x18(%rsp),%xmm6
  movaps %xmm5,0x18(%rsp)
  movdqa %xmm0,%xmm5
  shufps $0xdd,-0x38(%rsp),%xmm0
  paddd  %xmm8,%xmm0
  movdqa %xmm0,%xmm3
  shufps $0x88,-0x38(%rsp),%xmm5
  movdqa %xmm12,%xmm0
  paddd  %xmm8,%xmm5
  punpckhdq %xmm1,%xmm12
  movaps %xmm5,0x28(%rsp)
  punpckldq %xmm1,%xmm0
  shufps $0xdd,-0x28(%rsp),%xmm7
  movdqa %xmm12,%xmm14
  movdqa %xmm7,%xmm5
  movdqa %xmm6,%xmm12
  shufps $0xdd,-0x58(%rsp),%xmm10
  punpckhdq %xmm11,%xmm6
  paddd  %xmm8,%xmm5
  movdqa %xmm10,%xmm7
  shufps $0xdd,-0x78(%rsp),%xmm9
  movdqa %xmm6,%xmm10
  movdqa %xmm15,%xmm6
  paddd  %xmm8,%xmm2
  shufps $0xdd,-0x48(%rsp),%xmm4
  punpckldq %xmm5,%xmm6
  paddd  %xmm8,%xmm13
  paddd  %xmm8,%xmm9
  movdqa %xmm6,%xmm1
  movdqa %xmm15,%xmm6
  punpckldq %xmm11,%xmm12
  movdqa -0x8(%rsp),%xmm15
  punpckhdq %xmm5,%xmm6
  movdqa %xmm13,%xmm11
  punpckhdq %xmm9,%xmm13
  movdqa %xmm15,%xmm5
  punpckhdq %xmm2,%xmm15
  punpckldq %xmm9,%xmm11
  movdqa 0x18(%rsp),%xmm9
  punpckldq %xmm2,%xmm5
  movdqa 0x8(%rsp),%xmm2
  movaps %xmm15,-0x78(%rsp)
  paddd  %xmm8,%xmm7
  paddd  %xmm8,%xmm4
  movdqa %xmm11,%xmm15
  movdqa 0x28(%rsp),%xmm8
  movdqa %xmm2,%xmm11
  punpckhdq %xmm7,%xmm2
  punpckldq %xmm7,%xmm11
  movdqa %xmm9,%xmm7
  punpckhdq %xmm4,%xmm9
  punpckldq %xmm4,%xmm7
  movdqa %xmm8,%xmm4
  punpckhdq %xmm3,%xmm8
  movaps %xmm8,-0x68(%rsp)
  movdqa %xmm14,%xmm8
  punpckhdq %xmm13,%xmm14
  punpckldq %xmm3,%xmm4
  punpckldq %xmm13,%xmm8
  movdqa %xmm12,%xmm13
  movdqa %xmm0,%xmm3
  punpckldq %xmm11,%xmm13
  punpckhdq %xmm11,%xmm12
  movdqa %xmm10,%xmm11
  punpckhdq %xmm2,%xmm10
  punpckldq %xmm15,%xmm3
  punpckhdq %xmm15,%xmm0
  movdqa %xmm10,%xmm15
  movdqa %xmm5,%xmm10
  punpckldq %xmm2,%xmm11
  punpckldq %xmm4,%xmm10
  movdqa %xmm1,%xmm2
  punpckhdq %xmm7,%xmm1
  punpckldq %xmm7,%xmm2
  movaps %xmm10,-0x58(%rsp)
  movdqa %xmm6,%xmm7
  punpckhdq %xmm4,%xmm5
  movdqa -0x78(%rsp),%xmm10
  punpckldq %xmm9,%xmm7
  punpckhdq %xmm9,%xmm6
  movdqa -0x68(%rsp),%xmm9
  movdqa %xmm10,%xmm4
  punpckhdq %xmm9,%xmm10
  punpckldq %xmm9,%xmm4
  movdqa %xmm3,%xmm9
  punpckhdq %xmm2,%xmm3
  movaps %xmm10,-0x68(%rsp)
  punpckldq %xmm2,%xmm9
  movdqa %xmm0,%xmm2
  punpckhdq %xmm1,%xmm0
  punpckldq %xmm1,%xmm2
  movaps %xmm9,-0x78(%rsp)
  movdqa %xmm14,%xmm1
  movdqa %xmm2,%xmm10
  movdqa %xmm8,%xmm2
  punpckhdq %xmm6,%xmm1
  punpckldq %xmm7,%xmm2
  movdqa %xmm2,%xmm9
  movdqa %xmm8,%xmm2
  movdqa %xmm14,%xmm8
  punpckldq %xmm6,%xmm8
  movdqa -0x58(%rsp),%xmm6
  punpckhdq %xmm7,%xmm2
  movdqa %xmm13,%xmm14
  movdqa %xmm13,%xmm7
  movdqa %xmm12,%xmm13
  punpckldq %xmm6,%xmm14
  punpckhdq %xmm6,%xmm7
  movdqa %xmm12,%xmm6
  punpckldq %xmm5,%xmm13
  punpckhdq %xmm5,%xmm6
  movdqa %xmm11,%xmm12
  movdqa %xmm11,%xmm5
  punpckldq %xmm4,%xmm12
  movdqa %xmm15,%xmm11
  punpckhdq %xmm4,%xmm5
  movdqa -0x68(%rsp),%xmm4
  punpckhdq %xmm4,%xmm15
  punpckldq %xmm4,%xmm11
  movdqa %xmm15,%xmm4
  movdqa -0x78(%rsp),%xmm15
  punpckldq %xmm14,%xmm15
  movups %xmm15,-0x100(%rdx)
  movdqa -0x78(%rsp),%xmm15
  punpckhdq %xmm14,%xmm15
  movdqa %xmm3,%xmm14
  punpckhdq %xmm7,%xmm3
  movups %xmm3,-0xd0(%rdx)
  movdqa %xmm10,%xmm3
  punpckldq %xmm7,%xmm14
  punpckhdq %xmm13,%xmm10
  punpckldq %xmm13,%xmm3
  movups %xmm15,-0xf0(%rdx)
  movups %xmm14,-0xe0(%rdx)
  movups %xmm3,-0xc0(%rdx)
  movdqa %xmm0,%xmm3
  punpckhdq %xmm6,%xmm0
  movups %xmm0,-0x90(%rdx)
  movdqa %xmm9,%xmm0
  punpckldq %xmm6,%xmm3
  punpckhdq %xmm12,%xmm9
  punpckldq %xmm12,%xmm0
  movups %xmm10,-0xb0(%rdx)
  movups %xmm0,-0x80(%rdx)
  movdqa %xmm2,%xmm0
  punpckhdq %xmm5,%xmm2
  punpckldq %xmm5,%xmm0
  movups %xmm3,-0xa0(%rdx)
  movups %xmm0,-0x60(%rdx)
  movdqa %xmm8,%xmm0
  punpckhdq %xmm11,%xmm8
  punpckldq %xmm11,%xmm0
  movups %xmm9,-0x70(%rdx)
  movups %xmm0,-0x40(%rdx)
  movdqa %xmm1,%xmm0
  punpckhdq %xmm4,%xmm1
  punpckldq %xmm4,%xmm0
  movups %xmm2,-0x50(%rdx)
  movups %xmm8,-0x30(%rdx)
  movups %xmm0,-0x20(%rdx)
  movups %xmm1,-0x10(%rdx)
  cmp    %rcx,%rax
  jne    L15
  add    $0x40,%rsp
  ret
L31:
  mov    %rcx,%rdx
  lea    0x2000(%rax),%rdi
  nopl   0x0(%rax,%rax,1)
L27:
  mov    (%rax),%ecx
  add    (%rsi),%ecx
  add    $0x40,%rax
  add    $0x4,%rsi
  mov    %ecx,(%rdx)
  mov    -0x3c(%rax),%ecx
  add    $0x40,%rdx
  add    -0x4(%rsi),%ecx
  mov    %ecx,-0x3c(%rdx)
  mov    -0x38(%rax),%ecx
  add    -0x4(%rsi),%ecx
  mov    %ecx,-0x38(%rdx)
  mov    -0x34(%rax),%ecx
  add    -0x4(%rsi),%ecx
  mov    %ecx,-0x34(%rdx)
  mov    -0x4(%rsi),%ecx
  add    -0x30(%rax),%ecx
  mov    %ecx,-0x30(%rdx)
  mov    -0x4(%rsi),%ecx
  add    -0x2c(%rax),%ecx
  mov    %ecx,-0x2c(%rdx)
  mov    -0x4(%rsi),%ecx
  add    -0x28(%rax),%ecx
  mov    %ecx,-0x28(%rdx)
  mov    -0x4(%rsi),%ecx
  add    -0x24(%rax),%ecx
  mov    %ecx,-0x24(%rdx)
  mov    -0x4(%rsi),%ecx
  add    -0x20(%rax),%ecx
  mov    %ecx,-0x20(%rdx)
  mov    -0x4(%rsi),%ecx
  add    -0x1c(%rax),%ecx
  mov    %ecx,-0x1c(%rdx)
  mov    -0x4(%rsi),%ecx
  add    -0x18(%rax),%ecx
  mov    %ecx,-0x18(%rdx)
  mov    -0x4(%rsi),%ecx
  add    -0x14(%rax),%ecx
  mov    %ecx,-0x14(%rdx)
  mov    -0x4(%rsi),%ecx
  add    -0x10(%rax),%ecx
  mov    %ecx,-0x10(%rdx)
  mov    -0x4(%rsi),%ecx
  add    -0xc(%rax),%ecx
  mov    %ecx,-0xc(%rdx)
  mov    -0x4(%rsi),%ecx
  add    -0x8(%rax),%ecx
  mov    %ecx,-0x8(%rdx)
  mov    -0x4(%rsi),%ecx
  add    -0x4(%rax),%ecx
  mov    %ecx,-0x4(%rdx)
  cmp    %rax,%rdi
  jne    L27
  ret
```

assistant: ```c
void last_step_scan(int bucket[16 * 2048 / 16], int bucket2[16 * 2048 / 16], int sum[2048 / 16]) {
  int radixID, i;
loop3_outer:
  for (radixID = 0; radixID < 2048 / 16; ++radixID)
  loop3_inner:
    for (i = 0; i < 16; ++i) {
      bucket2[radixID * 16 + i] = bucket[radixID * 16 + i] + sum[radixID];
    }
}
```