Function at 0x40491b
Capabilities:
Hash data using sha512

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x218
mov rbp, r9
mov rax, qword [rsp + 0x288]
mov r9, qword [rsp + 0x280]
mov dil, byte [rsp + 0x298]
mov r12b, byte [rsp + 0x290]
cmp cl, 2
jne 0x404978
mov byte [rsp + 0x30], dil
mov byte [rsp + 0x28], r12b
mov qword [rsp + 0x20], rax
mov rcx, rdx
mov rdx, r8
mov r8, rbp
call fcn.00406496
jmp 0x40647e
mov qword [rsp + 0x138], rax
mov qword [rsp + 0x140], r9
mov rax, qword [rbp]
mov qword [rsp + 0xf8], rax
mov rax, qword [rbp + 8]
mov qword [rsp + 0xf0], rax
mov rbx, qword [rbp + 0x10]
mov rax, qword [rbp + 0x18]
mov qword [rsp + 0x100], rax
mov r14, qword [rbp + 0x20]
mov rsi, qword [rbp + 0x28]
mov r15, qword [rbp + 0x30]
mov rax, qword [rbp + 0x38]
mov qword [rsp + 0xe8], rax
xor ecx, ecx
mov rax, r8
sub rax, 1
cmovae rcx, rax
and rcx, 0xffffffffffffff80
xorps xmm0, xmm0
movaps xmmword [rsp + 0x200], xmm0
movaps xmmword [rsp + 0x1f0], xmm0
movaps xmmword [rsp + 0x1e0], xmm0
movaps xmmword [rsp + 0x1d0], xmm0
movaps xmmword [rsp + 0x1c0], xmm0
movaps xmmword [rsp + 0x1b0], xmm0
movaps xmmword [rsp + 0x1a0], xmm0
movaps xmmword [rsp + 0x190], xmm0
cmp rcx, r8
mov rax, r8
cmovb rax, rcx
mov qword [rsp + 0x148], r8
sub r8, rax
add rax, rdx
cmp r8, 0x7f
mov qword [rsp + 0x160], rdx
mov qword [rsp + 0x128], rcx
jbe 0x404a61
mov qword [rsp + 0x118], rax
mov eax, pe_nt_image_headers64
mov qword [rsp + 0x120], rax
jmp 0x404a8c
lea r13, [rsp + 0x190]
mov rcx, r13
mov rdx, rax
mov qword [rsp + 0x120], r8
call sub.ntdll.dll_memcpy
mov rcx, qword [rsp + 0x128]
mov qword [rsp + 0x118], r13
movzx eax, dil
dec rax
mov qword [rsp + 0x158], rax
or r12b, dil
movzx eax, r12b
dec rax
mov qword [rsp + 0x150], rax
xor edx, edx
mov qword [rsp + 0x168], rbp
cmp rdx, rcx
mov rcx, qword [rsp + 0x120]
mov qword [rsp + 0x188], rdx
jne 0x404afa
lea rax, [rdx + 0x80]
mov qword [rsp + 0x130], rax
mov rax, qword [rsp + 0x150]
mov qword [rsp + 0x58], rax
mov rdi, qword [rsp + 0x158]
mov rax, qword [rsp + 0x118]
jmp 0x404b3a
mov rcx, rdx
sub rcx, 0xffffffffffffff80
mov rax, qword [rsp + 0x160]
je 0x406492
cmp rcx, qword [rsp + 0x148]
ja 0x406492
mov r8, rcx
add rax, rdx
mov ecx, pe_nt_image_headers64
xor r9d, r9d
mov qword [rsp + 0x58], r9
xor edi, edi
mov qword [rsp + 0x130], r8
mov r11, qword [rsp + 0x140]
add r11, rcx
mov r10, qword [rsp + 0x138]
adc r10, 0
mov rdx, qword [rax]
mov qword [rsp + 0xd8], rdx
mov rbp, qword [rax + 8]
mov qword [rsp + 0xd0], rbp
mov rcx, qword [rsp + 0xf8]
mov r9, r14
lea r13, [rcx + r14]
add r13, rdx
mov qword [rsp + 0x140], r11
movabs rcx, 0x510e527fade682d1
xor r11, rcx
xor r11, r13
rol r11, 0x20
movabs rcx, 0x6a09e667f3bcc908
add rcx, r11
mov rdx, rax
mov rax, rcx
xor rax, r14
rol rax, 0x28
add r13, rbp
add r13, rax
xor r11, r13
rol r11, 0x30
mov qword [rsp + 0x108], r11
add rcx, r11
mov qword [rsp + 0x40], rcx
xor rax, rcx
rol rax, 1
mov qword [rsp + 0xe0], rax
mov r11, rdx
mov rcx, qword [rdx + 0x10]
mov qword [rsp + 0x70], rcx
mov rax, qword [rsp + 0xf0]
lea r14, [rsi + rax]
mov qword [rsp + 0x178], rsi
add r14, rcx
mov qword [rsp + 0x138], r10
movabs rcx, 0x9b05688c2b3e6c1f
xor r10, rcx
xor r10, r14
rol r10, 0x20
movabs rcx, 0xbb67ae8584caa73b
add rcx, r10
mov r8, rcx
xor r8, rsi
rol r8, 0x28
mov rax, qword [rdx + 0x18]
mov qword [rsp + 0x98], rax
add r14, rax
add r14, r8
xor r10, r14
rol r10, 0x30
add rcx, r10
mov qword [rsp + 0x38], rcx
xor r8, rcx
rol r8, 1
mov qword [rsp + 0x48], r8
mov rax, qword [rdx + 0x20]
mov qword [rsp + 0xa8], rax
mov qword [rsp + 0x180], r9
lea r9, [r15 + rbx]
mov rdx, r15
mov qword [rsp + 0x170], r15
add r9, rax
movabs rcx, 0x1f83d9abfb41bd6b
xor rdi, rcx
xor rdi, r9
rol rdi, 0x20
mov qword [rsp + 0x110], rbx
movabs rcx, 0x3c6ef372fe94f82b
lea r12, [rdi + rcx]
mov r15, r12
xor r15, rdx
rol r15, 0x28
mov rax, qword [r11 + 0x28]
mov qword [rsp + 0x90], rax
add r9, rax
add r9, r15
xor rdi, r9
rol rdi, 0x30
add r12, rdi
xor r15, r12
rol r15, 1
mov rdx, qword [r11 + 0x30]
mov qword [rsp + 0xa0], rdx
mov rbx, qword [rsp + 0xe8]
mov rcx, qword [rsp + 0x100]
lea rsi, [rbx + rcx]
add rsi, rdx
movabs rdx, 0x5be0cd19137e2179
mov r8, qword [rsp + 0x58]
xor r8, rdx
xor r8, rsi
rol r8, 0x20
movabs rdx, 0xa54ff53a5f1d36f1
lea rax, [r8 + rdx]
mov rbp, rax
xor rbp, rbx
rol rbp, 0x28
mov rdx, qword [r11 + 0x38]
mov qword [rsp + 0x88], rdx
add rsi, rdx
add rsi, rbp
xor r8, rsi
rol r8, 0x30
add rax, r8
xor rbp, rax
rol rbp, 1
mov rbx, qword [r11 + 0x40]
mov rcx, r11
mov qword [rsp + 0x80], rbx
add r13, rbx
mov r11, qword [rsp + 0x48]
add r13, r11
xor r8, r13
rol r8, 0x20
add r12, r8
xor r11, r12
rol r11, 0x28
mov rdx, qword [rcx + 0x48]
mov qword [rsp + 0xb0], rdx
add r13, rdx
add r13, r11
xor r8, r13
rol r8, 0x30
add r12, r8
mov qword [rsp + 0x50], r12
xor r11, r12
rol r11, 1
mov r12, rcx
mov rdx, qword [rcx + 0x50]
mov qword [rsp + 0xb8], rdx
add r14, rdx
add r14, r15
mov rcx, qword [rsp + 0x108]
xor rcx, r14
rol rcx, 0x20
add rax, rcx
xor r15, rax
rol r15, 0x28
mov rdx, qword [r12 + 0x58]
mov qword [rsp + 0xc8], rdx
add r14, rdx
add r14, r15
xor rcx, r14
rol rcx, 0x30
add rax, rcx
mov qword [rsp + 0x48], rax
xor r15, rax
rol r15, 1
mov rdx, qword [r12 + 0x60]
mov qword [rsp + 0x68], rdx
add r9, rdx
add r9, rbp
xor r10, r9
rol r10, 0x20
mov rax, qword [rsp + 0x40]
add rax, r10
xor rbp, rax
rol rbp, 0x28
mov rbx, qword [r12 + 0x68]
mov qword [rsp + 0x78], rbx
add r9, rbx
add r9, rbp
xor r10, r9
rol r10, 0x30
add rax, r10
mov qword [rsp + 0x40], rax
xor rbp, rax
rol rbp, 1
mov rax, r12
mov rdx, qword [r12 + 0x70]
mov rax, qword [r12 + 0x78]
mov qword [rsp + 0x60], rax
add rsi, rdx
mov qword [rsp + 0xc0], rdx
mov r12, qword [rsp + 0xe0]
add rsi, r12
xor rdi, rsi
rol rdi, 0x20
mov rbx, qword [rsp + 0x38]
add rbx, rdi
xor r12, rbx
rol r12, 0x28
add rsi, rax
add rsi, r12
xor rdi, rsi
rol rdi, 0x30
add rbx, rdi
xor r12, rbx
rol r12, 1
add r13, rdx
add r13, r12
xor rcx, r13
rol rcx, 0x20
mov rdx, qword [rsp + 0x40]
add rdx, rcx
xor r12, rdx
rol r12, 0x28
add r13, qword [rsp + 0xb8]
add r13, r12
xor rcx, r13
rol rcx, 0x30
add rdx, rcx
mov qword [rsp + 0x40], rdx
xor r12, rdx
rol r12, 1
mov qword [rsp + 0xe0], r12
add r14, qword [rsp + 0xa8]
add r14, r11
xor r10, r14
rol r10, 0x20
add rbx, r10
xor r11, rbx
rol r11, 0x28
add r14, qword [rsp + 0x80]
add r14, r11
xor r10, r14
rol r10, 0x30
add rbx, r10
mov qword [rsp + 0x38], rbx
xor r11, rbx
rol r11, 1
mov rbx, r11
add r9, qword [rsp + 0xb0]
add r9, r15
xor rdi, r9
rol rdi, 0x20
mov r12, qword [rsp + 0x50]
add r12, rdi
xor r15, r12
rol r15, 0x28
add r9, qword [rsp + 0x60]
add r9, r15
xor rdi, r9
rol rdi, 0x30
add r12, rdi
xor r15, r12
rol r15, 1
add rsi, qword [rsp + 0x78]
add rsi, rbp
xor r8, rsi
rol r8, 0x20
mov rax, qword [rsp + 0x48]
add rax, r8
xor rbp, rax
rol rbp, 0x28
add rsi, qword [rsp + 0xa0]
add rsi, rbp
xor r8, rsi
rol r8, 0x30
add rax, r8
xor rbp, rax
rol rbp, 1
add r13, qword [rsp + 0xd0]
add r13, r11
xor r8, r13
rol r8, 0x20
add r12, r8
xor rbx, r12
rol rbx, 0x28
add r13, qword [rsp + 0x68]
add r13, rbx
xor r8, r13
mov rdx, r13
rol r8, 0x30
add r12, r8
mov qword [rsp + 0x50], r12
xor rbx, r12
rol rbx, 1
add r14, qword [rsp + 0xd8]
add r14, r15
xor rcx, r14
rol rcx, 0x20
add rax, rcx
xor r15, rax
rol r15, 0x28
add r14, qword [rsp + 0x70]
add r14, r15
mov qword [rsp + 0x58], r14
xor rcx, r14
rol rcx, 0x30
add rax, rcx
mov qword [rsp + 0x48], rax
mov r13, rcx
xor r15, rax
rol r15, 1
mov r14, qword [rsp + 0xc8]
add r9, r14
add r9, rbp
xor r10, r9
rol r10, 0x20
mov rax, qword [rsp + 0x40]
add rax, r10
xor rbp, rax
rol rbp, 0x28
add r9, qword [rsp + 0x88]
add r9, rbp
xor r10, r9
rol r10, 0x30
add rax, r10
mov qword [rsp + 0x40], rax
xor rbp, rax
rol rbp, 1
mov r12, qword [rsp + 0x90]
add rsi, r12
mov rcx, qword [rsp + 0xe0]
add rsi, rcx
xor rdi, rsi
rol rdi, 0x20
mov r11, rdi
mov rax, qword [rsp + 0x38]
add rax, rdi
xor rcx, rax
rol rcx, 0x28
add rsi, qword [rsp + 0x98]
add rsi, rcx
xor r11, rsi
rol r11, 0x30
add rax, r11
mov qword [rsp + 0x38], rax
xor rcx, rax
mov rax, rcx
rol rax, 1
mov rcx, rdx
add rcx, r14
add rcx, rax
xor r13, rcx
rol r13, 0x20
mov r14, qword [rsp + 0x40]
add r14, r13
xor rax, r14
rol rax, 0x28
add rcx, qword [rsp + 0x80]
add rcx, rax
xor r13, rcx
rol r13, 0x30
add r14, r13
xor rax, r14
rol rax, 1
mov rdi, qword [rsp + 0x58]
add rdi, qword [rsp + 0x68]
add rdi, rbx
xor r10, rdi
rol r10, 0x20
mov rdx, qword [rsp + 0x38]
add rdx, r10
xor rbx, rdx
rol rbx, 0x28
add rdi, qword [rsp + 0xd8]
add rdi, rbx
xor r10, rdi
rol r10, 0x30
add rdx, r10
mov qword [rsp + 0x38], rdx
xor rbx, rdx
rol rbx, 1
add r9, r12
add r9, r15
xor r11, r9
rol r11, 0x20
mov rdx, qword [rsp + 0x50]
add rdx, r11
xor r15, rdx
rol r15, 0x28
add r9, qword [rsp + 0x70]
add r9, r15
xor r11, r9
rol r11, 0x30
add rdx, r11
xor r15, rdx
mov r12, rdx
rol r15, 1
add rsi, qword [rsp + 0x60]
add rsi, rbp
xor r8, rsi
rol r8, 0x20
mov rdx, qword [rsp + 0x48]
add rdx, r8
xor rbp, rdx
rol rbp, 0x28
add rsi, qword [rsp + 0x78]
add rsi, rbp
xor r8, rsi
rol r8, 0x30
add rdx, r8
xor rbp, rdx
rol rbp, 1
add rcx, qword [rsp + 0xb8]
add rcx, rbx
xor r8, rcx
rol r8, 0x20
add r12, r8
xor rbx, r12
rol rbx, 0x28
add rcx, qword [rsp + 0xc0]
add rcx, rbx
xor r8, rcx
rol r8, 0x30
add r12, r8
mov qword [rsp + 0x50], r12
xor rbx, r12
rol rbx, 1
add rdi, qword [rsp + 0x98]
add rdi, r15
xor r13, rdi
rol r13, 0x20
add rdx, r13
xor r15, rdx
rol r15, 0x28
add rdi, qword [rsp + 0xa0]
add rdi, r15
mov qword [rsp + 0x58], rdi
xor r13, rdi
rol r13, 0x30
add rdx, r13
mov qword [rsp + 0x48], rdx
xor r15, rdx
rol r15, 1
mov rdi, qword [rsp + 0x88]
mov r12, r9
add r12, rdi
add r12, rbp
xor r10, r12
rol r10, 0x20
add r14, r10
xor rbp, r14
rol rbp, 0x28
add r12, qword [rsp + 0xd0]
add r12, rbp
xor r10, r12
rol r10, 0x30
add r14, r10
xor rbp, r14
rol rbp, 1
mov rdx, qword [rsp + 0xb0]
add rsi, rdx
add rsi, rax
xor r11, rsi
rol r11, 0x20
mov r9, qword [rsp + 0x38]
add r9, r11
xor rax, r9
rol rax, 0x28
add rsi, qword [rsp + 0xa8]
add rsi, rax
xor r11, rsi
rol r11, 0x30
add r9, r11
xor rax, r9
rol rax, 1
add rcx, rdi
add rcx, rax
xor r13, rcx
rol r13, 0x20
add r14, r13
xor rax, r14
rol rax, 0x28
add rcx, rdx
add rcx, rax
xor r13, rcx
rol r13, 0x30
add r14, r13
mov qword [rsp + 0x40], r14
xor rax, r14
rol rax, 1
mov rdi, qword [rsp + 0x58]
add rdi, qword [rsp + 0x98]
add rdi, rbx
xor r10, rdi
rol r10, 0x20
add r9, r10
xor rbx, r9
rol rbx, 0x28
add rdi, qword [rsp + 0xd0]
add rdi, rbx
mov qword [rsp + 0x58], rdi
xor r10, rdi
rol r10, 0x30
add r9, r10
xor rbx, r9
rol rbx, 1
mov rdi, rbx
add r12, qword [rsp + 0x78]
add r12, r15
xor r11, r12
rol r11, 0x20
mov r14, qword [rsp + 0x50]
add r14, r11
xor r15, r14
rol r15, 0x28
add r12, qword [rsp + 0x68]
add r12, r15
xor r11, r12
rol r11, 0x30
add r14, r11
xor r15, r14
rol r15, 1
add rsi, qword [rsp + 0xc8]
add rsi, rbp
xor r8, rsi
rol r8, 0x20
mov rdx, qword [rsp + 0x48]
add rdx, r8
xor rbp, rdx
rol rbp, 0x28
add rsi, qword [rsp + 0xc0]
add rsi, rbp
xor r8, rsi
rol r8, 0x30
add rdx, r8
xor rbp, rdx
rol rbp, 1
add rcx, qword [rsp + 0x70]
add rcx, rbx
xor r8, rcx
rol r8, 0x20
add r14, r8
xor rdi, r14
rol rdi, 0x28
add rcx, qword [rsp + 0xa0]
add rcx, rdi
xor r8, rcx
rol r8, 0x30
add r14, r8
mov qword [rsp + 0x50], r14
xor rdi, r14
rol rdi, 1
mov r14, qword [rsp + 0x58]
add r14, qword [rsp + 0x90]
add r14, r15
xor r13, r14
rol r13, 0x20
add rdx, r13
xor r15, rdx
rol r15, 0x28
add r14, qword [rsp + 0xb8]
add r14, r15
xor r13, r14
rol r13, 0x30
add rdx, r13
mov qword [rsp + 0x48], rdx
xor r15, rdx
rol r15, 1
add r12, qword [rsp + 0xa8]
add r12, rbp
xor r10, r12
rol r10, 0x20
mov rbx, qword [rsp + 0x40]
add rbx, r10
xor rbp, rbx
rol rbp, 0x28
mov rdx, qword [rsp + 0xd8]
add r12, rdx
add r12, rbp
xor r10, r12
rol r10, 0x30
add rbx, r10
xor rbp, rbx
rol rbp, 1
add rsi, qword [rsp + 0x60]
add rsi, rax
xor r11, rsi
rol r11, 0x20
add r9, r11
xor rax, r9
rol rax, 0x28
add rsi, qword [rsp + 0x80]
add rsi, rax
xor r11, rsi
rol r11, 0x30
add r9, r11
xor rax, r9
rol rax, 1
add rcx, qword [rsp + 0xb0]
add rcx, rax
xor r13, rcx
rol r13, 0x20
add rbx, r13
xor rax, rbx
rol rax, 0x28
add rcx, rdx
add rcx, rax
xor r13, rcx
rol r13, 0x30
add rbx, r13
mov qword [rsp + 0x40], rbx
xor rax, rbx
rol rax, 1
add r14, qword [rsp + 0x90]
mov rbx, rdi
add r14, rdi
xor r10, r14
rol r10, 0x20
add r9, r10
xor rbx, r9
rol rbx, 0x28
add r14, qword [rsp + 0x88]
add r14, rbx
xor r10, r14
rol r10, 0x30
add r9, r10
xor rbx, r9
rol rbx, 1
add r12, qword [rsp + 0x70]
add r12, r15
xor r11, r12
rol r11, 0x20
mov rdx, qword [rsp + 0x50]
add rdx, r11
xor r15, rdx
rol r15, 0x28
add r12, qword [rsp + 0xa8]
add r12, r15
xor r11, r12
rol r11, 0x30
add rdx, r11
xor r15, rdx
mov rdi, rdx
rol r15, 1
add rsi, qword [rsp + 0xb8]
add rsi, rbp
xor r8, rsi
rol r8, 0x20
mov rdx, qword [rsp + 0x48]
add rdx, r8
xor rbp, rdx
rol rbp, 0x28
add rsi, qword [rsp + 0x60]
add rsi, rbp
xor r8, rsi
rol r8, 0x30
add rdx, r8
mov qword [rsp + 0x48], rdx
xor rbp, rdx
rol rbp, 1
add rcx, qword [rsp + 0xc0]
add rcx, rbx
xor r8, rcx
rol r8, 0x20
mov rdx, rdi
add rdx, r8
xor rbx, rdx
rol rbx, 0x28
add rcx, qword [rsp + 0xd0]
add rcx, rbx
xor r8, rcx
rol r8, 0x30
add rdx, r8
mov qword [rsp + 0x50], rdx
xor rbx, rdx
rol rbx, 1
add r14, qword [rsp + 0xc8]
add r14, r15
xor r13, r14
rol r13, 0x20
mov rdx, qword [rsp + 0x48]
add rdx, r13
xor r15, rdx
rol r15, 0x28
add r14, qword [rsp + 0x68]
add r14, r15
xor r13, r14
rol r13, 0x30
add rdx, r13
mov qword [rsp + 0x48], rdx
xor r15, rdx
rol r15, 1
add r12, qword [rsp + 0xa0]
add r12, rbp
xor r10, r12
rol r10, 0x20
mov rdi, qword [rsp + 0x40]
add rdi, r10
xor rbp, rdi
rol rbp, 0x28
add r12, qword [rsp + 0x80]
add r12, rbp
xor r10, r12
rol r10, 0x30
add rdi, r10
xor rbp, rdi
rol rbp, 1
add rsi, qword [rsp + 0x98]
add rsi, rax
xor r11, rsi
rol r11, 0x20
mov rdx, r8
add r9, r11
xor rax, r9
rol rax, 0x28
add rsi, qword [rsp + 0x78]
add rsi, rax
xor r11, rsi
rol r11, 0x30
add r9, r11
xor rax, r9
rol rax, 1
add rcx, qword [rsp + 0x70]
add rcx, rax
xor r13, rcx
rol r13, 0x20
add rdi, r13
xor rax, rdi
rol rax, 0x28
add rcx, qword [rsp + 0x68]
add rcx, rax
xor r13, rcx
rol r13, 0x30
add rdi, r13
mov qword [rsp + 0x40], rdi
xor rax, rdi
rol rax, 1
mov rdi, r14
add rdi, qword [rsp + 0xa0]
add rdi, rbx
xor r10, rdi
rol r10, 0x20
add r9, r10
xor rbx, r9
rol rbx, 0x28
add rdi, qword [rsp + 0xb8]
add rdi, rbx
xor r10, rdi
rol r10, 0x30
add r9, r10
mov qword [rsp + 0x38], r9
xor rbx, r9
rol rbx, 1
mov r8, rbx
add r12, qword [rsp + 0xd8]
add r12, r15
xor r11, r12
rol r11, 0x20
mov rbx, qword [rsp + 0x50]
add rbx, r11
xor r15, rbx
rol r15, 0x28
add r12, qword [rsp + 0xc8]
add r12, r15
xor r11, r12
rol r11, 0x30
add rbx, r11
xor r15, rbx
rol r15, 1
add rsi, qword [rsp + 0x80]
add rsi, rbp
xor rdx, rsi
rol rdx, 0x20
mov r9, qword [rsp + 0x48]
add r9, rdx
xor rbp, r9
rol rbp, 0x28
add rsi, qword [rsp + 0x98]
add rsi, rbp
xor rdx, rsi
rol rdx, 0x30
add r9, rdx
xor rbp, r9
rol rbp, 1
add rcx, qword [rsp + 0xa8]
add rcx, r8
xor rdx, rcx
rol rdx, 0x20
add rbx, rdx
xor r8, rbx
rol r8, 0x28
add rcx, qword [rsp + 0x78]
add rcx, r8
mov qword [rsp + 0x50], rcx
xor rdx, rcx
rol rdx, 0x30
add rbx, rdx
xor r8, rbx
rol r8, 1
add rdi, qword [rsp + 0x88]
add rdi, r15
xor r13, rdi
rol r13, 0x20
add r9, r13
xor r15, r9
rol r15, 0x28
add rdi, qword [rsp + 0x90]
add rdi, r15
xor r13, rdi
rol r13, 0x30
add r9, r13
mov qword [rsp + 0x48], r9
xor r15, r9
rol r15, 1
add r12, qword [rsp + 0x60]
add r12, rbp
xor r10, r12
rol r10, 0x20
mov r9, qword [rsp + 0x40]
add r9, r10
xor rbp, r9
rol rbp, 0x28
add r12, qword [rsp + 0xc0]
add r12, rbp
xor r10, r12
rol r10, 0x30
add r9, r10
xor rbp, r9
mov r14, r9
rol rbp, 1
mov r9, qword [rsp + 0xd0]
add rsi, r9
add rsi, rax
xor r11, rsi
rol r11, 0x20
mov rcx, qword [rsp + 0x38]
add rcx, r11
xor rax, rcx
rol rax, 0x28
add rsi, qword [rsp + 0xb0]
add rsi, rax
xor r11, rsi
rol r11, 0x30
add rcx, r11
mov qword [rsp + 0x38], rcx
xor rax, rcx
rol rax, 1
mov rcx, qword [rsp + 0x50]
add rcx, qword [rsp + 0x68]
add rcx, rax
xor r13, rcx
rol r13, 0x20
add r14, r13
xor rax, r14
rol rax, 0x28
add rcx, qword [rsp + 0x90]
add rcx, rax
xor r13, rcx
rol r13, 0x30
add r14, r13
mov qword [rsp + 0x40], r14
xor rax, r14
rol rax, 1
add rdi, r9
add rdi, r8
xor r10, rdi
rol r10, 0x20
mov r9, qword [rsp + 0x38]
add r9, r10
xor r8, r9
rol r8, 0x28
add rdi, qword [rsp + 0x60]
add rdi, r8
xor r10, rdi
rol r10, 0x30
add r9, r10
mov qword [rsp + 0x38], r9
xor r8, r9
rol r8, 1
add r12, qword [rsp + 0xc0]
add r12, r15
xor r11, r12
rol r11, 0x20
add rbx, r11
xor r15, rbx
rol r15, 0x28
add r12, qword [rsp + 0x78]
add r12, r15
xor r11, r12
rol r11, 0x30
add rbx, r11
xor r15, rbx
mov r9, rbx
rol r15, 1
add rsi, qword [rsp + 0xa8]
add rsi, rbp
mov rbx, rdx
xor rbx, rsi
rol rbx, 0x20
mov rdx, qword [rsp + 0x48]
add rdx, rbx
xor rbp, rdx
rol rbp, 0x28
add rsi, qword [rsp + 0xb8]
add rsi, rbp
xor rbx, rsi
rol rbx, 0x30
add rdx, rbx
xor rbp, rdx
rol rbp, 1
add rcx, qword [rsp + 0xd8]
add rcx, r8
xor rbx, rcx
rol rbx, 0x20
add r9, rbx
xor r8, r9
rol r8, 0x28
add rcx, qword [rsp + 0x88]
add rcx, r8
mov qword [rsp + 0x50], rcx
xor rbx, rcx
rol rbx, 0x30
mov qword [rsp + 0x58], rbx
add r9, rbx
xor r8, r9
rol r8, 1
add rdi, qword [rsp + 0xa0]
add rdi, r15
mov rcx, r13
xor rcx, rdi
rol rcx, 0x20
add rdx, rcx
xor r15, rdx
rol r15, 0x28
add rdi, qword [rsp + 0x98]
add rdi, r15
xor rcx, rdi
rol rcx, 0x30
add rdx, rcx
mov qword [rsp + 0x48], rdx
xor r15, rdx
rol r15, 1
add r12, qword [rsp + 0xb0]
add r12, rbp
xor r10, r12
rol r10, 0x20
mov rbx, qword [rsp + 0x40]
add rbx, r10
xor rbp, rbx
rol rbp, 0x28
add r12, qword [rsp + 0x70]
add r12, rbp
xor r10, r12
mov r14, r12
rol r10, 0x30
add rbx, r10
xor rbp, rbx
mov r12, rbx
rol rbp, 1
add rsi, qword [rsp + 0x80]
add rsi, rax
xor r11, rsi
rol r11, 0x20
mov rdx, qword [rsp + 0x38]
add rdx, r11
xor rax, rdx
rol rax, 0x28
mov rbx, qword [rsp + 0xc8]
add rsi, rbx
add rsi, rax
xor r11, rsi
rol r11, 0x30
add rdx, r11
xor rax, rdx
rol rax, 1
mov r13, qword [rsp + 0x50]
add r13, qword [rsp + 0x78]
add r13, rax
xor rcx, r13
rol rcx, 0x20
add r12, rcx
xor rax, r12
rol rax, 0x28
add r13, rbx
add r13, rax
xor rcx, r13
rol rcx, 0x30
add r12, rcx
xor rax, r12
mov rbx, r12
rol rax, 1
mov qword [rsp + 0xe0], rax
add rdi, qword [rsp + 0x88]
add rdi, r8
xor r10, rdi
rol r10, 0x20
add rdx, r10
xor r8, rdx
rol r8, 0x28
add rdi, qword [rsp + 0xc0]
add rdi, r8
xor r10, rdi
rol r10, 0x30
add rdx, r10
mov qword [rsp + 0x38], rdx
xor r8, rdx
rol r8, 1
add r14, qword [rsp + 0x68]
add r14, r15
xor r11, r14
rol r11, 0x20
add r9, r11
xor r15, r9
rol r15, 0x28
add r14, qword [rsp + 0xd0]
add r14, r15
xor r11, r14
rol r11, 0x30
add r9, r11
xor r15, r9
rol r15, 1
add rsi, qword [rsp + 0x98]
add rsi, rbp
mov rax, qword [rsp + 0x58]
xor rax, rsi
rol rax, 0x20
mov rdx, qword [rsp + 0x48]
add rdx, rax
xor rbp, rdx
rol rbp, 0x28
add rsi, qword [rsp + 0xb0]
add rsi, rbp
xor rax, rsi
rol rax, 0x30
add rdx, rax
xor rbp, rdx
rol rbp, 1
add r13, qword [rsp + 0x90]
add r13, r8
xor rax, r13
rol rax, 0x20
add r9, rax
xor r8, r9
rol r8, 0x28
add r13, qword [rsp + 0xd8]
add r13, r8
xor rax, r13
rol rax, 0x30
mov qword [rsp + 0x58], rax
add r9, rax
xor r8, r9
rol r8, 1
add rdi, qword [rsp + 0x60]
add rdi, r15
xor rcx, rdi
rol rcx, 0x20
add rdx, rcx
xor r15, rdx
rol r15, 0x28
add rdi, qword [rsp + 0xa8]
add rdi, r15
xor rcx, rdi
rol rcx, 0x30
add rdx, rcx
mov r12, rcx
xor r15, rdx
rol r15, 1
add r14, qword [rsp + 0x80]
add r14, rbp
xor r10, r14
rol r10, 0x20
mov rax, rbx
add rax, r10
xor rbp, rax
rol rbp, 0x28
mov rbx, qword [rsp + 0xa0]
add r14, rbx
add r14, rbp
xor r10, r14
rol r10, 0x30
add rax, r10
mov qword [rsp + 0x40], rax
xor rbp, rax
rol rbp, 1
add rsi, qword [rsp + 0x70]
mov rax, qword [rsp + 0xe0]
add rsi, rax
xor r11, rsi
rol r11, 0x20
mov rcx, qword [rsp + 0x38]
add rcx, r11
xor rax, rcx
rol rax, 0x28
add rsi, qword [rsp + 0xb8]
add rsi, rax
xor r11, rsi
rol r11, 0x30
add rcx, r11
mov qword [rsp + 0x38], rcx
xor rax, rcx
rol rax, 1
add r13, rbx
add r13, rax
xor r12, r13
rol r12, 0x20
mov rcx, qword [rsp + 0x40]
add rcx, r12
xor rax, rcx
rol rax, 0x28
add r13, qword [rsp + 0x60]
add r13, rax
xor r12, r13
rol r12, 0x30
add rcx, r12
mov qword [rsp + 0x40], rcx
xor rax, rcx
rol rax, 1
mov rbx, rax
add rdi, qword [rsp + 0xc0]
add rdi, r8
xor r10, rdi
rol r10, 0x20
mov rax, qword [rsp + 0x38]
add rax, r10
xor r8, rax
rol r8, 0x28
add rdi, qword [rsp + 0xb0]
add rdi, r8
xor r10, rdi
rol r10, 0x30
add rax, r10
mov qword [rsp + 0x38], rax
xor r8, rax
rol r8, 1
add r14, qword [rsp + 0xc8]
add r14, r15
xor r11, r14
rol r11, 0x20
add r9, r11
xor r15, r9
rol r15, 0x28
add r14, qword [rsp + 0x98]
add r14, r15
xor r11, r14
rol r11, 0x30
add r9, r11
xor r15, r9
rol r15, 1
add rsi, qword [rsp + 0xd8]
add rsi, rbp
mov rcx, qword [rsp + 0x58]
xor rcx, rsi
rol rcx, 0x20
mov rax, rdx
add rax, rcx
xor rbp, rax
rol rbp, 0x28
add rsi, qword [rsp + 0x80]
add rsi, rbp
xor rcx, rsi
rol rcx, 0x30
add rax, rcx
xor rbp, rax
rol rbp, 1
add r13, qword [rsp + 0x68]
add r13, r8
xor rcx, r13
rol rcx, 0x20
add r9, rcx
xor r8, r9
rol r8, 0x28
add r13, qword [rsp + 0x70]
add r13, r8
xor rcx, r13
mov rdx, r13
rol rcx, 0x30
mov qword [rsp + 0x58], rcx
add r9, rcx
mov qword [rsp + 0x50], r9
xor r8, r9
rol r8, 1
add rdi, qword [rsp + 0x78]
add rdi, r15
xor r12, rdi
rol r12, 0x20
add rax, r12
xor r15, rax
rol r15, 0x28
add rdi, qword [rsp + 0x88]
add rdi, r15
xor r12, rdi
rol r12, 0x30
add rax, r12
mov qword [rsp + 0x48], rax
mov rcx, r12
xor r15, rax
rol r15, 1
mov r12, qword [rsp + 0xd0]
add r14, r12
add r14, rbp
xor r10, r14
rol r10, 0x20
mov rax, qword [rsp + 0x40]
add rax, r10
xor rbp, rax
rol rbp, 0x28
mov r9, qword [rsp + 0xa8]
add r14, r9
add r14, rbp
xor r10, r14
rol r10, 0x30
add rax, r10
mov qword [rsp + 0x40], rax
xor rbp, rax
rol rbp, 1
mov r13, qword [rsp + 0xb8]
add rsi, r13
add rsi, rbx
xor r11, rsi
rol r11, 0x20
mov rax, qword [rsp + 0x38]
add rax, r11
xor rbx, rax
rol rbx, 0x28
add rsi, qword [rsp + 0x90]
add rsi, rbx
xor r11, rsi
rol r11, 0x30
add rax, r11
mov qword [rsp + 0x38], rax
xor rbx, rax
mov rax, rbx
rol rax, 1
add rdx, r13
add rdx, rax
xor rcx, rdx
rol rcx, 0x20
mov rbx, qword [rsp + 0x40]
add rbx, rcx
xor rax, rbx
rol rax, 0x28
add rdx, qword [rsp + 0x70]
add rdx, rax
xor rcx, rdx
rol rcx, 0x30
add rbx, rcx
mov qword [rsp + 0x40], rbx
xor rax, rbx
rol rax, 1
add rdi, qword [rsp + 0x80]
add rdi, r8
xor r10, rdi
rol r10, 0x20
mov rbx, qword [rsp + 0x38]
add rbx, r10
xor r8, rbx
rol r8, 0x28
add rdi, r9
add rdi, r8
xor r10, rdi
rol r10, 0x30
add rbx, r10
mov qword [rsp + 0x38], rbx
xor r8, rbx
rol r8, 1
add r14, qword [rsp + 0x88]
add r14, r15
xor r11, r14
rol r11, 0x20
mov rbx, qword [rsp + 0x50]
add rbx, r11
xor r15, rbx
rol r15, 0x28
add r14, qword [rsp + 0xa0]
add r14, r15
xor r11, r14
rol r11, 0x30
add rbx, r11
xor r15, rbx
rol r15, 1
add rsi, r12
add rsi, rbp
mov r12, qword [rsp + 0x58]
xor r12, rsi
rol r12, 0x20
mov r9, qword [rsp + 0x48]
add r9, r12
xor rbp, r9
rol rbp, 0x28
add rsi, qword [rsp + 0x90]
add rsi, rbp
xor r12, rsi
rol r12, 0x30
add r9, r12
xor rbp, r9
mov r13, r9
rol rbp, 1
add rdx, qword [rsp + 0x60]
add rdx, r8
xor r12, rdx
rol r12, 0x20
add rbx, r12
xor r8, rbx
rol r8, 0x28
add rdx, qword [rsp + 0xc8]
add rdx, r8
xor r12, rdx
rol r12, 0x30
mov qword [rsp + 0x58], r12
add rbx, r12
xor r8, rbx
rol r8, 1
add rdi, qword [rsp + 0xb0]
add rdi, r15
xor rcx, rdi
rol rcx, 0x20
add r13, rcx
xor r15, r13
rol r15, 0x28
add rdi, qword [rsp + 0xc0]
add rdi, r15
xor rcx, rdi
rol rcx, 0x30
mov qword [rsp + 0x108], rcx
add r13, rcx
mov qword [rsp + 0x48], r13
xor r15, r13
rol r15, 1
mov r12, qword [rsp + 0x98]
add r14, r12
add r14, rbp
xor r10, r14
rol r10, 0x20
mov rcx, qword [rsp + 0x40]
add rcx, r10
xor rbp, rcx
rol rbp, 0x28
add r14, qword [rsp + 0x68]
add r14, rbp
xor r10, r14
rol r10, 0x30
add rcx, r10
mov qword [rsp + 0x40], rcx
xor rbp, rcx
rol rbp, 1
add rsi, qword [rsp + 0x78]
add rsi, rax
xor r11, rsi
rol r11, 0x20
mov r9, qword [rsp + 0x38]
add r9, r11
xor rax, r9
rol rax, 0x28
mov r13, qword [rsp + 0xd8]
add rsi, r13
add rsi, rax
xor r11, rsi
rol r11, 0x30
add r9, r11
xor rax, r9
rol rax, 1
add rdx, r13
add rdx, rax
mov rcx, qword [rsp + 0x108]
xor rcx, rdx
rol rcx, 0x20
mov r13, qword [rsp + 0x40]
add r13, rcx
xor rax, r13
rol rax, 0x28
add rdx, qword [rsp + 0xd0]
add rdx, rax
xor rcx, rdx
rol rcx, 0x30
add r13, rcx
mov qword [rsp + 0x40], r13
xor rax, r13
rol rax, 1
add rdi, qword [rsp + 0x70]
add rdi, r8
xor r10, rdi
rol r10, 0x20
add r9, r10
xor r8, r9
rol r8, 0x28
add rdi, r12
add rdi, r8
xor r10, rdi
rol r10, 0x30
add r9, r10
mov qword [rsp + 0x38], r9
xor r8, r9
rol r8, 1
add r14, qword [rsp + 0xa8]
add r14, r15
xor r11, r14
rol r11, 0x20
add rbx, r11
xor r15, rbx
rol r15, 0x28
add r14, qword [rsp + 0x90]
add r14, r15
mov qword [rsp + 0x50], r14
xor r11, r14
rol r11, 0x30
add rbx, r11
xor r15, rbx
mov r12, rbx
rol r15, 1
add rsi, qword [rsp + 0xa0]
add rsi, rbp
mov r13, qword [rsp + 0x58]
xor r13, rsi
rol r13, 0x20
mov r14, qword [rsp + 0x48]
add r14, r13
xor rbp, r14
rol rbp, 0x28
add rsi, qword [rsp + 0x88]
add rsi, rbp
xor r13, rsi
rol r13, 0x30
add r14, r13
add rdx, qword [rsp + 0x80]
add rdx, r8
xor r13, rdx
rol r13, 0x20
add r12, r13
xor r8, r12
rol r8, 0x28
add rdx, qword [rsp + 0xb0]
add rdx, r8
xor r13, rdx
mov rbx, qword [rsp + 0xc0]
add rsi, rbx
add rdx, rbx
mov rbx, r14
xor rbp, r14
mov r14, qword [rsp + 0xb8]
add rdi, r14
add rdi, r15
mov r9, rcx
xor r9, rdi
rol r9, 0x20
add rbx, r9
xor r15, rbx
mov rcx, rbx
rol r15, 0x28
add rdi, qword [rsp + 0xc8]
add rdi, r15
xor r9, rdi
rol r9, 0x30
add rsi, rax
xor r11, rsi
rol r11, 0x20
mov rbx, qword [rsp + 0x38]
add rbx, r11
xor rax, rbx
rol rax, 0x28
add rcx, r9
mov qword [rsp + 0x48], rcx
add rsi, qword [rsp + 0x60]
add rsi, rax
xor r11, rsi
rol r11, 0x30
add rbx, r11
mov qword [rsp + 0x38], rbx
xor rax, rbx
rol rax, 1
add rdx, rax
mov rcx, rax
xor r9, rdx
add rdx, r14
add rdi, qword [rsp + 0xa8]
rol rbp, 1
rol r13, 0x30
add r12, r13
xor r8, r12
rol r8, 1
mov r14, qword [rsp + 0x50]
add r14, qword [rsp + 0x68]
add r14, rbp
xor r10, r14
rol r10, 0x20
mov rbx, qword [rsp + 0x40]
add rbx, r10
xor rbp, rbx
rol rbp, 0x28
add r14, qword [rsp + 0x78]
add r14, rbp
xor r10, r14
rol r10, 0x30
add rbx, r10
add rdi, r8
xor r10, rdi
add rdi, qword [rsp + 0x80]
add r14, qword [rsp + 0xb0]
xor r15, qword [rsp + 0x48]
rol r15, 1
add r14, r15
xor r11, r14
add r14, qword [rsp + 0x60]
add rsi, qword [rsp + 0x78]
xor rbp, rbx
rol rbp, 1
add rsi, rbp
xor r13, rsi
add rsi, qword [rsp + 0xa0]
rol r9, 0x20
add rbx, r9
xor rcx, rbx
rol rcx, 0x28
add rdx, rcx
xor r9, rdx
rol r10, 0x20
mov rax, qword [rsp + 0x38]
add rax, r10
xor r8, rax
rol r8, 0x28
add rdi, r8
xor r10, rdi
rol r10, 0x30
add rax, r10
mov qword [rsp + 0x38], rax
xor r8, rax
rol r8, 1
add rdx, qword [rsp + 0xd0]
rol r13, 0x20
mov rax, qword [rsp + 0x48]
add rax, r13
xor rbp, rax
rol rbp, 0x28
add rsi, rbp
xor r13, rsi
rol r13, 0x30
add rax, r13
add rdx, r8
xor r13, rdx
add rdx, qword [rsp + 0x68]
add rdi, qword [rsp + 0xd8]
rol r9, 0x30
rol r11, 0x20
add r12, r11
xor r15, r12
rol r15, 0x28
add r14, r15
xor r11, r14
rol r11, 0x30
add r12, r11
xor r15, r12
rol r15, 1
add rbx, r9
add rdi, r15
xor r9, rdi
add rdi, qword [rsp + 0x70]
add r14, qword [rsp + 0xc8]
xor rbp, rax
rol rbp, 1
add r14, rbp
xor r10, r14
add r14, qword [rsp + 0x88]
add rsi, qword [rsp + 0x90]
xor rcx, rbx
rol rcx, 1
add rsi, rcx
xor r11, rsi
add rsi, qword [rsp + 0x98]
rol r13, 0x20
add r12, r13
xor r8, r12
rol r8, 0x28
add rdx, r8
xor r13, rdx
rol r10, 0x20
add rbx, r10
xor rbp, rbx
rol rbp, 0x28
add r14, rbp
xor r10, r14
rol r10, 0x30
xor qword [rsp + 0xf8], rdx
add rbx, r10
xor rbp, rbx
xor qword [rsp + 0xf8], rbx
rol r9, 0x20
add rax, r9
xor r15, rax
rol r15, 0x28
add rdi, r15
xor r9, rdi
mov rbx, qword [rsp + 0xf0]
xor rbx, rdi
rol r11, 0x20
mov rdi, qword [rsp + 0x38]
add rdi, r11
xor rcx, rdi
rol rcx, 0x28
add rsi, rcx
xor r11, rsi
rol r11, 0x30
add rdi, r11
xor rcx, rdi
xor rbx, rdi
mov qword [rsp + 0xf0], rbx
rol r13, 0x30
xor qword [rsp + 0x110], r14
mov r14, qword [rsp + 0x180]
mov rbx, r12
add rbx, r13
xor r8, rbx
xor qword [rsp + 0x110], rbx
mov rbx, qword [rsp + 0x110]
mov r12, qword [rsp + 0x100]
xor r12, rsi
rol r9, 0x30
add rax, r9
xor r15, rax
xor r12, rax
mov qword [rsp + 0x100], r12
rol rcx, 1
xor r14, r9
xor r14, rcx
rol r8, 1
mov rsi, qword [rsp + 0x178]
xor rsi, r10
xor rsi, r8
rol r15, 1
mov rcx, qword [rsp + 0x170]
xor rcx, r11
xor rcx, r15
mov r15, rcx
rol rbp, 1
mov rax, qword [rsp + 0xe8]
xor rax, r13
xor rax, rbp
mov qword [rsp + 0xe8], rax
mov rcx, qword [rsp + 0x128]
cmp qword [rsp + 0x188], rcx
mov rdx, qword [rsp + 0x130]
mov rax, qword [rsp + 0x168]
jne 0x404ab7
mov rcx, qword [rsp + 0xf8]
mov qword [rax], rcx
mov rcx, qword [rsp + 0xf0]
mov qword [rax + 8], rcx
mov qword [rax + 0x10], rbx
mov rcx, qword [rsp + 0x100]
mov qword [rax + 0x18], rcx
mov qword [rax + 0x20], r14
mov qword [rax + 0x28], rsi
mov qword [rax + 0x30], r15
mov rcx, qword [rsp + 0xe8]
mov qword [rax + 0x38], rcx
add rsp, 0x218
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
ud2