Function at 0x54f870
Capabilities:
Check for time delay via gettickcount
Check mutex on windows
Enumerate gui resources
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
push 0xffffffffffffffff
push 0x657b05
mov eax, dword fs:[0]
push eax
sub esp, 0x268
mov eax, dword [0x6af168]
xor eax, esp
mov dword [esp + 0x230], eax
push ebx
push esi
push edi
mov eax, dword [0x6af168]
xor eax, esp
push eax
lea eax, [esp + 0x278]
mov dword fs:[0], eax
mov edi, ecx
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
xor ebx, ebx
cmp byte [edi + 0x341], bl
mov dword [edi + 0x33c], eax
jne 0x550276
mov esi, edi
call fcn.0054ebc0
cmp dword [edi + 0xb0], 0x10
jb 0x54f8e4
mov eax, dword [edi + 0x9c]
jmp 0x54f8ea
lea eax, [edi + 0x9c]
mov edx, dword [edi]
push eax
mov eax, dword [edx + 0xd8]
mov ecx, edi
call eax
test al, al
jne 0x54f91b
cmp dword [edi + 0xb0], 0x10
jb 0x54f90c
mov eax, dword [edi + 0x9c]
jmp 0x54f912
lea eax, [edi + 0x9c]
push eax
call fcn.00644700
add esp, 4
cmp dword [0x6b9d94], ebx
je 0x55029a
cmp dword [0x6b9d98], ebx
je 0x55029a
mov edx, dword [edi]
mov eax, dword [edx + 0x17c]
mov ecx, edi
call eax
mov edx, dword [edi]
mov eax, dword [edx + 0x60]
mov ecx, edi
call eax
call fcn.004e60f0
test al, al
je 0x54face
lea ebx, [esp + 0x1c]
mov eax, str.shell32.dll
call fcn.0053f7a0
mov esi, eax
test esi, esi
je 0x54f971
mov ebx, dword [esp + 0x1c]
test ebx, ebx
jne 0x54f98b
lea ebx, [esp + 0x1c]
mov eax, str.shfolder.dll
call fcn.0053f7a0
mov ebx, dword [esp + 0x1c]
test ebx, ebx
je 0x54facc
lea ecx, [esp + 0x134]
push ecx
push 0
push 0
push 0x23
push 0
call esi
lea edx, [esp + 0x134]
push edx
lea ecx, [esp + 0x24]
call fcn.00402130
lea eax, [esp + 0x48]
push eax
lea esi, [esp + 0x24]
mov dword [esp + 0x284], 5
call fcn.004e7770
add esp, 4
push 0x679af8
push eax
lea ecx, [esp + 0x6c]
push ecx
mov byte [esp + 0x28c], 6
call fcn.0044cf70
add esp, 0xc
lea edx, [edi + 0x28]
push edx
push eax
lea eax, [esp + 0x88]
push eax
mov byte [esp + 0x28c], 7
call fcn.0044d040
add esp, 0xc
push 0x679af8
push eax
lea ecx, [esp + 0xf8]
push ecx
mov byte [esp + 0x28c], 8
call fcn.0044cf70
add esp, 0xc
lea edx, [edi + 0x44]
push edx
push eax
lea eax, [esp + 0x114]
push eax
mov byte [esp + 0x28c], 9
call fcn.0044d040
add esp, 0xc
lea ecx, [esp + 0xf0]
call fcn.00401c70
lea ecx, [esp + 0x80]
call fcn.00401c70
lea ecx, [esp + 0x64]
call fcn.00401c70
lea ecx, [esp + 0x48]
call fcn.00401c70
mov ecx, esi
mov byte [esp + 0x280], 0xf
call fcn.00401c70
push 0x679af8
lea ecx, [esp + 0x110]
push ecx
lea edx, [esp + 0xa4]
push edx
call fcn.0044cf70
add esp, 0xc
mov ecx, eax
mov byte [esp + 0x280], 0x10
call fcn.004e61d0
lea ecx, [esp + 0x9c]
call fcn.00401c70
push ebx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea ecx, [esp + 0x10c]
mov dword [esp + 0x280], 0xffffffff
call fcn.00401c70
xor ebx, ebx
cmp byte [edi + 0xf2], bl
jne 0x54fae2
mov eax, dword [edi]
mov edx, dword [eax + 0xb0]
mov ecx, edi
call edx
mov eax, edi
call fcn.00541360
test al, al
je 0x54faf3
mov byte [edi + 0xfc], bl
mov eax, dword [edi + 0x544]
cmp eax, 2
jb 0x54fb20
lea esi, [edi + 0x530]
push 1
mov ecx, esi
call fcn.00440e00
cmp byte [eax], 0x3a
je 0x54fb7f
push 2
mov ecx, esi
call fcn.00440e00
cmp byte [eax], 0x5c
je 0x54fb7f
lea esi, [esp + 0x10c]
call fcn.004e61a0
lea esi, [edi + 0x530]
push esi
push eax
lea eax, [esp + 0x28]
push eax
mov dword [esp + 0x28c], 0x11
call fcn.0044d040
add esp, 0xc
push 0xffffffffffffffff
push ebx
push eax
mov ecx, esi
mov byte [esp + 0x28c], 0x12
call fcn.00401d10
lea ecx, [esp + 0x20]
call fcn.00401c70
lea ecx, [esp + 0x10c]
mov dword [esp + 0x280], 0xffffffff
call fcn.00401c70
cmp dword [0x6b8b40], ebx
jne 0x54fb93
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov dword [0x6b8b40], eax
push str.main.pak
lea ecx, [esp + 0x24]
call fcn.00402130
lea ecx, [esp + 0x20]
mov dword [esp + 0x280], 0x13
call fcn.005d8410
mov dword [esp + 0x280], 0xffffffff
cmp dword [esp + 0x38], 0x10
jb 0x54fbd4
mov ecx, dword [esp + 0x24]
push ecx
call fcn.0062493b
add esp, 4
lea eax, [edi + 0x44]
push eax
lea esi, [esp + 0x24]
call fcn.004e6880
add esp, 4
push eax
lea edx, [esp + 0xf4]
push str.Notify
push edx
mov dword [esp + 0x28c], 0x14
call fcn.0044cec0
add esp, 0xc
cmp dword [eax + 0x18], 0x10
jb 0x54fc10
mov eax, dword [eax + 4]
jmp 0x54fc13
add eax, 4
push eax
call dword [sym.imp.USER32.dll_RegisterWindowMessageA]
mov esi, 0x10
cmp dword [esp + 0x108], esi
mov dword [edi + 0x100], eax
jb 0x54fc3e
mov eax, dword [esp + 0xf4]
push eax
call fcn.0062493b
add esp, 4
mov dword [esp + 0x280], 0xffffffff
cmp dword [esp + 0x38], esi
mov dword [esp + 0x108], 0xf
mov dword [esp + 0x104], ebx
mov byte [esp + 0xf4], bl
jb 0x54fc75
mov ecx, dword [esp + 0x24]
push ecx
call fcn.0062493b
add esp, 4
lea eax, [edi + 0x44]
push eax
lea esi, [esp + 0x24]
call fcn.004e6880
add esp, 4
push str.Mutex
push eax
lea edx, [esp + 0xf8]
push edx
mov dword [esp + 0x28c], 0x15
call fcn.0044cf70
add esp, 0xc
cmp dword [eax + 0x18], 0x10
jb 0x54fcb1
mov eax, dword [eax + 4]
jmp 0x54fcb4
add eax, 4
push eax
push 1
push ebx
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov esi, 0x10
cmp dword [esp + 0x108], esi
mov dword [edi + 0xf8], eax
jb 0x54fce2
mov eax, dword [esp + 0xf4]
push eax
call fcn.0062493b
add esp, 4
mov dword [esp + 0x280], 0xffffffff
cmp dword [esp + 0x38], esi
mov dword [esp + 0x108], 0xf
mov dword [esp + 0x104], ebx
mov byte [esp + 0xf4], bl
jb 0x54fd19
mov ecx, dword [esp + 0x24]
push ecx
call fcn.0062493b
add esp, 4
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x54fd32
mov edx, dword [edi]
mov eax, dword [edx + 0xc4]
mov ecx, edi
call eax
mov esi, dword [sym.imp.KERNEL32.dll_GetTickCount]
call esi
mov dword [edi + 8], eax
call fcn.004e6030
cmp byte [edi + 0x511], bl
je 0x54fdb7
mov dword [esp + 0x108], 0xf
mov dword [esp + 0x104], ebx
mov byte [esp + 0xf4], bl
lea edx, [esp + 0xf0]
mov ecx, edi
mov dword [esp + 0x280], 0x16
call fcn.00541380
test al, al
jne 0x54fda0
mov edx, dword [edi]
mov edx, dword [edx + 0x80]
lea eax, [esp + 0xf0]
push eax
mov ecx, edi
mov byte [edi + 0x511], bl
call edx
push ebx
call fcn.005475c0
lea ecx, [esp + 0xf0]
mov dword [esp + 0x280], 0xffffffff
call fcn.00401c70
call esi
push eax
call fcn.00624ad4
add esp, 4
call fcn.004e6040
test al, al
mov eax, dword [0x6b8b40]
push str.IDI_MAIN_ICON
mov byte [edi + 0x503], bl
push eax
je 0x54fe6b
mov dword [esp + 0x28], 8
mov dword [esp + 0x30], ebx
mov dword [esp + 0x34], ebx
mov dword [esp + 0x44], ebx
mov dword [esp + 0x40], ebx
call dword [sym.imp.USER32.dll_LoadIconA]
mov ecx, dword [0x6b8b40]
mov esi, dword [sym.imp.USER32.dll_RegisterClassA]
lea edx, [esp + 0x20]
push edx
mov dword [esp + 0x38], eax
mov dword [esp + 0x34], ecx
mov dword [esp + 0x28], 0x549cf0
mov dword [esp + 0x48], str.MainWindow
mov dword [esp + 0x44], ebx
call esi
mov eax, dword [0x6b8b40]
mov dword [esp + 0x20], ebx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x34], ebx
mov dword [esp + 0x30], eax
mov dword [esp + 0x24], 0x549cf0
mov dword [esp + 0x44], str.InvisWindow
mov dword [esp + 0x40], ebx
lea ecx, [esp + 0x20]
jmp 0x54ff33
mov dword [esp + 0x114], 8
mov dword [esp + 0x11c], ebx
mov dword [esp + 0x120], ebx
mov dword [esp + 0x130], ebx
mov dword [esp + 0x12c], ebx
call dword [sym.imp.USER32.dll_LoadIconA]
mov ecx, dword [0x6b8b40]
mov esi, dword [sym.imp.USER32.dll_RegisterClassA]
lea edx, [esp + 0x10c]
push edx
mov dword [esp + 0x124], eax
mov dword [esp + 0x120], ecx
mov dword [esp + 0x114], 0x549cf0
mov dword [esp + 0x134], str.MainWindow
mov dword [esp + 0x130], ebx
call esi
mov eax, dword [0x6b8b40]
mov dword [esp + 0x10c], ebx
mov dword [esp + 0x114], ebx
mov dword [esp + 0x118], ebx
mov dword [esp + 0x128], ebx
mov dword [esp + 0x124], ebx
mov dword [esp + 0x120], ebx
mov dword [esp + 0x11c], eax
mov dword [esp + 0x110], 0x549cf0
mov dword [esp + 0x130], str.InvisWindow
mov dword [esp + 0x12c], ebx
lea ecx, [esp + 0x10c]
push ecx
call esi
cmp dword [edi + 0x78], 0x10
jb 0x54ff41
mov eax, dword [edi + 0x64]
jmp 0x54ff44
lea eax, [edi + 0x64]
mov edx, dword [0x6b8b40]
push ebx
push edx
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
push eax
push str.InvisWindow
push ebx
call dword [sym.imp.USER32.dll_CreateWindowExA]
push edi
push 0xffffffffffffffeb
push eax
mov dword [edi + 0x354], eax
call dword [sym.imp.USER32.dll_SetWindowLongA]
mov eax, dword [0x6b8b40]
mov esi, dword [sym.imp.USER32.dll_CreateCursor]
push 0x6b25a8
push 0x6b2528
push 0x20
push 0x20
push 4
push 0xb
push eax
call esi
mov ecx, dword [0x6b8b40]
push 0x6b26a8
push 0x6b2628
push 0x20
push 0x20
push 0xa
push 0xf
push ecx
mov dword [edi + 0x4b8], eax
call esi
mov edx, dword [edi]
mov dword [edi + 0x4bc], eax
mov eax, dword [edx + 0x68]
mov ecx, edi
call eax
mov eax, dword [edi + 0xc4]
mov ecx, dword [edi + 0xc0]
mov dword [esp + 0x50], ecx
mov dword [esp + 0x54], eax
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x70], eax
mov eax, dword [edi + 0x320]
lea edx, [esp + 0x48]
lea ecx, [esp + 0x64]
mov dword [esp + 0x48], ebx
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x64], ebx
mov dword [esp + 0x68], ebx
call fcn.0055aab0
cmp byte [edi + 0x343], bl
je 0x55003a
cmp byte [edi + 0x345], bl
jne 0x550046
mov esi, dword [sym.imp.USER32.dll_GetSystemMetrics]
push 0x10
call esi
cmp dword [edi + 0xc0], eax
jge 0x55002d
push 0x11
call esi
cmp dword [edi + 0xc4], eax
jl 0x55003a
mov byte [edi + 0x343], bl
mov byte [edi + 0x346], 1
cmp byte [edi + 0x345], bl
je 0x5500f1
push ebx
push 0x5411a0
call dword [sym.imp.USER32.dll_EnumWindows]
lea ecx, [esp + 0x134]
push ecx
push 0xffffffffffffffff
push ebx
call dword [sym.imp.USER32.dll_EnumDisplaySettingsA]
mov eax, dword [edi + 0xc0]
cmp dword [esp + 0x1a0], eax
mov ecx, dword [esp + 0x19c]
jne 0x550092
mov edx, dword [esp + 0x1a4]
cmp edx, dword [edi + 0xc4]
jne 0x550092
cmp ecx, 0x10
je 0x5500f1
cmp ecx, 0x20
je 0x5500f1
cmp ecx, 0x10
mov dword [esp + 0x1a0], eax
mov eax, dword [edi + 0xc4]
mov dword [esp + 0x1a4], eax
mov dword [esp + 0x15c], 0x580000
je 0x5500d1
cmp ecx, 0x20
je 0x5500d1
mov dword [esp + 0x19c], 0x10
mov dword [esp + 0x15c], 0x5c0000
push 4
lea ecx, [esp + 0x138]
push ecx
call dword [sym.imp.USER32.dll_ChangeDisplaySettingsA]
test eax, eax
je 0x5500f1
mov byte [edi + 0x345], bl
mov byte [edi + 0x343], bl
mov edx, dword [edi]
mov eax, dword [edx + 0x2c]
mov ecx, edi
call eax
cmp byte [edi + 0x511], bl
je 0x55012d
call fcn.0054aa80
lea esi, [edi + 0x54c]
mov byte [edi + 0x57c], 1
call fcn.00565ae0
mov byte [edi + 0x343], al
call fcn.00565920
movzx ecx, al
mov dword [edi + 0x5b4], ecx
cmp dword [edi + 0x4b4], ebx
jne 0x550187
push 0x30a0
call fcn.00624a6a
add esp, 4
mov dword [esp + 0x1c], eax
cmp eax, ebx
mov dword [esp + 0x280], 0x17
je 0x550174
cmp byte [edi + 0xf0], bl
jne 0x550163
mov ebx, dword [edi + 0x350]
movzx edx, byte [edi + 0xf1]
push edx
push ebx
push eax
call fcn.005664c0
jmp 0x550176
xor eax, eax
mov dword [esp + 0x280], 0xffffffff
mov dword [edi + 0x4b4], eax
mov eax, dword [edi]
fld qword [edi + 0xd8]
mov edx, dword [eax + 0xfc]
sub esp, 8
mov ecx, edi
fstp qword [esp]
call edx
mov ecx, dword [edi + 0x354]
mov eax, dword [edi]
mov edx, dword [eax + 0x48]
push ecx
mov ecx, edi
call edx
fld qword [edi + 0xd0]
mov dword [edi + 0x374], eax
mov eax, dword [edi]
mov edx, dword [eax + 0xf8]
sub esp, 8
mov ecx, edi
fstp qword [esp]
call edx
mov eax, edi
call fcn.00541360
test al, al
je 0x5501e4
mov eax, 0xb
mov ecx, edi
call fcn.005506b0
mov eax, dword [edi]
mov edx, dword [eax + 0x4c]
mov ecx, edi
call edx
push str.English_United_States
lea ecx, [esp + 0xa0]
call fcn.00402130
push str.LOCALE
lea ecx, [esp + 0xbc]
mov dword [esp + 0x284], 0x18
call fcn.00402130
lea eax, [esp + 0x9c]
push eax
lea ecx, [esp + 0xbc]
lea esi, [esp + 0xd8]
mov eax, edi
mov byte [esp + 0x284], 0x19
call fcn.0054e760
push eax
mov byte [esp + 0x284], 0x1a
call fcn.004e6dc0
add esp, 4
mov ecx, esi
call fcn.00401c70
lea ecx, [esp + 0xb8]
call fcn.00401c70
lea ecx, [esp + 0x9c]
call fcn.00401c70
mov byte [edi + 0x348], 1
mov ecx, dword [esp + 0x278]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x230]
xor ecx, esp
call fcn.00624940
mov esp, ebp
pop ebp
ret
push 0x10
mov esi, 0xf
push str.You_need_DirectX
lea ecx, [esp + 0xf8]
mov dword [esp + 0x110], esi
mov dword [esp + 0x10c], ebx
mov byte [esp + 0xfc], bl
call fcn.00402300
mov dword [esp + 0x280], ebx
push 0x10
push str.YOU_NEED_DIRECTX
lea ecx, [esp + 0x88]
mov dword [esp + 0xa0], esi
mov dword [esp + 0x9c], ebx
mov byte [esp + 0x8c], bl
call fcn.00402300
mov byte [esp + 0x280], 1
push 0x62
push str.This_application_requires_DirectX_to_run.__You_can_get_DirectX_at_http:__www.microsoft.com_directx
lea ecx, [esp + 0x50]
mov dword [esp + 0x68], esi
mov dword [esp + 0x64], ebx
mov byte [esp + 0x54], bl
call fcn.00402300
mov byte [esp + 0x280], 2
push 0x14
push str.APP_REQUIRES_DIRECTX
lea ecx, [esp + 0x6c]
mov dword [esp + 0x84], esi
mov dword [esp + 0x80], ebx
mov byte [esp + 0x70], bl
call fcn.00402300
lea ecx, [esp + 0xf0]
push ecx
lea ecx, [esp + 0x84]
lea esi, [esp + 0x24]
mov eax, edi
mov byte [esp + 0x284], 3
call fcn.0054e760
mov dword [esp + 0x1c], eax
lea edx, [esp + 0x48]
push edx
lea ecx, [esp + 0x68]
lea esi, [esp + 0x110]
mov eax, edi
mov byte [esp + 0x284], 4
call fcn.0054e760
mov ecx, dword [esp + 0x1c]
cmp dword [ecx + 0x18], 0x10
jb 0x55039a
mov edx, ecx
mov ecx, dword [edx + 4]
jmp 0x5503a1
mov ecx, dword [esp + 0x1c]
add ecx, 4
mov esi, 0x10
cmp dword [eax + 0x18], esi
jb 0x5503b0
mov eax, dword [eax + 4]
jmp 0x5503b3
add eax, 4
push esi
push ecx
push eax
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
cmp dword [esp + 0x124], esi
jb 0x5503d6
mov eax, dword [esp + 0x110]
push eax
call fcn.0062493b
add esp, 4
cmp dword [esp + 0x38], esi
mov dword [esp + 0x124], 0xf
mov dword [esp + 0x120], ebx
mov byte [esp + 0x110], bl
jb 0x550402
mov ecx, dword [esp + 0x24]
push ecx
call fcn.0062493b
add esp, 4
cmp dword [esp + 0x7c], esi
mov dword [esp + 0x38], 0xf
mov dword [esp + 0x34], ebx
mov byte [esp + 0x24], bl
jb 0x550425
mov edx, dword [esp + 0x68]
push edx
call fcn.0062493b
add esp, 4
cmp dword [esp + 0x60], esi
mov dword [esp + 0x7c], 0xf
mov dword [esp + 0x78], ebx
mov byte [esp + 0x68], bl
jb 0x550448
mov eax, dword [esp + 0x4c]
push eax
call fcn.0062493b
add esp, 4
cmp dword [esp + 0x98], esi
mov dword [esp + 0x60], 0xf
mov dword [esp + 0x5c], ebx
mov byte [esp + 0x4c], bl
jb 0x550471
mov ecx, dword [esp + 0x84]
push ecx
call fcn.0062493b
add esp, 4
cmp dword [esp + 0x108], esi
mov dword [esp + 0x98], 0xf
mov dword [esp + 0x94], ebx
mov byte [esp + 0x84], bl
jb 0x5504a3
mov edx, dword [esp + 0xf4]
push edx
call fcn.0062493b
add esp, 4
push ebx
call fcn.005475c0
int3