user: What is the c source code of the assembly code below:

```asm
<calc_4pmk>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %r12
  push   %rbx
  sub    $0xdd0,%rsp
  mov    %rdi,-0xd98(%rbp)
  mov    %rsi,-0xda0(%rbp)
  mov    %rdx,-0xda8(%rbp)
  mov    %rcx,-0xdb0(%rbp)
  mov    %r8,-0xdb8(%rbp)
  mov    %r9,-0xdc0(%rbp)
  mov    0x10(%rbp),%rax
  mov    %rax,-0xdc8(%rbp)
  mov    0x18(%rbp),%rax
  mov    %rax,-0xdd0(%rbp)
  mov    0x20(%rbp),%rax
  mov    %rax,-0xdd8(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x18(%rbp)
  xor    %eax,%eax
  lea    -0x720(%rbp),%rax
  mov    %rax,-0xd60(%rbp)
  lea    -0x720(%rbp),%rax
  sub    $0xffffffffffffff80,%rax
  mov    %rax,-0xd58(%rbp)
  lea    -0x720(%rbp),%rax
  add    $0x100,%rax
  mov    %rax,-0xd50(%rbp)
  lea    -0x720(%rbp),%rax
  add    $0x180,%rax
  mov    %rax,-0xd48(%rbp)
  mov    -0xdb8(%rbp),%rcx
  lea    -0xd40(%rbp),%rax
  mov    $0x23,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncpy@plt>
  mov    -0xd98(%rbp),%rcx
  lea    -0xc20(%rbp),%rax
  mov    $0x7f,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncpy@plt>
  mov    -0xda0(%rbp),%rcx
  lea    -0xba0(%rbp),%rax
  mov    $0x7f,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncpy@plt>
  mov    -0xda8(%rbp),%rcx
  lea    -0xb20(%rbp),%rax
  mov    $0x7f,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncpy@plt>
  mov    -0xdb0(%rbp),%rcx
  lea    -0xaa0(%rbp),%rax
  mov    $0x7f,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncpy@plt>
  lea    -0xd40(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  add    $0x4,%eax
  mov    %eax,-0xd8c(%rbp)
  lea    -0xa20(%rbp),%rax
  mov    $0x100,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
  lea    -0x920(%rbp),%rax
  mov    $0x100,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
  lea    -0xc20(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%edx
  lea    -0xc20(%rbp),%rcx
  lea    -0xa20(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <memcpy@plt>
  lea    -0xc20(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%edx
  lea    -0xc20(%rbp),%rcx
  lea    -0x920(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <memcpy@plt>
  lea    -0xba0(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%edx
  lea    -0xa20(%rbp),%rax
  add    $0x40,%rax
  lea    -0xba0(%rbp),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <memcpy@plt>
  lea    -0xba0(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%edx
  lea    -0x920(%rbp),%rax
  add    $0x40,%rax
  lea    -0xba0(%rbp),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <memcpy@plt>
  lea    -0xb20(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%edx
  lea    -0xa20(%rbp),%rax
  sub    $0xffffffffffffff80,%rax
  lea    -0xb20(%rbp),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <memcpy@plt>
  lea    -0xb20(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%edx
  lea    -0x920(%rbp),%rax
  sub    $0xffffffffffffff80,%rax
  lea    -0xb20(%rbp),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <memcpy@plt>
  lea    -0xaa0(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%edx
  lea    -0xa20(%rbp),%rax
  add    $0xc0,%rax
  lea    -0xaa0(%rbp),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <memcpy@plt>
  lea    -0xaa0(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%edx
  lea    -0x920(%rbp),%rax
  add    $0xc0,%rax
  lea    -0xaa0(%rbp),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <memcpy@plt>
  lea    -0xa20(%rbp),%rax
  mov    %rax,-0xd88(%rbp)
  lea    -0xa20(%rbp),%rax
  add    $0x40,%rax
  mov    %rax,-0xd80(%rbp)
  lea    -0xa20(%rbp),%rax
  sub    $0xffffffffffffff80,%rax
  mov    %rax,-0xd70(%rbp)
  lea    -0xa20(%rbp),%rax
  add    $0xc0,%rax
  mov    %rax,-0xd68(%rbp)
  lea    -0x820(%rbp),%rax
  mov    %rax,-0xd78(%rbp)
  movl   $0x0,-0xd90(%rbp)
  jmp    L88
L68:
  mov    -0xd88(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd88(%rbp)
  mov    (%rax),%ecx
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  xor    $0x36363636,%ecx
  mov    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xd80(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd80(%rbp)
  mov    (%rax),%ecx
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  xor    $0x36363636,%ecx
  mov    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xd70(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd70(%rbp)
  mov    (%rax),%ecx
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  xor    $0x36363636,%ecx
  mov    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xd68(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd68(%rbp)
  mov    (%rax),%ecx
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  xor    $0x36363636,%ecx
  mov    %ecx,%edx
  mov    %edx,(%rax)
  addl   $0x1,-0xd90(%rbp)
L88:
  cmpl   $0xf,-0xd90(%rbp)
  jle    L68
  lea    -0xd10(%rbp),%rax
  mov    %rax,%rdi
  call   <shasse2_init@plt>
  lea    -0x520(%rbp),%rdx
  lea    -0x820(%rbp),%rcx
  lea    -0xd10(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <shasse2_data@plt>
  lea    -0x920(%rbp),%rax
  mov    %rax,-0xd88(%rbp)
  lea    -0x920(%rbp),%rax
  add    $0x40,%rax
  mov    %rax,-0xd80(%rbp)
  lea    -0x920(%rbp),%rax
  sub    $0xffffffffffffff80,%rax
  mov    %rax,-0xd70(%rbp)
  lea    -0x920(%rbp),%rax
  add    $0xc0,%rax
  mov    %rax,-0xd68(%rbp)
  lea    -0x820(%rbp),%rax
  mov    %rax,-0xd78(%rbp)
  movl   $0x0,-0xd90(%rbp)
  jmp    L21
L16:
  mov    -0xd88(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd88(%rbp)
  mov    (%rax),%ecx
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  xor    $0x5c5c5c5c,%ecx
  mov    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xd80(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd80(%rbp)
  mov    (%rax),%ecx
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  xor    $0x5c5c5c5c,%ecx
  mov    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xd70(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd70(%rbp)
  mov    (%rax),%ecx
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  xor    $0x5c5c5c5c,%ecx
  mov    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xd68(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd68(%rbp)
  mov    (%rax),%ecx
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  xor    $0x5c5c5c5c,%ecx
  mov    %ecx,%edx
  mov    %edx,(%rax)
  addl   $0x1,-0xd90(%rbp)
L21:
  cmpl   $0xf,-0xd90(%rbp)
  jle    L16
  lea    -0xcc0(%rbp),%rax
  mov    %rax,%rdi
  call   <shasse2_init@plt>
  lea    -0x520(%rbp),%rdx
  lea    -0x820(%rbp),%rcx
  lea    -0xcc0(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <shasse2_data@plt>
  lea    -0x820(%rbp),%rax
  mov    $0x100,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
  movb   $0x80,-0x7c4(%rbp)
  movzbl -0x7c4(%rbp),%eax
  mov    %al,-0x7c8(%rbp)
  movzbl -0x7c8(%rbp),%eax
  mov    %al,-0x7cc(%rbp)
  movzbl -0x7cc(%rbp),%eax
  mov    %al,-0x7d0(%rbp)
  movb   $0x2,-0x722(%rbp)
  movzbl -0x722(%rbp),%eax
  mov    %al,-0x726(%rbp)
  movzbl -0x726(%rbp),%eax
  mov    %al,-0x72a(%rbp)
  movzbl -0x72a(%rbp),%eax
  mov    %al,-0x72e(%rbp)
  movb   $0xa0,-0x721(%rbp)
  movzbl -0x721(%rbp),%eax
  mov    %al,-0x725(%rbp)
  movzbl -0x725(%rbp),%eax
  mov    %al,-0x729(%rbp)
  movzbl -0x729(%rbp),%eax
  mov    %al,-0x72d(%rbp)
  mov    -0xd8c(%rbp),%eax
  sub    $0x1,%eax
  cltq
  movb   $0x1,-0xd40(%rbp,%rax,1)
  lea    -0xc20(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%ebx
  mov    $0x0,%eax
  call   <EVP_sha1@plt>
  mov    %eax,%edi
  mov    -0xd60(%rbp),%rsi
  mov    -0xd8c(%rbp),%ecx
  lea    -0xd40(%rbp),%rdx
  lea    -0xc20(%rbp),%rax
  sub    $0x8,%rsp
  push   $0x0
  mov    %rsi,%r9
  mov    %ecx,%r8d
  mov    %rdx,%rcx
  mov    %ebx,%edx
  mov    %rax,%rsi
  call   <HMAC@plt>
  add    $0x10,%rsp
  lea    -0xba0(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%ebx
  mov    $0x0,%eax
  call   <EVP_sha1@plt>
  mov    %eax,%edi
  mov    -0xd58(%rbp),%rsi
  mov    -0xd8c(%rbp),%ecx
  lea    -0xd40(%rbp),%rdx
  lea    -0xba0(%rbp),%rax
  sub    $0x8,%rsp
  push   $0x0
  mov    %rsi,%r9
  mov    %ecx,%r8d
  mov    %rdx,%rcx
  mov    %ebx,%edx
  mov    %rax,%rsi
  call   <HMAC@plt>
  add    $0x10,%rsp
  lea    -0xb20(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%ebx
  mov    $0x0,%eax
  call   <EVP_sha1@plt>
  mov    %eax,%edi
  mov    -0xd50(%rbp),%rsi
  mov    -0xd8c(%rbp),%ecx
  lea    -0xd40(%rbp),%rdx
  lea    -0xb20(%rbp),%rax
  sub    $0x8,%rsp
  push   $0x0
  mov    %rsi,%r9
  mov    %ecx,%r8d
  mov    %rdx,%rcx
  mov    %ebx,%edx
  mov    %rax,%rsi
  call   <HMAC@plt>
  add    $0x10,%rsp
  lea    -0xaa0(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%ebx
  mov    $0x0,%eax
  call   <EVP_sha1@plt>
  mov    %eax,%edi
  mov    -0xd48(%rbp),%rsi
  mov    -0xd8c(%rbp),%ecx
  lea    -0xd40(%rbp),%rdx
  lea    -0xaa0(%rbp),%rax
  sub    $0x8,%rsp
  push   $0x0
  mov    %rsi,%r9
  mov    %ecx,%r8d
  mov    %rdx,%rcx
  mov    %ebx,%edx
  mov    %rax,%rsi
  call   <HMAC@plt>
  add    $0x10,%rsp
  mov    -0xd60(%rbp),%rax
  mov    %rax,-0xd88(%rbp)
  mov    -0xd58(%rbp),%rax
  mov    %rax,-0xd80(%rbp)
  mov    -0xd50(%rbp),%rax
  mov    %rax,-0xd70(%rbp)
  mov    -0xd48(%rbp),%rax
  mov    %rax,-0xd68(%rbp)
  lea    -0x820(%rbp),%rax
  mov    %rax,-0xd78(%rbp)
  mov    -0xd88(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd88(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd80(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd80(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd70(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd70(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd68(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd68(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd88(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd88(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd80(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd80(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd70(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd70(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd68(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd68(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd88(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd88(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd80(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd80(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd70(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd70(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd68(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd68(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd88(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd88(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd80(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd80(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd70(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd70(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd68(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd68(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd88(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd88(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd80(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd80(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd70(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd70(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd68(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd68(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  movl   $0x1,-0xd90(%rbp)
  jmp    L43
L69:
  lea    -0xd10(%rbp),%rcx
  lea    -0xc70(%rbp),%rax
  mov    $0x50,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <memcpy@plt>
  lea    -0x520(%rbp),%rdx
  lea    -0x820(%rbp),%rcx
  lea    -0xc70(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <shasse2_data@plt>
  lea    -0x820(%rbp),%rdx
  lea    -0xc70(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <shasse2_ends@plt>
  lea    -0xcc0(%rbp),%rcx
  lea    -0xc70(%rbp),%rax
  mov    $0x50,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <memcpy@plt>
  lea    -0x520(%rbp),%rdx
  lea    -0x820(%rbp),%rcx
  lea    -0xc70(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <shasse2_data@plt>
  lea    -0x820(%rbp),%rdx
  lea    -0xc70(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <shasse2_ends@plt>
  mov    -0xd60(%rbp),%rax
  mov    %rax,-0xd88(%rbp)
  mov    -0xd58(%rbp),%rax
  mov    %rax,-0xd80(%rbp)
  mov    -0xd50(%rbp),%rax
  mov    %rax,-0xd70(%rbp)
  mov    -0xd48(%rbp),%rax
  mov    %rax,-0xd68(%rbp)
  lea    -0x820(%rbp),%rax
  mov    %rax,-0xd78(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  mov    (%rax),%ecx
  mov    -0xd88(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd88(%rbp)
  mov    (%rax),%edx
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  mov    (%rax),%ecx
  mov    -0xd80(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd80(%rbp)
  mov    (%rax),%edx
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  mov    (%rax),%ecx
  mov    -0xd70(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd70(%rbp)
  mov    (%rax),%edx
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  mov    (%rax),%ecx
  mov    -0xd68(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd68(%rbp)
  mov    (%rax),%edx
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  mov    (%rax),%ecx
  mov    -0xd88(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd88(%rbp)
  mov    (%rax),%edx
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  mov    (%rax),%ecx
  mov    -0xd80(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd80(%rbp)
  mov    (%rax),%edx
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  mov    (%rax),%ecx
  mov    -0xd70(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd70(%rbp)
  mov    (%rax),%edx
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  mov    (%rax),%ecx
  mov    -0xd68(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd68(%rbp)
  mov    (%rax),%edx
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  mov    (%rax),%ecx
  mov    -0xd88(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd88(%rbp)
  mov    (%rax),%edx
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  mov    (%rax),%ecx
  mov    -0xd80(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd80(%rbp)
  mov    (%rax),%edx
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  mov    (%rax),%ecx
  mov    -0xd70(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd70(%rbp)
  mov    (%rax),%edx
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  mov    (%rax),%ecx
  mov    -0xd68(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd68(%rbp)
  mov    (%rax),%edx
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  mov    (%rax),%ecx
  mov    -0xd88(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd88(%rbp)
  mov    (%rax),%edx
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  mov    (%rax),%ecx
  mov    -0xd80(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd80(%rbp)
  mov    (%rax),%edx
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  mov    (%rax),%ecx
  mov    -0xd70(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd70(%rbp)
  mov    (%rax),%edx
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  mov    (%rax),%ecx
  mov    -0xd68(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd68(%rbp)
  mov    (%rax),%edx
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  mov    (%rax),%ecx
  mov    -0xd88(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd88(%rbp)
  mov    (%rax),%edx
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  mov    (%rax),%ecx
  mov    -0xd80(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd80(%rbp)
  mov    (%rax),%edx
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  mov    (%rax),%ecx
  mov    -0xd70(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd70(%rbp)
  mov    (%rax),%edx
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  mov    (%rax),%ecx
  mov    -0xd68(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd68(%rbp)
  mov    (%rax),%edx
  xor    %ecx,%edx
  mov    %edx,(%rax)
  addl   $0x1,-0xd90(%rbp)
L43:
  cmpl   $0xfff,-0xd90(%rbp)
  jle    L69
  mov    -0xd8c(%rbp),%eax
  sub    $0x1,%eax
  cltq
  movb   $0x2,-0xd40(%rbp,%rax,1)
  mov    -0xd60(%rbp),%rax
  lea    0x14(%rax),%r12
  lea    -0xc20(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%ebx
  mov    $0x0,%eax
  call   <EVP_sha1@plt>
  mov    %eax,%edi
  mov    -0xd8c(%rbp),%ecx
  lea    -0xd40(%rbp),%rdx
  lea    -0xc20(%rbp),%rax
  sub    $0x8,%rsp
  push   $0x0
  mov    %r12,%r9
  mov    %ecx,%r8d
  mov    %rdx,%rcx
  mov    %ebx,%edx
  mov    %rax,%rsi
  call   <HMAC@plt>
  add    $0x10,%rsp
  mov    -0xd58(%rbp),%rax
  lea    0x14(%rax),%r12
  lea    -0xba0(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%ebx
  mov    $0x0,%eax
  call   <EVP_sha1@plt>
  mov    %eax,%edi
  mov    -0xd8c(%rbp),%ecx
  lea    -0xd40(%rbp),%rdx
  lea    -0xba0(%rbp),%rax
  sub    $0x8,%rsp
  push   $0x0
  mov    %r12,%r9
  mov    %ecx,%r8d
  mov    %rdx,%rcx
  mov    %ebx,%edx
  mov    %rax,%rsi
  call   <HMAC@plt>
  add    $0x10,%rsp
  mov    -0xd50(%rbp),%rax
  lea    0x14(%rax),%r12
  lea    -0xb20(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%ebx
  mov    $0x0,%eax
  call   <EVP_sha1@plt>
  mov    %eax,%edi
  mov    -0xd8c(%rbp),%ecx
  lea    -0xd40(%rbp),%rdx
  lea    -0xb20(%rbp),%rax
  sub    $0x8,%rsp
  push   $0x0
  mov    %r12,%r9
  mov    %ecx,%r8d
  mov    %rdx,%rcx
  mov    %ebx,%edx
  mov    %rax,%rsi
  call   <HMAC@plt>
  add    $0x10,%rsp
  mov    -0xd48(%rbp),%rax
  lea    0x14(%rax),%r12
  lea    -0xaa0(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,%ebx
  mov    $0x0,%eax
  call   <EVP_sha1@plt>
  mov    %eax,%edi
  mov    -0xd8c(%rbp),%ecx
  lea    -0xd40(%rbp),%rdx
  lea    -0xaa0(%rbp),%rax
  sub    $0x8,%rsp
  push   $0x0
  mov    %r12,%r9
  mov    %ecx,%r8d
  mov    %rdx,%rcx
  mov    %ebx,%edx
  mov    %rax,%rsi
  call   <HMAC@plt>
  add    $0x10,%rsp
  mov    -0xd60(%rbp),%rax
  add    $0x14,%rax
  mov    %rax,-0xd88(%rbp)
  mov    -0xd58(%rbp),%rax
  add    $0x14,%rax
  mov    %rax,-0xd80(%rbp)
  mov    -0xd50(%rbp),%rax
  add    $0x14,%rax
  mov    %rax,-0xd70(%rbp)
  mov    -0xd48(%rbp),%rax
  add    $0x14,%rax
  mov    %rax,-0xd68(%rbp)
  lea    -0x820(%rbp),%rax
  mov    %rax,-0xd78(%rbp)
  mov    -0xd88(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd88(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd80(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd80(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd70(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd70(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd68(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd68(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd88(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd88(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd80(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd80(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd70(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd70(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd68(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd68(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd88(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd88(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd80(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd80(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd70(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd70(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd68(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd68(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd88(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd88(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd80(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd80(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd70(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd70(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd68(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd68(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd88(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd88(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd80(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd80(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd70(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd70(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  mov    -0xd68(%rbp),%rdx
  lea    0x4(%rdx),%rax
  mov    %rax,-0xd68(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rcx
  mov    %rcx,-0xd78(%rbp)
  mov    (%rdx),%edx
  mov    %edx,(%rax)
  movl   $0x1,-0xd90(%rbp)
  jmp    L89
L83:
  lea    -0xd10(%rbp),%rcx
  lea    -0xc70(%rbp),%rax
  mov    $0x50,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <memcpy@plt>
  lea    -0x520(%rbp),%rdx
  lea    -0x820(%rbp),%rcx
  lea    -0xc70(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <shasse2_data@plt>
  lea    -0x820(%rbp),%rdx
  lea    -0xc70(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <shasse2_ends@plt>
  lea    -0xcc0(%rbp),%rcx
  lea    -0xc70(%rbp),%rax
  mov    $0x50,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <memcpy@plt>
  lea    -0x520(%rbp),%rdx
  lea    -0x820(%rbp),%rcx
  lea    -0xc70(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <shasse2_data@plt>
  lea    -0x820(%rbp),%rdx
  lea    -0xc70(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <shasse2_ends@plt>
  mov    -0xd60(%rbp),%rax
  add    $0x14,%rax
  mov    %rax,-0xd88(%rbp)
  mov    -0xd58(%rbp),%rax
  add    $0x14,%rax
  mov    %rax,-0xd80(%rbp)
  mov    -0xd50(%rbp),%rax
  add    $0x14,%rax
  mov    %rax,-0xd70(%rbp)
  mov    -0xd48(%rbp),%rax
  add    $0x14,%rax
  mov    %rax,-0xd68(%rbp)
  lea    -0x820(%rbp),%rax
  mov    %rax,-0xd78(%rbp)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  mov    (%rax),%ecx
  mov    -0xd88(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd88(%rbp)
  mov    (%rax),%edx
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  mov    (%rax),%ecx
  mov    -0xd80(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd80(%rbp)
  mov    (%rax),%edx
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  mov    (%rax),%ecx
  mov    -0xd70(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd70(%rbp)
  mov    (%rax),%edx
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  mov    (%rax),%ecx
  mov    -0xd68(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd68(%rbp)
  mov    (%rax),%edx
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  mov    (%rax),%ecx
  mov    -0xd88(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd88(%rbp)
  mov    (%rax),%edx
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  mov    (%rax),%ecx
  mov    -0xd80(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd80(%rbp)
  mov    (%rax),%edx
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  mov    (%rax),%ecx
  mov    -0xd70(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd70(%rbp)
  mov    (%rax),%edx
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  mov    (%rax),%ecx
  mov    -0xd68(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd68(%rbp)
  mov    (%rax),%edx
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  mov    (%rax),%ecx
  mov    -0xd88(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd88(%rbp)
  mov    (%rax),%edx
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  mov    (%rax),%ecx
  mov    -0xd80(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd80(%rbp)
  mov    (%rax),%edx
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  mov    (%rax),%ecx
  mov    -0xd70(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd70(%rbp)
  mov    (%rax),%edx
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xd78(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd78(%rbp)
  mov    (%rax),%ecx
  mov    -0xd68(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0xd68(%rbp)
  mov    (%rax),%edx
  xor    %ecx,%edx
  mov    %edx,(%rax)
  addl   $0x1,-0xd90(%rbp)
L89:
  cmpl   $0xfff,-0xd90(%rbp)
  jle    L83
  mov    -0xd50(%rbp),%rcx
  mov    -0xdd0(%rbp),%rax
  mov    $0x20,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <memcpy@plt>
  mov    -0xd48(%rbp),%rcx
  mov    -0xdd8(%rbp),%rax
  mov    $0x20,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <memcpy@plt>
  mov    -0xd60(%rbp),%rcx
  mov    -0xdc0(%rbp),%rax
  mov    $0x20,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <memcpy@plt>
  mov    -0xd58(%rbp),%rcx
  mov    -0xdc8(%rbp),%rax
  mov    $0x20,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <memcpy@plt>
  nop
  mov    -0x18(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L74
  call   <__stack_chk_fail@plt>
L74:
  lea    -0x10(%rbp),%rsp
  pop    %rbx
  pop    %r12
  pop    %rbp
  ret
```

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);
}
```