Function at 0x416cc0
Capabilities:
Hash data with md5

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xa4
mov eax, dword [0x7aca10]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov edi, ecx
cmp edi, 0x13a
ja 0x416cae
je case.0x416c0d.39
lea eax, [edi - 2]
cmp eax, 0x6e
ja case.0x416c0d.6
movzx eax, byte [eax + 0x416f04]
jmp dword [eax*4 + 0x416ee0]
mov eax, 0xfffffffe
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004a7ad5
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.004a7ad5
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.004a7ad5
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.004a7ad5
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.004a7ad5
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.004a7ad5
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.004a7ad5
mov esp, ebp
pop ebp
ret
cmp edi, 0x4c8
ja 0x416d1f
je 0x416d09
cmp edi, 0x45d
je case.0x416c0d.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.00401d90
mov esi, dword [0x7c4210]
test esi, esi
je 0x416d87
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov ebx, dword [0x7c4214]
test ebx, ebx
jne 0x416d40
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
jmp 0x416d87
mov eax, 0xfffffff6
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004a7ad5
mov esp, ebp
pop ebp
ret
lea eax, [edi - 0x570]
cmp eax, 1
ja case.0x416c0d.6
mov eax, 0xfffffff0
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004a7ad5
mov esp, ebp
pop ebp
ret
lea ecx, [ebp - 0x78]
call fcn.004248f0
mov dword [ebp - 0x88], eax
mov ecx, ebx
lea eax, [ebp - 0x88]
mov dword [ebp - 0x84], edx
push eax
lea eax, [ebp - 0x7c]
push eax
call fcn.00424240
mov eax, dword [ebp - 0x7c]
push esi
cmp dword [ebx], eax
jne 0x416d76
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
jmp 0x416d87
mov ebx, dword [eax + 0x18]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
test ebx, ebx
jne 0x416e66
push 0x68
call fcn.004a7835
add esp, 4
mov esi, eax
lea ecx, [esi + 4]
lea eax, [ebp - 0x78]
push 0xffffffffffffffff
mov dword [esi], 0x4fca28
push 0
mov dword [ecx + 0x14], 0xf
mov dword [ecx + 0x10], 0
push eax
mov byte [ecx], 0
call fcn.00401e90
push 0x7d0
lea eax, [esi + 0x20]
mov dword [esi + 0x1c], 0
push eax
mov dword [esi], 0x4fc820
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSectionAndSpinCount]
cmp dword [ebp - 0x64], 0x10
lea eax, [ebp - 0x78]
lea edx, [ebp - 0x90]
mov dword [ebp - 0x60], 0x67452301
cmovae eax, dword [ebp - 0x78]
lea ecx, [ebp - 0x60]
mov dword [ebp - 0x90], eax
mov eax, dword [ebp - 0x68]
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 - 0x8c], eax
call fcn.0042e780
lea edx, [ebp - 0x60]
lea ecx, [ebp - 0xa0]
call fcn.0042e8a0
push dword [ebp - 0x9c]
push dword [ebp - 0xa0]
call fcn.00424850
add esp, 8
lea ecx, [esi + 0x38]
push edx
push eax
call fcn.00424970
mov eax, dword [esi + 0x1c]
mov ecx, esi
or eax, 1
mov dword [esi + 0x1c], eax
call fcn.00423df0
mov ebx, eax
mov ecx, dword [ebp - 0x64]
cmp ecx, 0x10
jb 0x416e9d
mov edx, dword [ebp - 0x78]
inc ecx
cmp ecx, 0x1000
jb 0x416e94
test dl, 0x1f
jne 0x416ecb
mov eax, dword [edx - 4]
cmp eax, edx
jae 0x416ed0
sub edx, eax
cmp edx, 4
jb 0x416ed5
cmp edx, 0x23
ja 0x416eda
mov edx, eax
push edx
call fcn.004a780d
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.004a7ad5
mov esp, ebp
pop ebp
ret
call fcn.004adf2c
call fcn.004adf2c
call fcn.004adf2c
call fcn.004adf2c
nop
inc eax
insb byte es:[edi], dx
inc ecx
add byte [esp + ebp*2 + 0x41], ch
add byte [esi + 0x6c], dl
inc ecx
add byte [edx + 0x2a00416c], al
insd dword es:[edi], dx
inc ecx
add byte [esp + ebp*2], dl
inc ecx
add byte [eax + 0x2a00416c], bl
insb byte es:[edi], dx
inc ecx
add al, al
insb byte es:[edi], dx
inc ecx
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