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

Disassembly:
push 0xffffffffffffffff
push 0x466df0
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xb6c
mov eax, dword [0x48644c]
push ebx
push ebp
push esi
mov ebx, ecx
mov dword [esp + 0xb74], eax
push edi
mov dword [esp + 0x14], ebx
mov cl, byte [esp + 0xbac]
mov al, byte [esp + 0xb94]
mov byte [ebx + 1], cl
push str.ck_W
mov ecx, 0x4870d8
mov dword [esp + 0xb88], 0
mov byte [ebx], al
call fcn.00401340
mov ecx, eax
call fcn.00415cd0
xor eax, eax
lea edi, [ebx + 8]
mov ecx, 0xc8
rep stosd dword es:[edi], eax
lea eax, [ebx + 0x12]
push 0x46f3f8
push eax
mov word [ebx + 0x10], 0xff
call dword [sym.imp.MSVCR71.dll_wcscpy]
add esp, 8
mov ecx, 0x4870d8
call fcn.00401360
mov ecx, eax
call fcn.00454410
mov esi, eax
mov ecx, 0x4870d8
mov dword [esp + 0x20], esi
call fcn.00401360
mov ecx, eax
call fcn.00402a00
test esi, esi
mov ebp, eax
mov dword [esp + 0x10], 1
je 0x40a8ea
test ebp, ebp
je 0x40a8ea
mov dword [esp + 0x1c], 0
inc dword [esp + 0x1c]
xor eax, eax
mov ecx, 0xb0
lea edi, [ebx + 8]
rep stosd dword es:[edi], eax
lea eax, [ebx + 0x12]
push 0x46f3f8
push eax
mov word [ebx + 0x10], 0xff
call dword [sym.imp.MSVCR71.dll_wcscpy]
mov edx, dword [esi]
add esp, 8
mov ecx, esi
call dword [edx + 8]
test eax, eax
jne 0x40a35a
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], eax
mov ecx, 0x10
lea edi, [esp + 0x7c]
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x34]
mov word [esp + 0x40], 0x29
stosw word es:[edi], ax
call fcn.00462480
push 0
lea ecx, [esp + 0x80]
push ecx
lea ecx, [esp + 0x3c]
mov byte [esp + 0xb8c], 1
call fcn.00464680
push 2
lea edx, [esp + 0xa1]
push edx
lea ecx, [esp + 0x3c]
call fcn.00464680
lea eax, [esp + 0x30]
push eax
mov ecx, 0x4870d8
call fcn.00401390
mov edi, dword [esi]
mov ecx, eax
mov byte [esp + 0xb84], 2
call dword [sym.imp.MFC71U.DLL_ATL::CSimpleStringT::operator_class_ATL::CSimpleStringT_]
push eax
lea ecx, [esp + 0x44]
push ecx
mov ecx, 0x4870d8
call fcn.00401380
push eax
mov ecx, esi
call dword [edi]
mov ebx, eax
neg ebx
sbb bl, bl
lea ecx, [esp + 0x30]
inc bl
call dword [sym.imp.MFC71U.DLL_ATL::CSimpleStringT::CSimpleStringT]
test bl, bl
lea ecx, [esp + 0x34]
mov byte [esp + 0xb84], 0
jne 0x40a899
call fcn.00462310
mov ebx, dword [esp + 0x14]
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0xc]
test eax, eax
je 0x40a36c
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x14]
mov edx, dword [ebp]
mov ecx, ebp
call dword [edx + 0x20]
xor ecx, ecx
mov dword [esp + 0x6d], ecx
mov dword [esp + 0x71], ecx
mov dword [esp + 0x75], ecx
mov word [esp + 0x79], cx
mov byte [esp + 0x7b], cl
mov byte [esp + 0x2c], al
mov byte [esp + 0x6c], 0
mov dword [esp + 0x24], 0x83c
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x1c]
dec ecx
je 0x40a570
dec ecx
je 0x40a497
dec ecx
jne 0x40a652
xor eax, eax
mov byte [esp + 0x5d4], 0
mov ecx, 0x40
lea edi, [esp + 0x5d5]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov byte [esp + 0x3cc], 0
xor eax, eax
mov ecx, 0x40
lea edi, [esp + 0x3cd]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov ecx, 0x4870d8
stosb byte es:[edi], al
call fcn.00401360
mov ecx, eax
call fcn.004029b0
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x18]
mov ecx, 0x4870d8
call fcn.00401360
mov ecx, eax
call fcn.004029b0
mov edx, dword [eax]
push 0
push 0
push 0x104
lea ecx, [esp + 0x3d8]
push ecx
push 0xffffffffffffffff
mov ecx, eax
call dword [edx + 0x18]
push eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
lea eax, [esp + 0x3cc]
push eax
lea ecx, [esp + 0x5d8]
push str.unicom._s
push ecx
call dword [sym.imp.MSVCR71.dll_sprintf]
mov edx, dword [ebp]
add esp, 0xc
push 0
lea eax, [esp + 0x5d8]
push eax
push 0
mov ecx, ebp
call dword [edx + 0x48]
push eax
call dword [sym.imp.WS2_32.dll_inet_ntoa]
lea ecx, [esp + 0x6c]
lea ebx, [ebx]
mov dl, byte [eax]
inc eax
mov byte [ecx], dl
inc ecx
test dl, dl
jne 0x40a480
mov dword [esp + 0x18], 0x2710
jmp 0x40a652
mov edx, dword [ebp]
push 0
test al, al
sete al
lea ecx, [esp + 0x28]
push ecx
lea ecx, [esp + 0x74]
push ecx
mov ecx, ebp
push eax
push 0x1b
call dword [edx + 0x3c]
test eax, eax
jne 0x40a64a
mov byte [esp + 0x1c4], al
mov ecx, 0x40
lea edi, [esp + 0x1c5]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov byte [esp + 0xc0], 0
xor eax, eax
mov ecx, 0x40
lea edi, [esp + 0xc1]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov ecx, 0x4870d8
stosb byte es:[edi], al
call fcn.00401360
mov ecx, eax
call fcn.004029b0
mov edx, dword [eax]
push 0
push 0
push 0x104
lea ecx, [esp + 0xcc]
push ecx
push 0xffffffffffffffff
mov ecx, eax
call dword [edx + 0x18]
push eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
lea eax, [esp + 0xc0]
push eax
lea ecx, [esp + 0x1c8]
push str.unicom._s
push ecx
call dword [sym.imp.MSVCR71.dll_sprintf]
mov edx, dword [ebp]
add esp, 0xc
push 0
lea eax, [esp + 0x1c8]
push eax
push 0
mov ecx, ebp
call dword [edx + 0x48]
push eax
call dword [sym.imp.WS2_32.dll_inet_ntoa]
lea ecx, [esp + 0x6c]
mov dl, byte [eax]
inc eax
mov byte [ecx], dl
inc ecx
test dl, dl
jne 0x40a561
jmp 0x40a64a
mov edx, dword [ebp]
push 0
lea eax, [esp + 0x28]
push eax
mov eax, dword [esp + 0x34]
lea ecx, [esp + 0x74]
push ecx
push eax
push 0x1b
mov ecx, ebp
call dword [edx + 0x3c]
test eax, eax
jne 0x40a64a
mov byte [esp + 0x4d0], al
mov ecx, 0x40
lea edi, [esp + 0x4d1]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov byte [esp + 0x2c8], 0
xor eax, eax
mov ecx, 0x40
lea edi, [esp + 0x2c9]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov ecx, 0x4870d8
stosb byte es:[edi], al
call fcn.00401360
mov ecx, eax
call fcn.004029b0
mov edx, dword [eax]
push 0
push 0
push 0x104
lea ecx, [esp + 0x2d4]
push ecx
push 0xffffffffffffffff
mov ecx, eax
call dword [edx + 0x18]
push eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
lea eax, [esp + 0x2c8]
push eax
lea ecx, [esp + 0x4d4]
push str.unicom._s
push ecx
call dword [sym.imp.MSVCR71.dll_sprintf]
mov edx, dword [ebp]
add esp, 0xc
push 0
lea eax, [esp + 0x4d4]
push eax
push 0
mov ecx, ebp
call dword [edx + 0x48]
push eax
call dword [sym.imp.WS2_32.dll_inet_ntoa]
lea ecx, [esp + 0x6c]
lea esp, [esp]
mov dl, byte [eax]
inc eax
mov byte [ecx], dl
inc ecx
test dl, dl
jne 0x40a640
mov dword [esp + 0x18], 0x1388
movzx eax, word [esp + 0x24]
mov edx, dword [esi]
push 0xa
push eax
lea ecx, [esp + 0x74]
push ecx
mov ecx, esi
call dword [edx + 0x10]
test eax, eax
jne 0x40a6a0
mov ecx, dword [esp + 0xba8]
mov edi, dword [esp + 0xba4]
mov ebx, dword [esp + 0x14]
mov edx, ecx
shr ecx, 2
mov esi, str.vU_1Y_
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x20]
mov dword [esp + 0x10], 1
jmp 0x40a828
mov edi, dword [esi]
push 1
mov ecx, 0x4870d8
call fcn.004013c0
push eax
push 0xbd0
push 7
mov ecx, esi
call dword [edi + 0x3c]
xor eax, eax
mov ecx, 0x128
lea edi, [esp + 0x6d8]
rep stosd dword es:[edi], eax
lea eax, [esp + 0x6e8]
push eax
lea ecx, [esp + 0x6dc]
push ecx
lea edx, [esp + 0x6e8]
push edx
mov ecx, 0x4870d8
call fcn.00401420
mov edi, dword [esi]
push 0
push 0
lea ecx, [esp + 0xba8]
call dword [sym.imp.MFC71U.DLL_ATL::CSimpleStringT::operator_class_ATL::CSimpleStringT_]
mov ecx, dword [esp + 0xb9c]
mov edx, dword [esp + 0xb98]
push eax
mov eax, dword [esp + 0xba4]
push eax
push ecx
mov ecx, dword [esp + 0xba0]
push edx
push 0x63
call dword [sym.imp.MFC71U.DLL_ATL::CSimpleStringT::operator_class_ATL::CSimpleStringT_]
push eax
mov ecx, esi
call dword [edi + 0x44]
test eax, eax
jne 0x40a768
mov ecx, dword [esp + 0xba8]
mov edi, dword [esp + 0xba4]
mov ebx, dword [esp + 0x14]
mov eax, ecx
shr ecx, 2
mov esi, 0x46f3bc
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x20]
mov dword [esp + 0x10], 3
jmp 0x40a828
call dword [sym.imp.KERNEL32.dll_GetTickCount]
cmp word [ebx + 0x10], 0xff
mov dword [esp + 0x28], eax
jne 0x40a838
mov edi, edi
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x18]
sub eax, edx
cmp eax, ecx
ja 0x40a7e8
push 0xa
call dword [sym.imp.KERNEL32.dll_Sleep]
mov edi, dword [sym.imp.USER32.dll_PeekMessageW]
push 1
push 0
push 0
push 0
lea ecx, [esp + 0x60]
push ecx
call edi
test eax, eax
je 0x40a7de
lea edx, [esp + 0x50]
push edx
call dword [sym.imp.USER32.dll_TranslateMessage]
lea eax, [esp + 0x50]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageW]
push 1
push 0
push 0
push 0
lea ecx, [esp + 0x60]
push ecx
call edi
test eax, eax
jne 0x40a7b5
cmp word [ebx + 0x10], 0xff
je 0x40a780
jmp 0x40a819
mov ecx, dword [esp + 0xba8]
mov edi, dword [esp + 0xba4]
mov ebx, dword [esp + 0x14]
mov edx, ecx
shr ecx, 2
mov esi, 0x46f39c
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x20]
mov dword [esp + 0x10], 4
cmp word [ebx + 0x10], 0xff
jne 0x40a838
cmp dword [esp + 0x10], 4
jne 0x40a840
cmp dword [esp + 0x1c], 3
jl 0x40a263
jmp 0x40a8c6
mov dword [esp + 0x10], 1
mov edi, dword [esi]
push 0
mov ecx, 0x4870d8
call fcn.004013c0
push eax
push 0xbd0
push 7
mov ecx, esi
call dword [edi + 0x3c]
mov edi, dword [esp + 0xba4]
test edi, edi
je 0x40a886
mov ecx, dword [esp + 0xba8]
mov eax, ecx
shr ecx, 2
lea esi, [ebx + 0x12]
mov ebx, dword [esp + 0x14]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x20]
mov bx, word [ebx + 0x10]
test bx, bx
jne 0x40a8a8
mov dword [esp + 0x10], 0
jmp 0x40a8c6
mov dword [esp + 0x10], 2
call fcn.00462310
jmp 0x40a8c6
cmp bx, 2
jne 0x40a8b8
mov dword [esp + 0x10], 5
jmp 0x40a8c6
cmp bx, 3
jne 0x40a8c6
mov dword [esp + 0x10], 6
push esi
mov ecx, 0x4870d8
call fcn.00401360
mov ecx, eax
call fcn.00436e50
push ebp
mov ecx, 0x4870d8
call fcn.00401360
mov ecx, eax
call fcn.00402a30
mov ecx, 0x4870d8
call fcn.00401340
mov ecx, eax
call fcn.00415e20
lea ecx, [esp + 0xba0]
call dword [sym.imp.MFC71U.DLL_ATL::CSimpleStringT::CSimpleStringT]
mov ecx, dword [esp + 0xb7c]
mov eax, dword [esp + 0x10]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
mov ecx, dword [esp + 0xb6c]
pop ebx
call fcn.00436153
add esp, 0xb78
ret 0x24