Function at 0x409fe4
Capabilities:
Create new key via cryptacquirecontext
Encrypt data using aes via winapi
Encrypt or decrypt via wincrypt

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xfe0
mov eax, dword [0x708c34]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
mov edi, dword [ebp + 0xc]
push esi
push esi
call fcn.00631510
pop ecx
push eax
mov ebx, str.DecryptFFFTPPasword
push ebx
push str._s:_Decoding_input_password___d___s
call fcn.00449974
add esp, 0x10
cmp byte [esi], 0x30
jne 0x40a267
cmp byte [esi + 1], 0x43
jne 0x40a267
push 0x3a
push esi
call fcn.006270b0
mov ebx, eax
pop ecx
pop ecx
test ebx, ebx
jne 0x40a04e
push str.DecryptFFFTPPasword
push str._s:_Encoded_password_is_invalid.__Does_not_have_:
jmp 0x40a26d
lea eax, [esi + 2]
mov byte [ebx], 0
push eax
mov esi, 0x3e8
lea eax, [ebp - 0x7d4]
push esi
push eax
call fcn.006311ec
lea eax, [ebx + 1]
push eax
lea eax, [ebp - 0x3ec]
push esi
push eax
call fcn.006311ec
lea eax, [ebp - 0xfa4]
push eax
lea eax, [ebp - 0x7d4]
push eax
call fcn.00449e5f
lea eax, [ebp - 0x7d4]
push eax
call fcn.00631510
mov esi, eax
lea eax, [ebp - 0xbbc]
push eax
lea eax, [ebp - 0x3ec]
shr esi, 1
push eax
call fcn.00449e5f
lea eax, [ebp - 0x3ec]
push eax
call fcn.00631510
mov ebx, eax
lea eax, [ebp - 0x3ec]
push eax
shr ebx, 1
lea eax, [ebp - 0x7d4]
push ebx
push eax
push esi
mov esi, str.DecryptFFFTPPasword
push esi
push str._s:_Final_string_IV___d___s__Password_is___d____s
call fcn.00449974
add esp, 0x48
lea eax, [ebp - 0xfdc]
push 0xf0000000
push 0x18
push 0
push 0
push eax
call dword [sym.imp.ADVAPI32.dll_CryptAcquireContextA]
test eax, eax
jne 0x40a117
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push esi
push str._s:_CryptAcquireContext_failed__Error0x_.8x
call fcn.00449974
add esp, 0xc
jmp 0x40a274
lea eax, [ebp - 0xfc4]
mov dword [ebp - 0xfd0], 0x208
push eax
push dword [ebp - 0xfdc]
mov dword [ebp - 0xfcc], 0x6610
mov dword [ebp - 0xfc8], 0x20
call fcn.004074ec
pop ecx
pop ecx
lea eax, [ebp - 0xfd4]
push eax
push 0
push 0
push 0x2c
lea eax, [ebp - 0xfd0]
push eax
push dword [ebp - 0xfdc]
call dword [sym.imp.ADVAPI32.dll_CryptImportKey]
test eax, eax
jne 0x40a17c
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push esi
push str._s:_CryptImportKey_failed__Error0x_.8x
jmp 0x40a10a
mov esi, dword [sym.imp.ADVAPI32.dll_CryptSetKeyParam]
lea eax, [ebp - 0xfe0]
push 0
push eax
push 4
push dword [ebp - 0xfd4]
mov dword [ebp - 0xfe0], 1
call esi
test eax, eax
jne 0x40a1b9
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.DecryptFFFTPPasword
push str._s:_CryptSetKeyParam_failed_to_set_CBC_MODE__Error0x_.8x
jmp 0x40a10a
push 0
lea eax, [ebp - 0xfa4]
push eax
push 1
push dword [ebp - 0xfd4]
call esi
test eax, eax
jne 0x40a1e6
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.DecryptFFFTPPasword
push str._s:_CryptSetKeyParam_failed__Error0x_.8x
jmp 0x40a10a
lea eax, [ebp - 0xfd8]
mov dword [ebp - 0xfd8], ebx
push eax
lea eax, [ebp - 0xbbc]
xor ebx, ebx
push eax
push ebx
push ebx
push ebx
push dword [ebp - 0xfd4]
call dword [sym.imp.ADVAPI32.dll_CryptDecrypt]
test eax, eax
jne 0x40a225
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.DecryptFFFTPPasword
push str._s:_CryptDecrypt_failed__Error0x_.8x
jmp 0x40a10a
mov eax, dword [ebp - 0xfd8]
mov ecx, 0x3e8
cmp eax, ecx
jae 0x40a285
mov byte [ebp + eax - 0xbbc], bl
lea eax, [ebp - 0xbbc]
push eax
push ecx
push edi
call fcn.006311ec
push edi
push dword [ebp - 0xfd8]
push str.DecryptFFFTPPasword
push str._s:_Successfully_decrypted_the_password___d___s
call fcn.00449974
xor eax, eax
add esp, 0x1c
inc eax
jmp 0x40a276
push ebx
push str._s:_Encoded_password_is_invalid_or_different_version._Not_begins_with_0C
call fcn.00449974
pop ecx
pop ecx
xor eax, eax
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.005fe955
leave
ret
call fcn.005fe87a
int3