Function at 0x40e470
Capabilities:
Hash data with md5

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xac
mov eax, dword [0x478050]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov edi, ecx
cmp edi, 0x13a
ja 0x40e54e
je case.0x40e4ad.39
lea eax, [edi - 2]
cmp eax, 0x6e
ja case.0x40e4ad.6
movzx eax, byte [eax + 0x40e784]
jmp dword [eax*4 + 0x40e760]
mov eax, 0xfffffffe
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00447880
mov esp, ebp
pop ebp
ret
mov eax, 0xfffffffd
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00447880
mov esp, ebp
pop ebp
ret
mov eax, 0xfffffffc
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00447880
mov esp, ebp
pop ebp
ret
mov eax, 0xfffffffb
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00447880
mov esp, ebp
pop ebp
ret
mov eax, 0xfffffffa
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00447880
mov esp, ebp
pop ebp
ret
mov eax, 0xfffffff9
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00447880
mov esp, ebp
pop ebp
ret
mov eax, 0xfffffff8
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00447880
mov esp, ebp
pop ebp
ret
cmp edi, 0x4c8
ja 0x40e5e6
je 0x40e5d0
cmp edi, 0x45d
je case.0x40e4ad.21
push 0x22
push str.PlatformFile.UnknownErrors.Windows
lea ecx, [ebp - 0x78]
mov dword [ebp - 0x64], 0xf
mov dword [ebp - 0x68], 0
mov byte [ebp - 0x78], 0
call fcn.00404b70
cmp dword [ebp - 0x64], 0x10
lea ebx, [ebp - 0x78]
mov eax, dword [ebp - 0x68]
cmovae ebx, dword [ebp - 0x78]
mov esi, dword [0x47bd40]
mov dword [ebp - 0x98], ebx
mov dword [ebp - 0x7c], eax
mov dword [ebp - 0x94], eax
test esi, esi
je 0x40e6b2
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp dword [0x47bd44], 0
jne 0x40e60b
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
jmp 0x40e6b2
mov eax, 0xfffffff6
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00447880
mov esp, ebp
pop ebp
ret
lea eax, [edi - 0x570]
cmp eax, 1
ja case.0x40e4ad.6
mov eax, 0xfffffff0
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00447880
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x7c]
lea edx, [ebp - 0x84]
lea ecx, [ebp - 0x60]
mov dword [ebp - 0x60], 0x67452301
mov dword [ebp - 0x5c], 0xefcdab89
mov dword [ebp - 0x58], 0x98badcfe
mov dword [ebp - 0x54], 0x10325476
mov dword [ebp - 0x50], 0
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x84], ebx
mov dword [ebp - 0x80], eax
call fcn.0042b560
lea edx, [ebp - 0x60]
lea ecx, [ebp - 0xa8]
call fcn.0042b680
push dword [ebp - 0xa4]
push dword [ebp - 0xa8]
call fcn.00424b80
mov ebx, dword [0x47bd44]
add esp, 8
mov dword [ebp - 0x90], eax
mov ecx, ebx
lea eax, [ebp - 0x90]
mov dword [ebp - 0x8c], edx
push eax
lea eax, [ebp - 0x7c]
push eax
call fcn.004220d0
mov eax, dword [ebp - 0x7c]
push esi
cmp dword [ebx], eax
jne 0x40e6a5
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
jmp 0x40e6b2
mov ebx, dword [eax + 0x18]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
test ebx, ebx
jne 0x40e6dc
push 0x98
call fcn.0044783a
add esp, 4
lea ecx, [ebp - 0x78]
push ecx
mov ecx, eax
call fcn.004195b0
mov ecx, dword [eax + 0x1c]
or ecx, 1
mov dword [eax + 0x1c], ecx
mov ecx, eax
call fcn.00421c50
mov ebx, eax
mov eax, dword [ebp - 0x64]
cmp eax, 0x10
jb 0x40e717
mov ecx, dword [ebp - 0x78]
inc eax
cmp eax, 0xffffffff
ja 0x40e745
cmp eax, 0x1000
jb 0x40e70e
test cl, 0x1f
jne 0x40e74a
mov eax, dword [ecx - 4]
cmp eax, ecx
jae 0x40e74f
sub ecx, eax
cmp ecx, 4
jb 0x40e754
cmp ecx, 0x23
ja 0x40e759
mov ecx, eax
push ecx
call fcn.0044786d
add esp, 4
mov dword [ebp - 0x64], 0xf
mov ecx, ebx
mov dword [ebp - 0x68], 0
mov byte [ebp - 0x78], 0
mov eax, dword [ebx]
push edi
call dword [eax + 0x10]
mov ecx, dword [ebp - 4]
or eax, 0xffffffff
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00447880
mov esp, ebp
pop ebp
ret
call fcn.0044e681
aaa
inc dword [ebx]
add al, ch
xor bh, bh
add eax, dword [eax]
call fcn.0044e681
call fcn.0044e681
call fcn.0044e681
call fcn.0044e681
nop
loopne 0x40e746
inc eax
add byte [0xe4f60040], cl
inc eax
add byte [edx], ah
in eax, 0x40
add ch, dh
in eax, 0x40
add byte [esp - 0x1ac7ffc0], dh
inc eax
add dl, cl
in al, 0x40
add byte [eax - 0x1b], ch
inc eax
add byte [eax], al
add byte [ecx], al
add cl, byte [eax]
or byte [ebx], al
or byte [eax], cl
or byte [eax], cl
or byte [ebx], al
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
add al, 8
or byte [eax], cl
or byte [eax], cl
add al, 8
or byte [eax], cl
or byte [134744072], al
or byte [eax], cl
push es
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax + ecx], al
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [edi], al
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or byte [esi], al
int3