Function at 0x140010420
Capabilities:
Encode data using xor
Generate random numbers via winapi
Hash data with crc32

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rbp
push rsi
push rdi
push r14
sub rsp, 0x60
mov rax, qword [0x14002a010]
xor rax, rsp
mov qword [rsp + 0x58], rax
mov rsi, rcx
mov rcx, qword [rcx + 8]
cmp qword [rcx + 0x28], 0
jne 0x140010459
mov eax, 5
jmp 0x14001085c
xor ebp, ebp
lea r14d, [rbp + 1]
cmp qword [rcx + 0x10], rbp
je 0x1400105a2
cmp qword [rcx + 0x18], 8
jb 0x140010473
mov rcx, qword [rcx]
lea rdx, [0x140024428]
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__wcsicmp]
test eax, eax
je 0x1400105a2
mov rcx, qword [rsi + 8]
cmp qword [rcx + 0x18], 8
jb 0x140010496
mov rcx, qword [rcx]
lea rdx, str.Rijndael
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__wcsicmp]
test eax, eax
je 0x1400105a2
mov rcx, qword [rsi + 8]
cmp qword [rcx + 0x18], 8
jb 0x1400104b9
mov rcx, qword [rcx]
lea rdx, str.TWOFISH
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__wcsicmp]
test eax, eax
jne 0x1400104d2
mov edi, r14d
jmp 0x1400105a4
mov rcx, qword [rsi + 8]
cmp qword [rcx + 0x18], 8
jb 0x1400104e0
mov rcx, qword [rcx]
lea rdx, str.SERPENT
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__wcsicmp]
test eax, eax
jne 0x1400104f9
lea edi, [rax + 2]
jmp 0x1400105a4
mov rcx, qword [rsi + 8]
cmp qword [rcx + 0x18], 8
jb 0x140010507
mov rcx, qword [rcx]
lea rdx, str.AES_TWOFISH
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__wcsicmp]
test eax, eax
jne 0x140010520
lea edi, [rax + 3]
jmp 0x1400105a4
mov rcx, qword [rsi + 8]
cmp qword [rcx + 0x18], 8
jb 0x14001052e
mov rcx, qword [rcx]
lea rdx, str.TWOFISH_SERPENT
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__wcsicmp]
test eax, eax
jne 0x140010544
lea edi, [rax + 4]
jmp 0x1400105a4
mov rcx, qword [rsi + 8]
cmp qword [rcx + 0x18], 8
jb 0x140010552
mov rcx, qword [rcx]
lea rdx, str.SERPENT_AES
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__wcsicmp]
test eax, eax
jne 0x140010568
lea edi, [rax + 5]
jmp 0x1400105a4
mov rcx, qword [rsi + 8]
cmp qword [rcx + 0x18], 8
jb 0x140010576
mov rcx, qword [rcx]
lea rdx, str.AES_TWOFISH_SERPENT
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__wcsicmp]
test eax, eax
jne 0x14001058c
lea edi, [rax + 6]
jmp 0x1400105a4
lea rcx, str.Unknown_Cipher._n
call fcn.14000f040
mov eax, 3
jmp 0x14001085c
mov edi, ebp
mov rcx, qword [rsi + 0x10]
mov rax, qword [rcx]
call qword [rax + 0x18]
mov rcx, qword [rsi + 8]
mov byte [rcx + 0x20], al
mov rax, qword [rsi + 8]
cmp byte [rax + 0x20], bpl
je 0x140010744
lea rcx, str.Creating_DC_header_n
call fcn.14000f040
mov edx, 0x800
xor ecx, ecx
lea r9d, [rcx + 4]
mov r8d, 0x3000
call qword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov rbx, rax
mov qword [rsp + 0x20], rax
test rax, rax
je 0x140010602
mov edx, 0x800
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_VirtualLock]
nop
test rbx, rbx
jne 0x14001061c
lea rcx, str.Malloc_Failed_n
call fcn.14000f040
nop
lea eax, [rbx + 0xd]
jmp 0x14001085c
xor edx, edx
mov r8d, 0x800
mov rcx, rbx
call sub.VCRUNTIME140.dll_memset
lea rdx, [rbx + 0x4e]
xor ecx, ecx
lea r9d, [rcx + 2]
lea r8d, [rcx + 4]
call qword [sym.imp.bcrypt.dll_BCryptGenRandom]
lea rdx, [rbx + 0x56]
xor ecx, ecx
lea r9d, [rcx + 2]
mov r8d, pe_nt_image_headers64
call qword [sym.imp.bcrypt.dll_BCryptGenRandom]
mov dword [rbx + 0x40], 0x50524344
mov word [rbx + 0x48], r14w
lea r8, [rbx + 0x4a]
mov dword [r8], 8
mov dword [rbx + 0x52], edi
mov qword [rbx + 0x25a], 0x800
mov edx, 0xffffffff
mov edi, 0x1ee
lea r9, [0x140022650]
nop dword [rax]
movzx ecx, byte [r8 - 2]
movzx eax, dl
xor rcx, rax
shr edx, 8
xor edx, dword [r9 + rcx*4]
movzx ecx, byte [r8 - 1]
movzx eax, dl
xor rcx, rax
shr edx, 8
xor edx, dword [r9 + rcx*4]
movzx ecx, byte [r8]
movzx eax, dl
xor rcx, rax
shr edx, 8
xor edx, dword [r9 + rcx*4]
movzx ecx, byte [r8 + 1]
movzx eax, dl
xor rcx, rax
shr edx, 8
xor edx, dword [r9 + rcx*4]
lea r8, [r8 + 4]
sub rdi, 1
jne 0x140010690
not edx
mov dword [rbx + 0x44], edx
mov rax, qword [rsi]
mov rdx, rbx
mov rcx, rsi
call qword [rax + 0x58]
nop
lea r8d, [rdi + 0x30]
lea rdx, [rsp + 0x28]
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_VirtualQuery]
cmp rax, 0x30
jne 0x140010733
cmp qword [rsp + 0x28], rbx
jne 0x140010733
cmp qword [rsp + 0x30], rbx
jne 0x140010733
mov rdi, rbx
xor eax, eax
mov rcx, qword [rsp + 0x40]
rep stosb byte [rdi], al
mov rdx, qword [rsp + 0x40]
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_VirtualUnlock]
xor edx, edx
mov r8d, 0x8000
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_VirtualFree]
lea rcx, str.Trying_to_decrypt_header...
call fcn.14000f040
mov edx, 0x800
xor ecx, ecx
lea r9d, [rcx + 4]
mov r8d, 0x3000
call qword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov rbx, rax
mov qword [rsp + 0x20], rax
test rax, rax
je 0x140010783
mov edx, 0x800
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_VirtualLock]
nop
test rbx, rbx
jne 0x140010799
lea rcx, str.Malloc_Failed_n
call fcn.14000f040
lea ebp, [rbx + 0xd]
jmp 0x140010802
mov rcx, qword [rsi + 0x10]
mov rax, qword [rcx]
xor r9d, r9d
mov r8d, 0x800
mov rdx, rbx
call qword [rax + 0x38]
mov rdx, qword [rsi + 8]
mov rdx, qword [rdx + 0x28]
mov rcx, rbx
call fcn.14001a8c0
test eax, eax
je 0x1400107e0
mov r8, qword [rsi + 8]
add r8, 0x30
lea rcx, [rbx + 0x56]
mov edx, dword [rbx + 0x52]
call fcn.14001a550
lea rcx, str._SUCCESS._n
jmp 0x1400107fc
mov rax, qword [rsi + 8]
mov ebp, 4
mov ecx, 7
cmp byte [rax + 0x20], 0
cmovne ebp, ecx
lea rcx, str._FAILED._n
call fcn.14000f040
nop
test rbx, rbx
je 0x14001085a
mov r8d, 0x30
lea rdx, [rsp + 0x28]
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_VirtualQuery]
cmp rax, 0x30
jne 0x140010849
cmp qword [rsp + 0x28], rbx
jne 0x140010849
cmp qword [rsp + 0x30], rbx
jne 0x140010849
mov rdi, rbx
xor eax, eax
mov rcx, qword [rsp + 0x40]
rep stosb byte [rdi], al
mov rdx, qword [rsp + 0x40]
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_VirtualUnlock]
xor edx, edx
mov r8d, 0x8000
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_VirtualFree]
mov eax, ebp
mov rcx, qword [rsp + 0x58]
xor rcx, rsp
call fcn.14001ef00
lea r11, [rsp + 0x60]
mov rbx, qword [r11 + 0x28]
mov rbp, qword [r11 + 0x30]
mov rsp, r11
pop r14
pop rdi
pop rsi
ret