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

```asm
<calc_4pmk>:
  endbr64
  push   %r15
  push   %r14
  mov    %rcx,%r14
  push   %r13
  mov    %rdi,%r13
  push   %r12
  mov    %rsi,%r12
  mov    %r8,%rsi
  push   %rbp
  mov    %rdx,%rbp
  mov    $0x23,%edx
  push   %rbx
  sub    $0xdb8,%rsp
  mov    0xdf0(%rsp),%rax
  mov    %r9,0x38(%rsp)
  lea    0x80(%rsp),%rbx
  lea    0x220(%rsp),%r15
  mov    %rbx,%rdi
  mov    %rax,0x40(%rsp)
  mov    0xdf8(%rsp),%rax
  mov    %rax,0x48(%rsp)
  mov    0xe00(%rsp),%rax
  mov    %rax,0x50(%rsp)
  mov    %fs:0x28,%rax
  mov    %rax,0xda8(%rsp)
  xor    %eax,%eax
  call   <strncpy@plt>
  lea    0x1a0(%rsp),%rax
  mov    %r13,%rsi
  mov    $0x7f,%edx
  mov    %rax,%rdi
  mov    %rax,0x30(%rsp)
  mov    %rax,%r13
  call   <strncpy@plt>
  mov    %r12,%rsi
  mov    %r15,%rdi
  mov    $0x7f,%edx
  call   <strncpy@plt>
  lea    0x2a0(%rsp),%rax
  mov    %rbp,%rsi
  mov    $0x7f,%edx
  mov    %rax,%rdi
  mov    %rax,0x20(%rsp)
  lea    0x3a0(%rsp),%r12
  lea    0x4a0(%rsp),%rbp
  call   <strncpy@plt>
  lea    0x320(%rsp),%rax
  mov    %r14,%rsi
  mov    $0x7f,%edx
  mov    %rax,%rdi
  mov    %rax,0x18(%rsp)
  call   <strncpy@plt>
  mov    %rbx,%rdi
  mov    %rbx,0x10(%rsp)
  call   <strlen@plt>
  xor    %esi,%esi
  mov    %r12,%rdi
  mov    $0x100,%edx
  mov    %eax,%ebx
  lea    0x4(%rax),%eax
  mov    %eax,0xc(%rsp)
  call   <memset@plt>
  xor    %esi,%esi
  mov    $0x100,%edx
  mov    %rbp,%rdi
  call   <memset@plt>
  mov    %r13,%rdi
  call   <strlen@plt>
  mov    %r13,%rsi
  mov    %r12,%rdi
  lea    0x8a0(%rsp),%r12
  mov    %eax,%edx
  xor    %eax,%eax
  call   <memcpy@plt>
  mov    %r13,%rdi
  call   <strlen@plt>
  mov    %r13,%rsi
  mov    %rbp,%rdi
  lea    0x5a0(%rsp),%rbp
  mov    %eax,%edx
  xor    %eax,%eax
  call   <memcpy@plt>
  mov    %r15,%rdi
  call   <strlen@plt>
  mov    %r15,%rsi
  lea    0x3e0(%rsp),%rdi
  mov    %eax,%edx
  xor    %eax,%eax
  call   <memcpy@plt>
  mov    %r15,%rdi
  call   <strlen@plt>
  mov    %r15,%rsi
  mov    %r15,0x28(%rsp)
  lea    0x4e0(%rsp),%rdi
  mov    %eax,%edx
  xor    %eax,%eax
  call   <memcpy@plt>
  mov    0x20(%rsp),%r14
  mov    %r14,%rdi
  call   <strlen@plt>
  mov    %r14,%rsi
  lea    0x420(%rsp),%rdi
  mov    %eax,%edx
  xor    %eax,%eax
  call   <memcpy@plt>
  mov    %r14,%rdi
  call   <strlen@plt>
  mov    %r14,%rsi
  mov    %r14,0x20(%rsp)
  lea    0x520(%rsp),%rdi
  mov    %eax,%edx
  xor    %eax,%eax
  lea    0x100(%rsp),%r14
  call   <memcpy@plt>
  mov    0x18(%rsp),%r15
  mov    %r15,%rdi
  call   <strlen@plt>
  mov    %r15,%rsi
  lea    0x460(%rsp),%rdi
  mov    %eax,%edx
  xor    %eax,%eax
  call   <memcpy@plt>
  mov    %r15,%rdi
  add    $0x3,%ebx
  call   <strlen@plt>
  mov    %r15,%rsi
  mov    %r15,0x18(%rsp)
  lea    0x560(%rsp),%rdi
  mov    %eax,%edx
  xor    %eax,%eax
  lea    0xb0(%rsp),%r15
  call   <memcpy@plt>
  movdqa D17(%rip),%xmm0
  mov    %r15,%rdi
  movdqa 0x3a0(%rsp),%xmm1
  movdqa 0x3e0(%rsp),%xmm2
  movdqa 0x420(%rsp),%xmm4
  movdqa 0x460(%rsp),%xmm5
  pxor   %xmm0,%xmm1
  pxor   %xmm0,%xmm4
  pxor   %xmm0,%xmm2
  movdqa %xmm1,%xmm3
  pxor   %xmm0,%xmm5
  punpckldq %xmm4,%xmm3
  punpckhdq %xmm4,%xmm1
  movdqa %xmm2,%xmm4
  punpckhdq %xmm5,%xmm2
  punpckldq %xmm5,%xmm4
  movdqa %xmm3,%xmm5
  punpckhdq %xmm4,%xmm3
  punpckldq %xmm4,%xmm5
  movdqa 0x430(%rsp),%xmm4
  movaps %xmm3,0x5b0(%rsp)
  movdqa %xmm1,%xmm3
  punpckhdq %xmm2,%xmm1
  movaps %xmm1,0x5d0(%rsp)
  punpckldq %xmm2,%xmm3
  pxor   %xmm0,%xmm4
  movdqa 0x3b0(%rsp),%xmm1
  movdqa 0x3f0(%rsp),%xmm2
  movaps %xmm5,0x5a0(%rsp)
  movdqa 0x470(%rsp),%xmm5
  pxor   %xmm0,%xmm1
  movaps %xmm3,0x5c0(%rsp)
  pxor   %xmm0,%xmm2
  movdqa %xmm1,%xmm3
  pxor   %xmm0,%xmm5
  punpckldq %xmm4,%xmm3
  punpckhdq %xmm4,%xmm1
  movdqa %xmm2,%xmm4
  punpckldq %xmm5,%xmm4
  punpckhdq %xmm5,%xmm2
  movdqa %xmm3,%xmm5
  punpckhdq %xmm4,%xmm3
  punpckldq %xmm4,%xmm5
  movdqa 0x440(%rsp),%xmm4
  movaps %xmm3,0x5f0(%rsp)
  movdqa %xmm1,%xmm3
  punpckhdq %xmm2,%xmm1
  movaps %xmm1,0x610(%rsp)
  punpckldq %xmm2,%xmm3
  pxor   %xmm0,%xmm4
  movdqa 0x3c0(%rsp),%xmm1
  movdqa 0x400(%rsp),%xmm2
  movaps %xmm5,0x5e0(%rsp)
  movdqa 0x480(%rsp),%xmm5
  pxor   %xmm0,%xmm1
  movaps %xmm3,0x600(%rsp)
  pxor   %xmm0,%xmm2
  movdqa %xmm1,%xmm3
  pxor   %xmm0,%xmm5
  punpckldq %xmm4,%xmm3
  punpckhdq %xmm4,%xmm1
  movdqa %xmm2,%xmm4
  punpckldq %xmm5,%xmm4
  punpckhdq %xmm5,%xmm2
  movdqa %xmm3,%xmm5
  punpckhdq %xmm4,%xmm3
  punpckldq %xmm4,%xmm5
  movdqa 0x450(%rsp),%xmm4
  movaps %xmm3,0x630(%rsp)
  movdqa %xmm1,%xmm3
  punpckhdq %xmm2,%xmm1
  movaps %xmm1,0x650(%rsp)
  punpckldq %xmm2,%xmm3
  pxor   %xmm0,%xmm4
  movdqa 0x3d0(%rsp),%xmm1
  movdqa 0x410(%rsp),%xmm2
  movaps %xmm3,0x640(%rsp)
  pxor   %xmm0,%xmm1
  movaps %xmm5,0x620(%rsp)
  pxor   %xmm0,%xmm2
  movdqa %xmm1,%xmm3
  punpckhdq %xmm4,%xmm1
  pxor   0x490(%rsp),%xmm0
  punpckldq %xmm4,%xmm3
  movdqa %xmm2,%xmm4
  punpckldq %xmm0,%xmm4
  punpckhdq %xmm0,%xmm2
  movdqa %xmm3,%xmm0
  punpckldq %xmm4,%xmm0
  punpckhdq %xmm4,%xmm3
  movaps %xmm0,0x660(%rsp)
  movdqa %xmm1,%xmm0
  punpckhdq %xmm2,%xmm1
  punpckldq %xmm2,%xmm0
  movaps %xmm3,0x670(%rsp)
  movaps %xmm0,0x680(%rsp)
  movaps %xmm1,0x690(%rsp)
  call   <shasse2_init@plt>
  mov    %r12,%rdx
  mov    %rbp,%rsi
  mov    %r15,%rdi
  call   <shasse2_data@plt>
  movdqa D10(%rip),%xmm0
  mov    %r14,%rdi
  movdqa 0x4a0(%rsp),%xmm1
  movdqa 0x4e0(%rsp),%xmm2
  movdqa 0x520(%rsp),%xmm4
  movdqa 0x560(%rsp),%xmm5
  pxor   %xmm0,%xmm1
  pxor   %xmm0,%xmm4
  pxor   %xmm0,%xmm2
  movdqa %xmm1,%xmm3
  pxor   %xmm0,%xmm5
  punpckldq %xmm4,%xmm3
  punpckhdq %xmm4,%xmm1
  movdqa %xmm2,%xmm4
  punpckhdq %xmm5,%xmm2
  punpckldq %xmm5,%xmm4
  movdqa %xmm3,%xmm5
  punpckhdq %xmm4,%xmm3
  punpckldq %xmm4,%xmm5
  movdqa 0x530(%rsp),%xmm4
  movaps %xmm3,0x5b0(%rsp)
  movdqa %xmm1,%xmm3
  punpckhdq %xmm2,%xmm1
  movaps %xmm1,0x5d0(%rsp)
  punpckldq %xmm2,%xmm3
  pxor   %xmm0,%xmm4
  movdqa 0x4b0(%rsp),%xmm1
  movdqa 0x4f0(%rsp),%xmm2
  movaps %xmm5,0x5a0(%rsp)
  movdqa 0x570(%rsp),%xmm5
  pxor   %xmm0,%xmm1
  movaps %xmm3,0x5c0(%rsp)
  pxor   %xmm0,%xmm2
  movdqa %xmm1,%xmm3
  pxor   %xmm0,%xmm5
  punpckldq %xmm4,%xmm3
  punpckhdq %xmm4,%xmm1
  movdqa %xmm2,%xmm4
  punpckldq %xmm5,%xmm4
  punpckhdq %xmm5,%xmm2
  movdqa %xmm3,%xmm5
  punpckhdq %xmm4,%xmm3
  punpckldq %xmm4,%xmm5
  movdqa 0x540(%rsp),%xmm4
  movaps %xmm3,0x5f0(%rsp)
  movdqa %xmm1,%xmm3
  punpckhdq %xmm2,%xmm1
  movaps %xmm1,0x610(%rsp)
  punpckldq %xmm2,%xmm3
  pxor   %xmm0,%xmm4
  movdqa 0x4c0(%rsp),%xmm1
  movdqa 0x500(%rsp),%xmm2
  movaps %xmm5,0x5e0(%rsp)
  movdqa 0x580(%rsp),%xmm5
  pxor   %xmm0,%xmm1
  movaps %xmm3,0x600(%rsp)
  pxor   %xmm0,%xmm2
  movdqa %xmm1,%xmm3
  pxor   %xmm0,%xmm5
  punpckldq %xmm4,%xmm3
  punpckhdq %xmm4,%xmm1
  movdqa %xmm2,%xmm4
  punpckldq %xmm5,%xmm4
  punpckhdq %xmm5,%xmm2
  movdqa %xmm3,%xmm5
  punpckhdq %xmm4,%xmm3
  punpckldq %xmm4,%xmm5
  movdqa 0x550(%rsp),%xmm4
  movaps %xmm3,0x630(%rsp)
  movdqa %xmm1,%xmm3
  punpckhdq %xmm2,%xmm1
  movaps %xmm1,0x650(%rsp)
  punpckldq %xmm2,%xmm3
  pxor   %xmm0,%xmm4
  movdqa 0x4d0(%rsp),%xmm1
  movdqa 0x510(%rsp),%xmm2
  movaps %xmm3,0x640(%rsp)
  pxor   %xmm0,%xmm1
  movaps %xmm5,0x620(%rsp)
  pxor   %xmm0,%xmm2
  movdqa %xmm1,%xmm3
  punpckhdq %xmm4,%xmm1
  pxor   0x590(%rsp),%xmm0
  punpckldq %xmm4,%xmm3
  movdqa %xmm2,%xmm4
  punpckldq %xmm0,%xmm4
  punpckhdq %xmm0,%xmm2
  movdqa %xmm3,%xmm0
  punpckldq %xmm4,%xmm0
  punpckhdq %xmm4,%xmm3
  movaps %xmm0,0x660(%rsp)
  movdqa %xmm1,%xmm0
  punpckhdq %xmm2,%xmm1
  punpckldq %xmm2,%xmm0
  movaps %xmm3,0x670(%rsp)
  movaps %xmm0,0x680(%rsp)
  movaps %xmm1,0x690(%rsp)
  call   <shasse2_init@plt>
  mov    %r12,%rdx
  mov    %rbp,%rsi
  mov    %r14,%rdi
  call   <shasse2_data@plt>
  mov    $0x100,%edx
  xor    %esi,%esi
  mov    %rbp,%rdi
  call   <memset@plt>
  mov    $0xffffa002,%ecx
  mov    $0xffffa002,%edi
  mov    $0xffffa002,%esi
  mov    %cx,0x69e(%rsp)
  mov    $0xffffa002,%r8d
  movslq %ebx,%rcx
  mov    %r13,%rbx
  mov    %di,0x696(%rsp)
  mov    %r13,%rdi
  mov    %si,0x69a(%rsp)
  mov    %rcx,0x58(%rsp)
  movb   $0x1,0x80(%rsp,%rcx,1)
  mov    %r8w,0x692(%rsp)
  movb   $0x80,0x5fc(%rsp)
  movb   $0x80,0x5f8(%rsp)
  movb   $0x80,0x5f4(%rsp)
  movb   $0x80,0x5f0(%rsp)
  call   <strlen@plt>
  mov    %eax,%r13d
  xor    %eax,%eax
  call   <EVP_sha1@plt>
  lea    0x6a0(%rsp),%rcx
  sub    $0x8,%rsp
  mov    %r13d,%edx
  mov    %rcx,0x78(%rsp)
  mov    %rcx,%r9
  mov    %rbx,%rsi
  mov    %eax,%edi
  push   $0x0
  mov    0x1c(%rsp),%r8d
  mov    0x20(%rsp),%rcx
  call   <HMAC@plt>
  mov    0x38(%rsp),%rbx
  mov    %rbx,%rdi
  call   <strlen@plt>
  mov    %eax,%r13d
  xor    %eax,%eax
  call   <EVP_sha1@plt>
  mov    0x1c(%rsp),%r8d
  mov    0x20(%rsp),%rcx
  mov    %rbx,%rsi
  lea    0x730(%rsp),%rdx
  mov    %eax,%edi
  movq   $0x0,(%rsp)
  mov    %rdx,%r9
  mov    %rdx,0x70(%rsp)
  mov    %r13d,%edx
  call   <HMAC@plt>
  mov    0x30(%rsp),%rbx
  mov    %rbx,%rdi
  call   <strlen@plt>
  mov    %eax,%r13d
  xor    %eax,%eax
  call   <EVP_sha1@plt>
  mov    0x1c(%rsp),%r8d
  mov    0x20(%rsp),%rcx
  mov    %rbx,%rsi
  lea    0x7b0(%rsp),%rdx
  mov    %eax,%edi
  movq   $0x0,(%rsp)
  mov    %rdx,%r9
  mov    %rdx,0x88(%rsp)
  mov    %r13d,%edx
  call   <HMAC@plt>
  mov    0x28(%rsp),%rbx
  mov    %rbx,%rdi
  call   <strlen@plt>
  mov    %eax,%r13d
  xor    %eax,%eax
  call   <EVP_sha1@plt>
  lea    0x830(%rsp),%rdx
  mov    0x1c(%rsp),%r8d
  mov    %rbx,%rsi
  mov    0x20(%rsp),%rcx
  mov    %rdx,0x78(%rsp)
  mov    %rdx,%r9
  mov    %eax,%edi
  mov    %r13d,%edx
  movq   $0x0,(%rsp)
  mov    $0xfff,%r13d
  call   <HMAC@plt>
  movd   0x834(%rsp),%xmm6
  movd   0x7b4(%rsp),%xmm0
  movd   0x6b4(%rsp),%xmm3
  movd   0x6b8(%rsp),%xmm2
  movd   0x6bc(%rsp),%xmm1
  punpckldq %xmm6,%xmm0
  movd   0x734(%rsp),%xmm6
  movd   0x7c0(%rsp),%xmm4
  movd   0x7b0(%rsp),%xmm5
  punpckldq %xmm6,%xmm3
  movd   0x838(%rsp),%xmm6
  punpcklqdq %xmm0,%xmm3
  movd   0x7b8(%rsp),%xmm0
  movaps %xmm3,0x5c0(%rsp)
  punpckldq %xmm6,%xmm0
  movd   0x738(%rsp),%xmm6
  punpckldq %xmm6,%xmm2
  movd   0x83c(%rsp),%xmm6
  punpcklqdq %xmm0,%xmm2
  movd   0x7bc(%rsp),%xmm0
  movaps %xmm2,0x5d0(%rsp)
  punpckldq %xmm6,%xmm0
  movd   0x73c(%rsp),%xmm6
  punpckldq %xmm6,%xmm1
  movd   0x840(%rsp),%xmm6
  punpcklqdq %xmm0,%xmm1
  movd   0x6c0(%rsp),%xmm0
  punpckldq %xmm6,%xmm4
  movaps %xmm1,0x5e0(%rsp)
  movd   0x740(%rsp),%xmm6
  punpckldq %xmm6,%xmm0
  movd   0x830(%rsp),%xmm6
  punpcklqdq %xmm4,%xmm0
  movd   0x6b0(%rsp),%xmm4
  punpckldq %xmm6,%xmm5
  movaps %xmm0,0x5f0(%rsp)
  movd   0x730(%rsp),%xmm6
  punpckldq %xmm6,%xmm4
  punpcklqdq %xmm5,%xmm4
  movaps %xmm4,0x5b0(%rsp)
  pop    %r9
  pop    %r10
  lea    0x150(%rsp),%rbx
  nopw   0x0(%rax,%rax,1)
L6:
  mov    $0x50,%edx
  mov    %r15,%rsi
  mov    %rbx,%rdi
  xor    %eax,%eax
  call   <memcpy@plt>
  mov    %r12,%rdx
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <shasse2_data@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <shasse2_ends@plt>
  mov    $0x50,%edx
  mov    %r14,%rsi
  mov    %rbx,%rdi
  xor    %eax,%eax
  call   <memcpy@plt>
  mov    %r12,%rdx
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <shasse2_data@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <shasse2_ends@plt>
  mov    0x5e0(%rsp),%eax
  movd   0x5d0(%rsp),%xmm7
  movd   0x5c0(%rsp),%xmm1
  xor    %eax,0x6b0(%rsp)
  movd   0x5a0(%rsp),%xmm0
  mov    0x5e4(%rsp),%eax
  punpckldq %xmm7,%xmm1
  xor    %eax,0x730(%rsp)
  movd   0x5b0(%rsp),%xmm7
  movd   0x5d4(%rsp),%xmm6
  mov    0x5e8(%rsp),%eax
  movd   0x5b4(%rsp),%xmm5
  punpckldq %xmm7,%xmm0
  movd   0x5d8(%rsp),%xmm7
  punpcklqdq %xmm1,%xmm0
  pxor   0x6a0(%rsp),%xmm0
  movd   0x5c4(%rsp),%xmm1
  movaps %xmm0,0x6a0(%rsp)
  punpckldq %xmm6,%xmm1
  movd   0x5a4(%rsp),%xmm0
  movd   0x5b8(%rsp),%xmm6
  punpckldq %xmm5,%xmm0
  movd   0x5dc(%rsp),%xmm5
  punpcklqdq %xmm1,%xmm0
  pxor   0x720(%rsp),%xmm0
  movd   0x5c8(%rsp),%xmm1
  movaps %xmm0,0x720(%rsp)
  punpckldq %xmm7,%xmm1
  movd   0x5a8(%rsp),%xmm0
  movd   0x5bc(%rsp),%xmm7
  punpckldq %xmm6,%xmm0
  punpcklqdq %xmm1,%xmm0
  pxor   0x7a0(%rsp),%xmm0
  movd   0x5cc(%rsp),%xmm1
  movaps %xmm0,0x7a0(%rsp)
  punpckldq %xmm5,%xmm1
  movd   0x5ac(%rsp),%xmm0
  punpckldq %xmm7,%xmm0
  punpcklqdq %xmm1,%xmm0
  pxor   0x820(%rsp),%xmm0
  movaps %xmm0,0x820(%rsp)
  xor    %eax,0x7b0(%rsp)
  mov    0x5ec(%rsp),%eax
  xor    %eax,0x830(%rsp)
  sub    $0x1,%r13d
  jne    L6
  mov    0x30(%rsp),%rdi
  mov    0x58(%rsp),%rax
  movb   $0x2,0x80(%rsp,%rax,1)
  call   <strlen@plt>
  mov    %eax,%r13d
  xor    %eax,%eax
  call   <EVP_sha1@plt>
  sub    $0x8,%rsp
  mov    %r13d,%edx
  push   $0x0
  mov    0x1c(%rsp),%r8d
  mov    %eax,%edi
  mov    0x20(%rsp),%rcx
  mov    0x40(%rsp),%rsi
  lea    0x6c4(%rsp),%r9
  call   <HMAC@plt>
  mov    0x38(%rsp),%rdi
  call   <strlen@plt>
  mov    %eax,%r13d
  xor    %eax,%eax
  call   <EVP_sha1@plt>
  mov    0x1c(%rsp),%r8d
  mov    %r13d,%edx
  mov    0x20(%rsp),%rcx
  mov    0x38(%rsp),%rsi
  lea    0x744(%rsp),%r9
  mov    %eax,%edi
  movq   $0x0,(%rsp)
  call   <HMAC@plt>
  mov    0x30(%rsp),%rdi
  call   <strlen@plt>
  mov    %eax,%r13d
  xor    %eax,%eax
  call   <EVP_sha1@plt>
  mov    0x1c(%rsp),%r8d
  mov    %r13d,%edx
  mov    0x20(%rsp),%rcx
  mov    0x30(%rsp),%rsi
  lea    0x7c4(%rsp),%r9
  mov    %eax,%edi
  movq   $0x0,(%rsp)
  call   <HMAC@plt>
  mov    0x28(%rsp),%rdi
  call   <strlen@plt>
  mov    %eax,%r13d
  xor    %eax,%eax
  call   <EVP_sha1@plt>
  mov    0x1c(%rsp),%r8d
  mov    0x20(%rsp),%rcx
  mov    %r13d,%edx
  mov    0x28(%rsp),%rsi
  mov    %eax,%edi
  lea    0x844(%rsp),%r9
  movq   $0x0,(%rsp)
  mov    $0xfff,%r13d
  call   <HMAC@plt>
  movd   0x848(%rsp),%xmm6
  movd   0x7c8(%rsp),%xmm0
  movd   0x6c8(%rsp),%xmm3
  movd   0x6cc(%rsp),%xmm2
  movd   0x6d0(%rsp),%xmm1
  punpckldq %xmm6,%xmm0
  movd   0x748(%rsp),%xmm6
  movd   0x7d4(%rsp),%xmm4
  movd   0x7c4(%rsp),%xmm5
  punpckldq %xmm6,%xmm3
  movd   0x84c(%rsp),%xmm6
  punpcklqdq %xmm0,%xmm3
  movd   0x7cc(%rsp),%xmm0
  movaps %xmm3,0x5c0(%rsp)
  punpckldq %xmm6,%xmm0
  movd   0x74c(%rsp),%xmm6
  punpckldq %xmm6,%xmm2
  movd   0x850(%rsp),%xmm6
  punpcklqdq %xmm0,%xmm2
  movd   0x7d0(%rsp),%xmm0
  movaps %xmm2,0x5d0(%rsp)
  punpckldq %xmm6,%xmm0
  movd   0x750(%rsp),%xmm6
  punpckldq %xmm6,%xmm1
  movd   0x854(%rsp),%xmm6
  punpcklqdq %xmm0,%xmm1
  movd   0x6d4(%rsp),%xmm0
  punpckldq %xmm6,%xmm4
  movaps %xmm1,0x5e0(%rsp)
  movd   0x754(%rsp),%xmm6
  punpckldq %xmm6,%xmm0
  movd   0x844(%rsp),%xmm6
  punpcklqdq %xmm4,%xmm0
  movd   0x6c4(%rsp),%xmm4
  punpckldq %xmm6,%xmm5
  movaps %xmm0,0x5f0(%rsp)
  movd   0x744(%rsp),%xmm6
  punpckldq %xmm6,%xmm4
  punpcklqdq %xmm5,%xmm4
  movaps %xmm4,0x5b0(%rsp)
  pop    %rax
  pop    %rdx
  nopl   0x0(%rax,%rax,1)
L16:
  mov    $0x50,%edx
  mov    %r15,%rsi
  mov    %rbx,%rdi
  xor    %eax,%eax
  call   <memcpy@plt>
  mov    %r12,%rdx
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <shasse2_data@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <shasse2_ends@plt>
  mov    $0x50,%edx
  mov    %r14,%rsi
  mov    %rbx,%rdi
  xor    %eax,%eax
  call   <memcpy@plt>
  mov    %r12,%rdx
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <shasse2_data@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <shasse2_ends@plt>
  mov    0x5c0(%rsp),%eax
  movq   0x5a0(%rsp),%xmm0
  movq   0x5b0(%rsp),%xmm5
  movq   0x734(%rsp),%xmm2
  movdqa %xmm0,%xmm4
  xor    %eax,0x6bc(%rsp)
  movq   0x5a8(%rsp),%xmm1
  punpckldq %xmm5,%xmm4
  punpckldq %xmm5,%xmm0
  movq   0x5b8(%rsp),%xmm6
  mov    0x5c4(%rsp),%eax
  pshufd $0xe,%xmm4,%xmm4
  movdqa %xmm1,%xmm3
  xor    %eax,0x73c(%rsp)
  mov    0x5c8(%rsp),%eax
  pxor   %xmm2,%xmm4
  punpckldq %xmm6,%xmm3
  movq   0x7b4(%rsp),%xmm2
  punpckldq %xmm6,%xmm1
  pshufd $0xe,%xmm1,%xmm1
  xor    %eax,0x7bc(%rsp)
  mov    0x5cc(%rsp),%eax
  pxor   %xmm2,%xmm3
  xor    %eax,0x83c(%rsp)
  movq   0x834(%rsp),%xmm2
  movq   %xmm4,0x734(%rsp)
  movq   %xmm3,0x7b4(%rsp)
  pxor   %xmm1,%xmm2
  movq   0x6b4(%rsp),%xmm1
  movq   %xmm2,0x834(%rsp)
  pxor   %xmm0,%xmm1
  movq   %xmm1,0x6b4(%rsp)
  sub    $0x1,%r13d
  jne    L16
  mov    0x78(%rsp),%rsi
  mov    0x48(%rsp),%rdi
  mov    $0x20,%edx
  xor    %eax,%eax
  call   <memcpy@plt>
  mov    0x68(%rsp),%rsi
  mov    0x50(%rsp),%rdi
  xor    %eax,%eax
  mov    $0x20,%edx
  call   <memcpy@plt>
  mov    0x70(%rsp),%rsi
  mov    0x38(%rsp),%rdi
  xor    %eax,%eax
  mov    $0x20,%edx
  call   <memcpy@plt>
  mov    0x60(%rsp),%rsi
  mov    0x40(%rsp),%rdi
  xor    %eax,%eax
  mov    $0x20,%edx
  call   <memcpy@plt>
  mov    0xda8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L14
  add    $0xdb8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L14:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D17
type_guessed: byte[16]
name: extract_symbolic_data
arguments: data_tag: D10
type_guessed: byte[16]

tool: {"D17": [0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36]}

tool: {"D10": [0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c]}

assistant: ```c
void calc_4pmk(char *_key1, char *_key2, char *_key3, char *_key4, char *_essid, unsigned char *_pmk1, unsigned char *_pmk2, unsigned char *_pmk3, unsigned char *_pmk4) {
  int slen;
  char essid[36] __attribute__((aligned(16)));
  char key1[128] __attribute__((aligned(16)));
  char key2[128] __attribute__((aligned(16)));
  char key3[128] __attribute__((aligned(16)));
  char key4[128] __attribute__((aligned(16)));
  unsigned char pmks[128 * 4] __attribute__((aligned(16)));
  unsigned char k_ipad[256] __attribute__((aligned(16)));
  unsigned char ctx_ipad[80] __attribute__((aligned(16)));
  unsigned char k_opad[256] __attribute__((aligned(16)));
  unsigned char ctx_opad[80] __attribute__((aligned(16)));
  unsigned char buffer[256] __attribute__((aligned(16)));
  unsigned char sha1_ctx[80] __attribute__((aligned(16)));
  unsigned char wrkbuf[1280] __attribute__((aligned(16)));
  uint i, *u, *v, *w, *u3, *v4;
  unsigned char *pmk1, *pmk2, *pmk3, *pmk4;
  pmk1 = pmks;
  pmk2 = pmks + 128;
  pmk3 = pmks + 128 * 2;
  pmk4 = pmks + 128 * 3;
  strncpy(essid, _essid, 35);
  strncpy(key1, _key1, 127);
  strncpy(key2, _key2, 127);
  strncpy(key3, _key3, 127);
  strncpy(key4, _key4, 127);
  slen = strlen(essid) + 4;
  memset(k_ipad, 0, sizeof(k_ipad));
  memset(k_opad, 0, sizeof(k_opad));
  memcpy(k_ipad, key1, strlen(key1));
  memcpy(k_opad, key1, strlen(key1));
  memcpy(k_ipad + 64, key2, strlen(key2));
  memcpy(k_opad + 64, key2, strlen(key2));
  memcpy(k_ipad + 128, key3, strlen(key3));
  memcpy(k_opad + 128, key3, strlen(key3));
  memcpy(k_ipad + 192, key4, strlen(key4));
  memcpy(k_opad + 192, key4, strlen(key4));
  u = (uint *)(k_ipad);
  v = (uint *)(k_ipad + 64);
  u3 = (uint *)(k_ipad + 128);
  v4 = (uint *)(k_ipad + 192);
  w = (uint *)buffer;
  for (i = 0; i < 16; i++) {
    *w++ = *u++ ^ 0x36363636;
    *w++ = *v++ ^ 0x36363636;
    *w++ = *u3++ ^ 0x36363636;
    *w++ = *v4++ ^ 0x36363636;
  }
  shasse2_init(ctx_ipad);
  shasse2_data(ctx_ipad, buffer, wrkbuf);
  u = (uint *)(k_opad);
  v = (uint *)(k_opad + 64);
  u3 = (uint *)(k_opad + 128);
  v4 = (uint *)(k_opad + 192);
  w = (uint *)buffer;
  for (i = 0; i < 16; i++) {
    *w++ = *u++ ^ 0x5C5C5C5C;
    *w++ = *v++ ^ 0x5C5C5C5C;
    *w++ = *u3++ ^ 0x5C5C5C5C;
    *w++ = *v4++ ^ 0x5C5C5C5C;
  }
  shasse2_init(ctx_opad);
  shasse2_data(ctx_opad, buffer, wrkbuf);
  memset(buffer, 0, sizeof(buffer));
  buffer[80] = buffer[84] = buffer[88] = buffer[92] = 0x80;
  buffer[242] = buffer[246] = buffer[250] = buffer[254] = 0x02;
  buffer[243] = buffer[247] = buffer[251] = buffer[255] = 0xA0;
  essid[slen - 1] = '\1';
  HMAC(EVP_sha1(), (unsigned char *)key1, strlen(key1), (unsigned char *)essid, slen, pmk1, NULL);
  HMAC(EVP_sha1(), (unsigned char *)key2, strlen(key2), (unsigned char *)essid, slen, pmk2, NULL);
  HMAC(EVP_sha1(), (unsigned char *)key3, strlen(key3), (unsigned char *)essid, slen, pmk3, NULL);
  HMAC(EVP_sha1(), (unsigned char *)key4, strlen(key4), (unsigned char *)essid, slen, pmk4, NULL);
  u = (uint *)pmk1;
  v = (uint *)pmk2;
  u3 = (uint *)pmk3;
  v4 = (uint *)pmk4;
  w = (uint *)buffer;
  *w++ = *u++;
  *w++ = *v++;
  *w++ = *u3++;
  *w++ = *v4++;
  *w++ = *u++;
  *w++ = *v++;
  *w++ = *u3++;
  *w++ = *v4++;
  *w++ = *u++;
  *w++ = *v++;
  *w++ = *u3++;
  *w++ = *v4++;
  *w++ = *u++;
  *w++ = *v++;
  *w++ = *u3++;
  *w++ = *v4++;
  *w++ = *u++;
  *w++ = *v++;
  *w++ = *u3++;
  *w++ = *v4++;
  for (i = 1; i < 4096; i++) {
    memcpy(sha1_ctx, ctx_ipad, 80);
    shasse2_data(sha1_ctx, buffer, wrkbuf);
    shasse2_ends(sha1_ctx, buffer);
    memcpy(sha1_ctx, ctx_opad, 80);
    shasse2_data(sha1_ctx, buffer, wrkbuf);
    shasse2_ends(sha1_ctx, buffer);
    u = (uint *)pmk1;
    v = (uint *)pmk2;
    u3 = (uint *)pmk3;
    v4 = (uint *)pmk4;
    w = (uint *)buffer;
    *u++ ^= *w++;
    *v++ ^= *w++;
    *u3++ ^= *w++;
    *v4++ ^= *w++;
    *u++ ^= *w++;
    *v++ ^= *w++;
    *u3++ ^= *w++;
    *v4++ ^= *w++;
    *u++ ^= *w++;
    *v++ ^= *w++;
    *u3++ ^= *w++;
    *v4++ ^= *w++;
    *u++ ^= *w++;
    *v++ ^= *w++;
    *u3++ ^= *w++;
    *v4++ ^= *w++;
    *u++ ^= *w++;
    *v++ ^= *w++;
    *u3++ ^= *w++;
    *v4++ ^= *w++;
  }
  essid[slen - 1] = '\2';
  HMAC(EVP_sha1(), (unsigned char *)key1, strlen(key1), (unsigned char *)essid, slen, pmk1 + 20, NULL);
  HMAC(EVP_sha1(), (unsigned char *)key2, strlen(key2), (unsigned char *)essid, slen, pmk2 + 20, NULL);
  HMAC(EVP_sha1(), (unsigned char *)key3, strlen(key3), (unsigned char *)essid, slen, pmk3 + 20, NULL);
  HMAC(EVP_sha1(), (unsigned char *)key4, strlen(key4), (unsigned char *)essid, slen, pmk4 + 20, NULL);
  u = (uint *)(pmk1 + 20);
  v = (uint *)(pmk2 + 20);
  u3 = (uint *)(pmk3 + 20);
  v4 = (uint *)(pmk4 + 20);
  w = (uint *)buffer;
  *w++ = *u++;
  *w++ = *v++;
  *w++ = *u3++;
  *w++ = *v4++;
  *w++ = *u++;
  *w++ = *v++;
  *w++ = *u3++;
  *w++ = *v4++;
  *w++ = *u++;
  *w++ = *v++;
  *w++ = *u3++;
  *w++ = *v4++;
  *w++ = *u++;
  *w++ = *v++;
  *w++ = *u3++;
  *w++ = *v4++;
  *w++ = *u++;
  *w++ = *v++;
  *w++ = *u3++;
  *w++ = *v4++;
  for (i = 1; i < 4096; i++) {
    memcpy(sha1_ctx, ctx_ipad, 80);
    shasse2_data(sha1_ctx, buffer, wrkbuf);
    shasse2_ends(sha1_ctx, buffer);
    memcpy(sha1_ctx, ctx_opad, 80);
    shasse2_data(sha1_ctx, buffer, wrkbuf);
    shasse2_ends(sha1_ctx, buffer);
    u = (uint *)(pmk1 + 20);
    v = (uint *)(pmk2 + 20);
    u3 = (uint *)(pmk3 + 20);
    v4 = (uint *)(pmk4 + 20);
    w = (uint *)buffer;
    *u++ ^= *w++;
    *v++ ^= *w++;
    *u3++ ^= *w++;
    *v4++ ^= *w++;
    *u++ ^= *w++;
    *v++ ^= *w++;
    *u3++ ^= *w++;
    *v4++ ^= *w++;
    *u++ ^= *w++;
    *v++ ^= *w++;
    *u3++ ^= *w++;
    *v4++ ^= *w++;
  }
  memcpy(_pmk3, pmk3, 32);
  memcpy(_pmk4, pmk4, 32);
  memcpy(_pmk1, pmk1, 32);
  memcpy(_pmk2, pmk2, 32);
}
```