Function at 0x413a30
Capabilities:
Encrypt data using rc4 via winapi
Get file size
Hash data via wincrypt
Hash data with md5
Initialize hashing via wincrypt
Read file on windows

Disassembly:
sub esp, 0x20
push ebx
mov byte [esp + 7], 1
jmp 0x413a4b
mov eax, dword [esp + 0x2c]
push 0
push 0x80
push 3
push 0
push 3
push closesocket
push eax
call dword [0x538604]
mov ebx, eax
mov dword [esp + 0xc], ebx
cmp ebx, 0xffffffff
jne 0x413a87
mov ecx, dword [esp + 0x30]
mov dword [ecx], 1
mov byte [esp + 7], 0
jmp 0x413e45
push esi
push 0
push ebx
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov esi, eax
cmp esi, 0xffffffff
jne 0x413ab3
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov edx, dword [esp + 0x34]
mov dword [edx], 0xb
mov byte [esp + 0xb], 0
jmp 0x413e44
push edi
push esi
call fcn.004b958c
mov edi, eax
add esp, 4
test edi, edi
jne 0x413ade
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [esp + 0x38]
mov dword [eax], 2
mov byte [esp + 0xf], 0
jmp 0x413e43
push 0
lea ecx, [esp + 0x1c]
push ecx
push esi
push edi
push ebx
call dword [sym.imp.KERNEL32.dll_ReadFile]
cmp dword [esp + 0x18], esi
je 0x413b0f
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov edx, dword [esp + 0x38]
mov dword [edx], 3
mov byte [esp + 0xf], 0
jmp 0x413e43
mov ecx, dword [edi + esi - 0x10]
mov eax, dword [edi + esi - 0xc]
mov edx, dword [edi + esi - 8]
push ebp
mov ebp, dword [edi + esi - 4]
cmp ecx, 0x32812622
jne 0x413b87
cmp ebp, 0x32812621
jne 0x413b87
lea edx, [edx + eax + 0x10]
mov ecx, esi
xor eax, eax
sub ecx, edx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x24], eax
mov ebx, eax
mov ebp, eax
cmp ecx, 0x10
jbe 0x413b64
mov eax, edi
sub eax, edx
mov ebx, dword [eax + esi - 0xc]
lea ebp, [eax + esi - 0x10]
mov eax, dword [ebp]
mov dword [esp + 0x24], ebx
mov ebx, dword [ebp + 8]
mov ebp, dword [ebp + 0xc]
cmp eax, 0x32812624
jne 0x413b8f
cmp ebp, 0x32812623
jne 0x413b8f
mov esi, ecx
mov ecx, dword [esp + 0x24]
lea edx, [ebx + ecx + 0x10]
mov ebp, esi
sub ebp, edx
mov dword [esp + 0x14], ebp
jmp 0x413b91
mov dword [esp + 0x14], esi
mov ebp, esi
jmp 0x413ba5
mov ebp, ecx
mov ebx, dword [esp + 0x18]
cmp esi, edx
jae 0x413ba5
mov dword [esp + 0x14], 0
mov ebp, dword [esp + 0x14]
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor esi, esi
cmp dword [0x538680], esi
jne 0x413be5
push 0xf0000000
push 1
push str.Microsoft_Base_Cryptographic_Provider_v1.0
push esi
push 0x538680
call dword [sym.imp.ADVAPI32.dll_CryptAcquireContextA]
test eax, eax
jne 0x413be5
mov edx, dword [esp + 0x3c]
mov dword [edx], 4
mov byte [esp + 0x13], al
jmp 0x413e42
mov eax, dword [0x538678]
cmp eax, esi
je 0x413bfb
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov dword [0x538678], esi
mov eax, dword [0x538680]
push 0x538678
push esi
push esi
push 0x8003
push eax
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
jne 0x413c2a
mov ecx, dword [esp + 0x3c]
mov dword [ecx], 5
mov byte [esp + 0x13], al
jmp 0x413e42
mov edx, dword [esp + 0x48]
mov eax, edx
lea ebx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x413c33
push esi
sub eax, ebx
push eax
push edx
mov edx, dword [0x538678]
push edx
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
jne 0x413c64
mov eax, dword [esp + 0x3c]
mov dword [eax], 6
mov byte [esp + 0x13], 0
jmp 0x413e42
mov eax, dword [0x53867c]
cmp eax, esi
je 0x413c7a
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyKey]
mov dword [0x53867c], esi
mov ecx, dword [0x538678]
mov edx, dword [0x538680]
push 0x53867c
push esi
push ecx
push 0x6801
push edx
call dword [sym.imp.ADVAPI32.dll_CryptDeriveKey]
test eax, eax
jne 0x413cb1
mov eax, dword [esp + 0x3c]
mov dword [eax], 7
mov byte [esp + 0x13], 0
jmp 0x413e42
push ebp
push edi
call fcn.00413970
add esp, 8
test al, al
jne 0x413cd2
mov ecx, dword [esp + 0x3c]
mov dword [ecx], 0x58
mov byte [esp + 0x13], al
jmp 0x413e42
cmp dword [esp + 0x44], ebp
jbe 0x413cdc
mov dword [esp + 0x44], ebp
push 0x50f4e4
call fcn.00404690
push eax
push edi
call fcn.004b9929
add esp, 0xc
cmp eax, esi
je 0x413d01
movsx eax, byte [eax + 7]
sub eax, 0x30
mov dword [esp + 0x18], eax
jmp 0x413d2a
push 0x50f4d8
call fcn.00404690
push eax
push edi
call fcn.004b9929
add esp, 0xc
cmp eax, esi
je 0x413d26
movsx eax, byte [eax + 8]
sub eax, 0x30
mov dword [esp + 0x18], eax
jmp 0x413d2a
mov dword [esp + 0x18], esi
push 0x50f4c8
call fcn.00404690
push eax
push edi
call fcn.004b9929
add esp, 0xc
cmp eax, esi
je 0x413d4b
movsx ebx, byte [eax + 0xa]
sub ebx, 0x30
jmp 0x413d6e
push 0x50f4bc
call fcn.00404690
push eax
push edi
call fcn.004b9929
add esp, 0xc
cmp eax, esi
je 0x413d6c
movsx ebx, byte [eax + 7]
sub ebx, 0x30
jmp 0x413d6e
xor ebx, ebx
push 0x50f4b0
call fcn.00404690
push eax
push edi
call fcn.004b9929
add esp, 0xc
cmp eax, esi
je 0x413d8f
movsx ebp, byte [eax + 9]
sub ebp, 0x30
jmp 0x413d91
xor ebp, ebp
push 0x50f4a0
call fcn.00404690
push eax
push edi
call fcn.004b9929
add esp, 0xc
cmp eax, esi
je 0x413daf
movsx esi, byte [eax + 0xb]
jmp 0x413dcb
push 0x50f494
call fcn.00404690
push eax
push edi
call fcn.004b9929
add esp, 0xc
cmp eax, esi
je 0x413dce
movsx esi, byte [eax + 7]
sub esi, 0x30
cmp dword [0x537f30], 0
je 0x413df6
mov edx, dword [0x539720]
push 0x537f34
push edx
call dword [0x5385f8]
cmp dword [0x537f34], 0
jne 0x413df6
xor eax, eax
jmp 0x413dfa
mov eax, dword [esp + 0x18]
add esi, ebp
add esi, ebx
mov ebx, dword [esp + 0x44]
add esi, eax
xor esi, dword [0x5378bc]
push ebx
xor esi, dword [0x53789c]
push edi
xor esi, 0x4849
mov dword [0x537ccc], esi
mov esi, dword [esp + 0x48]
push esi
call fcn.004b6e40
mov eax, dword [esp + 0x20]
push eax
push 0
push edi
mov byte [esi + ebx], 0
call fcn.004b6dc0
push edi
call fcn.004b8a69
add esp, 0x1c
pop ebp
pop edi
pop esi
jmp 0x413e57
movzx eax, byte [esp + 7]
pop ebx
add esp, 0x20
ret