Function at 0x140231b50
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 0x140231b9a
call fcn.140231220
test al, al
je 0x140231ed4
call fcn.140229910
mov rbp, rax
xor ebx, ebx
cmp qword [rax + 0x10], rbx
jne 0x140231bcd
lea ecx, [rbx + 0x10]
call fcn.14023be5c
mov qword [rsp + 0x20], rax
test rax, rax
je 0x140231bc6
mov rcx, rax
call fcn.14022de10
jmp 0x140231bc9
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.14022e800
mov qword [rsp + 0x20], r12
lea r9, [rsp + 0x20]
lea r8, [rsp + 0xc0]
mov rdx, rax
lea rcx, [rsp + 0x30]
call fcn.14022c570
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 0x140231c99
lea r9d, [r12 - 0x3c]
lea r8, [rsp + 0x188]
lea edx, [r12 - 0x30]
mov rcx, rsi
call fcn.14022c190
test al, al
je 0x140231c99
mov r13d, dword [rsp + 0x188]
jmp 0x140231c9c
mov r13d, ebp
mov rax, qword [rsi + 0x10]
sub rax, 4
cmp rax, 0xc
jb 0x140231ccf
mov r9d, 4
lea r8, [rsp + 0x188]
lea edx, [r9 + 8]
mov rcx, rsi
call fcn.14022c190
test al, al
je 0x140231ccf
mov ebp, dword [rsp + 0x188]
mov r9d, r13d
mov r8d, ebp
mov rdx, rsi
lea rcx, [rsp + 0x30]
call fcn.14022c8a0
mov qword [rsp + 0x20], r12
cmp byte [rsp + 0x30], 0
jne 0x140231d79
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 0x140231d35
cmp rax, r12
jae 0x140231d26
lea rcx, [rsp + rax + 0x40]
sub r12, rax
mov r8, r12
xor edx, edx
call fcn.140240a30
lea rcx, [rsp + 0x30]
call fcn.14022c9d0
mov rax, qword [rsp + 0x38]
cmp rax, 0x38
jae 0x140231d50
lea rcx, [rsp + rax + 0x40]
mov r8d, 0x38
sub r8, rax
xor edx, edx
call fcn.140240a30
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.14022c9d0
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 0x140231d80
lea r9, [rsp + 0x20]
lea r8, [rsp + 0x100]
mov edx, 0x14
lea rcx, [rsp + 0x9c]
call fcn.14022c570
mov r11, qword [rsp + 0x20]
mov byte [rsp + r11 + 0x100], 0
lea rax, [0x14024ba58]
lea rcx, [0x14024ba70]
test r14b, r14b
cmovne rcx, rax
mov rax, rbx
cmp byte [rdi + 8], al
je 0x140231ded
inc rax
cmp byte [rdi + rax + 8], 0
jne 0x140231de3
movzx edx, byte [rcx]
test dl, dl
je 0x140231e0c
cmp rax, 0x800
jae 0x140231e0c
mov byte [rdi + rax + 8], dl
inc rax
inc rcx
mov dl, byte [rcx]
test dl, dl
jne 0x140231df4
mov byte [rax + rdi + 8], 0
mov r8b, 1
mov rdx, r15
mov rcx, rdi
call fcn.140231960
lea r11, [0x14024ba88]
mov rcx, rbx
cmp byte [rdi + 8], cl
je 0x140231e40
nop
inc rcx
cmp byte [rdi + rcx + 8], 0
jne 0x140231e30
nop word [rax + rax]
cmp rcx, 0x800
jae 0x140231e5d
movzx eax, byte [r11]
mov byte [rdi + rcx + 8], al
inc rcx
inc r11
cmp byte [r11], 0
jne 0x140231e40
mov byte [rcx + rdi + 8], 0
mov r8b, 1
lea rdx, [rsp + 0xc0]
mov rcx, rdi
call fcn.140231960
lea r11, [0x14024ba90]
cmp byte [rdi + 8], 0
je 0x140231e90
inc rbx
cmp byte [rdi + rbx + 8], 0
jne 0x140231e82
nop dword [rax]
cmp rbx, 0x800
jae 0x140231ead
movzx eax, byte [r11]
mov byte [rdi + rbx + 8], al
inc rbx
inc r11
cmp byte [r11], 0
jne 0x140231e90
mov byte [rbx + rdi + 8], 0
mov r8b, 1
lea rdx, [rsp + 0x100]
mov rcx, rdi
call fcn.140231960
test r14b, r14b
je 0x140231ed2
mov rcx, rdi
call fcn.140231a90
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