Function at 0x1800999c0
Capabilities:
Hash data using sha512

Disassembly:
test r8, r8
je 0x18009b06e
push rbp
lea rbp, [rsp - 0x60]
mov eax, 0x160
call fcn.180039720
sub rsp, rax
mov rax, qword [0x1801003f0]
xor rax, rsp
mov qword [rbp + 0x20], rax
mov r10, qword [rcx + 0x28]
mov r11, qword [rcx + 0x38]
mov qword [rsp + 0x180], rbx
mov rbx, qword [rcx]
mov qword [rsp + 0x158], rsi
mov rsi, qword [rcx + 8]
mov qword [rsp + 0x150], rdi
mov qword [rsp + 0x148], r12
mov r12, qword [rcx + 0x10]
mov qword [rsp + 0x140], r13
mov r13, qword [rcx + 0x20]
mov qword [rsp + 0x138], r14
mov r14, qword [rcx + 0x18]
mov qword [rsp + 0x130], r15
mov r15, qword [rcx + 0x30]
mov qword [rbp - 0x70], rcx
lea rcx, [rdx + 2]
mov qword [rbp - 0x80], r15
mov rax, r8
mov qword [rsp + 0x48], rbx
mov qword [rsp + 0x58], rsi
mov qword [rsp + 0x38], rcx
mov qword [rsp + 0x68], r12
mov qword [rsp + 0x70], r13
mov qword [rsp + 0x50], r10
mov qword [rsp + 0x78], r11
mov qword [rbp - 0x78], r14
movabs r9, 0x428a2f98d728ae22
movzx r8d, byte [rcx - 2]
dec rax
mov rdx, r13
shl r8, 8
mov qword [rbp - 0x68], rax
movzx eax, byte [rcx - 1]
or r8, rax
movzx eax, byte [rcx]
shl r8, 8
or r8, rax
movzx eax, byte [rcx + 1]
shl r8, 8
or r8, rax
movzx eax, byte [rcx + 2]
shl r8, 8
or r8, rax
movzx eax, byte [rcx + 3]
shl r8, 8
or r8, rax
movzx eax, byte [rcx + 4]
shl r8, 8
or r8, rax
movzx eax, byte [rcx + 5]
mov rcx, r13
shl r8, 8
not rcx
or r8, rax
ror rdx, 0x29
and rcx, r15
mov qword [rbp - 0x60], r8
mov rax, r13
ror rax, 0x12
xor rdx, rax
mov rax, r13
ror rax, 0xe
xor rdx, rax
mov rax, r13
and rax, r10
add rdx, r11
xor rcx, rax
mov rax, rbx
add rdx, rcx
mov rcx, rbx
add rdx, r9
mov r9, rsi
add rdx, r8
and r9, rbx
lea r11, [r14 + rdx]
mov r14, rsi
xor r14, rbx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
mov rax, rbx
mov rdi, r14
ror rax, 0x1c
and rdi, r12
xor rcx, rax
xor rdi, r9
lea rax, [rdx + rcx]
mov rcx, qword [rsp + 0x38]
movzx r8d, byte [rcx + 6]
add rdi, rax
movzx eax, byte [rcx + 7]
shl r8, 8
or r8, rax
movzx eax, byte [rcx + 8]
shl r8, 8
or r8, rax
movzx eax, byte [rcx + 9]
shl r8, 8
or r8, rax
movzx eax, byte [rcx + 0xa]
shl r8, 8
or r8, rax
movzx eax, byte [rcx + 0xb]
shl r8, 8
or r8, rax
movzx eax, byte [rcx + 0xc]
shl r8, 8
or r8, rax
movzx eax, byte [rcx + 0xd]
shl r8, 8
and r14, rdi
or r8, rax
xor r14, r9
mov rdx, r11
ror rdx, 0x29
mov qword [rbp - 0x58], r8
mov rax, r11
ror rax, 0x12
mov rcx, r11
xor rdx, rax
not rcx
mov rax, r11
ror rax, 0xe
and rcx, r10
xor rdx, rax
mov rax, r13
and rax, r11
xor rcx, rax
lea rax, [r15 + rdx]
mov r15, qword [rsp + 0x38]
add rcx, rax
movabs rdx, 0x7137449123ef65cd
mov rax, rdi
add rdx, rcx
mov rcx, rdi
add rdx, r8
movzx r8d, byte [r15 + 0xe]
ror rcx, 0x27
ror rax, 0x22
shl r8, 8
lea r10, [r12 + rdx]
xor rcx, rax
mov rax, rdi
ror rax, 0x1c
xor rcx, rax
lea rax, [rdx + rcx]
mov rdx, r10
mov rcx, r10
add r14, rax
movzx eax, byte [r15 + 0xf]
not rcx
or r8, rax
movzx eax, byte [r15 + 0x10]
and rcx, r13
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x11]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x12]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x13]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x14]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x15]
shl r8, 8
or r8, rax
ror rdx, 0x29
mov rax, r10
ror rax, 0x12
mov qword [rbp - 0x50], r8
xor rdx, rax
mov rax, r10
ror rax, 0xe
xor rdx, rax
mov rax, r11
and rax, r10
xor rcx, rax
mov rax, qword [rsp + 0x50]
add rax, rdx
movabs rdx, 0xb5c0fbcfec4d3b2f
add rcx, rax
add rdx, rcx
add rdx, r8
lea r9, [rsi + rdx]
movzx r8d, byte [r15 + 0x16]
mov rsi, rbx
mov rcx, r14
shl r8, 8
ror rcx, 0x27
xor rsi, r14
and rsi, rdi
mov rax, r14
mov r12, r14
ror rax, 0x22
xor rcx, rax
mov rax, r14
ror rax, 0x1c
xor rcx, rax
mov rax, rbx
and rax, r14
xor rsi, rax
lea rax, [rdx + rcx]
mov rdx, r9
add rsi, rax
movzx eax, byte [r15 + 0x17]
mov rcx, r9
or r8, rax
movzx eax, byte [r15 + 0x18]
not rcx
shl r8, 8
and rcx, r11
xor r12, rsi
or r8, rax
movzx eax, byte [r15 + 0x19]
and r12, rdi
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x1a]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x1b]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x1c]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x1d]
shl r8, 8
or r8, rax
ror rdx, 0x29
mov rax, r9
ror rax, 0x12
mov qword [rbp - 0x48], r8
xor rdx, rax
mov rax, r9
ror rax, 0xe
xor rdx, rax
mov rax, r10
and rax, r9
xor rcx, rax
lea rax, [r13 + rdx]
movabs rdx, 0xe9b5dba58189dbbc
add rcx, rax
mov rax, rsi
add rdx, rcx
mov rcx, rsi
add rdx, r8
movzx r8d, byte [r15 + 0x1e]
add rbx, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
shl r8, 8
mov rax, rsi
ror rax, 0x1c
xor rcx, rax
mov rax, r14
and rax, rsi
xor r12, rax
lea rax, [rdx + rcx]
add r12, rax
movzx eax, byte [r15 + 0x1f]
or r8, rax
movzx eax, byte [r15 + 0x20]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x21]
mov rdx, rbx
shl r8, 8
mov rcx, rbx
or r8, rax
movzx eax, byte [r15 + 0x22]
not rcx
shl r8, 8
and rcx, r10
or r8, rax
movzx eax, byte [r15 + 0x23]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x24]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x25]
shl r8, 8
or r8, rax
ror rdx, 0x29
mov rax, rbx
ror rax, 0x12
mov qword [rbp - 0x40], r8
xor rdx, rax
mov rax, rbx
ror rax, 0xe
xor rdx, rax
mov rax, r9
and rax, rbx
xor rcx, rax
lea rax, [r8 + rdx]
movzx r8d, byte [r15 + 0x26]
add rcx, rax
shl r8, 8
movabs rdx, 0x3956c25bf348b538
add rdx, rcx
mov rcx, r12
mov rax, r12
add rdx, r11
mov r11, rsi
add rdi, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
xor r11, r12
mov rax, r12
ror rax, 0x1c
and r11, r14
xor rcx, rax
mov rax, rsi
and rax, r12
xor r11, rax
lea rax, [rdx + rcx]
mov rdx, rdi
add r11, rax
movzx eax, byte [r15 + 0x27]
or r8, rax
movzx eax, byte [r15 + 0x28]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x29]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x2a]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x2b]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x2c]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x2d]
shl r8, 8
or r8, rax
ror rdx, 0x29
mov rax, rdi
ror rax, 0x12
mov qword [rbp - 0x38], r8
xor rdx, rax
mov rax, rdi
mov rcx, rdi
ror rax, 0xe
not rcx
xor rdx, rax
and rcx, r9
mov rax, rdi
and rax, rbx
xor rcx, rax
lea rax, [r8 + rdx]
movzx r8d, byte [r15 + 0x2e]
add rcx, rax
shl r8, 8
movabs rdx, 0x59f111f1b605d019
add rdx, rcx
mov rcx, r11
mov rax, r11
add rdx, r10
mov r10, r12
add r14, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
xor r10, r11
mov rax, r11
ror rax, 0x1c
and r10, rsi
xor rcx, rax
mov rax, r12
and rax, r11
xor r10, rax
lea rax, [rdx + rcx]
mov rdx, r14
add r10, rax
movzx eax, byte [r15 + 0x2f]
mov rcx, r14
or r8, rax
movzx eax, byte [r15 + 0x30]
not rcx
shl r8, 8
and rcx, rbx
or r8, rax
movzx eax, byte [r15 + 0x31]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x32]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x33]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x34]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x35]
shl r8, 8
or r8, rax
ror rdx, 0x29
mov rax, r14
ror rax, 0x12
mov qword [rbp - 0x30], r8
xor rdx, rax
mov rax, r14
ror rax, 0xe
xor rdx, rax
mov rax, rdi
and rax, r14
xor rcx, rax
lea rax, [r8 + rdx]
movabs rdx, 0x923f82a4af194f9b
add rcx, rax
mov rax, r10
add rdx, rcx
mov rcx, r10
add rdx, r9
add rsi, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
mov rax, r10
ror rax, 0x1c
xor rcx, rax
movzx r8d, byte [r15 + 0x36]
mov r13, r11
shl r8, 8
xor r13, r10
mov rax, r11
and rax, r10
and r13, r12
xor r13, rax
lea rax, [rdx + rcx]
mov rdx, rsi
add r13, rax
movzx eax, byte [r15 + 0x37]
mov rcx, rsi
or r8, rax
movzx eax, byte [r15 + 0x38]
not rcx
shl r8, 8
and rcx, rdi
or r8, rax
movzx eax, byte [r15 + 0x39]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x3a]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x3b]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x3c]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x3d]
shl r8, 8
or r8, rax
ror rdx, 0x29
mov rax, rsi
ror rax, 0x12
mov qword [rbp - 0x28], r8
xor rdx, rax
mov rax, rsi
ror rax, 0xe
xor rdx, rax
mov rax, r14
and rax, rsi
xor rcx, rax
lea rax, [r8 + rdx]
movzx r8d, byte [r15 + 0x3e]
add rcx, rax
shl r8, 8
movabs rdx, 0xab1c5ed5da6d8118
add rdx, rcx
mov rcx, r13
mov rax, r13
add rdx, rbx
mov rbx, r10
add r12, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
xor rbx, r13
mov rax, r13
ror rax, 0x1c
and rbx, r11
xor rcx, rax
mov rax, r10
and rax, r13
xor rbx, rax
lea rax, [rdx + rcx]
add rbx, rax
movzx eax, byte [r15 + 0x3f]
or r8, rax
movzx eax, byte [r15 + 0x40]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x41]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x42]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x43]
shl r8, 8
mov rdx, r12
or r8, rax
movzx eax, byte [r15 + 0x44]
mov rcx, r12
shl r8, 8
not rcx
mov r9, r13
or r8, rax
movzx eax, byte [r15 + 0x45]
and rcx, r14
shl r8, 8
and r9, rbx
or r8, rax
ror rdx, 0x29
mov rax, r12
ror rax, 0x12
mov qword [rbp - 0x20], r8
xor rdx, rax
mov rax, r12
ror rax, 0xe
xor rdx, rax
mov rax, rsi
and rax, r12
xor rcx, rax
lea rax, [r8 + rdx]
movabs rdx, 0xd807aa98a3030242
add rcx, rax
mov r8, r13
mov rax, rbx
xor r8, rbx
add rdx, rcx
mov rcx, rbx
add rdx, rdi
mov rdi, r8
mov qword [rsp + 8], r8
movzx r8d, byte [r15 + 0x46]
add r11, rdx
ror rcx, 0x27
ror rax, 0x22
shl r8, 8
and rdi, r10
xor rcx, rax
xor rdi, r9
mov rax, rbx
ror rax, 0x1c
xor rcx, rax
lea rax, [rdx + rcx]
mov rdx, r11
mov rcx, r11
add rdi, rax
movzx eax, byte [r15 + 0x47]
not rcx
or r8, rax
movzx eax, byte [r15 + 0x48]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x49]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x4a]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x4b]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x4c]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x4d]
shl r8, 8
or r8, rax
ror rdx, 0x29
mov rax, r11
ror rax, 0x12
mov qword [rbp - 0x18], r8
xor rdx, rax
mov rax, r11
ror rax, 0xe
xor rdx, rax
and rcx, rsi
mov rax, r12
and rax, r11
xor rcx, rax
lea rax, [r8 + rdx]
movzx r8d, byte [r15 + 0x4e]
add rcx, rax
shl r8, 8
movabs rdx, 0x12835b0145706fbe
add rdx, rcx
mov rcx, rdi
mov rax, rdi
add rdx, r14
mov r14, qword [rsp + 8]
add r10, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
and r14, rdi
mov rax, rdi
ror rax, 0x1c
xor r14, r9
xor rcx, rax
lea rax, [rdx + rcx]
mov rdx, r10
mov rcx, r10
add r14, rax
movzx eax, byte [r15 + 0x4f]
not rcx
or r8, rax
movzx eax, byte [r15 + 0x50]
and rcx, r12
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x51]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x52]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x53]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x54]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x55]
mov r15, r14
shl r8, 8
xor r15, rbx
or r8, rax
ror rdx, 0x29
mov rax, r10
ror rax, 0x12
and r15, rdi
mov qword [rbp - 0x10], r8
xor rdx, rax
mov rax, r10
ror rax, 0xe
xor rdx, rax
mov rax, r11
and rax, r10
xor rcx, rax
lea rax, [r8 + rdx]
movabs rdx, 0x243185be4ee4b28c
add rcx, rax
mov rax, r14
add rdx, rcx
mov rcx, r14
add rdx, rsi
add r13, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
mov rax, r14
ror rax, 0x1c
xor rcx, rax
mov rax, r14
and rax, rbx
xor r15, rax
lea rax, [rdx + rcx]
mov rsi, qword [rsp + 0x38]
add r15, rax
mov rdx, r13
movzx eax, byte [rsi + 0x57]
movzx r8d, byte [rsi + 0x56]
mov rcx, r13
shl r8, 8
not rcx
mov r9, r14
or r8, rax
movzx eax, byte [rsi + 0x58]
and rcx, r11
shl r8, 8
xor r9, r15
or r8, rax
movzx eax, byte [rsi + 0x59]
and r9, rdi
shl r8, 8
or r8, rax
movzx eax, byte [rsi + 0x5a]
shl r8, 8
or r8, rax
movzx eax, byte [rsi + 0x5b]
shl r8, 8
or r8, rax
movzx eax, byte [rsi + 0x5c]
shl r8, 8
or r8, rax
movzx eax, byte [rsi + 0x5d]
shl r8, 8
or r8, rax
ror rdx, 0x29
mov rax, r13
ror rax, 0x12
mov qword [rbp - 8], r8
xor rdx, rax
mov rax, r13
ror rax, 0xe
xor rdx, rax
mov rax, r10
and rax, r13
xor rcx, rax
lea rax, [r8 + rdx]
movzx r8d, byte [rsi + 0x5e]
add rcx, rax
shl r8, 8
movabs rdx, 0x550c7dc3d5ffb4e2
add rdx, rcx
mov rcx, r15
mov rax, r15
add rdx, r12
add rbx, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
mov rax, r15
ror rax, 0x1c
xor rcx, rax
mov rax, r14
and rax, r15
xor r9, rax
lea rax, [rdx + rcx]
add r9, rax
movzx eax, byte [rsi + 0x5f]
or r8, rax
movzx eax, byte [rsi + 0x60]
shl r8, 8
or r8, rax
movzx eax, byte [rsi + 0x61]
shl r8, 8
or r8, rax
movzx eax, byte [rsi + 0x62]
shl r8, 8
or r8, rax
movzx eax, byte [rsi + 0x63]
shl r8, 8
or r8, rax
movzx eax, byte [rsi + 0x64]
shl r8, 8
or r8, rax
shl r8, 8
movzx eax, byte [rsi + 0x65]
mov rdx, rbx
mov rcx, rbx
or r8, rax
ror rdx, 0x29
not rcx
and rcx, r10
mov qword [rbp], r8
mov rax, rbx
ror rax, 0x12
xor rdx, rax
mov rax, rbx
ror rax, 0xe
xor rdx, rax
mov rax, r13
and rax, rbx
xor rcx, rax
lea rax, [r8 + rdx]
movzx r8d, byte [rsi + 0x66]
add rcx, rax
shl r8, 8
movabs rdx, 0x72be5d74f27b896f
add rdx, rcx
mov rcx, r9
mov rax, r9
add rdx, r11
add rdi, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
mov qword [rsp], rdi
mov rax, r9
mov r11, qword [rsp]
ror rax, 0x1c
mov rdi, r15
xor rcx, rax
xor rdi, r9
mov rax, r15
and rax, r9
and rdi, r14
xor rdi, rax
lea rax, [rdx + rcx]
mov rdx, r11
add rdi, rax
movzx eax, byte [rsi + 0x67]
mov rcx, r11
or r8, rax
movzx eax, byte [rsi + 0x68]
not rcx
shl r8, 8
and rcx, r13
or r8, rax
movzx eax, byte [rsi + 0x69]
shl r8, 8
or r8, rax
movzx eax, byte [rsi + 0x6a]
shl r8, 8
or r8, rax
movzx eax, byte [rsi + 0x6b]
shl r8, 8
or r8, rax
movzx eax, byte [rsi + 0x6c]
shl r8, 8
or r8, rax
movzx eax, byte [rsi + 0x6d]
shl r8, 8
or r8, rax
ror rdx, 0x29
mov rax, r11
ror rax, 0x12
mov qword [rbp + 8], r8
xor rdx, rax
mov rax, r11
ror rax, 0xe
xor rdx, rax
mov rax, r11
and rax, rbx
xor rcx, rax
lea rax, [r8 + rdx]
movabs rdx, 0x80deb1fe3b1696b1
add rcx, rax
movzx r8d, byte [rsi + 0x6e]
add rdx, rcx
mov rcx, rdi
add rdx, r10
shl r8, 8
mov rax, rdi
add r14, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
mov rax, rdi
mov r12, r9
ror rax, 0x1c
xor r12, rdi
mov r10, rdi
xor rcx, rax
and r12, r15
mov rax, r9
and rax, rdi
mov qword [rsp + 8], r14
xor r12, rax
lea rax, [rdx + rcx]
mov rdx, r14
add r12, rax
movzx eax, byte [rsi + 0x6f]
mov rcx, r14
or r8, rax
movzx eax, byte [rsi + 0x70]
not rcx
shl r8, 8
and rcx, rbx
xor r10, r12
or r8, rax
movzx eax, byte [rsi + 0x71]
and r10, r9
shl r8, 8
mov qword [rsp + 0x20], r12
or r8, rax
movzx eax, byte [rsi + 0x72]
shl r8, 8
or r8, rax
movzx eax, byte [rsi + 0x73]
shl r8, 8
or r8, rax
movzx eax, byte [rsi + 0x74]
shl r8, 8
or r8, rax
movzx eax, byte [rsi + 0x75]
shl r8, 8
or r8, rax
ror rdx, 0x29
mov rax, r14
ror rax, 0x12
mov qword [rbp + 0x10], r8
xor rdx, rax
mov rax, r14
ror rax, 0xe
xor rdx, rax
mov rax, r11
and rax, r14
xor rcx, rax
lea rax, [r8 + rdx]
movabs rdx, 0x9bdc06a725c71235
add rcx, rax
mov rax, r12
add rdx, rcx
mov rcx, r12
add rdx, r13
add r15, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
mov rax, r12
ror rax, 0x1c
xor rcx, rax
mov rax, rdi
and rax, r12
xor r10, rax
lea rax, [rdx + rcx]
add r10, rax
mov qword [rsp + 0x28], r10
movzx eax, byte [rsi + 0x77]
movzx r8d, byte [rsi + 0x76]
mov rdx, r15
shl r8, 8
mov rcx, r15
or r8, rax
movzx eax, byte [rsi + 0x78]
not rcx
shl r8, 8
and rcx, r11
or r8, rax
movzx eax, byte [rsi + 0x79]
shl r8, 8
or r8, rax
movzx eax, byte [rsi + 0x7a]
shl r8, 8
or r8, rax
movzx eax, byte [rsi + 0x7b]
shl r8, 8
or r8, rax
movzx eax, byte [rsi + 0x7c]
shl r8, 8
or r8, rax
movzx eax, byte [rsi + 0x7d]
shl r8, 8
or r8, rax
ror rdx, 0x29
mov rax, r15
ror rax, 0x12
mov qword [rbp + 0x18], r8
xor rdx, rax
mov rax, r15
ror rax, 0xe
xor rdx, rax
mov rax, r14
and rax, r15
xor rcx, rax
lea rax, [r8 + rdx]
movabs rdx, 0xc19bf174cf692694
add rcx, rax
mov rax, r10
mov r8d, 0x11
add rdx, rcx
mov rcx, r10
mov qword [rsp + 0x10], r8
add rdx, rbx
mov rbx, r12
add r9, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
xor rbx, r10
mov rax, r10
ror rax, 0x1c
and rbx, rdi
mov qword [rsp + 0x40], r9
xor rcx, rax
mov rax, r12
and rax, r10
xor rbx, rax
lea rax, [rdx + rcx]
add rbx, rax
lea rax, [0x1800d9738]
mov qword [rsp + 0x18], rax
mov qword [rsp + 0x30], rbx
jmp 0x18009a826
mov r9, rsi
mov r12, r13
lea r13d, [r8 - 3]
lea r14d, [r8 - 1]
mov rsi, r8
lea r11d, [r8 - 7]
and r14d, 0xf
and r13d, 0xf
mov rcx, qword [rbp + r13*8 - 0x60]
and esi, 0xf
mov rdx, qword [rbp + rsi*8 - 0x60]
mov r8, rcx
mov rax, rcx
shr rcx, 6
ror r8, 0x3d
ror rax, 0x13
xor r8, rax
mov rax, rdx
xor r8, rcx
mov rcx, rdx
shr rdx, 7
ror rcx, 8
ror rax, 1
xor rcx, rax
lea eax, [r11 - 1]
xor rcx, rdx
and eax, 0xf
mov rdx, r9
add r8, rcx
mov rcx, r9
add r8, qword [rbp + rax*8 - 0x60]
not rcx
mov rax, r9
add r8, qword [rbp + r14*8 - 0x60]
and rcx, qword [rsp + 8]
ror rdx, 0x29
ror rax, 0x12
mov qword [rbp + r14*8 - 0x60], r8
xor rdx, rax
mov rax, r9
ror rax, 0xe
xor rdx, rax
mov rax, r15
and rax, r9
mov r9, r10
and r10, rbx
xor rcx, rax
mov rax, qword [rsp + 0x18]
xor r9, rbx
add rdx, rcx
mov rcx, rbx
add rdx, qword [rax - 8]
mov rax, rbx
add rdx, r8
mov r8, r9
add rdx, qword [rsp]
and r8, r12
add rdi, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
xor r8, r10
mov rax, rbx
ror rax, 0x1c
mov qword [rsp + 0x60], rdi
xor rcx, rax
lea rax, [rdx + rcx]
add r8, rax
mov rax, qword [rsp + 0x10]
lea r12d, [rax - 2]
lea edi, [rax + 1]
mov qword [rsp], r8
and r12d, 0xf
and edi, 0xf
mov rcx, qword [rbp + r12*8 - 0x60]
mov rdx, qword [rbp + rdi*8 - 0x60]
mov r8, rcx
mov rax, rcx
shr rcx, 6
ror r8, 0x3d
ror rax, 0x13
xor r8, rax
xor r8, rcx
mov rbx, qword [rsp + 0x60]
mov rcx, rdx
mov rax, rdx
ror rcx, 8
ror rax, 1
shr rdx, 7
xor rcx, rax
mov eax, r11d
xor rcx, rdx
and eax, 0xf
mov rdx, rbx
add r8, rcx
mov rcx, rbx
add r8, qword [rbp + rax*8 - 0x60]
not rcx
mov rax, rbx
add r8, qword [rbp + rsi*8 - 0x60]
ror rdx, 0x29
ror rax, 0x12
xor rdx, rax
and rcx, r15
mov qword [rbp + rsi*8 - 0x60], r8
mov rax, rbx
ror rax, 0xe
xor rdx, rax
mov rax, qword [rsp + 0x40]
and rax, rbx
xor rcx, rax
mov rax, qword [rsp + 0x18]
add rdx, rcx
add rdx, qword [rax]
add rdx, r8
mov r8, qword [rsp]
add rdx, qword [rsp + 8]
mov rcx, r8
mov rax, r8
add qword [rsp + 0x20], rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
mov rax, r8
mov r8, r9
and r8, qword [rsp]
mov r9, qword [rsp + 0x10]
ror rax, 0x1c
xor rcx, rax
xor r8, r10
add r9d, 2
lea rax, [rdx + rcx]
mov rcx, qword [rbp + r14*8 - 0x60]
and r9d, 0xf
mov rdx, qword [rbp + r9*8 - 0x60]
add r8, rax
mov rax, rcx
mov qword [rsp + 8], r8
mov r8, rcx
shr rcx, 6
ror r8, 0x3d
ror rax, 0x13
xor r8, rax
mov rax, rdx
xor r8, rcx
mov rcx, rdx
shr rdx, 7
ror rcx, 8
ror rax, 1
xor rcx, rax
lea eax, [r11 + 1]
mov r11, qword [rsp + 0x20]
and eax, 0xf
xor rcx, rdx
mov rdx, r11
add r8, rcx
add r8, qword [rbp + rax*8 - 0x60]
mov rax, r11
add r8, qword [rbp + rdi*8 - 0x60]
ror rdx, 0x29
ror rax, 0x12
xor rdx, rax
mov qword [rbp + rdi*8 - 0x60], r8
mov rax, r11
mov r10, qword [rsp + 0x40]
ror rax, 0xe
mov rcx, r11
xor rdx, rax
not rcx
mov rax, rbx
mov rbx, qword [rsp + 8]
and rax, r11
and rcx, r10
xor rcx, rax
mov rax, qword [rsp + 0x18]
add rdx, rcx
mov rcx, rbx
add rdx, qword [rax + 8]
mov rax, rbx
add rdx, r8
mov r8, qword [rsp + 0x30]
add rdx, r15
mov r15, rbx
add qword [rsp + 0x28], rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
xor r15, r8
mov rax, rbx
and r15, qword [rsp]
ror rax, 0x1c
xor rcx, rax
mov rax, rbx
mov rbx, qword [rsp + 0x10]
and rax, r8
add ebx, 3
xor r15, rax
lea rax, [rdx + rcx]
mov rcx, qword [rbp + rsi*8 - 0x60]
mov rsi, qword [rsp + 0x28]
add r15, rax
mov r8, rcx
mov rax, rcx
shr rcx, 6
and ebx, 0xf
mov rdx, qword [rbp + rbx*8 - 0x60]
ror r8, 0x3d
ror rax, 0x13
xor r8, rax
mov rax, rdx
xor r8, rcx
mov rcx, rdx
shr rdx, 7
ror rcx, 8
ror rax, 1
xor rcx, rax
mov rax, qword [rsp + 0x10]
xor rcx, rdx
add eax, 0xfffffffb
mov rdx, rsi
and eax, 0xf
add r8, rcx
mov rcx, rsi
add r8, qword [rbp + rax*8 - 0x60]
not rcx
mov rax, rsi
add r8, qword [rbp + r9*8 - 0x60]
and rcx, qword [rsp + 0x60]
ror rdx, 0x29
ror rax, 0x12
mov qword [rbp + r9*8 - 0x60], r8
xor rdx, rax
mov rax, rsi
ror rax, 0xe
xor rdx, rax
mov rax, r11
and rax, rsi
xor rcx, rax
mov rax, qword [rsp + 0x18]
add rdx, rcx
add rdx, qword [rax + 0x10]
add rdx, r8
add rdx, r10
mov r10, qword [rsp + 0x30]
add r10, rdx
mov r11, qword [rsp + 0x10]
mov rcx, r15
mov rax, r15
ror rcx, 0x27
ror rax, 0x22
add r11d, 4
xor rcx, rax
and r11d, 0xf
mov rax, r15
ror rax, 0x1c
mov qword [rsp + 0x30], r10
xor rcx, rax
mov rax, qword [rsp + 8]
mov rsi, rax
and rax, r15
xor rsi, r15
and rsi, qword [rsp]
xor rsi, rax
lea rax, [rdx + rcx]
mov rcx, qword [rbp + rdi*8 - 0x60]
mov rdx, qword [rbp + r11*8 - 0x60]
add rsi, rax
mov r8, rcx
ror r8, 0x3d
mov rax, rcx
shr rcx, 6
ror rax, 0x13
mov rdi, r15
xor r8, rax
mov rax, rdx
xor rdi, rsi
and rdi, qword [rsp + 8]
xor r8, rcx
mov rcx, rdx
ror rcx, 8
ror rax, 1
shr rdx, 7
xor rcx, rax
mov rax, qword [rsp + 0x10]
xor rcx, rdx
add eax, 0xfffffffc
mov rdx, r10
and eax, 0xf
add r8, rcx
mov rcx, r10
add r8, qword [rbp + rax*8 - 0x60]
not rcx
mov rax, r10
add r8, qword [rbp + rbx*8 - 0x60]
and rcx, qword [rsp + 0x20]
ror rdx, 0x29
ror rax, 0x12
mov qword [rbp + rbx*8 - 0x60], r8
xor rdx, rax
mov rax, r10
ror rax, 0xe
xor rdx, rax
mov rax, qword [rsp + 0x28]
and rax, r10
mov r10, qword [rsp + 0x10]
xor rcx, rax
mov rax, qword [rsp + 0x18]
add rdx, rcx
mov rcx, rsi
add rdx, qword [rax + 0x18]
mov rax, rsi
add rdx, r8
add rdx, qword [rsp + 0x60]
add qword [rsp], rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
mov rax, rsi
ror rax, 0x1c
xor rcx, rax
mov rax, r15
and rax, rsi
xor rdi, rax
lea rax, [rdx + rcx]
add rdi, rax
add r10d, 5
mov rcx, qword [rbp + r9*8 - 0x60]
mov r9, qword [rsp]
and r10d, 0xf
mov rdx, qword [rbp + r10*8 - 0x60]
mov r8, rcx
mov rax, rcx
shr rcx, 6
ror r8, 0x3d
ror rax, 0x13
xor r8, rax
mov rax, rdx
xor r8, rcx
mov rcx, rdx
shr rdx, 7
ror rcx, 8
ror rax, 1
xor rcx, rax
mov rax, r9
xor rcx, rdx
mov rdx, r9
add r8, rcx
mov rcx, r9
add r8, qword [rbp + r13*8 - 0x60]
not rcx
mov r13, rsi
add r8, qword [rbp + r11*8 - 0x60]
and rcx, qword [rsp + 0x28]
ror rdx, 0x29
ror rax, 0x12
mov qword [rbp + r11*8 - 0x60], r8
xor r13, rdi
xor rdx, rax
and r13, r15
mov rax, r9
ror rax, 0xe
xor rdx, rax
mov rax, r9
mov r9, qword [rsp + 0x10]
and rax, qword [rsp + 0x30]
add r9d, 6
xor rcx, rax
mov rax, qword [rsp + 0x18]
and r9d, 0xf
add rdx, rcx
mov rcx, rdi
add rdx, qword [rax + 0x20]
mov rax, rdi
add rdx, r8
add rdx, qword [rsp + 0x20]
add qword [rsp + 8], rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
mov rax, rdi
ror rax, 0x1c
xor rcx, rax
mov rax, rsi
and rax, rdi
xor r13, rax
lea rax, [rdx + rcx]
mov rcx, qword [rbp + rbx*8 - 0x60]
mov rdx, qword [rbp + r9*8 - 0x60]
add r13, rax
mov r8, rcx
ror r8, 0x3d
mov rax, rcx
shr rcx, 6
ror rax, 0x13
mov qword [rsp + 0x20], r13
xor r8, rax
mov rax, rdx
xor r8, rcx
mov rcx, rdx
shr rdx, 7
ror rcx, 8
ror rax, 1
xor rcx, rax
xor rcx, rdx
add r8, rcx
add r8, qword [rbp + r10*8 - 0x60]
add r8, qword [rbp + r12*8 - 0x60]
mov r12, qword [rsp + 8]
mov rbx, qword [rsp + 0x30]
mov qword [rbp + r10*8 - 0x60], r8
mov rdx, r12
mov rax, r12
mov rcx, r12
ror rdx, 0x29
ror rax, 0x12
not rcx
xor rdx, rax
and rcx, rbx
mov rax, r12
ror rax, 0xe
mov r10, rdi
xor rdx, rax
mov rax, qword [rsp]
xor r10, r13
and rax, r12
and r10, rsi
xor rcx, rax
mov rax, qword [rsp + 0x18]
add rdx, rcx
mov rcx, r13
add rdx, qword [rax + 0x28]
mov rax, r13
add rdx, r8
add rdx, qword [rsp + 0x28]
add r15, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
mov rax, r13
ror rax, 0x1c
xor rcx, rax
mov rax, rdi
and rax, r13
xor r10, rax
lea rax, [rdx + rcx]
mov rcx, qword [rbp + r11*8 - 0x60]
mov r11, qword [rsp + 0x18]
add r10, rax
mov rax, qword [rsp + 0x10]
add eax, 7
mov r8, rcx
mov qword [rsp + 0x28], r10
and eax, 0xf
ror r8, 0x3d
mov rdx, qword [rbp + rax*8 - 0x60]
mov rax, rcx
shr rcx, 6
ror rax, 0x13
xor r8, rax
mov rax, rdx
xor r8, rcx
mov rcx, rdx
shr rdx, 7
ror rcx, 8
ror rax, 1
xor rcx, rax
mov rax, r15
xor rcx, rdx
mov rdx, r15
add r8, rcx
mov rcx, r15
add r8, qword [rbp + r9*8 - 0x60]
not rcx
add r8, qword [rbp + r14*8 - 0x60]
ror rdx, 0x29
ror rax, 0x12
xor rdx, rax
mov rax, r15
mov qword [rbp + r9*8 - 0x60], r8
mov r9, qword [rsp]
ror rax, 0xe
xor rdx, rax
and rcx, r9
mov rax, r12
and rax, r15
xor rcx, rax
add rdx, rcx
add rdx, qword [r11 + 0x30]
add rdx, r8
mov r8, qword [rsp + 0x10]
add r11, 0x40
add rdx, rbx
add r8d, 8
mov rcx, r10
add rsi, rdx
ror rcx, 0x27
mov rax, r10
ror rax, 0x22
mov rbx, r13
mov qword [rsp + 0x10], r8
xor rcx, rax
xor rbx, r10
mov rax, r10
ror rax, 0x1c
and rbx, rdi
mov qword [rsp + 0x40], rsi
xor rcx, rax
mov rax, r13
mov qword [rsp + 0x18], r11
and rax, r10
xor rbx, rax
lea rax, [rdx + rcx]
add rbx, rax
lea eax, [r8 - 1]
mov qword [rsp + 0x30], rbx
cmp eax, 0x50
jl 0x18009a820
mov rax, qword [rbp - 0x70]
mov rcx, qword [rsp + 0x58]
mov r14, qword [rbp - 0x78]
mov r11, qword [rsp + 0x78]
add qword [rsp + 0x48], rbx
add rcx, r10
mov r10, qword [rsp + 0x50]
mov rbx, qword [rsp + 0x48]
mov qword [rsp + 0x58], rcx
mov qword [rax + 8], rcx
mov rcx, qword [rsp + 0x68]
add r10, r15
mov r15, qword [rbp - 0x80]
add rcx, r13
mov r13, qword [rsp + 0x70]
add r11, r9
add r13, rsi
mov rsi, qword [rsp + 0x58]
add r15, r12
add r14, rdi
mov qword [rsp + 0x68], rcx
mov r12, qword [rsp + 0x68]
mov qword [rax + 0x10], rcx
mov rcx, qword [rsp + 0x38]
sub rcx, 0xffffffffffffff80
mov qword [rax + 0x20], r13
mov qword [rax], rbx
mov qword [rax + 0x18], r14
mov qword [rax + 0x28], r10
mov qword [rax + 0x30], r15
mov qword [rax + 0x38], r11
mov rax, qword [rbp - 0x68]
mov qword [rbp - 0x78], r14
mov qword [rsp + 0x70], r13
mov qword [rsp + 0x50], r10
mov qword [rbp - 0x80], r15
mov qword [rsp + 0x78], r11
mov qword [rsp + 0x38], rcx
movabs r9, 0x428a2f98d728ae22
test rax, rax
jne 0x180099a81
mov r15, qword [rsp + 0x130]
mov r14, qword [rsp + 0x138]
mov r13, qword [rsp + 0x140]
mov r12, qword [rsp + 0x148]
mov rdi, qword [rsp + 0x150]
mov rsi, qword [rsp + 0x158]
mov rbx, qword [rsp + 0x180]
mov rcx, qword [rbp + 0x20]
xor rcx, rsp
call fcn.180036980
add rsp, 0x160
pop rbp
repz ret