Function at 0x140187b50
Capabilities:
Hash data using sha1

Disassembly:
mov rax, rsp
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x140
mov qword [rsp + 0xb0], 0xfffffffffffffffe
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rbp
mov qword [rax + 0x18], rsi
movzx r14d, r9b
mov r15, r8
mov rsi, rdx
mov rdi, rcx
test r9b, r9b
jne 0x140187b9a
call fcn.140187220
test al, al
je 0x140187ed4
call fcn.14017f910
mov rbp, rax
xor ebx, ebx
cmp qword [rax + 0x10], rbx
jne 0x140187bcd
lea ecx, [rbx + 0x10]
call fcn.140191e5c
mov qword [rsp + 0x20], rax
test rax, rax
je 0x140187bc6
mov rcx, rax
call fcn.140183e10
jmp 0x140187bc9
mov rax, rbx
mov qword [rbp + 0x10], rax
mov r12d, 0x40
mov r8, r12
lea rdx, [rsp + 0x30]
mov rcx, qword [rbp + 0x10]
call fcn.140184800
mov qword [rsp + 0x20], r12
lea r9, [rsp + 0x20]
lea r8, [rsp + 0xc0]
mov rdx, rax
lea rcx, [rsp + 0x30]
call fcn.140182570
mov r11, qword [rsp + 0x20]
mov byte [rsp + r11 + 0xc0], 0
mov dword [rsp + 0x84], ebx
mov dword [rsp + 0x80], ebx
mov qword [rsp + 0x38], rbx
mov dword [rsp + 0x88], 0x67452301
mov dword [rsp + 0x8c], 0xefcdab89
mov dword [rsp + 0x90], 0x98badcfe
mov dword [rsp + 0x94], 0x10325476
mov dword [rsp + 0x98], 0xc3d2e1f0
mov byte [rsp + 0x30], 0
mov rax, qword [rsi + 0x10]
sub rax, 4
or ebp, 0xffffffff
cmp rax, 0x10
jb 0x140187c99
lea r9d, [r12 - 0x3c]
lea r8, [rsp + 0x188]
lea edx, [r12 - 0x30]
mov rcx, rsi
call fcn.140182190
test al, al
je 0x140187c99
mov r13d, dword [rsp + 0x188]
jmp 0x140187c9c
mov r13d, ebp
mov rax, qword [rsi + 0x10]
sub rax, 4
cmp rax, 0xc
jb 0x140187ccf
mov r9d, 4
lea r8, [rsp + 0x188]
lea edx, [r9 + 8]
mov rcx, rsi
call fcn.140182190
test al, al
je 0x140187ccf
mov ebp, dword [rsp + 0x188]
mov r9d, r13d
mov r8d, ebp
mov rdx, rsi
lea rcx, [rsp + 0x30]
call fcn.1401828a0
mov qword [rsp + 0x20], r12
cmp byte [rsp + 0x30], 0
jne 0x140187d79
mov rax, qword [rsp + 0x38]
mov byte [rsp + rax + 0x40], pe_nt_image_headers64
mov rax, qword [rsp + 0x38]
inc rax
mov qword [rsp + 0x38], rax
cmp rax, 0x38
jbe 0x140187d35
cmp rax, r12
jae 0x140187d26
lea rcx, [rsp + rax + 0x40]
sub r12, rax
mov r8, r12
xor edx, edx
call fcn.140196a30
lea rcx, [rsp + 0x30]
call fcn.1401829d0
mov rax, qword [rsp + 0x38]
cmp rax, 0x38
jae 0x140187d50
lea rcx, [rsp + rax + 0x40]
mov r8d, 0x38
sub r8, rax
xor edx, edx
call fcn.140196a30
mov eax, dword [rsp + 0x80]
bswap eax
mov dword [rsp + 0x78], eax
mov eax, dword [rsp + 0x84]
bswap eax
mov dword [rsp + 0x7c], eax
lea rcx, [rsp + 0x30]
call fcn.1401829d0
mov byte [rsp + 0x30], 1
mov rcx, rbx
nop dword [rax]
mov eax, dword [rsp + rcx*4 + 0x88]
bswap eax
mov dword [rsp + rcx*4 + 0x9c], eax
inc rcx
cmp rcx, 5
jb 0x140187d80
lea r9, [rsp + 0x20]
lea r8, [rsp + 0x100]
mov edx, 0x14
lea rcx, [rsp + 0x9c]
call fcn.140182570
mov r11, qword [rsp + 0x20]
mov byte [rsp + r11 + 0x100], 0
lea rax, [0x1401a1a58]
lea rcx, [0x1401a1a70]
test r14b, r14b
cmovne rcx, rax
mov rax, rbx
cmp byte [rdi + 8], al
je 0x140187ded
inc rax
cmp byte [rdi + rax + 8], 0
jne 0x140187de3
movzx edx, byte [rcx]
test dl, dl
je 0x140187e0c
cmp rax, 0x800
jae 0x140187e0c
mov byte [rdi + rax + 8], dl
inc rax
inc rcx
mov dl, byte [rcx]
test dl, dl
jne 0x140187df4
mov byte [rax + rdi + 8], 0
mov r8b, 1
mov rdx, r15
mov rcx, rdi
call fcn.140187960
lea r11, [0x1401a1a88]
mov rcx, rbx
cmp byte [rdi + 8], cl
je 0x140187e40
nop
inc rcx
cmp byte [rdi + rcx + 8], 0
jne 0x140187e30
nop word [rax + rax]
cmp rcx, 0x800
jae 0x140187e5d
movzx eax, byte [r11]
mov byte [rdi + rcx + 8], al
inc rcx
inc r11
cmp byte [r11], 0
jne 0x140187e40
mov byte [rcx + rdi + 8], 0
mov r8b, 1
lea rdx, [rsp + 0xc0]
mov rcx, rdi
call fcn.140187960
lea r11, [0x1401a1a90]
cmp byte [rdi + 8], 0
je 0x140187e90
inc rbx
cmp byte [rdi + rbx + 8], 0
jne 0x140187e82
nop dword [rax]
cmp rbx, 0x800
jae 0x140187ead
movzx eax, byte [r11]
mov byte [rdi + rbx + 8], al
inc rbx
inc r11
cmp byte [r11], 0
jne 0x140187e90
mov byte [rbx + rdi + 8], 0
mov r8b, 1
lea rdx, [rsp + 0x100]
mov rcx, rdi
call fcn.140187960
test r14b, r14b
je 0x140187ed2
mov rcx, rdi
call fcn.140187a90
mov al, 1
lea r11, [rsp + 0x140]
mov rbx, qword [r11 + 0x30]
mov rbp, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
ret