Function at 0x41c046
Capabilities:
Check for time delay via gettickcount
Parse pe header

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x433360
push 0x42ea10
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x60
push ebx
push esi
push edi
mov dword [ebp - 0x18], esp
dec byte [0x438c21]
call dword [sym.imp.USER32.dll_GetInputState]
mov byte [0x438c19], al
mov dword [0x438c50], 0x417a0000
mov edi, dword [ebp + 8]
xor ebx, ebx
cmp edi, ebx
je 0x41c25c
mov esi, dword [sym.imp.KERNEL32.dll_GetTickCount]
call esi
add byte [0x438c19], al
mov dword [ebp - 0x20], ebx
push 0xfac7ffff
push 0x8f9ffff
call fcn.0040a9de
pop ecx
pop ecx
mov word [0x438c34], ax
mov ax, word [0x438c2e]
sub word [0x438c2a], ax
push dword [ebp + 0x14]
call dword [sym.imp.KERNEL32.dll_IsBadCodePtr]
test eax, eax
jne 0x41c25c
movsx eax, word [0x438c26]
or eax, 0xaa63ffff
add dword [0x438c54], eax
push dword [ebp + 0x10]
push dword [ebp + 0xc]
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [ebp - 0x28], eax
cmp eax, ebx
je 0x41c25c
inc byte [0x438c1c]
movsx eax, byte [0x438c19]
push eax
movsx eax, byte [0x438c1d]
push eax
call fcn.0040aac5
mov byte [0x438c1e], al
push 0x49
call fcn.0040ebd2
add esp, 0xc
call eax
and eax, 0xc0000000
cmp eax, 0x80000000
jne 0x41c14e
push edi
call fcn.0041d3ba
pop ecx
mov dword [ebp - 0x1c], eax
jmp 0x41c151
mov dword [ebp - 0x1c], edi
push 0x689fffff
push 0xe241ffff
call fcn.0040a933
pop ecx
pop ecx
add byte [0x438c18], al
call esi
mov byte [0x438c20], al
push 0x2221ffff
movsx eax, word [0x438c32]
push eax
call fcn.0040aa83
pop ecx
pop ecx
add dword [0x438c50], eax
push 0x40
push dword [ebp - 0x1c]
mov esi, dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
call esi
test eax, eax
jne 0x41c25c
movsx eax, word [0x438c26]
push eax
movsx eax, word [0x438c2c]
push eax
call fcn.0040aac5
pop ecx
pop ecx
add dword [0x438c4c], eax
cmp dword [0x438c44], ebx
jne 0x41c1d2
cmp word [0x438c26], bx
mov dword [0x438c38], ebx
je 0x41c1dc
mov dword [0x438c38], 1
mov eax, dword [ebp - 0x1c]
cmp word [eax], 0x5a4d
jne 0x41c25c
inc word [0x438c30]
push dword [eax + 0x3c]
push eax
call fcn.0041bffa
mov edi, eax
mov dword [ebp - 0x24], edi
push 0x7e47ffff
push 0x8005ffff
call fcn.0040a96f
add esp, 0x10
mov dword [0x438c3c], eax
push 0xf8
push edi
call esi
test eax, eax
jne 0x41c25c
cmp word [0x438c34], bx
jne 0x41c237
cmp dword [0x438c3c], ebx
jne 0x41c237
and byte [0x438c1d], al
jmp 0x41c23e
mov byte [0x438c1d], 1
push 0x5fdfffff
push 0x26b1ffff
call fcn.0040aac5
pop ecx
pop ecx
mov byte [0x438c1c], al
cmp dword [edi], 0x4550
je 0x41c263
xor eax, eax
jmp 0x41cc9c
push dword [0x438c54]
push dword [0x438c5c]
call fcn.0040a933
add byte [0x438c1a], al
movsx eax, word [0x438c22]
push eax
push 0x9545ffff
call fcn.0040a9de
mov dword [0x438c40], eax
push dword [edi + 0x80]
push dword [ebp - 0x1c]
call fcn.0041bffa
mov esi, eax
mov dword [ebp - 0x2c], esi
push 0xe8f3ffff
push 0x6fedffff
call fcn.0040ab0e
add esp, 0x20
add byte [0x438c1f], al
cmp esi, dword [ebp - 0x1c]
je 0x41c6dc
movsx eax, word [0x438c30]
push eax
movsx eax, word [0x438c2c]
push eax
call fcn.0040aa4f
pop ecx
pop ecx
mov dword [0x438c40], eax
mov al, byte [0x438c1d]
dec al
mov byte [0x438c1e], al
cmp esi, edi
je 0x41c6dc
or word [0x438c30], 0xffff
mov dword [ebp - 4], ebx
mov eax, dword [0x438c38]
add eax, 0xc8e00001
mov word [0x438c24], ax
push 0xd493ffff
push 0xd713ffff
call fcn.0040a9a5
pop ecx
pop ecx
add byte [0x438c20], al
mov ax, word [0x438c24]
movsx ecx, byte [0x438c1f]
sub eax, ecx
mov word [0x438c2e], ax
cmp dword [esi + 0xc], ebx
je 0x41c467
mov dword [ebp - 4], 1
push dword [0x438c58]
push 0x27efffff
call fcn.0040a9a5
add dword [0x438c3c], eax
push dword [esi + 0xc]
push dword [ebp - 0x1c]
call fcn.0041bffa
mov dword [ebp - 0x38], eax
push 0x5767ffff
movsx eax, word [0x438c2a]
push eax
call fcn.0040a8f9
add esp, 0x18
mov byte [0x438c20], al
mov byte [0x438c1f], 1
lea eax, [ebp - 0x34]
push eax
push 4
push 0x20
lea eax, [ebp - 0x38]
push eax
push 0x5b
call fcn.0040ebd2
pop ecx
call eax
mov dword [ebp - 0x3c], eax
movsx eax, byte [0x438c1e]
push eax
movsx eax, byte [0x438c19]
push eax
call fcn.0040a933
mov word [0x438c2a], ax
mov eax, 0x9ef3ffff
sub eax, dword [0x438c44]
add dword [0x438c38], eax
push dword [ebp + 0xc]
push dword [ebp - 0x38]
call dword [sym.imp.MSVCRT.dll__stricmp]
add esp, 0x10
test eax, eax
jne 0x41c51f
push 0x5d43ffff
push 0xabbfffff
call fcn.0040a9de
pop ecx
pop ecx
add word [0x438c26], ax
lea eax, [ebp - 0x34]
push eax
push dword [ebp - 0x34]
push 0x20
lea eax, [ebp - 0x38]
push eax
push 0x5b
call fcn.0040ebd2
pop ecx
call eax
push 0x4321ffff
push 0xd633ffff
call fcn.0040aa83
add byte [0x438c1c], al
push dword [0x438c44]
movsx eax, word [0x438c2e]
push eax
call fcn.0040aa83
add dword [0x438c54], eax
movsx eax, byte [0x438c18]
push eax
push 0xcaf5ffff
call fcn.0040a9de
add esp, 0x18
mov dword [0x438c50], eax
mov dword [ebp - 4], ebx
or dword [ebp - 4], 0xffffffff
cmp dword [esi + 0xc], ebx
je 0x41c6dc
push dword [esi + 0x10]
push dword [ebp - 0x1c]
call fcn.0041bffa
pop ecx
pop ecx
mov esi, eax
mov al, byte [0x438c38]
and al, byte [0x438c21]
add byte [0x438c18], al
cmp dword [esi], ebx
je 0x41c6dc
mov ax, word [0x438c2a]
push 0xe41fffff
movsx eax, ax
push eax
call fcn.0040a96f
mov dword [0x438c38], eax
movsx eax, byte [0x438c1b]
push eax
push 0xce2fffff
call fcn.0040a8f9
mov word [0x438c2a], ax
movsx eax, byte [0x438c1e]
push eax
push 0xc543ffff
call fcn.0040ab0e
add esp, 0x18
add byte [0x438c21], al
mov eax, dword [esi]
cmp eax, dword [ebp - 0x28]
je 0x41c5a9
add esi, 4
mov al, byte [0x438c2e]
or al, byte [0x438c3c]
add byte [0x438c1d], al
movsx ax, byte [0x438c21]
dec eax
mov word [0x438c2a], ax
cmp dword [esi], ebx
jne 0x41c4a2
jmp 0x41c6dc
lea eax, [ebp - 0x34]
push eax
push dword [ebp - 0x34]
push 0x20
lea eax, [ebp - 0x38]
push eax
push 0x5b
call fcn.0040ebd2
pop ecx
call eax
mov dword [ebp - 4], ebx
jmp 0x41c56f
push 0x2623ffff
push 0x9093ffff
call fcn.0040aa83
pop ecx
pop ecx
add dword [0x438c50], eax
or byte [0x438c1f], 0xff
mov al, byte [0x438c2a]
sub al, byte [0x438c40]
add byte [0x438c1c], al
add esi, 0x14
mov dword [ebp - 0x2c], esi
jmp 0x41c33c
xor eax, eax
cmp word [0x438c22], bx
setne al
add dword [0x438c54], eax
lea eax, [ebp - 0x40]
push eax
push 4
push 4
push esi
push 0x5b
call fcn.0040ebd2
pop ecx
call eax
mov edi, eax
push 0xf12dffff
push 0xde8dffff
call fcn.0040aac5
add word [0x438c2a], ax
movsx eax, word [0x438c32]
push eax
push 0xbb6bffff
call fcn.0040a9de
add esp, 0x10
add dword [0x438c48], eax
cmp edi, ebx
je 0x41c684
mov eax, dword [ebp + 0x14]
mov dword [esi], eax
push dword [0x438c50]
push dword [0x438c54]
call fcn.0040a96f
mov byte [0x438c18], al
push 0xeebffff
movsx eax, byte [0x438c1f]
push eax
call fcn.0040aa4f
add dword [0x438c44], eax
push dword [0x438c4c]
push 0x6ed1ffff
call fcn.0040aa18
add esp, 0x18
add dword [0x438c4c], eax
lea eax, [ebp - 0x40]
push eax
push dword [ebp - 0x40]
push 4
push esi
push 0x5b
call fcn.0040ebd2
pop ecx
call eax
movsx eax, byte [0x438c1f]
mov ecx, dword [0x438c44]
lea eax, [ecx + eax + 0x4b6dffff]
mov dword [0x438c44], eax
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x20], eax
mov al, byte [0x438c32]
neg al
mov byte [0x438c1f], al
push 0x3287ffff
push 0x979fffff
call fcn.0040a933
pop ecx
pop ecx
add word [0x438c2c], ax
mov ax, word [0x438c5c]
add word [0x438c22], ax
jmp 0x41c6dc
push 0x1c37ffff
push 0xaa15ffff
call fcn.0040aa4f
mov word [0x438c2e], ax
push 0x5839ffff
movsx eax, word [0x438c34]
push eax
call fcn.0040a9a5
add word [0x438c22], ax
movsx eax, word [0x438c30]
push eax
push 0xd0ebffff
call fcn.0040a96f
add dword [0x438c54], eax
mov al, byte [0x438c2e]
or al, byte [0x438c1c]
mov byte [0x438c20], al
movsx eax, word [0x438c24]
and eax, 0x2345ffff
mov dword [0x438c38], eax
mov eax, dword [ebp - 0x24]
push dword [eax + 0xe0]
push dword [ebp - 0x1c]
call fcn.0041bffa
add esp, 0x20
mov edi, eax
mov dword [ebp - 0x48], edi
mov eax, dword [0x438c3c]
and eax, 0xcb55ffff
mov dword [0x438c54], eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x438c54], eax
cmp edi, dword [ebp - 0x1c]
je 0x41cc7d
cmp word [0x438c2a], bx
je 0x41c796
cmp word [0x438c34], bx
je 0x41c796
push 1
pop eax
jmp 0x41c798
xor eax, eax
add word [0x438c32], ax
push 0x1753ffff
push 0x4a1ffff
call fcn.0040aa4f
pop ecx
pop ecx
add word [0x438c2a], ax
cmp edi, dword [ebp - 0x24]
je 0x41cc7d
push dword [0x438c3c]
push 0x1799ffff
call fcn.0040aa18
pop ecx
pop ecx
mov dword [0x438c48], eax
push 2
pop esi
mov dword [ebp - 4], esi
cmp dword [edi + 4], ebx
je 0x41c8ed
mov dword [0x438c38], 1
mov dword [ebp - 4], 3
push dword [edi + 4]
push dword [ebp - 0x1c]
call fcn.0041bffa
mov dword [ebp - 0x58], eax
movsx ax, byte [0x438c1a]
add eax, dword [0x438c5c]
add word [0x438c28], ax
movsx eax, byte [0x438c20]
push eax
push 0x1903ffff
call fcn.0040a9a5
mov byte [0x438c19], al
push dword [0x438c5c]
movsx eax, word [0x438c26]
push eax
call fcn.0040aa83
add esp, 0x18
add dword [0x438c40], eax
lea eax, [ebp - 0x54]
push eax
push 4
push 0x20
lea eax, [ebp - 0x58]
push eax
push 0x5b
call fcn.0040ebd2
pop ecx
call eax
mov dword [ebp - 0x5c], eax
push dword [ebp + 0xc]
push dword [ebp - 0x58]
call dword [sym.imp.MSVCRT.dll__stricmp]
pop ecx
pop ecx
test eax, eax
jne 0x41c98a
mov byte [0x438c1a], 1
push dword [0x438c5c]
movsx eax, byte [0x438c19]
push eax
call fcn.0040ab0e
pop ecx
pop ecx
mov byte [0x438c1b], al
lea eax, [ebp - 0x54]
push eax
push dword [ebp - 0x54]
push 0x20
lea eax, [ebp - 0x58]
push eax
push 0x5b
call fcn.0040ebd2
pop ecx
call eax
movsx eax, word [0x438c32]
push eax
movsx eax, word [0x438c30]
push eax
call fcn.0040a96f
add byte [0x438c1a], al
and byte [0x438c1d], 0
push ebx
push 0x4e15ffff
call fcn.0040aa4f
add esp, 0x10
add dword [0x438c48], eax
mov dword [ebp - 4], esi
or dword [ebp - 4], 0xffffffff
push dword [0x438c50]
push 0x94e1ffff
call fcn.0040a933
pop ecx
pop ecx
add word [0x438c24], ax
cmp dword [edi + 4], ebx
je 0x41cc7d
push dword [0x438c58]
movsx eax, word [0x438c30]
push eax
call fcn.0040a8f9
mov dword [0x438c54], eax
push dword [edi + 0x10]
push dword [ebp - 0x1c]
call fcn.0041bffa
add esp, 0x10
mov esi, eax
mov dword [ebp - 0x4c], ebx
cmp dword [esi], ebx
je 0x41cc40
mov word [0x438c2e], 1
test byte [esi + 3], 0x80
je 0x41ca15
mov al, byte [0x438c22]
and al, byte [0x438c1f]
add byte [0x438c1d], al
push 0x61f1ffff
movsx eax, byte [0x438c1d]
push eax
call fcn.0040aac5
pop ecx
pop ecx
add word [0x438c30], ax
jmp 0x41cad9
movsx eax, byte [0x438c19]
push eax
movsx eax, byte [0x438c1f]
push eax
call fcn.0040a933
pop ecx
pop ecx
mov byte [0x438c1e], al
lea eax, [ebp - 0x54]
push eax
push dword [ebp - 0x54]
push 0x20
lea eax, [ebp - 0x58]
push eax
push 0x5b
call fcn.0040ebd2
pop ecx
call eax
mov dword [ebp - 4], esi
jmp 0x41ca0a
add edi, 0x20
mov dword [ebp - 0x48], edi
jmp 0x41c7dd
push 0xf0bfffff
movsx eax, byte [0x438c20]
push eax
call fcn.0040aac5
add word [0x438c2c], ax
push 0x8111ffff
push 0x47c3ffff
call fcn.0040a9de
add byte [0x438c1b], al
mov ebx, dword [esi]
push dword [0x438c54]
movsx eax, byte [0x438c1c]
push eax
call fcn.0040aa4f
add word [0x438c32], ax
mov dword [0x438c54], 0x4077ffff
movsx eax, byte [0x438c1a]
push eax
push dword [0x438c48]
call fcn.0040ab0e
add word [0x438c24], ax
add ebx, 2
push ebx
push dword [ebp - 0x1c]
call fcn.0041bffa
mov ebx, eax
push 0x8ee3ffff
push dword [0x438c50]
call fcn.0040a9de
mov byte [0x438c21], al
mov al, byte [0x438c28]
sub al, byte [0x438c2c]
add byte [0x438c1b], al
or eax, 0xffffffff
sub eax, dword [0x438c50]
mov word [0x438c28], ax
push dword [ebp + 0x10]
push ebx
call dword [sym.imp.MSVCRT.dll__stricmp]
add esp, 0x38
test eax, eax
je 0x41cb07
xor ebx, ebx
mov al, byte [0x438c50]
mov byte [0x438c19], al
movsx eax, byte [0x438c21]
mov ecx, dword [0x438c48]
lea eax, [ecx + eax + 0x1e480001]
mov dword [0x438c48], eax
add esi, 4
inc dword [ebp - 0x4c]
jmp 0x41c93e
call dword [sym.imp.USER32.dll_GetDesktopWindow]
mov word [0x438c2e], ax
or al, 0xff
sub al, byte [0x438c1b]
add byte [0x438c1c], al
xor eax, eax
cmp byte [0x438c1a], al
setne al
mov dword [0x438c48], eax
push dword [edi + 0xc]
push dword [ebp - 0x1c]
call fcn.0041bffa
mov esi, eax
sub dword [0x438c44], 0x20360002
movsx eax, word [0x438c32]
push eax
push dword [0x438c50]
call fcn.0040aa4f
add esp, 0x10
mov byte [0x438c20], al
mov eax, dword [ebp - 0x4c]
lea esi, [esi + eax*4]
lea eax, [ebp - 0x68]
push eax
push 4
push 4
push esi
push 0x5b
call fcn.0040ebd2
pop ecx
call eax
mov edi, eax
push 0x1e01ffff
push 0x1ecfffff
call fcn.0040a8f9
add dword [0x438c38], eax
push 0xc74dffff
movsx eax, word [0x438c32]
push eax
call fcn.0040aa4f
add esp, 0x10
mov byte [0x438c1f], al
test edi, edi
je 0x41cc40
mov eax, dword [ebp + 0x14]
mov dword [esi], eax
movsx eax, byte [0x438c1b]
and eax, 0xb97bffff
mov dword [0x438c38], eax
lea eax, [ebp - 0x68]
push eax
push dword [ebp - 0x68]
push 4
push esi
push 0x5b
call fcn.0040ebd2
pop ecx
call eax
movsx eax, byte [0x438c20]
push eax
movsx eax, word [0x438c28]
push eax
call fcn.0040aac5
pop ecx
pop ecx
mov word [0x438c2e], ax
movsx ax, byte [0x438c1c]
dec eax
add word [0x438c24], ax
xor eax, eax
cmp dword [0x438c40], eax
setne al
add word [0x438c2c], ax
cmp dword [ebp - 0x20], 0
jne 0x41cc2a
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x20], eax
push 0xfc31ffff
push 0x50f7ffff
call fcn.0040a9de
pop ecx
pop ecx
mov dword [0x438c3c], eax
inc byte [0x438c1f]
mov ax, word [0x438c2a]
add word [0x438c22], ax
jmp 0x41cc7d
movsx eax, byte [0x438c18]
push eax
push dword [0x438c50]
call fcn.0040aa4f
pop ecx
pop ecx
add word [0x438c2a], ax
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x10]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
leave
ret 0x10