Function at 0x140017530
Capabilities:
Encode data using xor
Hash data using sha512

Disassembly:
mov r11, rsp
mov qword [r11 + 8], rcx
sub rsp, 0xd8
mov rax, r8
mov r8, rcx
test rax, rax
je 0x140019062
mov qword [r11 - 8], rbx
mov qword [r11 - 0x10], rbp
mov qword [r11 - 0x18], rsi
mov qword [r11 - 0x20], rdi
mov qword [r11 - 0x28], r12
mov qword [r11 - 0x30], r13
mov qword [r11 - 0x38], r14
mov qword [r11 - 0x40], r15
lea r15, [rdx + 2]
mov qword [rsp + 0x60], r15
movabs rdi, 0x428a2f98d728ae22
mov rsi, qword [r8 + 0x20]
mov r13, qword [r8 + 0x28]
mov r14, qword [r8 + 0x30]
movzx r9d, byte [r15 - 2]
mov r11, qword [r8 + 8]
mov r10, qword [r8 + 0x10]
dec rax
shl r9, 8
mov rdx, rsi
mov qword [rsp + 0xf0], rax
mov rax, qword [r8]
mov rcx, rsi
mov rbp, rax
mov qword [rsp + 0x80], rax
movzx eax, byte [r15 - 1]
or r9, rax
movzx eax, byte [r15]
not rcx
shl r9, 8
and rcx, r14
mov r12, r11
or r9, rax
movzx eax, byte [r15 + 1]
xor r12, rbp
shl r9, 8
mov rbx, r12
or r9, rax
movzx eax, byte [r15 + 2]
and rbx, r10
shl r9, 8
or r9, rax
movzx eax, byte [r15 + 3]
shl r9, 8
or r9, rax
movzx eax, byte [r15 + 4]
shl r9, 8
or r9, rax
movzx eax, byte [r15 + 5]
shl r9, 8
or r9, rax
ror rdx, 0x29
mov rax, rsi
ror rax, 0x12
mov qword [rsp + 0x50], r9
xor rdx, rax
mov rax, rsi
ror rax, 0xe
xor rdx, rax
mov rax, r13
add rdx, qword [r8 + 0x38]
and rax, rsi
xor rcx, rax
mov rax, rbp
add rdx, rcx
mov rcx, rbp
add rdx, rdi
movzx edi, byte [r15 + 6]
add rdx, r9
mov r9, qword [r8 + 0x18]
shl rdi, 8
add r9, rdx
mov r8, r11
and r8, rbp
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
xor rbx, r8
mov rax, rbp
ror rax, 0x1c
xor rcx, rax
lea rax, [rdx + rcx]
add rbx, rax
movzx eax, byte [r15 + 7]
or rdi, rax
movzx eax, byte [r15 + 8]
shl rdi, 8
or rdi, rax
movzx eax, byte [r15 + 9]
shl rdi, 8
or rdi, rax
shl rdi, 8
movzx eax, byte [r15 + 0xa]
and r12, rbx
mov rdx, r9
or rdi, rax
movzx eax, byte [r15 + 0xb]
xor r12, r8
movzx r8d, byte [r15 + 0xe]
shl rdi, 8
mov rcx, r9
or rdi, rax
movzx eax, byte [r15 + 0xc]
shl r8, 8
shl rdi, 8
not rcx
or rdi, rax
movzx eax, byte [r15 + 0xd]
and rcx, r13
shl rdi, 8
or rdi, rax
ror rdx, 0x29
mov rax, r9
ror rax, 0x12
mov qword [rsp + 0x30], rdi
xor rdx, rax
mov rax, r9
ror rax, 0xe
xor rdx, rax
mov rax, rsi
and rax, r9
xor rcx, rax
lea rax, [rdi + rdx]
movabs rdx, 0x7137449123ef65cd
add rcx, rax
mov rax, rbx
add rdx, rcx
mov rcx, rbx
add rdx, r14
add r10, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
mov rax, rbx
ror rax, 0x1c
xor rcx, rax
lea rax, [rdx + rcx]
mov rdx, r10
mov rcx, r10
add r12, rax
movzx eax, byte [r15 + 0xf]
not rcx
or r8, rax
movzx eax, byte [r15 + 0x10]
and rcx, rsi
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 [rsp + 0x18], r8
xor rdx, rax
mov rax, r10
ror rax, 0xe
xor rdx, rax
mov rax, r9
and rax, r10
xor rcx, rax
lea rax, [r8 + rdx]
movzx r8d, byte [r15 + 0x16]
movabs rdx, 0xb5c0fbcfec4d3b2f
add rcx, rax
shl r8, 8
mov rax, r12
add rdx, rcx
mov rcx, r12
mov rdi, r12
add rdx, r13
xor rdi, rbp
add r11, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
and rdi, rbx
mov rax, r12
ror rax, 0x1c
xor rcx, rax
mov rax, r12
and rax, rbp
xor rdi, rax
lea rax, [rdx + rcx]
mov rdx, r11
add rdi, rax
movzx eax, byte [r15 + 0x17]
mov rcx, r11
or r8, rax
movzx eax, byte [r15 + 0x18]
not rcx
shl r8, 8
and rcx, r9
or r8, rax
movzx eax, byte [r15 + 0x19]
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, r11
ror rax, 0x12
mov qword [rsp + 0x48], r8
xor rdx, rax
mov rax, r11
ror rax, 0xe
xor rdx, rax
mov rax, r10
and rax, r11
xor rcx, rax
lea rax, [r8 + rdx]
movabs rdx, 0xe9b5dba58189dbbc
add rcx, rax
mov rax, rdi
add rdx, rcx
mov rcx, rdi
add rdx, rsi
mov rsi, r12
add rbp, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
xor rsi, rdi
mov rax, rdi
ror rax, 0x1c
and rsi, rbx
xor rcx, rax
mov rax, r12
and rax, rdi
xor rsi, rax
lea rax, [rdx + rcx]
add rsi, rax
movzx eax, byte [r15 + 0x1f]
movzx r8d, byte [r15 + 0x1e]
mov rdx, rbp
shl r8, 8
mov rcx, rbp
or r8, rax
movzx eax, byte [r15 + 0x20]
not rcx
shl r8, 8
and rcx, r10
or r8, rax
movzx eax, byte [r15 + 0x21]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x22]
shl r8, 8
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, rbp
ror rax, 0x12
mov qword [rsp + 0x68], r8
xor rdx, rax
mov rax, rbp
ror rax, 0xe
xor rdx, rax
mov rax, r11
and rax, rbp
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, rsi
mov rax, rsi
add rdx, r9
mov r9, rdi
add rbx, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
xor r9, rsi
mov rax, rsi
ror rax, 0x1c
and r9, r12
xor rcx, rax
mov rax, rdi
and rax, rsi
xor r9, rax
lea rax, [rdx + rcx]
add r9, 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
mov qword [rsp + 0xf8], r8
mov rdx, rbx
mov rax, rbx
ror rdx, 0x29
ror rax, 0x12
mov rcx, rbx
xor rdx, rax
not rcx
mov rax, rbx
ror rax, 0xe
and rcx, r11
xor rdx, rax
mov rax, rbx
and rax, rbp
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, r9
mov rax, r9
add rdx, r10
mov r10, rsi
add r12, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
xor r10, r9
mov rax, r9
ror rax, 0x1c
and r10, rdi
xor rcx, rax
mov rax, rsi
and rax, r9
xor r10, rax
lea rax, [rdx + rcx]
mov rdx, r12
add r10, rax
movzx eax, byte [r15 + 0x2f]
mov rcx, r12
or r8, rax
movzx eax, byte [r15 + 0x30]
not rcx
shl r8, 8
and rcx, rbp
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, r12
ror rax, 0x12
mov qword [rsp + 0x10], r8
xor rdx, rax
mov rax, r12
ror rax, 0xe
xor rdx, rax
mov rax, rbx
and rax, r12
xor rcx, rax
lea rax, [r8 + rdx]
movabs rdx, 0x923f82a4af194f9b
add rcx, rax
add rdx, rcx
mov rcx, r10
add rdx, r11
add rdi, rdx
movzx r8d, byte [r15 + 0x36]
ror rcx, 0x27
mov rax, r10
ror rax, 0x22
shl r8, 8
mov r11, r9
xor rcx, rax
xor r11, r10
mov rax, r10
ror rax, 0x1c
and r11, rsi
xor rcx, rax
mov rax, r9
and rax, r10
xor r11, rax
lea rax, [rdx + rcx]
mov rdx, rdi
add r11, rax
movzx eax, byte [r15 + 0x37]
mov rcx, rdi
or r8, rax
movzx eax, byte [r15 + 0x38]
not rcx
shl r8, 8
and rcx, rbx
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, rdi
ror rax, 0x12
mov qword [rsp], r8
xor rdx, rax
mov rax, rdi
ror rax, 0xe
xor rdx, rax
mov rax, r12
and rax, rdi
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, r11
mov rax, r11
add rdx, rbp
mov rbp, r10
add rsi, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
xor rbp, r11
mov rax, r11
ror rax, 0x1c
and rbp, r9
xor rcx, rax
mov rax, r10
and rax, r11
xor rbp, rax
lea rax, [rdx + rcx]
add rbp, 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]
movzx r14d, byte [r15 + 0x46]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x42]
shl r14, 8
shl r8, 8
mov rdx, rsi
mov rcx, rsi
or r8, rax
movzx eax, byte [r15 + 0x43]
not rcx
shl r8, 8
and rcx, r12
mov r13, r11
or r8, rax
movzx eax, byte [r15 + 0x44]
xor r13, rbp
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x45]
shl r8, 8
or r8, rax
ror rdx, 0x29
mov rax, rsi
ror rax, 0x12
mov qword [rsp + 0x70], r8
xor rdx, rax
mov rax, rsi
ror rax, 0xe
xor rdx, rax
mov rax, rdi
and rax, rsi
xor rcx, rax
lea rax, [r8 + rdx]
movabs rdx, 0xd807aa98a3030242
add rcx, rax
mov r8, r11
mov rax, rbp
add rdx, rcx
and r8, rbp
mov rcx, rbp
add rdx, rbx
mov rbx, r13
add r9, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
and rbx, r10
mov rax, rbp
ror rax, 0x1c
xor rbx, r8
xor rcx, rax
lea rax, [rdx + rcx]
mov rdx, r9
add rbx, rax
movzx eax, byte [r15 + 0x47]
or r14, rax
movzx eax, byte [r15 + 0x48]
shl r14, 8
or r14, rax
movzx eax, byte [r15 + 0x49]
shl r14, 8
or r14, rax
movzx eax, byte [r15 + 0x4a]
shl r14, 8
or r14, rax
movzx eax, byte [r15 + 0x4b]
shl r14, 8
or r14, rax
movzx eax, byte [r15 + 0x4c]
shl r14, 8
or r14, rax
movzx eax, byte [r15 + 0x4d]
shl r14, 8
or r14, rax
ror rdx, 0x29
mov rax, r9
ror rax, 0x12
mov qword [rsp + 0xe8], r14
xor rdx, rax
and r13, rbx
mov rax, r9
mov rcx, r9
ror rax, 0xe
xor r13, r8
movzx r8d, byte [r15 + 0x4e]
xor rdx, rax
shl r8, 8
not rcx
and rcx, rdi
mov rax, rsi
and rax, r9
xor rcx, rax
lea rax, [r14 + rdx]
movabs rdx, 0x12835b0145706fbe
add rcx, rax
mov rax, rbx
add rdx, rcx
mov rcx, rbx
add rdx, r12
add r10, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
mov rax, rbx
ror rax, 0x1c
xor rcx, rax
lea rax, [rdx + rcx]
mov rdx, r10
mov rcx, r10
add r13, rax
movzx eax, byte [r15 + 0x4f]
not rcx
or r8, rax
movzx eax, byte [r15 + 0x50]
and rcx, rsi
shl r8, 8
mov r14, r13
or r8, rax
movzx eax, byte [r15 + 0x51]
xor r14, rbp
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]
shl r8, 8
or r8, rax
ror rdx, 0x29
mov rax, r10
ror rax, 0x12
mov qword [rsp + 0x38], r8
xor rdx, rax
mov rax, r10
ror rax, 0xe
xor rdx, rax
mov rax, r9
and rax, r10
xor rcx, rax
lea rax, [r8 + rdx]
movabs rdx, 0x243185be4ee4b28c
add rcx, rax
mov rax, r13
add rdx, rcx
mov rcx, r13
add rdx, rdi
add r11, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
mov rax, r13
ror rax, 0x1c
xor rcx, rax
and r14, rbx
movzx r8d, byte [r15 + 0x56]
mov rax, r13
and rax, rbp
shl r8, 8
xor r14, rax
lea rax, [rdx + rcx]
mov rdx, r11
add r14, rax
movzx eax, byte [r15 + 0x57]
mov rcx, r11
or r8, rax
movzx eax, byte [r15 + 0x58]
not rcx
shl r8, 8
and rcx, r9
or r8, rax
movzx eax, byte [r15 + 0x59]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x5a]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x5b]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x5c]
shl r8, 8
or r8, rax
movzx eax, byte [r15 + 0x5d]
mov r15, r13
shl r8, 8
xor r15, r14
or r8, rax
ror rdx, 0x29
and r15, rbx
mov qword [rsp + 8], r8
mov rax, r11
ror rax, 0x12
xor rdx, rax
mov rax, r11
ror rax, 0xe
xor rdx, rax
mov rax, r10
and rax, r11
xor rcx, rax
lea rax, [r8 + rdx]
movabs rdx, 0x550c7dc3d5ffb4e2
add rcx, rax
mov rax, r14
add rdx, rcx
mov rcx, r14
add rdx, rsi
mov rsi, qword [rsp + 0x60]
movzx r8d, byte [rsi + 0x5e]
add rbp, rdx
ror rcx, 0x27
ror rax, 0x22
shl r8, 8
xor rcx, rax
mov rax, r14
ror rax, 0x1c
xor rcx, rax
mov rax, r13
and rax, r14
xor r15, rax
lea rax, [rdx + rcx]
add r15, 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
mov rdx, rbp
or r8, rax
movzx eax, byte [rsi + 0x65]
mov rcx, rbp
shl r8, 8
not rcx
or r8, rax
ror rdx, 0x29
and rcx, r10
mov qword [rsp + 0x58], r8
mov rax, rbp
ror rax, 0x12
xor rdx, rax
mov rax, rbp
ror rax, 0xe
xor rdx, rax
mov rax, r11
and rax, rbp
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, r15
mov rax, r15
add rdx, r9
mov r9, rbx
mov rbx, r14
add r9, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
xor rbx, r15
mov rax, r15
ror rax, 0x1c
and rbx, r13
xor rcx, rax
mov rax, r14
and rax, r15
xor rbx, rax
lea rax, [rdx + rcx]
mov rdx, r9
add rbx, rax
movzx eax, byte [rsi + 0x67]
mov rcx, r9
or r8, rax
movzx eax, byte [rsi + 0x68]
not rcx
shl r8, 8
and rcx, r11
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, r9
ror rax, 0x12
mov qword [rsp + 0x78], r8
xor rdx, rax
mov rax, r9
ror rax, 0xe
xor rdx, rax
mov rax, r9
and rax, rbp
xor rcx, rax
movzx r12d, byte [rsi + 0x6e]
lea rax, [r8 + rdx]
movabs rdx, 0x80deb1fe3b1696b1
add rcx, rax
shl r12, 8
mov rax, rbx
add rdx, rcx
mov rcx, rbx
mov rdi, r15
add rdx, r10
xor rdi, rbx
add r13, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
and rdi, r14
mov rax, rbx
ror rax, 0x1c
xor rcx, rax
mov rax, r15
and rax, rbx
xor rdi, rax
lea rax, [rdx + rcx]
mov rdx, r13
add rdi, rax
movzx eax, byte [rsi + 0x6f]
mov rcx, r13
or r12, rax
movzx eax, byte [rsi + 0x70]
not rcx
shl r12, 8
and rcx, rbp
or r12, rax
movzx eax, byte [rsi + 0x71]
shl r12, 8
or r12, rax
movzx eax, byte [rsi + 0x72]
shl r12, 8
or r12, rax
movzx eax, byte [rsi + 0x73]
shl r12, 8
or r12, rax
movzx eax, byte [rsi + 0x74]
shl r12, 8
or r12, rax
movzx eax, byte [rsi + 0x75]
mov rsi, rbx
shl r12, 8
xor rsi, rdi
or r12, rax
ror rdx, 0x29
mov rax, r13
ror rax, 0x12
and rsi, r15
mov qword [rsp + 0x40], r12
xor rdx, rax
mov rax, r13
ror rax, 0xe
xor rdx, rax
mov rax, r9
and rax, r13
xor rcx, rax
lea rax, [r12 + rdx]
movabs rdx, 0x9bdc06a725c71235
add rcx, rax
mov rax, rdi
add rdx, rcx
mov rcx, rdi
add rdx, r11
add r14, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
mov rax, rdi
ror rax, 0x1c
xor rcx, rax
mov rax, rbx
and rax, rdi
xor rsi, rax
lea rax, [rdx + rcx]
add rsi, rax
mov rcx, qword [rsp + 0x60]
mov r11, qword [rsp + 0x50]
mov rdx, r14
movzx eax, byte [rcx + 0x77]
movzx r8d, byte [rcx + 0x76]
lea r10, [0x140297b58]
shl r8, 8
mov qword [rsp + 0x28], r10
or r8, rax
movzx eax, byte [rcx + 0x78]
shl r8, 8
or r8, rax
movzx eax, byte [rcx + 0x79]
shl r8, 8
or r8, rax
movzx eax, byte [rcx + 0x7a]
shl r8, 8
or r8, rax
movzx eax, byte [rcx + 0x7b]
shl r8, 8
or r8, rax
movzx eax, byte [rcx + 0x7c]
shl r8, 8
or r8, rax
movzx eax, byte [rcx + 0x7d]
mov rcx, r14
shl r8, 8
not rcx
or r8, rax
ror rdx, 0x29
and rcx, r9
mov rax, r14
mov qword [rsp + 0x20], r8
ror rax, 0x12
xor rdx, rax
mov rax, r14
ror rax, 0xe
xor rdx, rax
mov rax, r13
and rax, r14
xor rcx, rax
lea rax, [r8 + rdx]
movabs rdx, 0xc19bf174cf692694
add rcx, rax
mov rax, rsi
add rdx, rcx
mov rcx, rsi
add rdx, rbp
mov rbp, rdi
add r15, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
xor rbp, rsi
mov rax, rsi
ror rax, 0x1c
and rbp, rbx
xor rcx, rax
mov rax, rdi
and rax, rsi
xor rbp, rax
lea rax, [rdx + rcx]
add rbp, rax
nop dword [rax + rax]
mov r8, qword [rsp + 0x30]
mov rdx, r12
mov rax, r12
ror rdx, 0x3d
ror rax, 0x13
mov rcx, r8
xor rdx, rax
mov rax, r12
mov r12, rsi
shr rax, 6
xor r12, rbp
xor rdx, rax
ror rcx, 8
mov rax, r8
ror rax, 1
xor rcx, rax
mov rax, r8
mov r8, rsi
shr rax, 7
and r8, rbp
xor rcx, rax
mov rax, qword [rsp + 0xe8]
add rax, rdx
mov rdx, r15
add rcx, rax
mov rax, r15
add r11, rcx
ror rdx, 0x29
ror rax, 0x12
xor rdx, rax
mov rax, r15
mov rcx, r15
ror rax, 0xe
not rcx
mov qword [rsp + 0x50], r11
xor rdx, rax
and rcx, r13
mov rax, r14
and rax, r15
xor rcx, rax
mov rax, rbp
add rdx, rcx
mov rcx, rbp
add rdx, qword [r10 - 8]
add rdx, r11
add rdx, r9
mov r9, r12
add rbx, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
and r9, rdi
mov rax, rbp
ror rax, 0x1c
xor r9, r8
xor rcx, rax
lea rax, [rdx + rcx]
mov rcx, qword [rsp + 0x20]
add r9, rax
mov rdx, rcx
mov rax, rcx
ror rdx, 0x3d
ror rax, 0x13
xor rdx, rax
mov rax, rcx
shr rax, 6
xor rdx, rax
mov rax, qword [rsp + 0x18]
mov rcx, rax
ror rcx, 8
ror rax, 1
xor rcx, rax
mov rax, qword [rsp + 0x18]
shr rax, 7
xor rcx, rax
mov rax, qword [rsp + 0x38]
add rax, rdx
mov rdx, rbx
add rcx, rax
add qword [rsp + 0x30], rcx
ror rdx, 0x29
and r12, r9
mov rax, rbx
mov rcx, rbx
ror rax, 0x12
not rcx
xor r12, r8
xor rdx, rax
and rcx, r14
mov rax, rbx
ror rax, 0xe
xor rdx, rax
mov rax, r15
and rax, rbx
xor rcx, rax
mov rax, r9
add rdx, rcx
mov rcx, r9
add rdx, qword [r10]
add rdx, qword [rsp + 0x30]
add rdx, r13
mov r13, qword [rsp + 0x18]
add rdi, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
mov rax, r9
ror rax, 0x1c
xor rcx, rax
lea rax, [rdx + rcx]
mov rcx, qword [rsp + 0x48]
add r12, rax
mov rdx, rcx
mov rax, rcx
ror rdx, 8
ror rax, 1
xor rdx, rax
mov rax, rcx
mov rcx, r11
shr rax, 7
xor rdx, rax
ror rcx, 0x3d
mov rax, r11
ror rax, 0x13
xor rcx, rax
mov rax, r11
shr rax, 6
xor rcx, rax
mov rax, qword [rsp + 8]
add rax, rdx
mov rdx, rdi
add rcx, rax
mov rax, rdi
add r13, rcx
ror rdx, 0x29
ror rax, 0x12
xor rdx, rax
mov rax, rdi
mov rcx, rdi
ror rax, 0xe
not rcx
mov qword [rsp + 0x18], r13
xor rdx, rax
and rcx, r15
mov rax, rbx
and rax, rdi
xor rcx, rax
mov rax, r12
add rdx, rcx
mov rcx, r12
add rdx, qword [r10 + 8]
mov r10, r12
add rdx, r13
add rdx, r14
add rsi, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
mov rax, r12
ror rax, 0x1c
xor rcx, rax
xor r10, rbp
mov r8, qword [rsp + 0x30]
mov r11, qword [rsp + 0x48]
mov r14, qword [rsp + 0x28]
and r10, r9
mov rax, r12
and rax, rbp
xor r10, rax
lea rax, [rdx + rcx]
mov rcx, qword [rsp + 0x68]
add r10, rax
mov rdx, rcx
mov rax, rcx
ror rdx, 8
ror rax, 1
xor rdx, rax
mov rax, rcx
mov rcx, r8
shr rax, 7
xor rdx, rax
ror rcx, 0x3d
mov rax, r8
ror rax, 0x13
xor rcx, rax
mov rax, r8
shr rax, 6
xor rcx, rax
mov rax, qword [rsp + 0x58]
add rax, rdx
mov rdx, rsi
add rcx, rax
mov rax, rsi
add r11, rcx
ror rdx, 0x29
ror rax, 0x12
xor rdx, rax
mov qword [rsp + 0x48], r11
mov rax, rsi
ror rax, 0xe
mov rcx, rsi
xor rdx, rax
not rcx
mov rax, rdi
and rax, rsi
and rcx, rbx
xor rcx, rax
mov rax, r10
add rdx, rcx
mov rcx, r10
add rdx, qword [r14 + 0x10]
add rdx, r11
mov r11, r12
add rdx, r15
xor r11, r10
add rbp, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
and r11, r9
mov rax, r10
ror rax, 0x1c
xor rcx, rax
mov rax, r12
and rax, r10
xor r11, rax
lea rax, [rdx + rcx]
mov rcx, qword [rsp + 0xf8]
add r11, rax
mov rdx, rcx
mov rax, rcx
ror rdx, 8
ror rax, 1
xor rdx, rax
mov rax, rcx
mov rcx, r13
shr rax, 7
xor rdx, rax
ror rcx, 0x3d
mov rax, r13
ror rax, 0x13
xor rcx, rax
mov rax, r13
shr rax, 6
mov r13, qword [rsp + 0x68]
mov r15, qword [rsp + 0x48]
xor rcx, rax
mov rax, qword [rsp + 0x78]
add rax, rdx
mov rdx, rbp
add rcx, rax
mov rax, rbp
add r13, rcx
ror rdx, 0x29
ror rax, 0x12
xor rdx, rax
mov rax, rbp
mov rcx, rbp
ror rax, 0xe
not rcx
mov qword [rsp + 0x68], r13
xor rdx, rax
and rcx, rdi
mov rax, rsi
and rax, rbp
xor rcx, rax
mov rax, r11
add rdx, rcx
mov rcx, r11
add rdx, qword [r14 + 0x18]
add rdx, r13
add rdx, rbx
mov rbx, r10
add r9, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
xor rbx, r11
mov rax, r11
ror rax, 0x1c
and rbx, r12
xor rcx, rax
mov rax, r10
and rax, r11
xor rbx, rax
lea rax, [rdx + rcx]
mov rcx, qword [rsp + 0x10]
add rbx, rax
mov rdx, rcx
mov rax, rcx
ror rdx, 8
ror rax, 1
xor rdx, rax
mov rax, rcx
mov rcx, r15
shr rax, 7
xor rdx, rax
ror rcx, 0x3d
mov rax, r15
ror rax, 0x13
xor rcx, rax
mov rax, r15
shr rax, 6
xor rcx, rax
mov rax, qword [rsp + 0x40]
add rax, rdx
mov rdx, r9
add rcx, rax
mov rax, r9
add qword [rsp + 0xf8], rcx
ror rdx, 0x29
ror rax, 0x12
xor rdx, rax
mov rax, r9
mov rcx, r9
ror rax, 0xe
not rcx
xor rdx, rax
and rcx, rsi
mov rax, r9
and rax, rbp
xor rcx, rax
add rdx, rcx
add rdx, qword [r14 + 0x20]
mov rax, qword [rsp + 0xf8]
mov rcx, rbx
add rdx, rax
mov rax, rbx
add rdx, rdi
mov rdi, r11
add r12, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
xor rdi, rbx
mov rax, rbx
ror rax, 0x1c
and rdi, r10
xor rcx, rax
mov rax, r11
and rax, rbx
xor rdi, rax
lea rax, [rdx + rcx]
mov rcx, qword [rsp]
add rdi, rax
mov rdx, rcx
mov rax, rcx
ror rdx, 8
ror rax, 1
xor rdx, rax
mov rax, rcx
mov rcx, r13
shr rax, 7
xor rdx, rax
ror rcx, 0x3d
mov rax, r13
ror rax, 0x13
xor rcx, rax
mov rax, r13
mov r13, qword [rsp + 0x10]
shr rax, 6
xor rcx, rax
mov rax, qword [rsp + 0x20]
add rax, rdx
mov rdx, r12
add rcx, rax
mov rax, r12
add r13, rcx
ror rdx, 0x29
ror rax, 0x12
xor rdx, rax
mov rax, r12
mov rcx, r12
ror rax, 0xe
not rcx
mov qword [rsp + 0x10], r13
xor rdx, rax
and rcx, rbp
mov rax, r9
and rax, r12
xor rcx, rax
mov rax, rdi
add rdx, rcx
mov rcx, rdi
add rdx, qword [r14 + 0x28]
add rdx, r13
add rdx, rsi
mov rsi, rbx
add r10, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
xor rsi, rdi
mov rax, rdi
ror rax, 0x1c
and rsi, r11
xor rcx, rax
mov rax, rbx
and rax, rdi
xor rsi, rax
lea rax, [rdx + rcx]
mov rcx, qword [rsp + 0x70]
mov rdx, rcx
add rsi, rax
ror rdx, 8
mov r13, qword [rsp + 0xf8]
mov rax, rcx
ror rax, 1
xor rdx, rax
mov rax, rcx
mov rcx, r13
shr rax, 7
xor rdx, rax
ror rcx, 0x3d
mov rax, r13
ror rax, 0x13
xor rcx, rax
mov rax, r13
mov r13, qword [rsp]
shr rax, 6
xor rcx, rax
mov rax, qword [rsp + 0x50]
add rax, rdx
mov rdx, r10
add rcx, rax
mov rax, r10
add r13, rcx
ror rdx, 0x29
ror rax, 0x12
xor rdx, rax
mov rax, r10
mov rcx, r10
ror rax, 0xe
not rcx
mov qword [rsp], r13
xor rdx, rax
and rcx, r9
mov rax, r12
and rax, r10
xor rcx, rax
mov rax, rsi
add rdx, rcx
mov rcx, rsi
add rdx, qword [r14 + 0x30]
add rdx, r13
mov r13, qword [rsp + 0x10]
add rdx, rbp
mov rbp, rdi
add r11, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
xor rbp, rsi
mov rax, rsi
ror rax, 0x1c
and rbp, rbx
xor rcx, rax
mov rax, rdi
and rax, rsi
xor rbp, rax
lea rax, [rdx + rcx]
mov rcx, qword [rsp + 0xe8]
add rbp, rax
mov rdx, rcx
mov rax, rcx
ror rdx, 8
ror rax, 1
xor rdx, rax
mov rax, rcx
mov rcx, r13
shr rax, 7
xor rdx, rax
ror rcx, 0x3d
mov rax, r13
ror rax, 0x13
xor rcx, rax
mov rax, r13
shr rax, 6
xor rcx, rax
lea rax, [r8 + rdx]
mov r8, qword [rsp + 0x70]
add rcx, rax
mov rdx, r11
add r8, rcx
ror rdx, 0x29
mov qword [rsp + 0x70], r8
mov rax, r11
mov rcx, r11
mov r13, rsi
ror rax, 0x12
not rcx
xor r13, rbp
xor rdx, rax
and rcx, r12
mov rax, r11
ror rax, 0xe
xor rdx, rax
mov rax, r10
and rax, r11
xor rcx, rax
mov rax, rbp
add rdx, rcx
mov rcx, rbp
add rdx, qword [r14 + 0x38]
add rdx, r8
mov r8, rsi
add rdx, r9
and r8, rbp
mov r9, r13
add rbx, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
and r9, rdi
mov rax, rbp
ror rax, 0x1c
xor r9, r8
xor rcx, rax
lea rax, [rdx + rcx]
mov rcx, qword [rsp + 0x38]
add r9, rax
mov rdx, rcx
mov rax, rcx
ror rdx, 8
ror rax, 1
xor rdx, rax
mov rax, rcx
shr rax, 7
xor rdx, rax
mov rax, qword [rsp]
mov rcx, rax
ror rcx, 0x3d
ror rax, 0x13
xor rcx, rax
mov rax, qword [rsp]
shr rax, 6
xor rcx, rax
mov rax, qword [rsp + 0x18]
add rax, rdx
mov rdx, rbx
add rcx, rax
mov rax, rbx
add qword [rsp + 0xe8], rcx
ror rdx, 0x29
ror rax, 0x12
xor rdx, rax
mov rax, rbx
mov rcx, rbx
ror rax, 0xe
not rcx
xor rdx, rax
and rcx, r10
mov rax, r11
and rax, rbx
xor rcx, rax
mov rax, qword [rsp + 0xe8]
add rdx, rcx
mov rcx, r9
add rdx, qword [r14 + 0x40]
add rdx, rax
mov rax, r9
add rdx, r12
add rdi, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
mov rax, r9
ror rax, 0x1c
mov r12, qword [rsp + 0x38]
and r13, r9
xor rcx, rax
xor r13, r8
mov r8, qword [rsp + 0x70]
lea rax, [rdx + rcx]
mov rcx, qword [rsp + 8]
add r13, rax
mov rdx, rcx
mov rax, rcx
ror rdx, 8
ror rax, 1
xor rdx, rax
mov rax, rcx
mov rcx, r8
shr rax, 7
xor rdx, rax
ror rcx, 0x3d
mov rax, r8
ror rax, 0x13
xor rcx, rax
mov rax, r8
shr rax, 6
xor rcx, rax
lea rax, [r15 + rdx]
mov rdx, rdi
add rcx, rax
mov rax, rdi
add r12, rcx
ror rdx, 0x29
ror rax, 0x12
xor rdx, rax
mov rax, rdi
mov rcx, rdi
ror rax, 0xe
not rcx
mov qword [rsp + 0x38], r12
xor rdx, rax
and rcx, r11
mov rax, rbx
and rax, rdi
xor rcx, rax
mov rax, r13
add rdx, rcx
mov rcx, r13
add rdx, qword [r14 + 0x48]
mov r14, r13
add rdx, r12
xor r14, rbp
add rdx, r10
mov r10, qword [rsp + 0xe8]
and r14, r9
add rsi, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
mov rax, r13
ror rax, 0x1c
xor rcx, rax
mov rax, r13
and rax, rbp
xor r14, rax
lea rax, [rdx + rcx]
mov rcx, qword [rsp + 0x58]
add r14, rax
mov rdx, rcx
mov rax, rcx
ror rdx, 8
ror rax, 1
xor rdx, rax
mov rax, rcx
mov rcx, r10
shr rax, 7
xor rdx, rax
ror rcx, 0x3d
mov rax, r10
ror rax, 0x13
xor rcx, rax
mov rax, r10
shr rax, 6
xor rcx, rax
mov r15, qword [rsp + 8]
mov rax, qword [rsp + 0x68]
add rax, rdx
mov r10, qword [rsp + 0x28]
mov rdx, rsi
add rcx, rax
mov rax, rsi
add r15, rcx
ror rdx, 0x29
ror rax, 0x12
xor rdx, rax
mov qword [rsp + 8], r15
mov rax, rsi
ror rax, 0xe
mov rcx, rsi
xor rdx, rax
not rcx
mov rax, rdi
and rax, rsi
and rcx, rbx
xor rcx, rax
mov rax, r14
add rdx, rcx
mov rcx, r14
add rdx, qword [r10 + 0x50]
add rdx, r15
mov r15, r13
add rdx, r11
xor r15, r14
add rbp, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
and r15, r9
mov rax, r14
ror rax, 0x1c
xor rcx, rax
mov rax, r13
and rax, r14
xor r15, rax
lea rax, [rdx + rcx]
mov rcx, qword [rsp + 0x78]
add r15, rax
mov rdx, rcx
mov rax, rcx
ror rdx, 8
ror rax, 1
xor rdx, rax
mov rax, rcx
mov rcx, r12
shr rax, 7
xor rdx, rax
ror rcx, 0x3d
mov rax, r12
ror rax, 0x13
xor rcx, rax
mov rax, r12
mov r12, qword [rsp + 0x58]
shr rax, 6
xor rcx, rax
mov rax, qword [rsp + 0xf8]
add rax, rdx
mov rdx, rbp
add rcx, rax
mov rax, rbp
add r12, rcx
ror rdx, 0x29
ror rax, 0x12
xor rdx, rax
mov rax, rbp
mov rcx, rbp
ror rax, 0xe
not rcx
mov qword [rsp + 0x58], r12
xor rdx, rax
and rcx, rdi
mov rax, rsi
and rax, rbp
xor rcx, rax
add rdx, rcx
add rdx, qword [r10 + 0x58]
mov r11, qword [rsp + 8]
mov rcx, r15
add rdx, r12
mov rax, r15
add rdx, rbx
mov rbx, r14
add r9, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
xor rbx, r15
mov rax, r15
ror rax, 0x1c
and rbx, r13
xor rcx, rax
mov rax, r14
and rax, r15
xor rbx, rax
lea rax, [rdx + rcx]
mov rcx, qword [rsp + 0x40]
add rbx, rax
mov rdx, rcx
mov rax, rcx
ror rdx, 8
ror rax, 1
xor rdx, rax
mov rax, rcx
mov rcx, r11
shr rax, 7
xor rdx, rax
ror rcx, 0x3d
mov rax, r11
ror rax, 0x13
xor rcx, rax
mov rax, r11
mov r11, qword [rsp + 0x78]
shr rax, 6
xor rcx, rax
mov rax, qword [rsp + 0x10]
add rax, rdx
mov rdx, r9
add rcx, rax
mov rax, r9
add r11, rcx
ror rdx, 0x29
ror rax, 0x12
xor rdx, rax
mov rax, r9
mov rcx, r9
ror rax, 0xe
not rcx
mov qword [rsp + 0x78], r11
xor rdx, rax
and rcx, rsi
mov rax, r9
and rax, rbp
xor rcx, rax
mov rax, rbx
add rdx, rcx
mov rcx, rbx
add rdx, qword [r10 + 0x60]
add rdx, r11
add rdx, rdi
mov rdi, r15
add r13, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
xor rdi, rbx
mov rax, rbx
ror rax, 0x1c
and rdi, r14
xor rcx, rax
mov rax, r15
and rax, rbx
xor rdi, rax
lea rax, [rdx + rcx]
mov rcx, qword [rsp + 0x20]
mov rdx, rcx
add rdi, rax
ror rdx, 8
mov rax, rcx
ror rax, 1
xor rdx, rax
mov rax, rcx
mov rcx, r12
shr rax, 7
xor rdx, rax
ror rcx, 0x3d
mov rax, r12
ror rax, 0x13
xor rcx, rax
mov rax, r12
mov r12, qword [rsp + 0x40]
shr rax, 6
xor rcx, rax
mov rax, qword [rsp]
add rax, rdx
mov rdx, r13
add rcx, rax
mov rax, r13
add r12, rcx
ror rdx, 0x29
ror rax, 0x12
xor rdx, rax
mov rax, r13
mov rcx, r13
ror rax, 0xe
not rcx
mov qword [rsp + 0x40], r12
xor rdx, rax
and rcx, rbp
mov rax, r9
and rax, r13
xor rcx, rax
mov rax, rdi
add rdx, rcx
mov rcx, rdi
add rdx, qword [r10 + 0x68]
add rdx, r12
add rdx, rsi
mov rsi, rbx
add r14, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
xor rsi, rdi
mov rax, rdi
ror rax, 0x1c
and rsi, r15
xor rcx, rax
mov rax, rbx
and rax, rdi
xor rsi, rax
lea rax, [rdx + rcx]
mov rdx, r11
add rsi, rax
ror rdx, 0x3d
mov rax, r11
ror rax, 0x13
xor rdx, rax
mov rax, r11
mov r11, qword [rsp + 0x50]
shr rax, 6
mov rcx, r11
xor rdx, rax
ror rcx, 8
mov rax, r11
ror rax, 1
xor rcx, rax
mov rax, r11
shr rax, 7
xor rcx, rax
lea rax, [r8 + rdx]
mov r8, qword [rsp + 0x20]
add rcx, rax
mov rdx, r14
mov rax, r14
add r8, rcx
ror rdx, 0x29
mov qword [rsp + 0x20], r8
ror rax, 0x12
mov rcx, r14
sub r10, 0xffffffffffffff80
xor rdx, rax
not rcx
mov rax, r14
ror rax, 0xe
and rcx, r9
mov qword [rsp + 0x28], r10
xor rdx, rax
mov rax, r13
and rax, r14
xor rcx, rax
mov rax, rsi
add rdx, rcx
mov rcx, rsi
add rdx, qword [r10 - 0x10]
add rdx, r8
add rdx, rbp
mov rbp, rdi
add r15, rdx
ror rcx, 0x27
ror rax, 0x22
xor rcx, rax
xor rbp, rsi
mov rax, rsi
ror rax, 0x1c
and rbp, rbx
xor rcx, rax
mov rax, rdi
and rax, rsi
xor rbp, rax
lea rax, [rdx + rcx]
add rbp, rax
lea rax, [0x140297d58]
cmp r10, rax
jl 0x140018330
mov r8, qword [rsp + 0xe0]
mov rax, qword [rsp + 0x80]
add rax, rbp
mov qword [r8], rax
mov rax, qword [r8 + 8]
add rax, rsi
mov qword [r8 + 8], rax
mov rax, qword [r8 + 0x10]
add rax, rdi
movabs rdi, 0x428a2f98d728ae22
mov qword [r8 + 0x10], rax
mov rax, qword [r8 + 0x18]
add rax, rbx
mov qword [r8 + 0x18], rax
mov rax, qword [r8 + 0x20]
add rax, r15
mov r15, qword [rsp + 0x60]
mov qword [r8 + 0x20], rax
mov rax, qword [r8 + 0x28]
sub r15, 0xffffffffffffff80
add rax, r14
mov qword [rsp + 0x60], r15
mov qword [r8 + 0x28], rax
mov rax, qword [r8 + 0x30]
add rax, r13
mov qword [r8 + 0x30], rax
mov rax, qword [r8 + 0x38]
add rax, r9
mov qword [r8 + 0x38], rax
mov rax, qword [rsp + 0xf0]
test rax, rax
jne 0x140017580
mov r15, qword [rsp + 0x98]
mov r14, qword [rsp + 0xa0]
mov r13, qword [rsp + 0xa8]
mov r12, qword [rsp + 0xb0]
mov rdi, qword [rsp + 0xb8]
mov rsi, qword [rsp + 0xc0]
mov rbp, qword [rsp + 0xc8]
mov rbx, qword [rsp + 0xd0]
add rsp, 0xd8
ret