Function at 0x40bc70
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
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
mov eax, dword [0x43800c]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov eax, ecx
mov dword [ebp - 0x20], edx
xor edi, edi
mov dword [ebp - 0x1c], eax
push eax
or ebx, 0xffffffff
mov dword [ebp - 0xc], edi
mov dword [ebp - 0x14], edi
xor esi, esi
mov dword [ebp - 8], edi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
push esi
push 1
push str.Microsoft_Enhanced_Cryptographic_Provider_v1.0
push esi
lea eax, [ebp - 0xc]
mov dword [ebp - 0x10], esi
push eax
mov dword [ebp - 0x18], esi
call dword [sym.imp.ADVAPI32.dll_CryptAcquireContextW]
test eax, eax
jne 0x40bce8
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x80090016
jne 0x40bce8
push 8
push 1
push str.Microsoft_Enhanced_Cryptographic_Provider_v1.0
push esi
lea eax, [ebp - 0xc]
push eax
call dword [sym.imp.ADVAPI32.dll_CryptAcquireContextW]
test eax, eax
je 0x40be06
lea eax, [ebp - 8]
push eax
push 0
push 0
push 0x8003
push dword [ebp - 0xc]
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
je 0x40be06
push 0
push str.F82B3070_8C29_42FF_9A74_28699A1F2BCD
call dword [sym.imp.KERNEL32.dll_lstrlenW]
push eax
push str.F82B3070_8C29_42FF_9A74_28699A1F2BCD
push dword [ebp - 8]
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
je 0x40be06
lea eax, [ebp - 0x14]
push eax
push 0x800000
push dword [ebp - 8]
push 0x6801
push dword [ebp - 0xc]
call dword [sym.imp.ADVAPI32.dll_CryptDeriveKey]
test eax, eax
je 0x40be06
push 0
push 0
push 0
push 0
push 0xffffffffffffffff
push dword [ebp - 0x1c]
push 0
push 0xfde9
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov ebx, eax
and eax, 7
sub ebx, eax
add ebx, 8
push ebx
call fcn.00419db8
mov esi, eax
add esp, 4
test esi, esi
je 0x40be03
push ebx
push 0
push esi
call fcn.00417e70
add esp, 0xc
push 0
push 0
push ebx
push esi
push 0xffffffffffffffff
push dword [ebp - 0x1c]
push 0
push 0xfde9
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
push ebx
mov dword [ebp - 0x10], eax
lea eax, [ebp - 0x10]
push eax
push esi
push 0
push 1
push 0
push dword [ebp - 0x14]
call dword [sym.imp.ADVAPI32.dll_CryptEncrypt]
test eax, eax
je 0x40be03
push 0
push 0x80
push 2
push 0
push 1
push 2
push dword [ebp - 0x20]
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov ebx, eax
cmp ebx, 0xffffffff
je 0x40be06
push 0
lea eax, [ebp - 0x18]
push eax
push dword [ebp - 0x10]
push esi
push ebx
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
mov ecx, 1
cmovne edi, ecx
test ebx, ebx
je 0x40be11
jmp 0x40be06
or ebx, 0xffffffff
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test esi, esi
je 0x40be1a
push esi
call fcn.00419c84
add esp, 4
mov eax, dword [ebp - 8]
test eax, eax
je 0x40be2f
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov dword [ebp - 8], 0
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x40be3d
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyKey]
mov eax, dword [ebp - 0xc]
test eax, eax
je 0x40be4d
push 0
push eax
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
mov ecx, dword [ebp - 4]
mov eax, edi
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004165a1
mov esp, ebp
pop ebp
ret