Function at 0x40d7b9
Capabilities:
Encrypt data using rc4 via winapi
Encrypt or decrypt via wincrypt
Hash data via wincrypt
Hash data with md5
Initialize hashing via wincrypt

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
xor ebx, ebx
push edi
push edi
mov dword [ebp - 0x10], ebx
call fcn.00631510
pop ecx
push eax
push str.DecryptSmartftpPassword
push str._s___Input_password_is__d____s
call fcn.00449974
add esp, 0x10
xor esi, esi
cmp byte [edi], bl
je 0x40d80e
mov ebx, edi
push edi
call fcn.00631510
pop ecx
cmp esi, eax
jae 0x40d80b
push ebx
call fcn.00444c25
add ebx, 2
mov byte [esi + edi], al
inc esi
pop ecx
cmp byte [ebx], 0
jne 0x40d7ed
mov ebx, dword [ebp - 0x10]
push edi
push edi
mov byte [esi + edi], 0
mov dword [ebp - 8], esi
call fcn.00631510
pop ecx
push eax
mov esi, str.DecryptSmartftpPassword
push esi
push str._s___Decoded_input_password_is__d____s
call fcn.00449974
add esp, 0x10
xor eax, eax
mov dword [ebp - 4], eax
mov dword [ebp + 8], eax
mov dword [ebp - 0xc], eax
push 0xf0000000
push 1
push str.Microsoft_Enhanced_Cryptographic_Provider_v1.0
push eax
lea eax, [ebp - 4]
push eax
call dword [sym.imp.ADVAPI32.dll_CryptAcquireContextA]
test eax, eax
jne 0x40d86f
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str._nCryptAcquireContext_failed___Error0x_.8x
call fcn.00449974
pop ecx
pop ecx
jmp 0x40d971
lea eax, [ebp + 8]
push eax
push 0
push 0
push 0x8003
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
jne 0x40d897
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str._n_CryptCreateHash_failed___Error0x_.8x
jmp 0x40d863
push 0
push 0x670f30
call fcn.00631510
pop ecx
add eax, eax
push eax
push str.SmartFTP
push dword [ebp + 8]
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
jne 0x40d8c7
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str._n_CryptHashData_failed___Error0x_.8x
jmp 0x40d863
lea eax, [ebp - 0xc]
push eax
push 0x800000
push dword [ebp + 8]
push 0x6801
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_CryptDeriveKey]
test eax, eax
jne 0x40d8f6
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str._n_CryptDeriveKey_failed___Error0x_.8x
jmp 0x40d863
push edi
push dword [ebp - 8]
push str._Performing_decryption_of_data__d___s
call fcn.00449974
add esp, 0xc
lea eax, [ebp - 8]
push eax
push edi
push 0
push 1
push 0
push dword [ebp - 0xc]
call dword [sym.imp.ADVAPI32.dll_CryptDecrypt]
test eax, eax
jne 0x40d936
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push esi
push str._n_CryptDecrypt_failed___Error0x_.8x
call fcn.00449974
add esp, 0xc
jmp 0x40d971
mov esi, dword [ebp + 0xc]
xor ebx, ebx
push ebx
push ebx
push dword [ebp + 0x10]
push esi
push dword [ebp - 8]
push edi
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov eax, dword [ebp - 8]
shr eax, 1
push esi
push esi
mov byte [eax + esi], bl
call fcn.00631510
pop ecx
push eax
push str.DecryptSmartftpPassword
push str._s___Decryption_Successfull___final_password_is__d____s
call fcn.00449974
add esp, 0x10
inc ebx
cmp dword [ebp - 0xc], 0
je 0x40d980
push dword [ebp - 0xc]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyKey]
cmp dword [ebp + 8], 0
je 0x40d98f
push dword [ebp + 8]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
cmp dword [ebp - 4], 0
je 0x40d9a0
push 0
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
pop edi
pop esi
mov eax, ebx
pop ebx
leave
ret