Function at 0x458b20
Capabilities:
Encrypt data using des via winapi
Encrypt or decrypt via wincrypt
Hash data using sha1
Hash data using sha1 via wincrypt
Hash data via wincrypt
Initialize hashing via wincrypt

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x444
mov eax, dword [0x4fc040]
xor eax, ebp
mov dword [ebp - 4], eax
push 0xf0000000
push 1
push str.Microsoft_Enhanced_Cryptographic_Provider_v1.0
push 0
lea eax, [ebp - 0x40c]
mov dword [ebp - 0x424], edx
push eax
mov dword [ebp - 0x420], ecx
mov dword [ebp - 0x40c], 0
mov dword [ebp - 0x410], 0
mov dword [ebp - 0x408], 0
call dword [sym.imp.ADVAPI32.dll_CryptAcquireContextA]
test eax, eax
jne 0x458b90
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00495b16
mov esp, ebp
pop ebp
ret
push esi
lea eax, [ebp - 0x408]
push eax
push 0
push 0
push 0x8004
push dword [ebp - 0x40c]
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
jne 0x458c03
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, dword [ebp - 0x410]
mov esi, eax
test ecx, ecx
je 0x458bca
push ecx
call dword [sym.imp.ADVAPI32.dll_CryptDestroyKey]
mov ecx, dword [ebp - 0x408]
test ecx, ecx
je 0x458bdb
push ecx
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov eax, dword [ebp - 0x40c]
test eax, eax
je 0x458c8b
push 0
push eax
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
mov eax, esi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00495b16
mov esp, ebp
pop ebp
ret
lea eax, [ebp - 0x414]
mov dword [ebp - 0x414], 0
push eax
push 0
push 8
call dword [sym.imp.KERNEL32.dll_GetCurrentThread]
push eax
call dword [sym.imp.ADVAPI32.dll_OpenThreadToken]
mov esi, dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x458c9c
call esi
cmp eax, 0x3f0
jne 0x458c9c
lea eax, [ebp - 0x414]
push eax
push 8
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.ADVAPI32.dll_OpenProcessToken]
test eax, eax
jne 0x458c9c
call esi
mov ecx, dword [ebp - 0x410]
mov esi, eax
test ecx, ecx
je 0x458c67
push ecx
call dword [sym.imp.ADVAPI32.dll_CryptDestroyKey]
mov ecx, dword [ebp - 0x408]
test ecx, ecx
je 0x458c78
push ecx
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov eax, dword [ebp - 0x40c]
test eax, eax
je 0x458c8b
push 0
push eax
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
mov eax, esi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00495b16
mov esp, ebp
pop ebp
ret
push edi
lea eax, [ebp - 0x41c]
mov dword [ebp - 0x41c], 0
push eax
push 0
push 0
push 1
push dword [ebp - 0x414]
call dword [sym.imp.ADVAPI32.dll_GetTokenInformation]
test eax, eax
jne 0x458d25
call esi
mov edi, eax
cmp edi, 0x7a
je 0x458d25
mov ecx, dword [ebp - 0x410]
test ecx, ecx
je 0x458cde
push ecx
call dword [sym.imp.ADVAPI32.dll_CryptDestroyKey]
mov eax, dword [ebp - 0x408]
test eax, eax
je 0x458cef
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov eax, dword [ebp - 0x40c]
test eax, eax
je 0x458d02
push 0
push eax
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
mov eax, dword [ebp - 0x414]
test eax, eax
je 0x458d13
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, edi
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00495b16
mov esp, ebp
pop ebp
ret
push dword [ebp - 0x41c]
call fcn.00495f6c
add esp, 4
mov edi, eax
lea eax, [ebp - 0x41c]
push eax
push dword [ebp - 0x41c]
push edi
push 1
push dword [ebp - 0x414]
call dword [sym.imp.ADVAPI32.dll_GetTokenInformation]
test eax, eax
jne 0x458db5
call esi
mov ecx, dword [ebp - 0x410]
mov esi, eax
test ecx, ecx
je 0x458d6a
push ecx
call dword [sym.imp.ADVAPI32.dll_CryptDestroyKey]
mov ecx, dword [ebp - 0x408]
test ecx, ecx
je 0x458d7b
push ecx
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov eax, dword [ebp - 0x40c]
test eax, eax
je 0x458d8e
push 0
push eax
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
mov eax, dword [ebp - 0x414]
test eax, eax
je 0x458e43
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
pop edi
mov eax, esi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00495b16
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x414]
test eax, eax
je 0x458dc6
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0
push dword [edi]
call dword [sym.imp.ADVAPI32.dll_GetLengthSid]
push eax
push dword [edi]
push dword [ebp - 0x408]
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
je 0x458e0a
lea eax, [ebp - 0x410]
push eax
push 0xa80010
push dword [ebp - 0x408]
push 0x6603
push dword [ebp - 0x40c]
call dword [sym.imp.ADVAPI32.dll_CryptDeriveKey]
test eax, eax
jne 0x458e55
call esi
mov ecx, dword [ebp - 0x410]
mov esi, eax
test ecx, ecx
je 0x458e1f
push ecx
call dword [sym.imp.ADVAPI32.dll_CryptDestroyKey]
mov ecx, dword [ebp - 0x408]
test ecx, ecx
je 0x458e30
push ecx
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov eax, dword [ebp - 0x40c]
test eax, eax
je 0x458e43
push 0
push eax
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
pop edi
mov eax, esi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00495b16
mov esp, ebp
pop ebp
ret
lea ecx, [ebp - 0x444]
call fcn.00459060
push dword [ebp - 0x420]
call fcn.00459490
push 0x400
lea eax, [ebp - 0x404]
push 0
push eax
call fcn.00497aa0
mov edi, dword [ebp - 0x430]
add esp, 0xc
mov dword [ebp - 0x418], edi
cmp edi, 4
jae 0x458ee5
mov eax, dword [ebp - 0x410]
test eax, eax
je 0x458ea3
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyKey]
mov eax, dword [ebp - 0x408]
test eax, eax
je 0x458eb4
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov eax, dword [ebp - 0x40c]
test eax, eax
je 0x458ec7
push 0
push eax
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
lea ecx, [ebp - 0x444]
call fcn.004590c0
pop edi
or eax, 0xffffffff
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00495b16
mov esp, ebp
pop ebp
ret
push edi
lea ecx, [ebp - 0x444]
call fcn.004590f0
push eax
lea eax, [ebp - 0x404]
push eax
call fcn.00497c70
add esp, 0xc
cmp byte [ebp + edi - 0x405], 0
jne 0x458f3a
cmp byte [ebp + edi - 0x406], 0
lea eax, [edi - 1]
mov dword [ebp - 0x418], eax
jne 0x458f3a
cmp byte [ebp + edi - 0x407], 0
lea eax, [edi - 2]
mov dword [ebp - 0x418], eax
jne 0x458f3a
lea eax, [edi - 3]
mov dword [ebp - 0x418], eax
lea eax, [ebp - 0x418]
push eax
lea eax, [ebp - 0x404]
push eax
push 0
push 1
push 0
push dword [ebp - 0x410]
call dword [sym.imp.ADVAPI32.dll_CryptDecrypt]
test eax, eax
jne 0x458fb4
call esi
mov ecx, dword [ebp - 0x410]
mov esi, eax
test ecx, ecx
je 0x458f73
push ecx
call dword [sym.imp.ADVAPI32.dll_CryptDestroyKey]
mov ecx, dword [ebp - 0x408]
test ecx, ecx
je 0x458f84
push ecx
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov eax, dword [ebp - 0x40c]
test eax, eax
je 0x458f97
push 0
push eax
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
lea ecx, [ebp - 0x444]
call fcn.004590c0
pop edi
mov eax, esi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00495b16
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x418]
cmp eax, 0x400
jae 0x45904c
mov byte [ebp + eax - 0x404], 0
inc eax
cmp eax, 0x400
jae 0x45904c
push eax
mov byte [ebp + eax - 0x404], 0
lea eax, [ebp - 0x404]
push eax
push 0x400
push dword [ebp - 0x424]
lea eax, [ebp - 0x428]
mov dword [ebp - 0x428], 0
push eax
call fcn.004a6931
add esp, 0x14
push dword [ebp - 0x410]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyKey]
push dword [ebp - 0x408]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
push 0
push dword [ebp - 0x40c]
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
lea ecx, [ebp - 0x444]
call fcn.004590c0
mov ecx, dword [ebp - 4]
xor eax, eax
pop edi
xor ecx, ebp
pop esi
call fcn.00495b16
mov esp, ebp
pop ebp
ret
call fcn.00495c46
int3