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

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x4b7af5
push eax
mov dword fs:[0], esp
sub esp, 0x28
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x48]
mov esi, ecx
mov al, byte [edi + 0x11]
cmp al, 4
jne 0x453330
push 0x18b
call fcn.004aa6ea
add esp, 4
mov dword [esp + 0x50], eax
xor ebx, ebx
cmp eax, ebx
mov dword [esp + 0x40], ebx
je 0x4532dd
mov ecx, eax
call fcn.004065c0
jmp 0x4532df
xor eax, eax
mov ecx, dword [esi + 0x1c]
push edi
push ecx
push esi
mov ecx, eax
mov dword [esp + 0x4c], 0xffffffff
mov dword [esi + 0x878], eax
call fcn.00406670
mov ecx, dword [esi + 0x878]
push 5
call fcn.004aa573
mov ecx, dword [esi + 0x878]
call fcn.00406940
mov ecx, dword [esi + 0x878]
cmp ecx, ebx
je 0x453329
mov edx, dword [ecx]
push 1
call dword [edx + 4]
mov dword [esi + 0x878], ebx
mov al, 1
jmp 0x453719
cmp al, 2
mov dword [esp + 0x48], SysReAllocStringLen
jne 0x45334c
mov eax, dword [edi + 0x22]
mov dword [esp + 0x10], eax
mov eax, dword [edi + 0x26]
test eax, eax
je 0x45335e
jmp 0x45335a
mov eax, dword [edi + 0x1e]
mov ecx, dword [edi + 0x1a]
test eax, eax
mov dword [esp + 0x10], ecx
je 0x45335e
mov dword [esp + 0x48], eax
mov ebx, dword [sym.imp.KERNEL32.dll_GetTickCount]
call ebx
mov dl, byte [edi + 0x11]
mov ecx, esi
push edx
mov dword [esp + 0x18], eax
call fcn.00459820
push 0x2c
call fcn.004aa6ea
add esp, 4
mov dword [esp + 0x18], eax
test eax, eax
mov dword [esp + 0x40], 1
je 0x45339f
mov ecx, dword [esi + 0x1c]
push ecx
push edi
mov ecx, eax
call fcn.004488d0
mov ebp, eax
jmp 0x4533a1
xor ebp, ebp
mov ecx, ebp
mov dword [esp + 0x40], 0xffffffff
call fcn.00448900
test eax, eax
je 0x453703
cmp byte [edi + 3], 2
jne 0x4533df
cmp byte [edi + 0x11], 2
je 0x4533df
call ebx
mov ecx, dword [edi + 5]
lea ecx, [ecx + ecx*4]
lea ecx, [ecx + ecx*4]
lea edx, [ecx + ecx*4]
mov ecx, dword [esp + 0x14]
lea edx, [ecx + edx*8]
sub edx, eax
mov dword [esp + 0x48], edx
lea eax, [esp + 0x48]
push 1
lea ecx, [esp + 0x14]
push eax
push ecx
mov ecx, ebp
call fcn.00448f50
test eax, eax
je 0x4536fd
mov al, byte [edi + 1]
test al, al
je 0x453503
mov edx, dword [esi + 0xe2]
mov eax, dword [esi + 0xda]
inc edx
shl edx, 5
push edx
push eax
call fcn.00497980
mov ecx, dword [esi + 0xe2]
mov dl, byte [esp + 0x58]
shl ecx, 5
mov dword [esi + 0xda], eax
add esp, 8
mov byte [ecx + eax], dl
mov eax, dword [esi + 0xe2]
mov ecx, dword [esi + 0xda]
shl eax, 5
mov byte [eax + ecx + 1], 0
mov al, byte [edi]
test al, al
je 0x453463
mov edx, dword [esi + 0xe2]
mov eax, dword [esi + 0xda]
shl edx, 5
mov byte [edx + eax + 1], 1
mov ecx, dword [esi + 0xe2]
mov edx, dword [esi + 0xda]
shl ecx, 5
mov byte [ecx + edx + 2], 0
mov eax, dword [esi + 0xe2]
mov ecx, dword [esi + 0xda]
shl eax, 5
mov dword [eax + ecx + 3], 0
call ebx
mov edx, dword [esi + 0xe2]
mov ecx, dword [esi + 0xda]
shl edx, 5
mov dword [edx + ecx + 7], eax
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x4534c8
mov edx, dword [esi + 0xe2]
push eax
mov eax, dword [esi + 0xda]
shl edx, 5
lea ecx, [edx + eax + 0xb]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
jmp 0x4534dc
mov edx, dword [esi + 0xe2]
mov eax, dword [esi + 0xda]
shl edx, 5
mov byte [edx + eax + 0xb], 0
mov ecx, dword [esi + 0xe2]
mov edx, dword [esi + 0xda]
shl ecx, 5
mov dword [ecx + edx + 0x1c], ebp
mov eax, dword [esi + 0xe2]
inc eax
mov dword [esi + 0xe2], eax
mov al, 1
jmp 0x453719
mov ebx, 1
call fcn.004b25bf
call fcn.004b25bf
mov eax, dword [eax + 0xc]
push 0x3ef
push eax
call dword [sym.imp.USER32.dll_LoadCursorA]
push eax
mov dword [esi + 0x3d], eax
call dword [sym.imp.USER32.dll_SetCursor]
push 1
push 0
push 0
lea eax, [esp + 0x28]
push 0
push eax
call dword [sym.imp.USER32.dll_PeekMessageA]
test eax, eax
je 0x453659
mov eax, dword [esp + 0x20]
cmp eax, 0x100
je 0x4536a7
cmp eax, 0x104
je 0x4536a7
cmp eax, 0x201
je 0x4536a7
cmp eax, 0xa1
je 0x4536a7
cmp eax, 0x204
je 0x4536a7
cmp eax, 0x3b9
jne 0x4535f1
cmp dword [esp + 0x24], 1
jne case.default.0x453605
mov eax, dword [esp + 0x28]
xor ecx, ecx
mov cx, word [ebp + 8]
cmp eax, ecx
je 0x4535b8
lea edx, [esp + 0x1c]
push edx
call dword [sym.imp.USER32.dll_TranslateMessage]
lea eax, [esp + 0x1c]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageA]
jmp case.default.0x453605
movsx eax, byte [edi + 3]
cmp eax, 3
ja case.default.0x453605
jmp dword [eax*4 + 0x453730]
movsx ecx, byte [edi + 4]
cmp ebx, ecx
jge 0x4536a7
lea edx, [esp + 0x48]
push 1
lea eax, [esp + 0x14]
push edx
push eax
mov ecx, ebp
inc ebx
call fcn.00448f50
jmp case.default.0x453605
cmp eax, 0xb03
jne 0x453649
movsx eax, byte [edi + 3]
cmp eax, 3
ja case.default.0x453605
jmp dword [eax*4 + 0x453740]
movsx eax, byte [edi + 4]
cmp ebx, eax
jge 0x4536a7
inc ebx
lea ecx, [esp + 0x48]
push 1
lea edx, [esp + 0x14]
push ecx
push edx
mov ecx, ebp
call fcn.00448f50
jmp case.default.0x453605
lea eax, [esp + 0x48]
push 1
lea ecx, [esp + 0x14]
push eax
push ecx
mov ecx, ebp
call fcn.00448f50
jmp case.default.0x453605
cmp eax, 0x200
je case.default.0x453605
jmp 0x45359d
mov al, byte [edi + 3]
cmp al, 2
jne 0x453684
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [edi + 5]
mov edx, dword [esp + 0x14]
sub eax, edx
lea ecx, [ecx + ecx*4]
lea ecx, [ecx + ecx*4]
lea ecx, [ecx + ecx*4]
shl ecx, 3
cmp eax, ecx
jg 0x4536a7
jmp case.default.0x453605
cmp al, 3
jne case.default.0x453605
mov eax, dword [edi + 0xd]
test eax, eax
je case.default.0x453605
push eax
mov ecx, esi
call fcn.0044e640
test eax, eax
je case.default.0x453605
call fcn.004b25bf
call fcn.004b25bf
mov eax, dword [eax + 0xc]
push 0x3e8
push eax
call dword [sym.imp.USER32.dll_LoadCursorA]
push eax
mov dword [esi + 0x3d], eax
call dword [sym.imp.USER32.dll_SetCursor]
mov ecx, ebp
call fcn.00448ce0
test ebp, ebp
je 0x4536e5
mov ecx, ebp
call fcn.00448ce0
push ebp
call fcn.004aa713
add esp, 4
test edi, edi
je 0x4536f9
mov ecx, edi
call fcn.00446fc0
push edi
call fcn.004aa713
add esp, 4
mov al, 1
jmp 0x453719
test ebp, ebp
je 0x453717
jmp 0x453707
test ebp, ebp
je 0x453717
mov ecx, ebp
call fcn.00448ce0
push ebp
call fcn.004aa713
add esp, 4
xor al, al
mov ecx, dword [esp + 0x38]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x34
ret 0xc