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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xa4
push ebx
mov ebx, dword [ebp + 0xc]
push esi
mov esi, dword [ebp + 8]
push edi
mov edi, ecx
cmp esi, 7
jne 0x4178e8
mov ecx, dword [edi + 0x30]
mov eax, dword [ecx]
mov eax, dword [eax + 0x28]
lea edx, [esp + 0x2c]
push edx
call eax
mov ecx, dword [eax]
mov esi, dword [edi + 0x30]
push 0xffffffffffffffff
push ecx
add esi, 0x86c
call fcn.004671e0
mov eax, dword [esp + 0x2c]
lea edx, [esp + 0x30]
cmp eax, edx
je 0x417867
push eax
call fcn.005282dc
add esp, 4
mov ecx, dword [edi + 0x30]
mov eax, dword [ecx + 0x6c4]
push eax
mov eax, dword [ecx]
mov edx, dword [eax + 0x1c]
push 0x672
push ecx
call edx
call fcn.0044bb70
xor eax, eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0xc], 0x15
call fcn.0044e050
mov word [esp + 0x22], ax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [edi + 0x30]
mov dword [esp + 0x14], eax
mov eax, dword [ecx]
mov eax, dword [eax + 0x144]
lea edx, [esp + 0xc]
push edx
call eax
mov eax, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
push eax
push ebx
push esi
mov ecx, edi
call fcn.0043a6d0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
cmp esi, 8
jne 0x417984
mov ecx, dword [edi + 0x30]
mov edx, dword [ecx]
mov eax, dword [edx + 0x1c]
push ecx
call eax
push eax
call fcn.0044bcd0
xor eax, eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0xc], 0x14
call fcn.0044e050
mov word [esp + 0x22], ax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [edi + 0x30]
mov dword [esp + 0x14], eax
mov edx, dword [ecx]
mov edx, dword [edx + 0x144]
lea eax, [esp + 0xc]
push eax
call edx
mov eax, dword [ebp + 0x10]
mov ecx, dword [edi + 4]
push eax
push ebx
push esi
push ecx
call dword [sym.imp.USER32.dll_DefWindowProcW]
mov edx, dword [edi + 4]
push 0
push 0
push 0x10
push edx
call dword [sym.imp.USER32.dll_PostMessageW]
mov eax, dword [ebp + 0x10]
push eax
push ebx
push esi
mov ecx, edi
call fcn.0043a6d0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
cmp esi, 0x2111
jne 0x417a04
mov eax, ebx
shr eax, 0x10
mov ecx, 0x300
cmp ax, cx
jne 0x4179c0
cmp byte [edi + 0x38], 0
je 0x417b80
call fcn.00417c60
mov eax, dword [ebp + 0x10]
push eax
push ebx
push esi
mov ecx, edi
call fcn.0043a6d0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
mov edx, 0x400
cmp ax, dx
jne 0x417b80
mov ecx, dword [edi + 4]
lea eax, [esp + 0xc]
push eax
push ecx
call dword [sym.imp.USER32.dll_GetClientRect]
mov eax, dword [edi + 4]
push 0
lea edx, [esp + 0x10]
push edx
push eax
call dword [sym.imp.USER32.dll_InvalidateRect]
mov eax, dword [ebp + 0x10]
push eax
push ebx
push esi
mov ecx, edi
call fcn.0043a6d0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
cmp esi, 0x102
jne 0x417a73
xor eax, eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0xc], 5
mov word [esp + 0x20], bx
call fcn.0044e050
mov word [esp + 0x22], ax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [edi + 0x30]
mov dword [esp + 0x14], eax
mov edx, dword [ecx]
mov edx, dword [edx + 0x144]
lea eax, [esp + 0xc]
push eax
call edx
cmp dword [esp + 0x28], 1
jne 0x417b80
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
cmp esi, 0x100
je 0x417aed
cmp esi, 0x104
je 0x417aed
cmp esi, 0x101
je 0x417a97
cmp esi, 0x105
jne 0x417b70
xor eax, eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0xc], 4
mov word [esp + 0x20], bx
call fcn.0044e050
mov word [esp + 0x22], ax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [edi + 0x30]
mov dword [esp + 0x14], eax
mov eax, dword [ecx]
mov eax, dword [eax + 0x144]
lea edx, [esp + 0xc]
push edx
call eax
jmp 0x417b70
xor eax, eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0xc], 3
mov word [esp + 0x20], bx
call fcn.0044e050
mov word [esp + 0x22], ax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [ebp + 0x10]
mov dword [esp + 0x28], ecx
mov ecx, dword [edi + 0x30]
mov dword [esp + 0x14], eax
mov dword [esp + 0x24], ebx
mov edx, dword [ecx]
mov edx, dword [edx + 0x144]
lea eax, [esp + 0xc]
push eax
call edx
cmp bx, 0xd
jne 0x417b70
mov esi, dword [edi + 0x30]
mov eax, dword [esi]
mov edx, dword [eax + 0x1c]
push 0
push 0
push str.return
mov ecx, esi
call edx
mov ecx, esi
mov edx, eax
call fcn.0044c050
mov esi, dword [ebp + 8]
cmp esi, 0x2133
je 0x417b96
cmp esi, 0x2138
je 0x417b96
mov eax, dword [ebp + 0x10]
push eax
push ebx
push esi
mov ecx, edi
call fcn.0043a6d0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
mov eax, dword [edi + 0x30]
cmp dword [eax + 0xb88], 0xffffffff
jne 0x417baf
cmp byte [eax + 0x758], 0
je 0x417a68
push 1
push ebx
call dword [sym.imp.GDI32.dll_SetBkMode]
mov ecx, dword [edi + 0x30]
mov eax, dword [ecx + 0xb8c]
test eax, eax
jne 0x417bcb
mov eax, dword [ecx + 0x5dc]
mov ecx, eax
shr ecx, 8
movzx edx, cl
movzx ecx, al
shl ecx, 8
shr eax, 0x10
or edx, ecx
movzx eax, al
shl edx, 8
or edx, eax
push edx
push ebx
call dword [sym.imp.GDI32.dll_SetTextColor]
cmp dword [edi + 0x34], 0
jne 0x417c37
mov eax, dword [edi + 0x30]
cmp byte [eax + 0x758], 0
jne 0x417c08
mov eax, dword [eax + 0xb88]
jmp 0x417c0e
mov eax, dword [eax + 0x490]
test eax, eax
je 0x417c43
mov ecx, eax
shr ecx, 8
movzx edx, cl
movzx ecx, al
shl ecx, 8
shr eax, 0x10
or edx, ecx
movzx eax, al
shl edx, 8
or edx, eax
push edx
call dword [sym.imp.GDI32.dll_CreateSolidBrush]
mov dword [edi + 0x34], eax
mov eax, dword [edi + 0x34]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
push 5
call dword [sym.imp.GDI32.dll_GetStockObject]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc