Function at 0x140018e88
Capabilities:
Encode data using xor
Hash data using sha1

Disassembly:
mov rax, rsp
mov qword [rax + 8], rbx
mov qword [rax + 0x18], rbp
mov qword [rax + 0x20], rsi
mov qword [rax + 0x10], rdx
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x20
mov r8d, dword [rcx + 8]
mov rbp, rdx
mov rbx, rcx
lea edi, [r8*8]
shr r8, 2
add rdi, qword [rcx]
mov eax, dword [rcx + r8*4 + 0x20]
shl eax, 8
bts eax, 7
mov dword [rcx + r8*4 + 0x20], eax
inc dword [rcx + 8]
cmp dword [rcx + 8], 0x40
jne 0x140018ee0
call fcn.14001923c
mov eax, dword [rbx + 8]
xor esi, esi
cmp eax, 0x38
je 0x140019087
shr rax, 2
shl dword [rbx + rax*4 + 0x20], 8
inc dword [rbx + 8]
mov eax, dword [rbx + 8]
cmp eax, 0x40
jne 0x140019079
lea rcx, [rbx + 0x28]
mov edx, eax
mov eax, dword [rcx + 0x2c]
xor eax, dword [rcx + 0x18]
xor eax, dword [rcx - 8]
xor eax, dword [rcx]
lea rcx, [rcx + 4]
rol eax, 1
mov dword [rcx + 0x34], eax
sub rdx, 1
jne 0x140018f0c
mov r12d, dword [rbx + 0xc]
lea r11, [rbx + 0x20]
mov r13d, dword [rbx + 0x10]
lea r14d, [rdx + 0x14]
mov r8d, dword [rbx + 0x14]
mov ebp, r12d
mov r10d, dword [rbx + 0x18]
mov r9d, r13d
mov r15d, dword [rbx + 0x1c]
mov eax, r8d
mov edx, r9d
and eax, r9d
not edx
and edx, r10d
mov ecx, ebp
rol ecx, 5
or edx, eax
add ecx, r15d
mov r15d, r10d
add ecx, edx
mov r10d, r8d
add ecx, dword [r11]
mov r8d, r9d
ror r8d, 2
lea r11, [r11 + 4]
mov r9d, ebp
lea ebp, [rcx + 0x5a827999]
sub r14, 1
jne 0x140018f48
mov r14d, 0x14
lea rdx, [rbx + 0x70]
mov r11d, r14d
mov eax, r10d
mov ecx, ebp
xor eax, r8d
rol ecx, 5
xor eax, r9d
add eax, ecx
add eax, dword [rdx]
lea rdx, [rdx + 4]
add eax, r15d
mov r15d, r10d
mov r10d, r8d
mov r8d, r9d
ror r8d, 2
mov r9d, ebp
lea ebp, [rax + 0x6ed9eba1]
sub r11, 1
jne 0x140018f92
lea r11, [rbx + 0xc0]
mov edx, ebp
mov ecx, r8d
or ecx, r9d
rol edx, 5
and ecx, r10d
mov eax, r8d
and eax, r9d
or ecx, eax
add ecx, dword [r11]
lea eax, [r15 + rdx]
add eax, 0x8f1bbcdc
lea r11, [r11 + 4]
add eax, ecx
mov r15d, r10d
mov r10d, r8d
mov r8d, r9d
ror r8d, 2
mov r9d, ebp
mov ebp, eax
sub r14, 1
jne 0x140018fce
lea rdx, [rbx + 0x110]
lea r11d, [r14 + 0x14]
mov eax, r10d
mov ecx, ebp
xor eax, r8d
rol ecx, 5
xor eax, r9d
add ecx, r15d
add eax, 0xca62c1d6
mov r15d, r10d
add eax, dword [rdx]
mov r10d, r8d
mov r8d, r9d
lea rdx, [rdx + 4]
add eax, ecx
ror r8d, 2
mov r9d, ebp
mov ebp, eax
sub r11, 1
jne 0x140019019
add dword [rbx + 0x14], r8d
add eax, r12d
add dword [rbx + 0x18], r10d
add dword [rbx + 0x1c], r15d
add qword [rbx], 0x200
mov dword [rbx + 0xc], eax
lea eax, [r9 + r13]
mov dword [rbx + 0x10], eax
mov dword [rbx + 8], esi
mov eax, esi
jmp 0x140018eee
cmp eax, 0x38
jne 0x140018eee
mov rbp, qword [rsp + 0x58]
mov edx, eax
mov rcx, rdi
shr rdx, 2
shr rcx, 0x38
mov eax, dword [rbx + rdx*4 + 0x20]
shl eax, 8
or ecx, eax
mov dword [rbx + rdx*4 + 0x20], ecx
inc dword [rbx + 8]
cmp dword [rbx + 8], 0x40
jne 0x1400190b2
mov rcx, rbx
call fcn.14001923c
mov edx, dword [rbx + 8]
mov rax, rdi
shr rax, 0x30
shr rdx, 2
movzx ecx, al
mov eax, dword [rbx + rdx*4 + 0x20]
shl eax, 8
or ecx, eax
mov dword [rbx + rdx*4 + 0x20], ecx
inc dword [rbx + 8]
cmp dword [rbx + 8], 0x40
jne 0x1400190e1
mov rcx, rbx
call fcn.14001923c
mov edx, dword [rbx + 8]
mov rax, rdi
shr rax, 0x28
shr rdx, 2
movzx ecx, al
mov eax, dword [rbx + rdx*4 + 0x20]
shl eax, 8
or ecx, eax
mov dword [rbx + rdx*4 + 0x20], ecx
inc dword [rbx + 8]
cmp dword [rbx + 8], 0x40
jne 0x140019110
mov rcx, rbx
call fcn.14001923c
mov edx, dword [rbx + 8]
mov rax, rdi
shr rax, 0x20
shr rdx, 2
movzx ecx, al
mov eax, dword [rbx + rdx*4 + 0x20]
shl eax, 8
or ecx, eax
mov dword [rbx + rdx*4 + 0x20], ecx
inc dword [rbx + 8]
cmp dword [rbx + 8], 0x40
jne 0x14001913f
mov rcx, rbx
call fcn.14001923c
mov edx, dword [rbx + 8]
mov rax, rdi
shr rax, 0x18
shr rdx, 2
movzx ecx, al
mov eax, dword [rbx + rdx*4 + 0x20]
shl eax, 8
or ecx, eax
mov dword [rbx + rdx*4 + 0x20], ecx
inc dword [rbx + 8]
cmp dword [rbx + 8], 0x40
jne 0x14001916e
mov rcx, rbx
call fcn.14001923c
mov edx, dword [rbx + 8]
mov rax, rdi
shr rax, 0x10
shr rdx, 2
movzx ecx, al
mov eax, dword [rbx + rdx*4 + 0x20]
shl eax, 8
or ecx, eax
mov dword [rbx + rdx*4 + 0x20], ecx
inc dword [rbx + 8]
cmp dword [rbx + 8], 0x40
jne 0x14001919d
mov rcx, rbx
call fcn.14001923c
mov edx, dword [rbx + 8]
mov rax, rdi
shr rax, 8
shr rdx, 2
movzx ecx, al
mov eax, dword [rbx + rdx*4 + 0x20]
shl eax, 8
or ecx, eax
mov dword [rbx + rdx*4 + 0x20], ecx
inc dword [rbx + 8]
cmp dword [rbx + 8], 0x40
jne 0x1400191cc
mov rcx, rbx
call fcn.14001923c
mov edx, dword [rbx + 8]
shr rdx, 2
movzx eax, dil
mov ecx, dword [rbx + rdx*4 + 0x20]
shl ecx, 8
or ecx, eax
mov dword [rbx + rdx*4 + 0x20], ecx
inc dword [rbx + 8]
cmp dword [rbx + 8], 0x40
jne 0x1400191f5
mov rcx, rbx
call fcn.14001923c
mov edx, InitCommonControls
mov rcx, rsi
shr rcx, 2
mov al, byte [rbx + rcx*4 + 0xf]
mov byte [rsi + rbp], al
inc rsi
shl dword [rbx + rcx*4 + 0xc], 8
sub rdx, 1
jne 0x1400191fa
mov rbx, qword [rsp + 0x50]
mov rbp, qword [rsp + 0x60]
mov rsi, qword [rsp + 0x68]
add rsp, 0x20
pop r15
pop r14
pop r13
pop r12
pop rdi
ret