Function at 0x408eb0
Capabilities:
Create new key via cryptacquirecontext
Encrypt data using rc4 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:
sub esp, 0x64
mov eax, dword [0x448e90]
xor eax, esp
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x68]
push ebp
mov ebp, dword [esp + 0x74]
push esi
mov esi, dword [esp + 0x74]
mov ecx, dword [esi]
mov dword [esp + 0x20], esi
cmp dword [esp + 0x7c], ecx
jbe 0x408ef0
pop esi
mov eax, 8
pop ebp
mov ecx, dword [esp + 0x60]
xor ecx, esp
call fcn.004210cf
add esp, 0x64
ret 0x14
push ebx
xor ebx, ebx
mov dword [esp + 0x18], ebx
cmp eax, ebx
je 0x408f0a
push ecx
push ebx
push eax
mov dword [esp + 0x24], eax
call fcn.00421cd0
add esp, 0xc
push ebx
push 1
push ebx
push ebx
lea eax, [esp + 0x24]
mov dword [esi], ebx
mov esi, dword [sym.imp.ADVAPI32.dll_CryptAcquireContextW]
push eax
call esi
test eax, eax
jne 0x408f37
push 8
push 1
push ebx
push ebx
lea ecx, [esp + 0x24]
push ecx
call esi
test eax, eax
je 0x409132
mov eax, dword [esp + 0x14]
lea edx, [esp + 0xc]
push edx
push ebx
push ebx
push 0x8004
push eax
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
je 0x409132
push 0x42
lea ecx, [esp + 0x2d]
push ebx
push ecx
mov byte [esp + 0x34], bl
call fcn.00421cd0
push str.11902CBB12A54f41A2A1F766529422F5
lea edx, [esp + 0x38]
push 0x43
push edx
call fcn.004242d3
push str.33837AF95FA94cec9e2d9e5909356982
lea eax, [esp + 0x44]
push 0x43
push eax
call fcn.0042433b
lea eax, [esp + 0x4c]
add esp, 0x24
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x408f93
push ebx
sub eax, edx
mov edx, dword [esp + 0x10]
push eax
lea ecx, [esp + 0x30]
push ecx
push edx
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
je 0x409132
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x14]
lea eax, [esp + 0x1c]
push eax
push 0x800000
push ecx
push 0x6801
push edx
call dword [sym.imp.ADVAPI32.dll_CryptDeriveKey]
test eax, eax
je 0x409132
mov eax, dword [esp + 0xc]
push edi
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
push 0x3f0
mov dword [esp + 0x14], ebx
call fcn.00423998
mov edi, eax
add esp, 4
cmp edi, ebx
je 0x409118
push 0x3f0
push ebx
push edi
call fcn.00421cd0
mov ecx, dword [esp + 0x90]
lea edx, [ecx + ebp]
add esp, 0xc
mov dword [esp + 0x24], edx
mov esi, dword [esp + 0x24]
sub esi, ebp
cmp esi, 0x3e8
jae 0x409042
push esi
push ebp
push edi
mov ebx, 1
call fcn.00421520
mov dword [esp + 0x20], esi
jmp 0x409056
push 0x3e8
push ebp
push edi
call fcn.00421520
mov dword [esp + 0x20], 0x3e8
mov ecx, dword [esp + 0x2c]
add esp, 0xc
lea eax, [esp + 0x14]
push eax
push edi
push 0
push ebx
push 0
push ecx
call dword [sym.imp.ADVAPI32.dll_CryptDecrypt]
test eax, eax
je 0x4090fd
mov esi, dword [esp + 0x1c]
test esi, esi
je 0x40909a
mov edx, dword [esp + 0x14]
push edx
push edi
push esi
call fcn.00421520
mov eax, dword [esp + 0x20]
add esp, 0xc
add esi, eax
mov dword [esp + 0x1c], esi
jmp 0x40909e
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x28]
add dword [ecx], eax
add ebp, eax
test ebx, ebx
je 0x409021
push edi
call fcn.004226c3
mov eax, dword [esp + 0x24]
add esp, 4
test eax, eax
je 0x4090c6
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyKey]
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4090d5
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov eax, dword [esp + 0x18]
test eax, eax
je 0x4090e6
push 0
push eax
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
pop edi
pop ebx
pop esi
xor eax, eax
pop ebp
mov ecx, dword [esp + 0x60]
xor ecx, esp
call fcn.004210cf
add esp, 0x64
ret 0x14
call dword [sym.imp.KERNEL32.dll_GetLastError]
pop edi
pop ebx
pop esi
pop ebp
mov ecx, dword [esp + 0x60]
xor ecx, esp
call fcn.004210cf
add esp, 0x64
ret 0x14
pop edi
pop ebx
pop esi
mov eax, 1
pop ebp
mov ecx, dword [esp + 0x60]
xor ecx, esp
call fcn.004210cf
add esp, 0x64
ret 0x14
mov ecx, dword [esp + 0x6c]
pop ebx
pop esi
pop ebp
xor ecx, esp
mov eax, 1
call fcn.004210cf
add esp, 0x64
ret 0x14