Function at 0x180021273
Capabilities:
Hash data using sha256

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0xa48
movaps xmmword [rsp + 0xa30], xmm7
movaps xmmword [rsp + 0xa20], xmm6
mov rsi, rcx
mov qword [rsp + 0x190], r8
mov qword [rsp + 0x198], r9
mov rax, qword [rdx + 0x28]
test rax, rax
je 0x180021409
mov rbx, rdx
mov rdi, qword [rdx + 0x30]
cmp rax, rdi
jbe 0x1800229f4
mov r15, r9
mov r12, r8
mov r14, qword [rbx + 0x20]
shl rdi, 4
mov rcx, qword [r14 + rdi]
mov rax, qword [r14 + rdi + 8]
call qword [rax + 0x18]
test rax, rax
mov qword [rsp + 0x88], rsi
mov qword [rsp + 0x118], rdi
je 0x1800214e9
mov qword [rsp + 0x110], r14
mov r13, qword [rax + 8]
mov r14, qword [rax + 0x10]
xorps xmm6, xmm6
movaps xmmword [rsp + 0x1d0], xmm6
movaps xmmword [rsp + 0x1c0], xmm6
movaps xmmword [rsp + 0x1b0], xmm6
movaps xmmword [rsp + 0x1a0], xmm6
cmp r14, 0x41
mov qword [rsp + 0x108], rbx
jb 0x180021579
lea rdi, [rsp + 0x678]
movups xmmword [rdi + 0x30], xmm6
movups xmmword [rdi + 0x20], xmm6
movups xmmword [rdi + 0x10], xmm6
movups xmmword [rdi], xmm6
mov byte [rdi + 0x40], 0
movups xmm0, xmmword [0x180043690]
movaps xmmword [rdi - 0x28], xmm0
movups xmm0, xmmword [0x1800436a0]
movaps xmmword [rdi - 0x18], xmm0
and qword [rdi - 8], 0
lea rsi, [rsp + 0x650]
lea rcx, [rsp + 0x250]
mov qword [rcx], rsi
mov rbx, r14
and rbx, 0xffffffffffffffc0
mov ebp, r14d
and ebp, 0x3f
add rbx, r13
mov r8, r14
shr r8, 6
mov rdx, r13
call fcn.18000f4ba
mov rcx, rdi
mov rdx, rbx
mov r8, rbp
call fcn.180041e0d
mov byte [rsi + 0x68], bpl
lea rax, [rsp + 0x250]
mov ecx, 0xe
mov rdi, rax
rep movsq qword [rdi], qword [rsi]
lea rsi, [rsp + 0x90]
movaps xmmword [rsi + 0x10], xmm6
movaps xmmword [rsi], xmm6
lea rdx, [rsp + 0x278]
mov rcx, rax
mov r8, rsi
call fcn.1800045bb
movaps xmm0, xmmword [rsi]
movaps xmm1, xmmword [rsi + 0x10]
movaps xmmword [rsp + 0x1b0], xmm1
movaps xmmword [rsp + 0x1a0], xmm0
jmp 0x18002158c
lea rax, [0x18004039c]
lea rdx, [rsp + 0x250]
mov qword [rdx], rax
mov rcx, qword [rdx]
movabs rax, 0x97efc5cbb70ae3bd
mov qword [rdx], rax
lea rax, [rsp + 0x250]
mov rdx, qword [rax]
call fcn.18000be81
and dword [rsp + 0x160], 0
xorps xmm0, xmm0
movaps xmmword [rsp + 0x150], xmm0
xor edx, edx
lea rcx, [0x1800447a8]
cmp rdx, 0x10
jae 0x180021473
mov r8, qword [rdx + rcx]
xor r8, qword [rax + rdx]
mov qword [rsp + rdx + 0x150], r8
add rdx, 8
jmp 0x180021457
mov edx, 0x10
cmp rdx, 0x13
ja 0x1800214a9
movzx r8d, byte [rdx + rcx + 2]
shl r8d, 0x10
movzx r9d, word [rdx + rcx]
add r8d, r9d
add r8d, 0x81000000
xor r8d, dword [rax + rdx]
mov dword [rsp + rdx + 0x150], r8d
add rdx, 4
jmp 0x180021478
movzx eax, word [rax + 0x14]
xor eax, 0xae13
lea rcx, [rsp + 0x150]
mov word [rcx + 0x14], ax
mov edx, 0x16
call fcn.1800301e1
mov qword [rsi + 8], rax
lea rax, [0x180045e38]
mov qword [rsi + 0x10], rax
movabs rax, 0x8000000000000000
mov qword [rsi], rax
jmp 0x180022b17
lea rax, [rsp + 0x650]
mov qword [rax], rbx
lea rcx, case.0x180004711.22
mov qword [rax + 8], rcx
lea rcx, [rsp + 0x190]
mov qword [rax + 0x10], rcx
lea rcx, [0x180044788]
lea rdx, [rsp + 0x250]
mov qword [rdx], rcx
mov ecx, 2
mov qword [rdx + 8], rcx
and qword [rdx + 0x20], 0
lea r8, [0x180037705]
mov qword [rax + 0x18], r8
mov qword [rdx + 0x10], rax
mov qword [rdx + 0x18], rcx
lea rsi, [rsp + 0x638]
mov rcx, rsi
call fcn.180008ef2
mov rdi, qword [rsi]
mov rbx, qword [rsi + 8]
mov r8, qword [rsi + 0x10]
lea rcx, [rsp + 0x138]
mov rdx, rbx
call fcn.18000ad1a
mov rcx, rdi
mov rdx, rbx
call fcn.180030036
jmp 0x1800225b8
lea rcx, [rsp + 0x1a0]
mov rdx, r13
mov r8, r14
call fcn.180041e0d
movaps xmm0, xmmword [rsp + 0x1a0]
movaps xmm1, xmmword [rsp + 0x1b0]
movaps xmm2, xmmword [rsp + 0x1c0]
movaps xmm3, xmmword [rsp + 0x1d0]
movaps xmmword [rsp + 0x280], xmm3
movaps xmmword [rsp + 0x270], xmm2
movaps xmmword [rsp + 0x260], xmm1
movaps xmmword [rsp + 0x250], xmm0
xor eax, eax
cmp rax, 0x40
je 0x1800215e1
xor byte [rsp + rax + 0x250], 0x36
inc rax
jmp 0x1800215ce
movups xmm6, xmmword [0x1800436a0]
lea rcx, [rsp + 0x90]
movaps xmmword [rcx + 0x10], xmm6
movups xmm7, xmmword [0x180043690]
movaps xmmword [rcx], xmm7
and qword [rcx + 0x20], 0
lea rdx, [rsp + 0x250]
mov r8d, 1
call fcn.1800045b2
xor eax, eax
cmp rax, 0x40
je 0x18002162b
xor byte [rsp + rax + 0x250], 0x6a
inc rax
jmp 0x180021618
lea rbx, [rsp + 0x1a0]
movaps xmmword [rbx + 0x10], xmm6
movaps xmmword [rbx], xmm7
and qword [rbx + 0x20], 0
lea rdi, [rsp + 0x250]
mov r8d, 1
mov rcx, rbx
mov rdx, rdi
call fcn.1800045b2
mov rax, qword [rbx + 0x20]
lea rsi, [rsp + 0x650]
mov qword [rsi + 0x48], rax
movaps xmm0, xmmword [rbx]
movaps xmm1, xmmword [rbx + 0x10]
movups xmmword [rsi + 0x38], xmm1
movups xmmword [rsi + 0x28], xmm0
movaps xmm0, xmmword [rsp + 0x90]
movaps xmm1, xmmword [rsp + 0xa0]
movaps xmmword [rsi], xmm0
movaps xmmword [rsi + 0x10], xmm1
mov rax, qword [rsp + 0xb0]
mov qword [rsi + 0x20], rax
xorps xmm6, xmm6
movups xmmword [rdi + 0x50], xmm6
movups xmmword [rdi + 0x60], xmm6
movups xmmword [rdi + 0x70], xmm6
movups xmmword [rdi + 0x80], xmm6
lea rbx, [rsp + 0x250]
mov ecx, 0xa
mov rdi, rbx
rep movsq qword [rdi], qword [rsi]
lea rsi, [rsp + 0x1a0]
mov r8d, 0x90
mov rcx, rsi
mov rdx, rbx
call fcn.180041e0d
mov byte [rsi + 0x90], 0
movaps xmmword [rbx], xmm6
mov eax, 0x10
mov ecx, 0x12345678
test rax, rax
je 0x180021756
cmp rax, 4
mov r8d, 4
cmovb r8, rax
lea rdx, [rbx + r8]
sub rax, r8
mov r9d, ecx
shl r9d, 0xd
xor r9d, ecx
mov r10d, r9d
shr r10d, 0x11
xor r10d, r9d
mov ecx, r10d
shl ecx, 5
xor ecx, r10d
mov dword [rsp + 0x650], ecx
xor r9d, r9d
cmp r8, r9
je 0x180021751
cmp r9, 4
je 0x1800229f4
mov r10b, byte [rsp + r9 + 0x650]
mov byte [rbx + r9], r10b
inc r9
jmp 0x180021731
mov rbx, rdx
jmp 0x1800216f0
lea rsi, [rsp + 0xf0]
lea rdx, [rsp + 0x250]
mov r8d, 0x10
mov rcx, rsi
call fcn.1800091d9
mov r9, qword [rsi + 8]
mov rax, qword [rsi + 0x10]
mov qword [rsp + 0x20], rax
lea rsi, [rsp + 0x250]
mov rcx, rsi
mov rdx, r13
mov r8, r14
call fcn.180003b92
test byte [rsi], 1
jne 0x1800229f4
lea rdx, [rsp + 0x260]
lea rcx, [rsp + 0x650]
mov r8d, 0x3d0
call fcn.180041e0d
lea rdx, [r15 + 0x10]
lea rsi, [rsp + 0xd0]
mov rcx, rsi
call fcn.180008f67
lea r8, [r12 + r15]
mov rcx, rsi
mov rdx, r12
call fcn.18002fdbd
xorps xmm0, xmm0
lea r8, [rsp + 0x80]
movaps xmmword [r8 - 0x10], xmm0
lea rdx, [rsp + 0x70]
mov rcx, rsi
call fcn.18002fdbd
mov rax, qword [rsi + 0x10]
mov rcx, r15
and rcx, 0xfffffffffffffff0
mov rdx, rax
sub rdx, rcx
jb 0x1800229f4
cmp rdx, 0x10
jb 0x1800229f4
cmp r15, 0xffffffffffffffef
ja 0x1800229f4
lea rsi, [rcx + 0x10]
cmp rsi, rax
ja 0x1800229f4
mov r14, qword [rsp + 0xd8]
and r15d, 0xf
add rcx, r14
mov r8d, 0x10
sub r8, r15
add rcx, r15
mov dl, 0x10
sub dl, r15b
call fcn.180041ed9
mov qword [rsp + 0xe0], rsi
lea rdx, [rsp + 0xa10]
add rsi, r14
lea r15, [rsp + 0x90]
lea r12, [rsp + 0x250]
xorps xmm6, xmm6
mov qword [rsp + 0x120], rsi
cmp r14, rsi
je 0x180022313
mov r13, r14
xor eax, eax
cmp rax, 0x10
je 0x1800218a7
mov cl, byte [rdx + rax]
xor byte [r13 + rax], cl
inc rax
jmp 0x180021894
lea r14, [r13 + 0x10]
mov al, byte [0x180051040]
cmp al, 1
jne 0x1800218e7
movups xmm0, xmmword [r13]
movaps xmmword [rsp + 0x250], xmm0
mov rcx, r15
lea rdx, [rsp + 0x650]
mov r8, r12
call fcn.180005dde
movaps xmm0, xmmword [rsp + 0x90]
movups xmmword [r13], xmm0
mov rdx, r13
jmp 0x180021886
xor eax, eax
cmp rax, 0x40
je 0x1800218fd
movups xmmword [rsp + rax + 0x90], xmm6
add rax, 0x10
jmp 0x1800218e9
mov qword [rsp + 0x130], r14
mov qword [rsp + 0x128], r13
movups xmm0, xmmword [r13]
movaps xmmword [rsp + 0x90], xmm0
movaps xmmword [rsp + 0x280], xmm6
movaps xmmword [rsp + 0x270], xmm6
movaps xmmword [rsp + 0x260], xmm6
movaps xmmword [rsp + 0x250], xmm6
lea rax, [rsp + 0xc0]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0xb0]
mov qword [rsp + 0x20], rax
mov edx, 8
mov rcx, r12
mov r8, r15
lea r9, [rsp + 0xa0]
call fcn.18002e46f
mov qword [rsp + 0x58], 0
mov rax, qword [rsp + 0x58]
lea rdx, [rsp + rax]
add rdx, 0x650
mov r8d, 8
mov rcx, r12
call fcn.18002ebd1
mov edx, 8
mov rcx, r12
call fcn.18002e73a
mov rdx, qword [rsp + 0x250]
mov r11, qword [rsp + 0x258]
mov r9, qword [rsp + 0x260]
mov r8, qword [rsp + 0x268]
mov r12, qword [rsp + 0x270]
mov rbp, qword [rsp + 0x278]
mov rdi, qword [rsp + 0x280]
mov r10, rdx
rol r10, 0x2c
movabs rcx, 0xfff0fff0fff0fff
and r10, rcx
mov r13, rdx
rol r13, 0x3c
movabs rax, 0xf000f000f000f000
and r13, rax
or r13, r10
mov r10, r11
rol r10, 0x2c
and r10, rcx
mov rbx, r11
rol rbx, 0x3c
and rbx, rax
mov rsi, r9
rol rsi, 0x2c
or rbx, r10
mov r14, r9
rol r14, 0x3c
and rsi, rcx
and r14, rax
or r14, rsi
mov r10, r8
rol r10, 0x2c
and r10, rcx
mov r15, r8
rol r15, 0x3c
and r15, rax
or r15, r10
mov qword [rsp + 0x68], r12
mov r10, r12
rol r10, 0x2c
and r10, rcx
rol r12, 0x3c
and r12, rax
or r12, r10
mov qword [rsp + 0x48], rbp
mov r10, rbp
rol r10, 0x2c
and r10, rcx
rol rbp, 0x3c
and rbp, rax
mov qword [rsp + 0x50], rdi
mov rsi, rdi
rol rsi, 0x2c
or rbp, r10
mov qword [rsp + 0x40], rbp
mov r10, rdi
rol r10, 0x3c
and rsi, rcx
and r10, rax
or r10, rsi
mov qword [rsp + 0x38], r10
mov rsi, qword [rsp + 0x288]
mov r10, rsi
rol r10, 0x2c
and r10, rcx
mov rcx, rsi
rol rcx, 0x3c
and rcx, rax
xor rdx, r13
mov rax, rdx
rol rax, 0x18
or rcx, r10
mov qword [rsp + 0x60], rcx
mov r10, rdx
rol r10, 0x28
movabs rdi, 0xff00ff00ff00ff
and rax, rdi
movabs rbp, 0xff00ff00ff00ff00
and r10, rbp
or r10, rax
xor rsi, rcx
xor r13, rsi
xor r13, r10
mov qword [rsp + 0x250], r13
xor r11, rbx
mov rax, r11
rol rax, 0x18
and rax, rdi
mov r10, r11
rol r10, 0x28
and r10, rbp
or r10, rax
xor rdx, rbx
xor r9, r14
xor rdx, rsi
xor rdx, r10
mov rax, r9
rol rax, 0x18
mov qword [rsp + 0x258], rdx
mov rcx, r9
rol rcx, 0x28
and rax, rdi
and rcx, rbp
or rcx, rax
xor r11, r14
xor r8, r15
xor r11, rcx
mov qword [rsp + 0x260], r11
mov rax, r8
rol rax, 0x18
and rax, rdi
mov rcx, r8
rol rcx, 0x28
and rcx, rbp
or rcx, rax
xor r9, r15
mov rdx, qword [rsp + 0x68]
xor rdx, r12
xor r9, rsi
xor r9, rcx
mov qword [rsp + 0x268], r9
mov rax, rdx
rol rax, 0x18
and rax, rdi
mov rcx, rdx
mov r10, rdx
rol rcx, 0x28
and rcx, rbp
or rcx, rax
xor r8, r12
mov r9, qword [rsp + 0x48]
mov r11, qword [rsp + 0x40]
xor r9, r11
xor r8, rsi
xor r8, rcx
mov qword [rsp + 0x270], r8
mov rax, r9
rol rax, 0x18
and rax, rdi
mov rdx, r9
rol rdx, 0x28
and rdx, rbp
or rdx, rax
xor r10, r11
lea rcx, [rsp + 0x250]
mov r8, qword [rsp + 0x50]
mov r11, qword [rsp + 0x38]
xor r8, r11
xor r10, rdx
mov qword [rsp + 0x278], r10
mov rax, r8
rol rax, 0x18
and rax, rdi
mov rdx, r8
rol rdx, 0x28
and rdx, rbp
or rdx, rax
mov rax, r9
xor rax, r11
xor rax, rdx
mov qword [rsp + 0x280], rax
mov rax, rsi
rol rax, 0x18
and rax, rdi
rol rsi, 0x28
and rsi, rbp
or rsi, rax
xor r8, qword [rsp + 0x60]
xor r8, rsi
mov qword [rsp + 0x288], r8
mov rbx, qword [rsp + 0x58]
lea rsi, [rsp + rbx]
add rsi, 0x690
mov r8d, 8
mov r12, rcx
mov rdx, rsi
call fcn.18002ebd1
mov edx, 8
cmp rbx, 0x300
je 0x1800222ad
mov rcx, r12
call fcn.18002e73a
mov r11, qword [rsp + 0x250]
mov r10, qword [rsp + 0x258]
mov r9, qword [rsp + 0x260]
mov r8, qword [rsp + 0x268]
mov r12, qword [rsp + 0x270]
mov r13, qword [rsp + 0x278]
mov rax, qword [rsp + 0x280]
mov qword [rsp + 0x38], rax
mov rax, r11
rol rax, 0x28
and rax, rdi
mov qword [rsp + 0x50], rsi
mov rsi, r11
rol rsi, 0x38
and rsi, rbp
or rsi, rax
mov rax, r10
rol rax, 0x28
and rax, rdi
mov r14, r10
rol r14, 0x38
and r14, rbp
mov rbx, r9
rol rbx, 0x28
or r14, rax
mov rcx, rbp
mov rdx, r9
rol rdx, 0x38
and rbx, rdi
and rdx, rbp
or rdx, rbx
mov rax, r8
rol rax, 0x28
and rax, rdi
mov r15, r8
rol r15, 0x38
and r15, rbp
or r15, rax
mov qword [rsp + 0x40], r12
mov rax, r12
rol rax, 0x28
and rax, rdi
rol r12, 0x38
and r12, rbp
or r12, rax
mov qword [rsp + 0x48], r13
mov rax, r13
rol rax, 0x28
and rax, rdi
rol r13, 0x38
and r13, rbp
mov rbp, qword [rsp + 0x38]
mov rbx, rbp
rol rbx, 0x28
or r13, rax
rol rbp, 0x38
and rbx, rdi
and rbp, rcx
or rbp, rbx
mov rax, qword [rsp + 0x288]
mov rbx, rax
rol rbx, 0x28
and rbx, rdi
mov rdi, rax
rol rdi, 0x38
and rdi, rcx
or rdi, rbx
xor r11, rsi
xor rax, rdi
mov rbx, r11
rol rbx, 0x20
xor rsi, rax
xor rsi, rbx
mov qword [rsp + 0x250], rsi
xor r10, r14
xor r11, r14
mov rsi, r10
rol rsi, 0x20
xor r11, rax
xor r11, rsi
mov qword [rsp + 0x258], r11
xor r9, rdx
xor r10, rdx
mov r11, r9
rol r11, 0x20
xor r10, r11
xor r8, r15
mov qword [rsp + 0x260], r10
mov r10, r8
rol r10, 0x20
xor r9, r15
xor r9, rax
xor r9, r10
mov rcx, qword [rsp + 0x40]
xor rcx, r12
mov qword [rsp + 0x268], r9
mov r9, rcx
rol r9, 0x20
xor r8, r12
xor r8, rax
xor r8, r9
mov r9, qword [rsp + 0x48]
xor r9, r13
mov qword [rsp + 0x270], r8
mov r8, r9
rol r8, 0x20
xor rcx, r13
xor rcx, r8
mov qword [rsp + 0x278], rcx
mov rcx, qword [rsp + 0x38]
xor rcx, rbp
xor r9, rbp
mov rdx, rcx
rol rdx, 0x20
xor r9, rdx
mov qword [rsp + 0x280], r9
rol rax, 0x20
xor rcx, rdi
xor rcx, rax
mov qword [rsp + 0x288], rcx
mov rax, qword [rsp + 0x50]
lea rdx, [rax + 0x40]
mov r8d, 8
lea rcx, [rsp + 0x250]
call fcn.18002ebd1
mov edx, 8
lea rcx, [rsp + 0x250]
call fcn.18002e73a
mov r8, qword [rsp + 0x250]
mov r11, qword [rsp + 0x258]
mov r9, qword [rsp + 0x260]
mov rbx, qword [rsp + 0x268]
mov rbp, qword [rsp + 0x270]
mov r15, qword [rsp + 0x278]
mov r13, qword [rsp + 0x280]
mov rcx, r8
rol rcx, 0x24
movabs rsi, 0xf000f000f000f
and rcx, rsi
mov r12, r8
rol r12, 0x34
movabs rax, 0xfff0fff0fff0fff0
and r12, rax
or r12, rcx
mov rcx, r11
rol rcx, 0x24
and rcx, rsi
mov rdi, r11
rol rdi, 0x34
and rdi, rax
mov rdx, r9
rol rdx, 0x24
or rdi, rcx
mov r14, r9
rol r14, 0x34
and rdx, rsi
and r14, rax
or r14, rdx
mov rcx, rbx
rol rcx, 0x24
and rcx, rsi
mov rdx, rbx
rol rdx, 0x34
and rdx, rax
or rdx, rcx
mov qword [rsp + 0x68], rbp
mov rcx, rbp
rol rcx, 0x24
and rcx, rsi
rol rbp, 0x34
and rbp, rax
or rbp, rcx
mov qword [rsp + 0x48], r15
mov r10, r15
rol r10, 0x24
and r10, rsi
mov rcx, r15
rol rcx, 0x34
and rcx, rax
mov qword [rsp + 0x38], r13
mov r15, r13
rol r15, 0x24
or rcx, r10
mov qword [rsp + 0x40], rcx
rol r13, 0x34
and r15, rsi
and r13, rax
or r13, r15
mov r15, qword [rsp + 0x288]
mov r10, r15
rol r10, 0x24
and r10, rsi
mov rcx, r15
rol rcx, 0x34
and rcx, rax
xor r8, r12
mov rax, r8
rol rax, 0x18
or rcx, r10
mov qword [rsp + 0x60], rcx
mov r10, r8
rol r10, 0x28
movabs rsi, 0xff00ff00ff00ff
and rax, rsi
movabs rsi, 0xff00ff00ff00ff00
and r10, rsi
or r10, rax
xor r15, rcx
xor r12, r15
xor r12, r10
mov qword [rsp + 0x250], r12
xor r11, rdi
mov rax, r11
rol rax, 0x18
movabs r12, 0xff00ff00ff00ff
and rax, r12
mov r10, r11
rol r10, 0x28
and r10, rsi
or r10, rax
xor r8, rdi
xor r9, r14
xor r8, r15
xor r8, r10
mov rax, r9
rol rax, 0x18
mov qword [rsp + 0x258], r8
mov r8, r9
rol r8, 0x28
and rax, r12
and r8, rsi
or r8, rax
xor r11, r14
xor rbx, rdx
xor r11, r8
mov qword [rsp + 0x260], r11
mov rax, rbx
rol rax, 0x18
and rax, r12
mov r8, rbx
rol r8, 0x28
and r8, rsi
or r8, rax
xor r9, rdx
mov r11, qword [rsp + 0x68]
xor r11, rbp
xor r9, r15
xor r9, r8
mov qword [rsp + 0x268], r9
mov rax, r11
rol rax, 0x18
and rax, r12
mov rdx, r11
mov rdi, r11
rol rdx, 0x28
and rdx, rsi
or rdx, rax
xor rbx, rbp
mov r9, qword [rsp + 0x48]
mov rcx, qword [rsp + 0x40]
xor r9, rcx
xor rbx, r15
xor rbx, rdx
mov qword [rsp + 0x270], rbx
mov rax, r9
rol rax, 0x18
and rax, r12
mov rdx, r9
mov r11, r9
rol rdx, 0x28
and rdx, rsi
or rdx, rax
xor rdi, rcx
mov r9, qword [rsp + 0x38]
xor r9, r13
xor rdi, rdx
mov qword [rsp + 0x278], rdi
mov rax, r9
rol rax, 0x18
and rax, r12
mov rcx, r9
rol rcx, 0x28
and rcx, rsi
or rcx, rax
mov rax, r11
xor rax, r13
xor rax, rcx
mov qword [rsp + 0x280], rax
mov rax, r15
rol rax, 0x18
and rax, r12
rol r15, 0x28
and r15, rsi
or r15, rax
xor r9, qword [rsp + 0x60]
xor r9, r15
mov qword [rsp + 0x288], r9
mov rdx, qword [rsp + 0x50]
sub rdx, 0xffffffffffffff80
mov r8d, 8
lea rsi, [rsp + 0x250]
mov rcx, rsi
call fcn.18002ebd1
mov edx, 8
mov r12, rsi
mov rcx, rsi
call fcn.18002e73a
mov rdi, qword [rsp + 0x250]
mov rsi, qword [rsp + 0x258]
mov r11, qword [rsp + 0x260]
mov r9, qword [rsp + 0x268]
mov rdx, qword [rsp + 0x270]
mov rcx, qword [rsp + 0x278]
mov rax, qword [rsp + 0x288]
mov rbx, rdi
rol rbx, 0x30
mov r8, rax
rol r8, 0x30
xor rdi, rbx
xor rax, r8
mov r10, rdi
rol r10, 0x20
xor rbx, rax
xor rbx, r10
mov r10, qword [rsp + 0x280]
mov qword [rsp + 0x250], rbx
mov rbx, rsi
rol rbx, 0x30
xor rsi, rbx
xor rdi, rbx
mov rbx, rsi
rol rbx, 0x20
xor rdi, rax
xor rdi, rbx
mov rbx, r11
rol rbx, 0x30
mov qword [rsp + 0x258], rdi
xor r11, rbx
xor rsi, rbx
mov rdi, r11
rol rdi, 0x20
xor rsi, rdi
mov qword [rsp + 0x260], rsi
mov rsi, r9
rol rsi, 0x30
xor r9, rsi
xor r11, rsi
mov rsi, r9
rol rsi, 0x20
xor r11, rax
xor r11, rsi
mov qword [rsp + 0x268], r11
mov r11, rdx
rol r11, 0x30
xor rdx, r11
xor r9, r11
mov r11, rdx
rol r11, 0x20
xor r9, rax
xor r9, r11
mov r11, rcx
rol r11, 0x30
mov qword [rsp + 0x270], r9
xor rcx, r11
xor rdx, r11
mov r9, rcx
rol r9, 0x20
xor rdx, r9
mov qword [rsp + 0x278], rdx
mov rdx, r10
rol rdx, 0x30
xor r10, rdx
xor rcx, rdx
mov rdx, r10
rol rdx, 0x20
xor rcx, rdx
mov qword [rsp + 0x280], rcx
rol rax, 0x20
xor r10, r8
xor r10, rax
mov qword [rsp + 0x288], r10
add qword [rsp + 0x58], 0x100
jmp 0x180021975
mov rcx, r12
call fcn.18002eaaf
mov edx, 8
mov rcx, r12
call fcn.18002e73a
mov r8d, 8
mov rcx, r12
lea rdx, [rsp + 0x9d0]
call fcn.18002ebd1
mov rcx, r12
lea r15, [rsp + 0x90]
mov rdx, r15
call fcn.18002ef20
movaps xmm0, xmmword [rsp + 0x90]
mov rdx, qword [rsp + 0x128]
movups xmmword [rdx], xmm0
mov rsi, qword [rsp + 0x120]
mov r14, qword [rsp + 0x130]
jmp 0x180021886
lea rsi, [rsp + 0x250]
mov rcx, rsi
call fcn.18000469c
movups xmm0, xmmword [rsp + 0xd0]
lea rdx, [rsp + 0x170]
movaps xmmword [rdx], xmm0
mov rax, qword [rsp + 0xe0]
mov qword [rdx + 0x10], rax
mov rax, qword [rsp + 0x100]
lea rdi, [rsp + 0x70]
mov qword [rdi + 0x10], rax
movups xmm0, xmmword [rsp + 0xf0]
movaps xmmword [rdi], xmm0
mov rcx, rdi
call fcn.1800090a5
mov rdx, qword [rdi + 8]
mov rdi, qword [rdi + 0x10]
lea rax, [rsp + 0x1a0]
mov qword [rsi], rax
lea rsi, [rsp + 0x1f0]
movzx r15d, byte [rsi + 0x40]
mov r8d, 0x40
sub r8, r15
mov rbx, rdi
sub rbx, r8
jae 0x1800223aa
add rsi, r15
mov rcx, rsi
mov r8, rdi
call fcn.180041e0d
add rdi, r15
jmp 0x180022413
test r15, r15
je 0x1800223d9
lea rdi, [rdx + r8]
add r15, rsi
mov rcx, r15
call fcn.180041e0d
lea rcx, [rsp + 0x250]
mov r8d, 1
mov rdx, rsi
call fcn.18000f4ba
mov rdx, rdi
jmp 0x1800223dc
mov rbx, rdi
mov r15, rbx
and r15, 0xffffffffffffffc0
mov edi, ebx
and edi, 0x3f
add r15, rdx
cmp rbx, 0x40
jb 0x180022405
shr rbx, 6
lea rcx, [rsp + 0x250]
mov r8, rbx
call fcn.18000f4ba
mov rcx, rsi
mov rdx, r15
mov r8, rdi
call fcn.180041e0d
lea rdx, [rsp + 0x1a0]
mov byte [rdx + 0x90], dil
lea rsi, [rsp + 0x250]
mov r8d, 0x98
mov rcx, rsi
call fcn.180041e0d
xorps xmm0, xmm0
lea rdi, [rsp + 0xd0]
movaps xmmword [rdi + 0x10], xmm0
movaps xmmword [rdi], xmm0
lea rbx, [rsp + 0x2a0]
lea r14, [rsp + 0x90]
movaps xmmword [r14 + 0x10], xmm0
movaps xmmword [r14], xmm0
mov rcx, rsi
mov rdx, rbx
mov r8, r14
call fcn.1800045bb
lea rcx, [rsp + 0x278]
movaps xmm0, xmmword [r14]
movaps xmm1, xmmword [r14 + 0x10]
movups xmmword [rcx + 0x38], xmm1
movups xmmword [rcx + 0x28], xmm0
mov byte [rcx + 0x68], 0x20
mov rdx, rbx
mov r8, rdi
call fcn.1800045bb
movaps xmm0, xmmword [rdi]
movaps xmm1, xmmword [rdi + 0x10]
movaps xmmword [r14 + 0x10], xmm1
movaps xmmword [r14], xmm0
lea rbx, [rsp + 0x250]
lea rdx, [rsp + 0x90]
mov r8d, 0x20
mov rcx, rbx
call fcn.1800091d9
lea r14, [rsp + 0x70]
mov rcx, r14
mov rdx, rbx
call fcn.1800090a5
mov rcx, qword [rbx]
mov rdx, qword [rbx + 8]
call fcn.180030036
mov rsi, qword [r14]
mov rdi, qword [r14 + 8]
mov r14, qword [r14 + 0x10]
mov rcx, qword [rsp + 0x170]
mov rdx, qword [rsp + 0x178]
call fcn.180030036
mov rax, qword [rsp + 0x108]
movups xmm0, xmmword [rax + 8]
movups xmmword [rbx], xmm0
mov qword [rbx + 0x10], rdi
mov qword [rbx + 0x18], r14
mov eax, 8
xor edx, edx
add rdx, qword [rsp + rax + 0x250]
add rax, 0x10
cmp rax, 0x28
jne 0x180022521
lea rbx, [rsp + 0x650]
mov rcx, rbx
call fcn.180008f67
xor eax, eax
cmp rax, 0x20
je 0x18002256f
lea r14, [rax + 0x10]
mov rdx, qword [rsp + rax + 0x250]
mov r8, qword [rsp + rax + 0x258]
add r8, rdx
mov rcx, rbx
call fcn.18002fdbd
mov rax, r14
jmp 0x180022545
mov rbx, qword [rsp + 0x650]
mov r14, qword [rsp + 0x658]
mov r15, qword [rsp + 0x660]
mov rcx, rsi
mov rdx, rdi
call fcn.180030036
lea rcx, [rsp + 0x138]
mov rdx, r14
mov r8, r15
call fcn.18000ad1a
mov rcx, rbx
mov rdx, r14
call fcn.180030036
mov r14, qword [rsp + 0x110]
add r14, qword [rsp + 0x118]
mov rdx, qword [r14]
mov rax, qword [r14 + 8]
mov r12, qword [rsp + 0x140]
mov r9, qword [rsp + 0x148]
lea rsi, [rsp + 0x250]
mov rcx, rsi
mov r8, r12
call qword [rax + 0x28]
mov rax, qword [rsi]
mov rcx, qword [rsi + 8]
mov rdx, rax
neg rdx
jno 0x180022610
mov rdx, qword [rsp + 0x260]
call fcn.180007ccc
mov ecx, 1
xor eax, eax
xor r8d, r8d
jmp 0x180022618
mov r8, qword [rsp + 0x260]
lea rdx, [rsp + 0x250]
mov qword [rdx], rax
mov qword [rdx + 8], rcx
mov qword [rdx + 0x10], r8
lea rsi, [rsp + 0x650]
mov rcx, rsi
call fcn.18000a315
mov r13, qword [rsi]
movabs rax, 0x8000000000000000
cmp r13, rax
je 0x1800229f4
mov rbp, qword [rsp + 0x658]
mov rsi, qword [rsp + 0x660]
mov rcx, qword [r14]
mov rax, qword [r14 + 8]
call qword [rax + 0x18]
test rax, rax
je 0x180022a57
mov rdi, qword [rax + 8]
mov rbx, qword [rax + 0x10]
lea rcx, [rsp + 0xd0]
call fcn.18001f17c
cmp rsi, 0x23
jbe 0x1800229f4
lea r15, [rsi - 0x24]
cmp r15, 0xf
jbe 0x1800229f4
lea rax, [rsi - 0x44]
cmp rax, r15
ja 0x1800229f4
cmp rax, 0x10
jb 0x1800229f4
cmp r15, 0x20
jb 0x1800229f4
lea r9, [rbp + 0x24]
mov qword [rsp + 0x20], 0x10
lea r14, [rsp + 0x250]
mov rcx, r14
mov rdx, rdi
mov r8, rbx
call fcn.180003b92
test byte [r14], 1
jne 0x1800229f4
lea rdx, [rsp + 0x260]
lea rcx, [rsp + 0x650]
mov r8d, 0x3d0
call fcn.180041e0d
test r15b, 0xf
jne 0x1800229f4
mov qword [rsp + 0x38], r13
mov qword [rsp + 0x50], r12
add rsi, 0xffffffffffffffac
mov qword [rsp + 0x48], rbp
lea rdx, [rbp + 0x34]
lea rdi, [rsp + 0x90]
mov rcx, rdi
mov r8, rsi
call fcn.1800091d9
and qword [rsp + 0x2d0], 0
mov r12, qword [rdi + 8]
mov r13, qword [rdi + 0x10]
xor eax, eax
xorps xmm0, xmm0
movups xmmword [rsp + rax + 0x250], xmm0
inc qword [rsp + 0x2d0]
add rax, 0x10
cmp rax, 0x80
jne 0x180022754
lea rsi, [rsp + 0x1a0]
lea rdx, [rsp + 0x250]
mov r8d, 0x80
mov rcx, rsi
call fcn.180041e0d
lea rdx, [rsp + 0xa10]
mov rcx, rsi
call fcn.18000469c
mov qword [rsp + 0x58], r13
and r13, 0xffffffffffffff80
add r13, r12
lea rbp, [rsp + 0x740]
lea rbx, [rsp + 0x650]
mov qword [rsp + 0x40], r12
cmp r12, r13
je 0x1800228a3
mov r8d, 0x70
lea rcx, [rsp + 0x1b0]
mov rdx, r12
call fcn.180041e0d
lea rdx, [r12 + 0x70]
lea rcx, [rsp + 0x240]
call fcn.18000469c
mov r14d, 8
mov rdx, r12
test r14, r14
je 0x180022854
lea r15, [rdx + 0x80]
add r14, 0xfffffffffffffff8
mov al, byte [0x180051040]
cmp al, 1
jne 0x180022823
mov rcx, rdx
mov rdx, rbp
call fcn.18000d97c
mov rdx, r15
jmp 0x1800227f9
mov esi, 8
test rsi, rsi
je 0x18002281e
cmp rsi, 4
mov r8d, 4
cmovb r8, rsi
sub rsi, r8
mov edi, r8d
shl edi, 4
add rdi, rdx
mov rcx, rbx
call fcn.18002f126
mov rdx, rdi
jmp 0x180022828
lea rax, [rsp + 0x1a0]
mov rcx, r12
xor edx, edx
cmp rdx, 8
je 0x18002288a
xor r8d, r8d
cmp r8, 0x10
je 0x18002287d
mov r9b, byte [rax + r8]
xor byte [rcx + r8], r9b
inc r8
jmp 0x18002286a
inc rdx
add rcx, 0x10
add rax, 0x10
jmp 0x180022861
sub r12, 0xffffffffffffff80
movups xmm0, xmmword [rsp + 0x240]
movaps xmmword [rsp + 0x1a0], xmm0
jmp 0x1800227bf
lea rdx, [rsp + 0x1a0]
lea rsi, [rsp + 0xa10]
mov rcx, rsi
call fcn.18000469c
lea rcx, [rsp + 0xf0]
mov rdx, rsi
call fcn.18000469c
mov r15, qword [rsp + 0x58]
and r15d, 0x70
add r15, r13
lea rsi, [rsp + 0x170]
lea rdi, [rsp + 0x650]
lea rbx, [rsp + 0x250]
xorps xmm6, xmm6
mov r12, qword [rsp + 0x50]
cmp r13, r15
je 0x180022995
mov rcx, rsi
mov rdx, r13
call fcn.18000469c
mov al, byte [0x180051040]
cmp al, 1
jne 0x180022922
mov rcx, r13
mov rdx, rbp
call fcn.18000d906
jmp 0x180022963
xor eax, eax
cmp rax, 0x40
je 0x180022938
movups xmmword [rsp + rax + 0x250], xmm6
add rax, 0x10
jmp 0x180022924
movups xmm0, xmmword [r13]
movaps xmmword [rsp + 0x250], xmm0
mov r8d, 4
mov rcx, rdi
mov rdx, rbx
call fcn.18002f126
movaps xmm0, xmmword [rsp + 0x250]
movups xmmword [r13], xmm0
xor eax, eax
cmp rax, 0x10
je 0x18002297c
mov cl, byte [rsp + rax + 0xf0]
xor byte [r13 + rax], cl
inc rax
jmp 0x180022965
add r13, 0x10
movups xmm0, xmmword [rsp + 0x170]
movaps xmmword [rsp + 0xf0], xmm0
jmp 0x1800228f7
mov r11, qword [rsp + 0x58]
test r11, r11
mov r13, qword [rsp + 0x38]
mov rbp, qword [rsp + 0x48]
mov rdx, qword [rsp + 0x40]
je 0x1800229e7
movzx eax, byte [rdx + r11 - 1]
test rax, rax
je 0x1800229e7
mov rcx, r11
sub rcx, rax
jb 0x1800229e7
lea r8, [r11 - 1]
cmp r8, rcx
jb 0x1800229f4
lea r10, [rdx + r11]
mov r8, rax
neg r8
cmp r8, 0xffffffffffffffff
je 0x1800229f6
lea r9, [r8 + 1]
cmp byte [r10 + r8], al
mov r8, r9
je 0x1800229d4
mov rcx, qword [rsp + 0x90]
call fcn.180030036
ud2
cmp r11, rax
jb 0x180022a03
mov qword [rsp + 0xa0], rcx
mov rax, qword [rsp + 0x90]
lea rcx, [rsp + 0x90]
movups xmm0, xmmword [rcx + 8]
movaps xmmword [rsp + 0x250], xmm0
movabs rcx, 0x8000000000000000
cmp rax, rcx
je 0x1800229f4
mov qword [rsp + 0x70], rax
movaps xmm0, xmmword [rsp + 0x250]
movups xmmword [rsp + 0x78], xmm0
mov rcx, qword [rsp + 0xd0]
mov rdx, qword [rsp + 0xd8]
call fcn.180030036
jmp 0x180022a72
cmp rsi, 0x23
jbe 0x1800229f4
add rsi, 0xffffffffffffffdc
lea rdx, [rbp + 0x24]
lea rcx, [rsp + 0x70]
mov r8, rsi
call fcn.1800091d9
mov rsi, qword [rsp + 0x78]
mov r8, qword [rsp + 0x80]
lea r14, [rsp + 0x250]
mov rcx, r14
mov rdx, rsi
call fcn.180036ffc
mov rbx, qword [r14 + 8]
mov rdi, qword [r14 + 0x10]
test byte [r14], 1
je 0x180022adc
mov ecx, 0x10
mov edx, 8
call fcn.1800091a7
mov qword [rax], rbx
mov qword [rax + 8], rdi
mov rcx, qword [rsp + 0x88]
mov qword [rcx + 8], rax
lea rax, [0x1800433e0]
mov qword [rcx + 0x10], rax
movabs rax, 0x8000000000000000
mov qword [rcx], rax
jmp 0x180022aef
mov rcx, qword [rsp + 0x88]
mov rdx, rbx
mov r8, rdi
call fcn.180030208
mov rcx, qword [rsp + 0x70]
mov rdx, rsi
call fcn.180030036
mov rcx, r13
mov rdx, rbp
call fcn.180030036
mov rcx, qword [rsp + 0x138]
mov rdx, r12
call fcn.180030036
movaps xmm6, xmmword [rsp + 0xa20]
movaps xmm7, xmmword [rsp + 0xa30]
add rsp, 0xa48
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret