Function at 0x500b20
Capabilities:
Hash data with md5

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xa4
mov eax, dword [0x5b46a4]
xor eax, esp
mov dword [esp + 0xa0], eax
push ebx
push esi
push edi
mov edi, ecx
cmp edi, 0x13a
ja 0x500c21
je case.0x500b64.39
lea eax, [edi - 2]
cmp eax, 0x6e
ja case.0x500b64.6
movzx eax, byte [eax + 0x500e68]
jmp dword [eax*4 + 0x500e44]
mov eax, 0xfffffffe
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xa0]
xor ecx, esp
call fcn.0053a230
mov esp, ebp
pop ebp
ret
mov eax, 0xfffffffd
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xa0]
xor ecx, esp
call fcn.0053a230
mov esp, ebp
pop ebp
ret
mov eax, 0xfffffffc
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xa0]
xor ecx, esp
call fcn.0053a230
mov esp, ebp
pop ebp
ret
mov eax, 0xfffffffb
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xa0]
xor ecx, esp
call fcn.0053a230
mov esp, ebp
pop ebp
ret
mov eax, 0xfffffffa
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xa0]
xor ecx, esp
call fcn.0053a230
mov esp, ebp
pop ebp
ret
mov eax, 0xfffffff9
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xa0]
xor ecx, esp
call fcn.0053a230
mov esp, ebp
pop ebp
ret
mov eax, 0xfffffff8
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xa0]
xor ecx, esp
call fcn.0053a230
mov esp, ebp
pop ebp
ret
cmp edi, 0x4c8
ja 0x500cc2
je 0x500ca8
cmp edi, 0x45d
je case.0x500b64.21
push 0x22
push str.PlatformFile.UnknownErrors.Windows
lea ecx, [esp + 0x40]
mov dword [esp + 0x54], 0xf
mov dword [esp + 0x50], 0
mov byte [esp + 0x40], 0
call fcn.004e2320
cmp dword [esp + 0x4c], 0x10
lea ebx, [esp + 0x38]
mov eax, dword [esp + 0x48]
cmovae ebx, dword [esp + 0x38]
mov esi, dword [0x5c2ad8]
mov dword [esp + 0x20], ebx
mov dword [esp + 0xc], eax
mov dword [esp + 0x24], eax
test esi, esi
je 0x500d8e
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp dword [0x5c2adc], 0
jne 0x500ceb
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
jmp 0x500d8e
mov eax, 0xfffffff6
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xa0]
xor ecx, esp
call fcn.0053a230
mov esp, ebp
pop ebp
ret
lea eax, [edi - 0x570]
cmp eax, 1
ja case.0x500b64.6
mov eax, 0xfffffff0
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xa0]
xor ecx, esp
call fcn.0053a230
mov esp, ebp
pop ebp
ret
mov eax, dword [esp + 0xc]
lea edx, [esp + 0x10]
lea ecx, [esp + 0x50]
mov dword [esp + 0x50], 0x67452301
mov dword [esp + 0x54], 0xefcdab89
mov dword [esp + 0x58], 0x98badcfe
mov dword [esp + 0x5c], 0x10325476
mov dword [esp + 0x60], 0
mov dword [esp + 0x64], 0
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], eax
call fcn.005022a0
lea edx, [esp + 0x50]
lea ecx, [esp + 0x28]
call fcn.005023c0
push dword [esp + 0x2c]
push dword [esp + 0x2c]
call fcn.0051b9c0
mov ebx, dword [0x5c2adc]
add esp, 8
mov dword [esp + 0x18], eax
mov ecx, ebx
lea eax, [esp + 0x18]
mov dword [esp + 0x1c], edx
push eax
lea eax, [esp + 0x10]
push eax
call fcn.00505290
mov eax, dword [esp + 0xc]
push esi
cmp dword [ebx], eax
jne 0x500d81
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
jmp 0x500d8e
mov ebx, dword [eax + 0x18]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
test ebx, ebx
jne 0x500db9
push 0x98
call fcn.00539d85
add esp, 4
lea ecx, [esp + 0x38]
push ecx
mov ecx, eax
call fcn.0051af20
mov ecx, dword [eax + 0x1c]
or ecx, 1
mov dword [eax + 0x1c], ecx
mov ecx, eax
call fcn.00504d60
mov ebx, eax
mov eax, dword [esp + 0x4c]
cmp eax, 0x10
jb 0x500df6
mov ecx, dword [esp + 0x38]
inc eax
cmp eax, 0xffffffff
ja 0x500e2b
cmp eax, 0x1000
jb 0x500ded
test cl, 0x1f
jne 0x500e30
mov eax, dword [ecx - 4]
cmp eax, ecx
jae 0x500e35
sub ecx, eax
cmp ecx, 4
jb 0x500e3a
cmp ecx, 0x23
ja 0x500e3f
mov ecx, eax
push ecx
call fcn.00539d80
add esp, 4
mov dword [esp + 0x4c], 0xf
mov ecx, ebx
mov dword [esp + 0x48], 0
mov byte [esp + 0x38], 0
mov eax, dword [ebx]
push edi
call dword [eax + 0x10]
mov ecx, dword [esp + 0xac]
or eax, 0xffffffff
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0053a230
mov esp, ebp
pop ebp
ret
call fcn.0053fbe1
call fcn.0053fbe1
call fcn.0053fbe1
call fcn.0053fbe1
call fcn.0053fbe1
lahf
or edx, dword [eax]
ror dword [ebx], cl
push eax
add byte [ecx - 0x12ffaff5], bh
or edx, dword [eax]
ror dword [eax + edx*2], 1
add byte [ebx + 11], ch
push eax
add byte [edi], al
or al, 0x50
add byte [ebp + 0x3b00500b], al
or al, 0x50
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