Function at 0x180008e20
Capabilities:
Hash data using sha1
Hash data using sha256

Disassembly:
mov qword [rsp + 0x20], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x4d0]
sub rsp, 0x5d0
mov rax, qword [0x180055010]
xor rax, rsp
mov qword [rbp + 0x4c0], rax
mov ebx, dword [r8]
mov rdi, rcx
movzx ecx, byte [rcx + 0x22d]
mov r12, rdx
mov r14d, r9d
mov rsi, r8
movzx edx, bx
mov r15d, ebx
sub ecx, 2
je 0x180009136
sub ecx, 2
je 0x1800090b3
cmp ecx, 1
jne 0x1800092f2
cmp r9d, 2
jb 0x18000997e
movzx eax, byte [rbx + r12]
lea ecx, [rbx + 2]
movzx r15d, byte [rbx + r12 + 1]
shl ax, 8
or r15w, ax
mov dword [r8], ecx
movzx r13d, r15w
mov eax, r13d
sub eax, ebx
add eax, ecx
cmp eax, r9d
ja 0x18000997e
mov r8d, 0x80
cmp r15w, r8w
jae 0x180008ece
movzx r8d, r15w
mov edx, ecx
mov rcx, qword [rdi + 0x10]
add rdx, r12
add rcx, 0x98
call fcn.18002fd00
movzx ecx, r15w
cmp r15w, 0x7f
jb 0x180008ef3
mov ecx, 0x7f
mov rax, qword [rdi + 0x10]
mov byte [rax + rcx + 0x98], 0
mov ecx, dword [rsi]
add ecx, r13d
mov eax, ecx
mov dword [rsi], ecx
sub eax, ebx
add eax, 2
cmp eax, r14d
ja 0x18000997e
movzx eax, byte [rcx + r12]
movzx r15d, byte [rcx + r12 + 1]
add ecx, 2
shl ax, 8
or r15w, ax
mov dword [rsi], ecx
movzx eax, r15w
sub eax, ebx
add eax, ecx
cmp eax, r14d
ja 0x18000997e
cmp r15w, word [rdi + 0x308]
jb 0x180009174
mov rax, qword [0x180056fa8]
movzx r13d, r15w
mov ecx, r13d
test rax, rax
je 0x180008f64
call rax
jmp 0x180008f69
call fcn.180035030
mov qword [rdi + 0x120], rax
test rax, rax
je 0x180009977
movzx ecx, r15w
mov r8, r13
mov dword [rdi + 0x128], ecx
mov rcx, rax
mov edx, dword [rsi]
add rdx, r12
call fcn.18002fd00
movzx eax, r15w
add dword [rsi], eax
mov word [rdi + 0x30a], r15w
mov ecx, dword [rsi]
mov eax, ecx
sub eax, ebx
add eax, 2
cmp eax, r14d
ja 0x18000997e
movzx eax, byte [rcx + r12 + 1]
movzx edx, byte [rcx + r12]
add ecx, 2
shl dx, 8
or dx, ax
mov dword [rsi], ecx
movzx r13d, dx
mov eax, r13d
sub eax, ebx
add eax, ecx
cmp eax, r14d
ja 0x18000997e
mov rax, qword [0x180056fa8]
movzx r15d, dx
mov ecx, r15d
test rax, rax
je 0x180008ff5
call rax
jmp 0x180008ffa
call fcn.180035030
mov qword [rdi + 0x130], rax
test rax, rax
je 0x180009977
mov dword [rdi + 0x138], r13d
mov r8, r15
mov edx, dword [rsi]
mov rcx, rax
add rdx, r12
call fcn.18002fd00
mov ecx, dword [rsi]
add ecx, r13d
mov eax, ecx
mov dword [rsi], ecx
sub eax, ebx
add eax, 2
cmp eax, r14d
ja 0x18000997e
movzx eax, byte [rcx + r12]
movzx edx, byte [rcx + r12 + 1]
add ecx, 2
shl ax, 8
or dx, ax
mov dword [rsi], ecx
movzx r13d, dx
mov eax, r13d
sub eax, ebx
add eax, ecx
cmp eax, r14d
ja 0x18000997e
mov rax, qword [0x180056fa8]
movzx r15d, dx
mov ecx, r15d
test rax, rax
je 0x18000907a
call rax
jmp 0x18000907f
call fcn.180035030
mov qword [rdi + 0x140], rax
test rax, rax
je 0x180009977
mov dword [rdi + 0x148], r13d
mov r8, r15
mov edx, dword [rsi]
mov rcx, rax
add rdx, r12
call fcn.18002fd00
add dword [rsi], r13d
mov edx, dword [rsi]
mov r15d, edx
jmp 0x1800092f2
cmp r14d, 2
jb 0x18000997e
movzx eax, byte [rbx + r12 + 1]
lea ecx, [rbx + 2]
movzx r15d, byte [rbx + r12]
shl r15w, 8
or r15w, ax
mov dword [r8], ecx
movzx r13d, r15w
mov eax, r13d
sub eax, ebx
add eax, ecx
cmp eax, r14d
ja 0x18000997e
mov r8d, 0x80
cmp r15w, r8w
jae 0x1800090fb
movzx r8d, r15w
mov edx, ecx
mov rcx, qword [rdi + 0x10]
add rdx, r12
add rcx, 0x98
call fcn.18002fd00
movzx ecx, r15w
cmp r15w, 0x7f
jb 0x180009120
mov ecx, 0x7f
mov rax, qword [rdi + 0x10]
mov byte [rax + rcx + 0x98], 0
add dword [rsi], r13d
xor eax, eax
jmp 0x180009983
cmp r14d, 2
jb 0x18000997e
movzx eax, byte [rbx + r12]
lea edx, [rbx + 2]
movzx r15d, byte [rbx + r12 + 1]
shl ax, 8
or r15w, ax
mov dword [r8], edx
movzx eax, r15w
sub eax, ebx
add eax, edx
cmp eax, r14d
ja 0x18000997e
cmp r15w, word [rdi + 0x308]
jae 0x18000918f
mov edx, 2
mov rcx, rdi
lea r8d, [rdx + 0x26]
call fcn.180008400
mov eax, 0xfffffe6f
jmp 0x180009983
mov rax, qword [0x180056fa8]
movzx r13d, r15w
mov ecx, r13d
test rax, rax
je 0x1800091a6
call rax
jmp 0x1800091ab
call fcn.180035030
mov qword [rdi + 0x120], rax
test rax, rax
je 0x180009977
movzx ecx, r15w
mov r8, r13
mov dword [rdi + 0x128], ecx
mov rcx, rax
mov edx, dword [rsi]
add rdx, r12
call fcn.18002fd00
movzx eax, r15w
add dword [rsi], eax
mov word [rdi + 0x30a], r15w
mov ecx, dword [rsi]
mov eax, ecx
sub eax, ebx
add eax, 2
cmp eax, r14d
ja 0x18000997e
movzx eax, byte [rcx + r12 + 1]
movzx edx, byte [rcx + r12]
add ecx, 2
shl dx, 8
or dx, ax
mov dword [rsi], ecx
movzx r13d, dx
mov eax, r13d
sub eax, ebx
add eax, ecx
cmp eax, r14d
ja 0x18000997e
mov rax, qword [0x180056fa8]
movzx r15d, dx
mov ecx, r15d
test rax, rax
je 0x180009237
call rax
jmp 0x18000923c
call fcn.180035030
mov qword [rdi + 0x130], rax
test rax, rax
je 0x180009977
mov dword [rdi + 0x138], r13d
mov r8, r15
mov edx, dword [rsi]
mov rcx, rax
add rdx, r12
call fcn.18002fd00
mov ecx, dword [rsi]
add ecx, r13d
mov eax, ecx
mov dword [rsi], ecx
sub eax, ebx
add eax, 2
cmp eax, r14d
ja 0x18000997e
movzx eax, byte [rcx + r12 + 1]
movzx edx, byte [rcx + r12]
add ecx, 2
shl dx, 8
or dx, ax
mov dword [rsi], ecx
movzx r13d, dx
mov eax, r13d
sub eax, ebx
add eax, ecx
cmp eax, r14d
ja 0x18000997e
mov rax, qword [0x180056fa8]
movzx r15d, dx
mov ecx, r15d
test rax, rax
je 0x1800092bc
call rax
jmp 0x1800092c1
call fcn.180035030
mov qword [rdi + 0x140], rax
test rax, rax
je 0x180009977
mov dword [rdi + 0x148], r13d
mov r8, r15
mov edx, dword [rsi]
mov rcx, rax
add rdx, r12
call fcn.18002fd00
add dword [rsi], r13d
mov r15d, dword [rsi]
movzx edx, r15w
cmp word [rdi + 0x2fa], 0
jl 0x1800098ca
movzx eax, byte [rdi + 0x22d]
cmp al, 8
je 0x180009313
cmp al, 2
jne 0x1800098ca
movzx eax, byte [rdi + 0x22e]
xor r13b, r13b
sub dx, bx
mov byte [rsp + 0x21], al
mov eax, 0x40c
mov byte [rsp + 0x23], 2
mov dword [rsp + 0x24], edx
mov byte [rsp + 0x20], r13b
mov byte [rsp + 0x22], r13b
cmp dx, ax
jbe 0x18000934d
mov ebx, 0xfffffeb8
mov eax, ebx
jmp 0x180009983
movzx r8d, dx
lea rcx, [rbp + 0xb0]
lea rdx, [r12 + rbx]
call fcn.18002fd00
movzx eax, byte [rdi + 0x21e]
cmp al, 3
jne 0x1800095d7
cmp byte [rdi + 0x21f], al
jae 0x1800095ec
cmp byte [rsp + 0x21], 1
mov byte [rsp + 0x20], 1
jne 0x18000938b
mov r13b, 1
mov eax, r15d
sub eax, ebx
add eax, 2
cmp eax, r14d
ja 0x180009341
mov eax, r15d
lea r8d, [r15 + 2]
movzx ecx, byte [rax + r12]
movzx edx, byte [rax + r12 + 1]
mov r15d, ecx
shl r15d, 8
or r15d, edx
mov dword [rsi], r8d
mov eax, r15d
mov dword [rsp + 0x28], r15d
sub eax, ebx
add eax, r8d
cmp eax, r14d
ja 0x180009341
xor ebx, ebx
test r13b, r13b
je 0x1800096d6
mov r15, qword [rdi + 0x10]
lea r14d, [rbx + 0x20]
add r15, 0x158
mov dword [rsp + 0x7c], 0x67452301
mov dword [rbp - 0x80], 0xefcdab89
mov edx, ebx
mov dword [rbp - 0x7c], 0x98badcfe
mov dword [rbp - 0x78], 0x10325476
mov qword [rsp + 0x30], rbx
mov dword [rsp + 0x38], ebx
nop
mov eax, edx
mov ecx, 0x40
sub ecx, edx
mov ebx, r14d
cmp r14d, ecx
mov rdx, r15
cmovae ebx, ecx
lea rcx, [rsp + 0x3c]
add rcx, rax
mov r8d, ebx
call fcn.18002fd00
mov edx, dword [rsp + 0x30]
add r15, rbx
add edx, ebx
sub r14d, ebx
mov dword [rsp + 0x30], edx
cmp edx, 0x40
jne 0x18000946d
lea rcx, [rsp + 0x30]
call fcn.180028c10
mov ecx, dword [rsp + 0x34]
lea eax, [rcx + 0x40]
mov dword [rsp + 0x34], eax
cmp eax, ecx
jae 0x180009467
inc dword [rsp + 0x38]
xor edx, edx
mov dword [rsp + 0x30], edx
test r14d, r14d
jne 0x180009410
mov r15, qword [rdi + 0x10]
mov r14d, 0x20
add r15, 0x178
nop dword [rax]
nop word [rax + rax]
mov eax, edx
mov ecx, 0x40
sub ecx, edx
mov ebx, r14d
cmp r14d, ecx
mov rdx, r15
cmovae ebx, ecx
lea rcx, [rsp + 0x3c]
add rcx, rax
mov r8d, ebx
call fcn.18002fd00
mov edx, dword [rsp + 0x30]
add r15, rbx
add edx, ebx
sub r14d, ebx
mov dword [rsp + 0x30], edx
cmp edx, 0x40
jne 0x1800094ed
lea rcx, [rsp + 0x30]
call fcn.180028c10
mov ecx, dword [rsp + 0x34]
lea eax, [rcx + 0x40]
mov dword [rsp + 0x34], eax
cmp eax, ecx
jae 0x1800094e7
inc dword [rsp + 0x38]
xor edx, edx
mov dword [rsp + 0x30], edx
test r14d, r14d
jne 0x180009490
mov r13d, dword [rsp + 0x24]
lea r15, [rbp + 0xb0]
movzx r14d, r13w
test r14d, r14d
je 0x180009576
nop word [rax + rax]
mov eax, edx
mov ecx, 0x40
sub ecx, edx
mov ebx, r14d
cmp r14d, ecx
mov rdx, r15
cmovae ebx, ecx
lea rcx, [rsp + 0x3c]
add rcx, rax
mov r8d, ebx
call fcn.18002fd00
mov edx, dword [rsp + 0x30]
add r15, rbx
add edx, ebx
sub r14d, ebx
mov dword [rsp + 0x30], edx
cmp edx, 0x40
jne 0x18000956d
lea rcx, [rsp + 0x30]
call fcn.180028c10
mov ecx, dword [rsp + 0x34]
lea eax, [rcx + 0x40]
mov dword [rsp + 0x34], eax
cmp eax, ecx
jae 0x180009567
inc dword [rsp + 0x38]
xor edx, edx
mov dword [rsp + 0x30], edx
test r14d, r14d
jne 0x180009510
movzx r14d, r13w
mov ecx, dword [rsp + 0x34]
lea eax, [rdx + rcx]
mov dword [rsp + 0x34], eax
cmp eax, ecx
jae 0x180009589
inc dword [rsp + 0x38]
mov byte [rsp + rdx + 0x3c], 0x80
mov ecx, dword [rsp + 0x30]
inc ecx
mov dword [rsp + 0x30], ecx
cmp ecx, 0x38
jbe 0x18000964e
mov eax, ecx
mov r8d, 0x40
sub r8d, ecx
xor edx, edx
lea rcx, [rsp + 0x3c]
add rcx, rax
call fcn.18002fae0
lea rcx, [rsp + 0x30]
mov dword [rsp + 0x30], 0x40
call fcn.180028c10
xor ebx, ebx
mov ecx, ebx
mov dword [rsp + 0x30], ebx
jmp 0x180009650
cmp al, 0xfe
jne 0x18000937c
cmp byte [rdi + 0x21f], 0xfd
ja 0x18000937c
mov eax, r15d
sub eax, ebx
add eax, 2
cmp eax, r14d
ja 0x180009341
lea ecx, [r15 + 1]
mov eax, r15d
lea r15d, [rcx + 1]
movzx edx, byte [rax + r12]
mov dword [rsi], ecx
movzx eax, byte [rcx + r12]
mov ecx, edx
mov byte [rsp + 0x23], dl
mov byte [rsp + 0x21], al
mov dword [rsi], r15d
sub ecx, 2
je 0x180009644
sub ecx, 2
je 0x18000963a
sub ecx, 1
mov ebx, 0xffffff7b
mov eax, ebx
jmp 0x180009983
mov byte [rsp + 0x22], 1
jmp 0x18000938b
mov byte [rsp + 0x20], 1
jmp 0x18000938b
xor ebx, ebx
mov eax, ecx
mov r8d, 0x38
sub r8d, ecx
xor edx, edx
lea rcx, [rsp + 0x3c]
add rcx, rax
call fcn.18002fae0
mov r8d, dword [rsp + 0x34]
mov ecx, r8d
mov eax, dword [rsp + 0x38]
shr ecx, 0x1d
shl r8d, 3
mov dword [rsp + 0x34], r8d
mov dword [rsp + 0x74], r8d
lea edx, [rcx + rax*8]
lea rcx, [rsp + 0x30]
mov dword [rsp + 0x38], edx
mov dword [rsp + 0x78], edx
call fcn.180028c10
movups xmm0, xmmword [rsp + 0x7c]
mov r15d, dword [rsp + 0x28]
mov dword [rsp + 0x7c], 0x67452301
movups xmmword [rbp + 0x60], xmm0
mov dword [rbp - 0x80], 0xefcdab89
mov dword [rbp - 0x7c], 0x98badcfe
mov dword [rbp - 0x78], 0x10325476
mov qword [rsp + 0x30], 0
mov dword [rsp + 0x38], ebx
jmp 0x1800096df
mov r13d, dword [rsp + 0x24]
movzx r14d, r13w
cmp byte [rsp + 0x20], 0
je 0x18000976d
mov rdx, qword [rdi + 0x10]
lea rcx, [rbp]
add rdx, 0x158
mov dword [rbp + 0x4c], 0x67452301
mov r8d, 0x20
mov dword [rbp + 0x50], 0xefcdab89
mov dword [rbp + 0x54], 0x98badcfe
mov dword [rbp + 0x58], 0x10325476
mov dword [rbp + 0x5c], 0xc3d2e1f0
mov qword [rbp], 0
mov dword [rbp + 8], ebx
call fcn.18002c200
mov rdx, qword [rdi + 0x10]
lea rcx, [rbp]
add rdx, 0x178
mov r8d, 0x20
call fcn.18002c200
movzx r8d, r13w
lea rdx, [rbp + 0xb0]
lea rcx, [rbp]
call fcn.18002c200
lea rdx, [rbp + 0x70]
lea rcx, [rbp]
call fcn.18002c470
xor r13d, r13d
cmp byte [rsp + 0x22], r13b
je 0x180009836
mov rdx, qword [rdi + 0x10]
lea r8d, [r13 + 0x20]
add rdx, 0x158
mov dword [rbp - 0x64], 0x6a09e667
lea rcx, [rbp - 0x70]
mov dword [rbp - 0x60], 0xbb67ae85
mov dword [rbp - 0x5c], 0x3c6ef372
mov dword [rbp - 0x58], 0xa54ff53a
mov dword [rbp - 0x54], 0x510e527f
mov dword [rbp - 0x50], 0x9b05688c
mov dword [rbp - 0x4c], 0x1f83d9ab
mov dword [rbp - 0x48], 0x5be0cd19
mov qword [rbp - 0x70], r13
mov dword [rbp - 0x68], r13d
call fcn.18002cf90
mov ebx, eax
test eax, eax
jne 0x180009973
mov rdx, qword [rdi + 0x10]
lea r8d, [r13 + 0x20]
add rdx, 0x178
lea rcx, [rbp - 0x70]
call fcn.18002cf90
mov ebx, eax
test eax, eax
jne 0x180009973
mov r8d, r14d
lea rdx, [rbp + 0xb0]
lea rcx, [rbp - 0x70]
call fcn.18002cf90
mov ebx, eax
test eax, eax
jne 0x180009973
lea rdx, [rbp + 0x88]
lea rcx, [rbp - 0x70]
call fcn.18002d200
mov ebx, eax
test eax, eax
jne 0x180009973
cmp byte [rsp + 0x21], 1
jne 0x18000962e
mov r9, qword [rdi + 0x310]
mov qword [rsp + 0x28], r13
test r9, r9
je 0x18000996e
cmp byte [rdi + 0x318], 0
je 0x18000996e
mov ecx, dword [rsi]
lea r8, [rsp + 0x28]
add rcx, r12
mov edx, r15d
call fcn.18002ae30
movzx ecx, byte [rdi + 0x21e]
mov r14d, eax
cmp cl, 3
jne 0x1800098e2
cmp byte [rdi + 0x21f], cl
jae 0x1800098f0
cmp r14d, 0x24
jne 0x180009965
mov rcx, qword [rsp + 0x28]
test rcx, rcx
je 0x180009965
mov r8d, r14d
lea rdx, [rbp + 0x60]
call fcn.18003df60
test eax, eax
jne 0x180009965
add dword [rsi], r15d
mov byte [rdi + 0x301], 4
test ebx, ebx
jne 0x180009973
cmp byte [rdi + 0x2e4], 0
je 0x1800098db
mov eax, dword [rdi + 0x2e0]
add dword [rsi], eax
xor eax, eax
jmp 0x180009983
cmp cl, 0xfe
jne 0x18000988c
cmp byte [rdi + 0x21f], 0xfd
ja 0x18000988c
movzx eax, byte [rsp + 0x23]
lea rdx, [rbp + 0x70]
mov r9d, 0x58
lea r8d, [r9 - 0x44]
cmp al, 2
jne 0x18000990d
lea rdx, [rbp + 0x70]
jmp 0x180009924
cmp al, 4
jne 0x180009924
lea rdx, [rbp + 0x88]
mov r9d, 0x19e
mov r8d, 0x20
lea rcx, [rbp + 0xb0]
call fcn.18001c1b0
cmp eax, r14d
jne 0x180009965
mov rcx, qword [rsp + 0x28]
test rcx, rcx
je 0x180009965
mov edx, 0x200
cmp eax, edx
cmovb edx, eax
mov r8d, edx
lea rdx, [rbp + 0xb0]
call fcn.18003df60
test eax, eax
jne 0x180009965
test ebx, ebx
jne 0x180009973
jmp 0x1800098b8
mov ebx, 0xfffffeb6
mov eax, ebx
jmp 0x180009983
mov ebx, 0xfffffec4
mov eax, ebx
jmp 0x180009983
mov eax, 0xfffffed1
jmp 0x180009983
mov eax, 0xfffffeb8
mov rcx, qword [rbp + 0x4c0]
xor rcx, rsp
call fcn.18002d8d0
mov rbx, qword [rsp + 0x628]
add rsp, 0x5d0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret