Function at 0x140016e10
Capabilities:
Hash data using sha1

Disassembly:
mov byte [rsp + 0x20], r9b
mov qword [rsp + 0x18], r8
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x150
mov qword [rsp + 0xc0], 0xfffffffffffffffe
mov qword [rsp + 0x190], rbx
mov r15, rdx
mov rdi, rcx
test r9b, r9b
jne 0x140016e58
call fcn.140016570
test al, al
je 0x140017294
call fcn.14000f1f0
mov rsi, rax
xor ebx, ebx
cmp qword [rax + 0x10], rbx
jne 0x140016e8b
lea ecx, [rbx + 0x10]
call fcn.14002081c
mov qword [rsp + 0x30], rax
test rax, rax
je 0x140016e84
mov rcx, rax
call 0x1400135f0
jmp 0x140016e87
mov rax, rbx
mov qword [rsi + 0x10], rax
mov rbp, qword [rsi + 0x10]
mov qword [rsp + 0x28], 0x10
mov ecx, dword [rbp]
sub ecx, dword [rbp + 4]
mov qword [rsp + 0x30], rcx
lea rax, [rsp + 0x28]
lea rdx, [rsp + 0x30]
cmp rcx, 0x10
cmovbe rax, rdx
mov r12, qword [rax]
mov rsi, rbx
or r14d, 0xffffffff
test r12, r12
je 0x140016f14
nop word [rax + rax]
mov edx, dword [rbp + 4]
add rdx, rsi
shl rdx, 2
mov rcx, qword [rbp + 8]
mov rax, qword [rcx + 0x10]
sub rax, 4
cmp rdx, rax
ja 0x140016f05
mov r9d, 4
lea r8, [rsp + 0x28]
call fcn.140011a90
test al, al
je 0x140016f05
mov eax, dword [rsp + 0x28]
jmp 0x140016f08
mov eax, r14d
mov dword [rsp + rsi*4 + 0x40], eax
inc rsi
cmp rsi, r12
jb 0x140016ed0
mov qword [rsp + 0x28], 0x40
lea rdx, [r12*4]
lea r9, [rsp + 0x28]
lea r8, [rsp + 0x110]
lea rcx, [rsp + 0x40]
call fcn.140011de0
mov r11, qword [rsp + 0x28]
mov byte [rsp + r11 + 0x110], 0
mov dword [rsp + 0x94], ebx
mov dword [rsp + 0x90], ebx
mov rsi, rbx
mov qword [rsp + 0x48], rbx
mov dword [rsp + 0x98], 0x67452301
mov dword [rsp + 0x9c], 0xefcdab89
mov dword [rsp + 0xa0], 0x98badcfe
mov dword [rsp + 0xa4], 0x10325476
mov dword [rsp + 0xa8], 0xc3d2e1f0
xor r13b, r13b
mov byte [rsp + 0x40], r13b
mov rax, qword [r15 + 0x10]
sub rax, 4
cmp rax, 0x10
jb 0x140016fce
mov r9d, 4
lea r8, [rsp + 0x28]
lea edx, [r9 + 0xc]
mov rcx, r15
call fcn.140011a90
test al, al
je 0x140016fce
mov ebp, dword [rsp + 0x28]
jmp 0x140016fd1
mov ebp, r14d
mov rax, qword [r15 + 0x10]
sub rax, 4
cmp rax, 0xc
jb 0x140016fff
mov r9d, 4
lea r8, [rsp + 0x28]
lea edx, [r9 + 8]
mov rcx, r15
call fcn.140011a90
test al, al
je 0x140016fff
mov r14d, dword [rsp + 0x28]
mov r12d, ebp
test ebp, ebp
je 0x140017085
mov ebp, r14d
nop dword [rax]
mov rax, qword [r15 + 0x10]
dec rax
cmp rbp, rax
ja 0x14001703d
mov r9d, 1
lea r8, [rsp + 0x20]
mov rdx, rbp
mov rcx, r15
call fcn.140011a90
test al, al
je 0x14001703d
movzx eax, byte [rsp + 0x20]
jmp 0x14001703f
mov al, 0xff
mov byte [rsp + rsi + 0x50], al
mov rsi, qword [rsp + 0x48]
inc rsi
mov qword [rsp + 0x48], rsi
add dword [rsp + 0x94], 8
jne 0x140017061
inc dword [rsp + 0x90]
cmp rsi, 0x40
jne 0x140017076
lea rcx, [rsp + 0x40]
call fcn.1400121b0
mov rsi, qword [rsp + 0x48]
inc rbp
sub r12, 1
jne 0x140017010
movzx r13d, byte [rsp + 0x40]
mov edx, 0x40
mov qword [rsp + 0x28], rdx
test r13b, r13b
jne 0x140017120
mov byte [rsp + rsi + 0x50], 0x80
mov rax, qword [rsp + 0x48]
inc rax
mov qword [rsp + 0x48], rax
cmp rax, 0x38
jbe 0x1400170d6
cmp rax, rdx
jae 0x1400170c7
lea rcx, [rsp + rax + 0x50]
sub rdx, rax
mov r8, rdx
xor edx, edx
call fcn.140026a00
lea rcx, [rsp + 0x40]
call fcn.1400121b0
mov rax, qword [rsp + 0x48]
cmp rax, 0x38
jae 0x1400170f1
lea rcx, [rsp + rax + 0x50]
mov r8d, 0x38
sub r8, rax
xor edx, edx
call fcn.140026a00
mov eax, dword [rsp + 0x90]
bswap eax
mov dword [rsp + 0x88], eax
mov eax, dword [rsp + 0x94]
bswap eax
mov dword [rsp + 0x8c], eax
lea rcx, [rsp + 0x40]
call fcn.1400121b0
mov byte [rsp + 0x40], 1
mov rcx, rbx
nop word [rax + rax]
mov eax, dword [rsp + rcx*4 + 0x98]
bswap eax
mov dword [rsp + rcx*4 + 0xac], eax
inc rcx
cmp rcx, 5
jb 0x140017130
lea r9, [rsp + 0x28]
lea r8, [rsp + 0xd0]
mov edx, 0x14
lea rcx, [rsp + 0xac]
call fcn.140011de0
mov r11, qword [rsp + 0x28]
mov byte [rsp + r11 + 0xd0], 0
lea rax, [0x140032b18]
lea rcx, [0x140032b30]
movzx esi, byte [rsp + 0x1a8]
test sil, sil
cmovne rcx, rax
mov rax, rbx
cmp byte [rdi + 8], al
je 0x1400171aa
nop dword [rax + rax]
inc rax
cmp byte [rax + rdi + 8], 0
jne 0x1400171a0
movzx edx, byte [rcx]
test dl, dl
je 0x1400171c9
cmp rax, 0x800
jae 0x1400171c9
mov byte [rax + rdi + 8], dl
inc rax
inc rcx
mov dl, byte [rcx]
test dl, dl
jne 0x1400171b1
mov byte [rax + rdi + 8], 0
mov r8b, 1
mov rdx, qword [rsp + 0x1a0]
mov rcx, rdi
call fcn.140016c20
lea r11, [0x140032b48]
mov rcx, rbx
cmp byte [rdi + 8], cl
je 0x140017200
inc rcx
cmp byte [rcx + rdi + 8], 0
jne 0x1400171f0
nop word [rax + rax]
cmp rcx, 0x800
jae 0x14001721d
movzx eax, byte [r11]
mov byte [rcx + rdi + 8], al
inc rcx
inc r11
cmp byte [r11], 0
jne 0x140017200
mov byte [rcx + rdi + 8], 0
mov r8b, 1
lea rdx, [rsp + 0x110]
mov rcx, rdi
call fcn.140016c20
lea r11, [0x140032b50]
cmp byte [rdi + 8], 0
je 0x140017250
inc rbx
cmp byte [rbx + rdi + 8], 0
jne 0x140017242
nop dword [rax]
cmp rbx, 0x800
jae 0x14001726d
movzx eax, byte [r11]
mov byte [rbx + rdi + 8], al
inc rbx
inc r11
cmp byte [r11], 0
jne 0x140017250
mov byte [rbx + rdi + 8], 0
mov r8b, 1
lea rdx, [rsp + 0xd0]
mov rcx, rdi
call fcn.140016c20
test sil, sil
je 0x140017292
mov rcx, rdi
call fcn.140016d50
mov al, 1
mov rbx, qword [rsp + 0x190]
add rsp, 0x150
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret