Function at 0x425835
Capabilities:
Create new key via cryptacquirecontext
Encode data using xor
Hash data via wincrypt
Hash data with md5
Initialize hashing via wincrypt
Read file on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x43e52c
mov eax, dword fs:[0]
push eax
mov eax, 0x2040
call fcn.0041b5d0
mov eax, dword [0x455534]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
xor ebx, ebx
mov esi, ecx
mov dword [ebp - 0x2048], ebx
cmp dword [eax + 0x18], 8
mov dword [ebp - 0x2034], esi
mov edi, edx
jb 0x425887
mov eax, dword [eax + 4]
jmp 0x42588a
add eax, 4
push 0x80
push 3
push 1
push 0x80000000
push eax
call fcn.00422d23
add esp, 0x14
mov dword [ebp - 0x2038], eax
cmp eax, 0xffffffff
jne 0x4258bf
push 0x446bf0
mov ecx, esi
call fcn.004018b3
mov eax, esi
jmp 0x425a9e
mov esi, dword [sym.imp.ADVAPI32.dll_CryptAcquireContextW]
push ebx
push 1
push ebx
push ebx
lea eax, [ebp - 0x203c]
push eax
call esi
test eax, eax
jne 0x4258fb
push 8
push 1
push ebx
push ebx
lea eax, [ebp - 0x203c]
push eax
call esi
test eax, eax
jne 0x4258fb
push dword [ebp - 0x2038]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x425a88
lea eax, [ebp - 0x2040]
push eax
push ebx
push ebx
push 0x8003
push dword [ebp - 0x203c]
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
jne 0x425928
push ebx
push dword [ebp - 0x203c]
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
jmp 0x4258ea
mov eax, dword [edi + 0x14]
cmp eax, ebx
je 0x42595e
cmp dword [edi + 0x18], 0x10
jb 0x42593a
mov edi, dword [edi + 4]
jmp 0x42593d
add edi, 4
push ebx
push eax
push edi
push dword [ebp - 0x2040]
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
jne 0x42595e
push dword [ebp - 0x2040]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
jmp 0x425919
xor esi, esi
inc esi
mov dword [ebp - 0x2044], ebx
mov dword [ebp - 0x204c], esi
mov byte [ebp - 0x202d], bl
cmp byte [ebp + 0xc], bl
je 0x4259d1
push ebx
lea eax, [ebp - 0x2044]
push eax
push esi
lea eax, [ebp - 0x202d]
push eax
push dword [ebp - 0x2038]
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x425950
cmp dword [ebp - 0x2044], esi
jne 0x425950
or byte [ebp - 0x202d], 1
mov esi, 0x100
push esi
call fcn.00410cae
mov edi, eax
pop ecx
xor eax, eax
movsx ecx, byte [ebp - 0x202d]
imul ecx, eax
and ecx, 0xff
mov byte [ecx + edi], al
inc eax
cmp eax, esi
jl 0x4259b7
jmp 0x425a33
mov edi, dword [ebp - 0x2048]
jmp 0x425a33
mov ecx, dword [ebp - 0x2044]
cmp ecx, ebx
je 0x425ab8
cmp byte [ebp + 0xc], bl
je 0x425a1a
xor eax, eax
cmp ecx, ebx
jbe 0x425a14
mov dl, byte [ebp - 0x204c]
lea esi, [ebp + eax - 0x2010]
movzx ecx, byte [esi]
add dl, al
xor dl, byte [ecx + edi]
mov ecx, dword [ebp - 0x2044]
inc eax
mov byte [esi], dl
cmp eax, ecx
jb 0x4259f2
add dword [ebp - 0x204c], ecx
push ebx
push ecx
lea eax, [ebp - 0x2010]
push eax
push dword [ebp - 0x2040]
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
je 0x425a57
push ebx
lea eax, [ebp - 0x2044]
push eax
push 0x2000
lea eax, [ebp - 0x2010]
push eax
push dword [ebp - 0x2038]
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x4259d9
push dword [ebp - 0x2040]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
push ebx
push dword [ebp - 0x203c]
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
push dword [ebp - 0x2038]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp byte [ebp + 0xc], bl
je 0x425a88
push edi
call fcn.00410f30
pop ecx
mov ecx, dword [ebp - 0x2034]
push 0x446bf0
call fcn.004018b3
mov eax, dword [ebp - 0x2034]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00410f21
leave
ret
push dword [ebp - 0x2038]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp byte [ebp + 0xc], bl
je 0x425ad0
push edi
call fcn.00410f30
pop ecx
push 0x10
pop esi
push ebx
lea eax, [ebp - 0x2048]
push eax
lea eax, [ebp - 0x2010]
push eax
push 2
push dword [ebp - 0x2040]
mov dword [ebp - 0x2048], esi
call dword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
push dword [ebp - 0x2040]
test eax, eax
jne 0x425b18
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
push ebx
push dword [ebp - 0x203c]
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
jmp 0x425a88
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
push ebx
push dword [ebp - 0x203c]
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
cmp dword [ebp - 0x2048], esi
jne 0x425a88
push esi
lea eax, [ebp - 0x2010]
push eax
lea esi, [ebp - 0x202c]
call fcn.00404f07
mov ecx, dword [ebp - 0x2034]
mov edx, esi
mov dword [ebp - 4], ebx
call fcn.00423b15
push ebx
push 1
mov ecx, esi
call fcn.0040173a
jmp 0x425a98