Function at 0x4ed160
Capabilities:
Check for time delay via gettickcount

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x19c
mov eax, dword [0x57a040]
xor eax, esp
mov dword [esp + 0x198], eax
cmp dword [0xbdbba8], 0
mov eax, dword [ebp + 8]
push ebx
push esi
mov esi, ecx
push edi
mov dword [esp + 0x24], esi
je 0x4ed852
cmp edx, 0x50
jne 0x4ed852
mov ebx, dword [eax*4 + 0x20a514c]
mov dword [esp + 0x10], ebx
test eax, eax
js 0x4ed852
cmp eax, 0x1194
jge 0x4ed852
cmp dword [ebx + 4], 3
jne 0x4ed852
movzx eax, word [ebx + 0x78]
cmp eax, 1
je 0x4ed1d6
cmp eax, 6
jne 0x4ed852
cmp byte [ebx + 0xa], 0
jg 0x4ed852
cmp byte [ebx + 0x9c0], 0
jne 0x4ed852
mov eax, dword [esi + 4]
cmp eax, 0x80
ja 0x4ed852
imul ecx, eax, 0x10c
mov eax, dword [ebx + 0x390]
movzx eax, word [ecx + eax + 4]
mov ecx, eax
test ax, ax
js 0x4ed852
mov eax, 0x2000
cmp cx, ax
jge 0x4ed852
mov ecx, dword [ebx + 0x644]
cmp dword [ecx*4 + 0xbdbbac], 0
jne 0x4ed2c7
lea eax, [esp + 0x10]
mov dword [esp + 0x10], 0x3ac
push eax
lea eax, [esp + 0x18]
mov ecx, 0xa9b83c
push eax
call fcn.00405650
mov eax, dword [esp + 0x1c]
mov ecx, dword [0xa9b83c]
cmp byte [eax + 0xd], 0
jne 0x4ed26e
cmp dword [eax + 0x10], 0x3ac
jle 0x4ed270
mov eax, ecx
cmp eax, ecx
jne 0x4ed293
push 0x3ac
push str.Could_not_find_message__d_
push 0xa9b7bc
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
mov eax, 0xa9b7bc
jmp 0x4ed296
add eax, 0x18
push eax
push 0
push 0
push 0
push 0
push 0
push 1
push dword [ebx]
push 0xb90558
call fcn.004cdc70
add esp, 0x24
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x198]
xor ecx, esp
call fcn.00529f01
mov esp, ebp
pop ebp
ret
movsx eax, word [ebx + 0xd0]
mov edi, dword [ecx*4 + 0xbdbbbc]
cmp eax, edi
jge 0x4ed36c
lea eax, [esp + 0x10]
mov dword [esp + 0x10], 0x3ad
push eax
lea eax, [esp + 0x18]
mov ecx, 0xa9b83c
push eax
call fcn.00405650
mov eax, dword [esp + 0x1c]
mov ecx, dword [0xa9b83c]
cmp byte [eax + 0xd], 0
jne 0x4ed312
cmp dword [eax + 0x10], 0x3ad
jle 0x4ed314
mov eax, ecx
cmp eax, ecx
jne 0x4ed337
push 0x3ad
push str.Could_not_find_message__d_
push 0xa9b7bc
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
mov eax, 0xa9b7bc
jmp 0x4ed33a
add eax, 0x18
push edi
push eax
push 0
push 0
push 0
push 0
push 0
push 1
push dword [ebx]
push 0xb90558
call fcn.004cdc70
add esp, 0x28
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x198]
xor ecx, esp
call fcn.00529f01
mov esp, ebp
pop ebp
ret
mov edi, dword [ecx*4 + 0xbdbbcc]
cmp dword [ebx + 0x73c], edi
jge 0x4ed3c0
lea eax, [esp + 0x10]
mov dword [esp + 0x10], 0x3ae
push eax
lea eax, [esp + 0x18]
mov ecx, 0xa9b83c
push eax
call fcn.00405650
mov eax, dword [esp + 0x1c]
mov ecx, dword [0xa9b83c]
cmp byte [eax + 0xd], 0
jne 0x4ed3b0
cmp dword [eax + 0x10], 0x3ae
jle 0x4ed3b2
mov eax, ecx
cmp eax, ecx
jne 0x4ed337
push 0x3ae
jmp 0x4ed31d
mov edi, dword [ecx*4 + 0xbdbbdc]
cmp dword [ebx + 0xe4], edi
jae 0x4ed418
lea eax, [esp + 0x10]
mov dword [esp + 0x10], 0x3af
push eax
lea eax, [esp + 0x18]
mov ecx, 0xa9b83c
push eax
call fcn.00405650
mov eax, dword [esp + 0x1c]
mov ecx, dword [0xa9b83c]
cmp byte [eax + 0xd], 0
jne 0x4ed404
cmp dword [eax + 0x10], 0x3af
jle 0x4ed406
mov eax, ecx
cmp eax, ecx
jne 0x4ed337
push 0x3af
jmp 0x4ed31d
mov edi, dword [ecx*4 + 0xbdbbec]
cmp dword [ebx + 0xa14], edi
jae 0x4ed470
lea eax, [esp + 0x10]
mov dword [esp + 0x10], 0x3b0
push eax
lea eax, [esp + 0x18]
mov ecx, 0xa9b83c
push eax
call fcn.00405650
mov eax, dword [esp + 0x1c]
mov ecx, dword [0xa9b83c]
cmp byte [eax + 0xd], 0
jne 0x4ed45c
cmp dword [eax + 0x10], 0x3b0
jle 0x4ed45e
mov eax, ecx
cmp eax, ecx
jne 0x4ed337
push 0x3b0
jmp 0x4ed31d
mov edi, dword [ecx*4 + 0xbdbbfc]
cmp dword [ebx + 0xa18], edi
jae 0x4ed4c8
lea eax, [esp + 0x10]
mov dword [esp + 0x10], 0x3b1
push eax
lea eax, [esp + 0x18]
mov ecx, 0xa9b83c
push eax
call fcn.00405650
mov eax, dword [esp + 0x1c]
mov ecx, dword [0xa9b83c]
cmp byte [eax + 0xd], 0
jne 0x4ed4b4
cmp dword [eax + 0x10], 0x3b1
jle 0x4ed4b6
mov eax, ecx
cmp eax, ecx
jne 0x4ed337
push 0x3b1
jmp 0x4ed31d
mov edi, dword [ecx*4 + 0xbdbc0c]
cmp dword [ebx + 0xa1c], edi
jae 0x4ed520
lea eax, [esp + 0x10]
mov dword [esp + 0x10], 0x3b2
push eax
lea eax, [esp + 0x18]
mov ecx, 0xa9b83c
push eax
call fcn.00405650
mov eax, dword [esp + 0x1c]
mov ecx, dword [0xa9b83c]
cmp byte [eax + 0xd], 0
jne 0x4ed50c
cmp dword [eax + 0x10], 0x3b2
jle 0x4ed50e
mov eax, ecx
cmp eax, ecx
jne 0x4ed337
push 0x3b2
jmp 0x4ed31d
mov edi, dword [ecx*4 + 0xbdbc1c]
cmp dword [ebx + 0xa20], edi
jae 0x4ed578
lea eax, [esp + 0x10]
mov dword [esp + 0x10], 0x3b2
push eax
lea eax, [esp + 0x18]
mov ecx, 0xa9b83c
push eax
call fcn.00405650
mov eax, dword [esp + 0x1c]
mov ecx, dword [0xa9b83c]
cmp byte [eax + 0xd], 0
jne 0x4ed564
cmp dword [eax + 0x10], 0x3b2
jle 0x4ed566
mov eax, ecx
cmp eax, ecx
jne 0x4ed337
push 0x3b2
jmp 0x4ed31d
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, eax
mov eax, 0x10624dd3
sub ecx, dword [ebx + 0x64]
mul ecx
mov eax, dword [ebx + 0x644]
shr edx, 6
mov edi, dword [eax*4 + 0xbdbc2c]
cmp edx, edi
jae 0x4ed5e3
lea eax, [esp + 0x10]
mov dword [esp + 0x10], 0x44
push eax
lea eax, [esp + 0x18]
mov ecx, 0xa9b83c
push eax
sub edi, edx
call fcn.00405650
mov eax, dword [esp + 0x1c]
mov ecx, dword [0xa9b83c]
cmp byte [eax + 0xd], 0
jne 0x4ed5d2
cmp dword [eax + 0x10], 0x44
jle 0x4ed5d4
mov eax, ecx
cmp eax, ecx
jne 0x4ed337
push 0x44
jmp 0x4ed31d
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [ebx]
mov dword [ebx + 0x64], eax
mov eax, dword [ebx + 0x644]
mov eax, dword [eax*4 + 0xbdbbdc]
sub dword [ebx + 0xe4], eax
mov edx, dword [ebx + 0xe4]
call fcn.004e9640
mov edx, dword [ebx + 0x644]
push ecx
mov ecx, dword [ebx]
mov eax, dword [edx*4 + 0xbdbc1c]
neg eax
push eax
mov eax, dword [edx*4 + 0xbdbc0c]
neg eax
push eax
mov eax, dword [edx*4 + 0xbdbbfc]
mov edx, dword [edx*4 + 0xbdbbec]
neg eax
push eax
neg edx
call fcn.004740a0
push 0x6b
lea eax, [esp + 0x3d]
push 0
push eax
call fcn.0052bd20
mov eax, dword [0xa0cdb0]
add esp, 0x1c
mov word [esp + 0x28], 0x6cc1
mov byte [esp + 0x2a], 0x78
test eax, eax
jne 0x4ed66e
mov eax, 0xffff
jmp 0x4ed672
movzx eax, byte [eax + 8]
imul ecx, dword [esi + 4], 0x10c
lea edi, [esp + 0x98]
mov word [esp + 0x90], ax
movq xmm0, qword [ebx + 0x86]
movq qword [esp + 0x2b], xmm0
movzx eax, word [ebx + 0x8e]
mov word [esp + 0x33], ax
mov eax, dword [ebx + 0x390]
mov dword [esp + 0x20], ecx
movzx eax, word [ecx + eax + 4]
mov word [esp + 0x7c], ax
mov eax, dword [ebx + 0x390]
cvttss2si eax, dword [ecx + eax + 0x20]
mov byte [esp + 0x7e], al
mov esi, dword [ebx + 0x390]
add esi, ecx
mov ecx, 0x43
rep movsd dword es:[edi], dword [esi]
mov ebx, dword [esp + 0x9c]
mov ecx, ebx
movzx eax, byte [esp + 0x134]
shr ecx, 0x10
shl cl, 3
shl al, 7
or cl, al
mov byte [esp + 0x7f], bl
mov al, byte [esp + 0x136]
and al, 3
or cl, al
movzx eax, byte [esp + 0x135]
shl al, 2
or cl, al
cvttss2si eax, dword [esp + 0xb8]
mov byte [esp + 0x80], cl
mov ecx, ebx
sar ecx, 1
and cl, 0x80
mov byte [esp + 0x81], al
mov al, 3
cmp al, byte [esp + 0x136]
sbb al, al
sar ebx, 5
and al, 0x40
and bl, 0xf0
or cl, al
movzx eax, byte [esp + 0x14e]
or cl, byte [esp + 0x137]
mov byte [esp + 0x82], cl
mov cl, byte [esp + 0x151]
mov byte [esp + 0x83], al
and cl, 1
movzx eax, byte [esp + 0x152]
add cl, cl
and al, 1
or cl, al
movzx eax, byte [esp + 0x16a]
add cl, cl
shr al, 4
or cl, bl
and al, 8
or cl, al
xor eax, eax
mov byte [esp + 0x84], cl
cmp byte [esp + eax + 0x16b], 0xff
jne 0x4ed7aa
inc eax
cmp eax, 5
jl 0x4ed791
mov al, byte [esp + 0x164]
jmp 0x4ed7b1
mov al, byte [esp + 0x170]
mov ecx, dword [esp + 0x20]
mov byte [esp + 0x85], al
mov eax, dword [esp + 0x16b]
mov dword [esp + 0x86], eax
mov al, byte [esp + 0x16f]
mov byte [esp + 0x8a], al
mov eax, dword [esp + 0x10]
mov eax, dword [eax + 0x390]
cmp byte [ecx + eax + 0xba], 0
je 0x4ed7fc
mov eax, dword [ecx + eax + 0xbc]
mov dword [esp + 0x8c], eax
jmp 0x4ed807
mov dword [esp + 0x8c], 0
mov ecx, dword [esp + 0x24]
push 0x6c
movups xmm0, xmmword [ecx + 8]
movzx eax, word [ecx + 0x28]
mov word [esp + 0x5a], ax
movzx eax, word [ecx + 0x4b]
movups xmmword [esp + 0x3a], xmm0
mov word [esp + 0x7d], ax
lea eax, [esp + 0x2c]
movups xmm0, xmmword [ecx + 0x18]
push eax
movups xmmword [esp + 0x4e], xmm0
movups xmm0, xmmword [ecx + 0x2b]
movups xmmword [esp + 0x61], xmm0
movups xmm0, xmmword [ecx + 0x3b]
mov ecx, 0x7509e0
movups xmmword [esp + 0x71], xmm0
call fcn.00440610
mov ecx, dword [esp + 0x1a4]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00529f01
mov esp, ebp
pop ebp
ret