Function at 0x4dc740
Capabilities:
Contain obfuscated stackstrings

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5fb2dd
mov eax, dword fs:[0]
push eax
sub esp, 0x43c
mov eax, dword [0x654c54]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x3f8], ecx
mov eax, dword [ebp - 0x3f8]
cmp dword [eax + 0x374], 0
je 0x4dc7d0
push 0
push 0xffffffffffffffeb
mov ecx, dword [ebp - 0x3f8]
mov edx, dword [ecx + 0x374]
push edx
call dword [sym.imp.USER32.dll_SetWindowLongA]
mov eax, dword [ebp - 0x3f8]
mov ecx, dword [eax + 0x374]
mov dword [ebp - 0x18], ecx
mov edx, dword [ebp - 0x3f8]
mov dword [edx + 0x374], 0
mov eax, dword [ebp - 0x18]
push eax
call dword [sym.imp.USER32.dll_DestroyWindow]
mov ecx, dword [ebp - 0x3f8]
mov edx, dword [ecx + 0x320]
mov dword [edx + 0x70], 0
mov eax, dword [ebp - 0x3f8]
movzx ecx, byte [eax + 0x581]
test ecx, ecx
jne 0x4dc80b
mov edx, dword [ebp - 0x3f8]
movzx eax, byte [edx + 0x367]
test eax, eax
je 0x4dcacf
mov ecx, dword [ebp - 0x3f8]
movzx edx, byte [ecx + 0x369]
test edx, edx
jne 0x4dcacf
mov dword [ebp - 0x3c], 0x82ca0000
mov eax, dword [ebp - 0x3f8]
movzx ecx, byte [eax + 0x649]
test ecx, ecx
je 0x4dc82f
mov edx, dword [ebp - 0x3c]
or edx, 0x10000
mov dword [ebp - 0x3c], edx
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], 0
mov eax, dword [ebp - 0x3f8]
mov ecx, dword [eax + 0xc0]
mov dword [ebp - 0x20], ecx
mov edx, dword [ebp - 0x3f8]
mov eax, dword [edx + 0xc4]
mov dword [ebp - 0x1c], eax
push 0
mov ecx, dword [ebp - 0x3c]
push ecx
lea edx, [ebp - 0x28]
push edx
call dword [sym.imp.USER32.dll_AdjustWindowRect]
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x20]
sub eax, dword [ebp - 0x28]
mov dword [ebp - 0x40], eax
mov ecx, dword [ebp - 0x1c]
sub ecx, dword [ebp - 0x24]
mov dword [ebp - 0x50], ecx
push 0
lea edx, [ebp - 0x38]
push edx
push 0
push 0x30
call dword [sym.imp.USER32.dll_SystemParametersInfoA]
mov dword [ebp - 0x4c], 0x40
mov dword [ebp - 0x44], 0x40
mov eax, dword [ebp - 0x3f8]
cmp dword [eax + 0xb8], 0xffffffff
je 0x4dc936
mov ecx, dword [ebp - 0x3f8]
mov edx, dword [ecx + 0xb8]
mov dword [ebp - 0x4c], edx
mov eax, dword [ebp - 0x3f8]
mov ecx, dword [eax + 0xbc]
mov dword [ebp - 0x44], ecx
mov dword [ebp - 0x54], 4
mov edx, dword [ebp - 0x38]
add edx, dword [ebp - 0x54]
cmp dword [ebp - 0x4c], edx
jge 0x4dc8ea
mov eax, dword [ebp - 0x38]
add eax, dword [ebp - 0x54]
mov dword [ebp - 0x4c], eax
mov ecx, dword [ebp - 0x34]
add ecx, dword [ebp - 0x54]
cmp dword [ebp - 0x44], ecx
jge 0x4dc8fe
mov edx, dword [ebp - 0x34]
add edx, dword [ebp - 0x54]
mov dword [ebp - 0x44], edx
mov eax, dword [ebp - 0x4c]
add eax, dword [ebp - 0x40]
mov ecx, dword [ebp - 0x30]
sub ecx, dword [ebp - 0x54]
cmp eax, ecx
jl 0x4dc91a
mov edx, dword [ebp - 0x30]
sub edx, dword [ebp - 0x40]
sub edx, dword [ebp - 0x54]
mov dword [ebp - 0x4c], edx
mov eax, dword [ebp - 0x44]
add eax, dword [ebp - 0x50]
mov ecx, dword [ebp - 0x2c]
sub ecx, dword [ebp - 0x54]
cmp eax, ecx
jl 0x4dc936
mov edx, dword [ebp - 0x2c]
sub edx, dword [ebp - 0x50]
sub edx, dword [ebp - 0x54]
mov dword [ebp - 0x44], edx
call fcn.00525d60
movzx eax, al
test eax, eax
je 0x4dc9df
push 0
mov ecx, dword [ebp - 0x3f8]
add ecx, 0x60
push ecx
lea edx, [ebp - 0x74]
push edx
call fcn.00526860
add esp, 0xc
mov dword [ebp - 0x208], eax
mov eax, dword [ebp - 0x208]
cmp dword [eax + 0x18], 0x10
jb 0x4dc981
mov ecx, dword [ebp - 0x208]
mov edx, dword [ecx + 4]
mov dword [ebp - 0x3fc], edx
jmp 0x4dc990
mov eax, dword [ebp - 0x208]
add eax, 4
mov dword [ebp - 0x3fc], eax
push 0
mov ecx, dword [0x6a1658]
push ecx
push 0
push 0
mov edx, dword [ebp - 0x50]
push edx
mov eax, dword [ebp - 0x40]
push eax
mov ecx, dword [ebp - 0x44]
push ecx
mov edx, dword [ebp - 0x4c]
push edx
mov eax, dword [ebp - 0x3c]
push eax
mov ecx, dword [ebp - 0x3fc]
push ecx
push str.MainWindow
push 0
call dword [sym.imp.USER32.dll_CreateWindowExA]
mov edx, dword [ebp - 0x3f8]
mov dword [edx + 0x374], eax
push 0
push 1
lea ecx, [ebp - 0x74]
call fcn.004079f0
jmp 0x4dca5b
mov eax, dword [ebp - 0x3f8]
add eax, 0x60
mov dword [ebp - 0x21c], eax
mov ecx, dword [ebp - 0x21c]
cmp dword [ecx + 0x18], 8
jb 0x4dca0b
mov edx, dword [ebp - 0x21c]
mov eax, dword [edx + 4]
mov dword [ebp - 0x400], eax
jmp 0x4dca1a
mov ecx, dword [ebp - 0x21c]
add ecx, 4
mov dword [ebp - 0x400], ecx
push 0
mov edx, dword [0x6a1658]
push edx
push 0
push 0
mov eax, dword [ebp - 0x50]
push eax
mov ecx, dword [ebp - 0x40]
push ecx
mov edx, dword [ebp - 0x44]
push edx
mov eax, dword [ebp - 0x4c]
push eax
mov ecx, dword [ebp - 0x3c]
push ecx
mov edx, dword [ebp - 0x400]
push edx
push 0x6135c0
push 0
call dword [sym.imp.USER32.dll_CreateWindowExW]
mov ecx, dword [ebp - 0x3f8]
mov dword [ecx + 0x374], eax
mov edx, dword [ebp - 0x3f8]
cmp dword [edx + 0xb8], 0xffffffff
jne 0x4dcabd
push 0
mov eax, dword [ebp - 0x50]
push eax
mov ecx, dword [ebp - 0x40]
push ecx
mov edx, dword [ebp - 0x2c]
sub edx, dword [ebp - 0x34]
sub edx, dword [ebp - 0x50]
mov dword [ebp - 0x404], edx
fild dword [ebp - 0x404]
fmul qword [0x6135b8]
call fcn.005cb710
add eax, dword [ebp - 0x34]
push eax
mov eax, dword [ebp - 0x30]
sub eax, dword [ebp - 0x38]
sub eax, dword [ebp - 0x40]
cdq
sub eax, edx
sar eax, 1
add eax, dword [ebp - 0x38]
push eax
mov eax, dword [ebp - 0x3f8]
mov ecx, dword [eax + 0x374]
push ecx
call dword [sym.imp.USER32.dll_MoveWindow]
mov edx, dword [ebp - 0x3f8]
mov byte [edx + 0x368], 1
jmp 0x4dcc28
call fcn.00525d60
movzx eax, al
test eax, eax
je 0x4dcb90
push 0
mov ecx, dword [ebp - 0x3f8]
add ecx, 0x60
push ecx
lea edx, [ebp - 0x90]
push edx
call fcn.00526860
add esp, 0xc
mov dword [ebp - 0x220], eax
mov eax, dword [ebp - 0x220]
cmp dword [eax + 0x18], 0x10
jb 0x4dcb1d
mov ecx, dword [ebp - 0x220]
mov edx, dword [ecx + 4]
mov dword [ebp - 0x408], edx
jmp 0x4dcb2c
mov eax, dword [ebp - 0x220]
add eax, 4
mov dword [ebp - 0x408], eax
push 0
mov ecx, dword [0x6a1658]
push ecx
push 0
push 0
mov edx, dword [ebp - 0x3f8]
mov eax, dword [edx + 0xc4]
push eax
mov ecx, dword [ebp - 0x3f8]
mov edx, dword [ecx + 0xc0]
push edx
push 0
push 0
push 0x90000000
mov eax, dword [ebp - 0x408]
push eax
push str.MainWindow
push 8
call dword [sym.imp.USER32.dll_CreateWindowExA]
mov ecx, dword [ebp - 0x3f8]
mov dword [ecx + 0x374], eax
push 0
push 1
lea ecx, [ebp - 0x90]
call fcn.004079f0
jmp 0x4dcc1b
mov edx, dword [ebp - 0x3f8]
add edx, 0x60
mov dword [ebp - 0x234], edx
mov eax, dword [ebp - 0x234]
cmp dword [eax + 0x18], 8
jb 0x4dcbbc
mov ecx, dword [ebp - 0x234]
mov edx, dword [ecx + 4]
mov dword [ebp - 0x40c], edx
jmp 0x4dcbcb
mov eax, dword [ebp - 0x234]
add eax, 4
mov dword [ebp - 0x40c], eax
push 0
mov ecx, dword [0x6a1658]
push ecx
push 0
push 0
mov edx, dword [ebp - 0x3f8]
mov eax, dword [edx + 0xc4]
push eax
mov ecx, dword [ebp - 0x3f8]
mov edx, dword [ecx + 0xc0]
push edx
push 0
push 0
push 0x90000000
mov eax, dword [ebp - 0x40c]
push eax
push 0x6135c0
push 8
call dword [sym.imp.USER32.dll_CreateWindowExW]
mov ecx, dword [ebp - 0x3f8]
mov dword [ecx + 0x374], eax
mov edx, dword [ebp - 0x3f8]
mov byte [edx + 0x368], 0
mov eax, dword [ebp - 0x3f8]
push eax
push 0xffffffffffffffeb
mov ecx, dword [ebp - 0x3f8]
mov edx, dword [ecx + 0x374]
push edx
call dword [sym.imp.USER32.dll_SetWindowLongA]
mov eax, dword [ebp - 0x3f8]
cmp dword [eax + 0x3a0], 0
jne 0x4dcd67
push 0xd64
call fcn.005cb847
add esp, 4
mov dword [ebp - 0x98], eax
mov dword [ebp - 4], 0
cmp dword [ebp - 0x98], 0
je 0x4dcc94
mov ecx, dword [ebp - 0x3f8]
push ecx
mov ecx, dword [ebp - 0x98]
call fcn.0045fd50
mov dword [ebp - 0x410], eax
jmp 0x4dcc9e
mov dword [ebp - 0x410], 0
mov edx, dword [ebp - 0x410]
mov dword [ebp - 0x94], edx
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x3f8]
mov ecx, dword [ebp - 0x94]
mov dword [eax + 0x3a0], ecx
mov byte [ebp - 0x56], 0
push 0x612cb0
lea ecx, [ebp - 0xb4]
call fcn.0040dbc0
mov dword [ebp - 4], 1
lea edx, [ebp - 0x56]
push edx
lea eax, [ebp - 0xb4]
push eax
mov ecx, dword [ebp - 0x3f8]
call fcn.004d3820
mov byte [ebp - 0x55], al
mov dword [ebp - 4], 0xffffffff
push 0
push 1
lea ecx, [ebp - 0xb4]
call fcn.004079f0
movzx ecx, byte [ebp - 0x55]
test ecx, ecx
je 0x4dcd67
mov edx, dword [ebp - 0x3f8]
movzx eax, byte [edx + 0x667]
test eax, eax
je 0x4dcd40
mov ecx, dword [ebp - 0x3f8]
mov byte [ecx + 0x667], 0
mov edx, dword [ebp - 0x3f8]
mov byte [edx + 0x668], 1
movzx eax, byte [ebp - 0x56]
test eax, eax
je 0x4dcd55
mov ecx, dword [ebp - 0x3f8]
mov byte [ecx + 0x668], 1
mov edx, dword [ebp - 0x3f8]
mov eax, dword [edx + 0x3a0]
mov cl, byte [ebp - 0x56]
mov byte [eax + 0x38], cl
mov ecx, dword [ebp - 0x3f8]
call fcn.004dea10
mov dword [ebp - 0x10], eax
mov edx, dword [ebp - 0x3f8]
mov eax, dword [edx + 0x3a0]
cmp dword [eax + 0x34], 0
je 0x4dcdec
mov ecx, dword [ebp - 0x3f8]
mov edx, dword [ecx + 0x3a0]
mov eax, dword [edx + 0x34]
mov cl, byte [eax + 0xba]
mov byte [ebp - 0x265], cl
movzx edx, byte [ebp - 0x265]
test edx, edx
je 0x4dcdec
push str.Is3D
lea ecx, [ebp - 0xd0]
call fcn.0040dc00
mov dword [ebp - 4], 2
lea eax, [ebp - 0xd0]
push eax
mov ecx, dword [ebp - 0x3f8]
call fcn.004d2ec0
mov dword [ebp - 4], 0xffffffff
push 0
push 1
lea ecx, [ebp - 0xd0]
call fcn.00407a40
mov ecx, dword [ebp - 0x3f8]
movzx edx, byte [ecx + 0x367]
test edx, edx
je 0x4dcf15
cmp dword [ebp - 0x10], 6
jne 0x4dcf15
mov eax, dword [ebp - 0x3f8]
movzx ecx, byte [eax + 0x36b]
test ecx, ecx
je 0x4dcee6
push str.Please_set_your_desktop_color_depth_to_16_bit.
lea ecx, [ebp - 0xec]
call fcn.0040dc00
mov dword [ebp - 4], 3
push str.PLEASE_SET_COLOR_DEPTH
lea ecx, [ebp - 0x108]
call fcn.0040dbc0
mov byte [ebp - 4], 4
lea edx, [ebp - 0xec]
push edx
lea eax, [ebp - 0x108]
push eax
lea ecx, [ebp - 0x124]
push ecx
mov ecx, dword [ebp - 0x3f8]
call fcn.004df6b0
mov dword [ebp - 0x414], eax
mov edx, dword [ebp - 0x414]
mov dword [ebp - 0x418], edx
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x418]
push eax
mov ecx, dword [ebp - 0x3f8]
mov edx, dword [ecx]
mov ecx, dword [ebp - 0x3f8]
mov eax, dword [edx + 0x7c]
call eax
mov byte [ebp - 4], 4
push 0
push 1
lea ecx, [ebp - 0x124]
call fcn.00407a40
mov byte [ebp - 4], 3
push 0
push 1
lea ecx, [ebp - 0x108]
call fcn.004079f0
mov dword [ebp - 4], 0xffffffff
push 0
push 1
lea ecx, [ebp - 0xec]
call fcn.00407a40
push 1
mov ecx, dword [ebp - 0x3f8]
call fcn.004d56d0
jmp 0x4dcf0b
mov ecx, dword [ebp - 0x3f8]
mov byte [ecx + 0x36a], 1
push 0
mov edx, dword [ebp - 0x3f8]
mov eax, dword [edx]
mov ecx, dword [ebp - 0x3f8]
mov edx, dword [eax + 0x114]
call edx
jmp 0x4dd300
mov eax, dword [ebp - 0x3f8]
movzx ecx, byte [eax + 0x367]
test ecx, ecx
jne 0x4dcf5c
cmp dword [ebp - 0x10], 4
je 0x4dcf32
cmp dword [ebp - 0x10], 5
jne 0x4dcf5c
mov edx, dword [ebp - 0x3f8]
mov byte [edx + 0x36b], 1
push 1
mov eax, dword [ebp - 0x3f8]
mov edx, dword [eax]
mov ecx, dword [ebp - 0x3f8]
mov eax, dword [edx + 0x114]
call eax
jmp 0x4dd1ca
cmp dword [ebp - 0x10], 7
jne 0x4dcf7b
push 1
push 0
mov ecx, dword [ebp - 0x3f8]
call fcn.004e3140
jmp 0x4dd300
cmp dword [ebp - 0x10], 0
je 0x4dd1ca
mov ecx, dword [ebp - 0x3f8]
call fcn.004e2f90
movzx ecx, al
test ecx, ecx
je 0x4dcfb0
push 1
push 0
mov ecx, dword [ebp - 0x3f8]
call fcn.004e3140
jmp 0x4dd300
push str.Failed_to_initialize_DirectDraw:
lea ecx, [ebp - 0x1b0]
call fcn.0040dc00
mov dword [ebp - 4], 6
push str.FAILED_INIT_DIRECTDRAW
lea ecx, [ebp - 0x1cc]
call fcn.0040dbc0
mov byte [ebp - 4], 7
mov edx, dword [ebp - 0x10]
push edx
lea eax, [ebp - 0x140]
push eax
call fcn.00460260
add esp, 8
mov dword [ebp - 0x41c], eax
mov ecx, dword [ebp - 0x41c]
mov dword [ebp - 0x420], ecx
mov byte [ebp - 4], 8
push 0x6134cc
mov edx, dword [ebp - 0x420]
push edx
lea eax, [ebp - 0x15c]
push eax
call fcn.0040f1e0
add esp, 0xc
mov dword [ebp - 0x424], eax
mov ecx, dword [ebp - 0x424]
mov dword [ebp - 0x428], ecx
mov byte [ebp - 4], 9
mov edx, dword [ebp - 0x3f8]
mov eax, dword [edx + 0x3a0]
add eax, 0xd48
push eax
mov ecx, dword [ebp - 0x428]
push ecx
lea edx, [ebp - 0x178]
push edx
call fcn.0040f350
add esp, 0xc
mov dword [ebp - 0x42c], eax
mov eax, dword [ebp - 0x42c]
mov dword [ebp - 0x430], eax
mov byte [ebp - 4], 0xa
mov ecx, dword [ebp - 0x430]
push ecx
lea edx, [ebp - 0x194]
push edx
call fcn.00526c90
add esp, 8
mov dword [ebp - 0x434], eax
mov eax, dword [ebp - 0x434]
mov dword [ebp - 0x438], eax
mov byte [ebp - 4], 0xb
lea ecx, [ebp - 0x1b0]
push ecx
lea edx, [ebp - 0x1cc]
push edx
lea eax, [ebp - 0x1e8]
push eax
mov ecx, dword [ebp - 0x3f8]
call fcn.004df6b0
mov dword [ebp - 0x43c], eax
mov ecx, dword [ebp - 0x43c]
mov dword [ebp - 0x440], ecx
mov byte [ebp - 4], 0xc
mov edx, dword [ebp - 0x438]
push edx
mov eax, dword [ebp - 0x440]
push eax
lea ecx, [ebp - 0x204]
push ecx
call fcn.0040f4f0
add esp, 0xc
mov dword [ebp - 0x444], eax
mov edx, dword [ebp - 0x444]
mov dword [ebp - 0x448], edx
mov byte [ebp - 4], 0xd
mov eax, dword [ebp - 0x448]
push eax
mov ecx, dword [ebp - 0x3f8]
mov edx, dword [ecx]
mov ecx, dword [ebp - 0x3f8]
mov eax, dword [edx + 0x7c]
call eax
mov byte [ebp - 4], 0xc
push 0
push 1
lea ecx, [ebp - 0x204]
call fcn.00407a40
mov byte [ebp - 4], 0xb
push 0
push 1
lea ecx, [ebp - 0x1e8]
call fcn.00407a40
mov byte [ebp - 4], 0xa
push 0
push 1
lea ecx, [ebp - 0x194]
call fcn.00407a40
mov byte [ebp - 4], 9
push 0
push 1
lea ecx, [ebp - 0x178]
call fcn.004079f0
mov byte [ebp - 4], 8
push 0
push 1
lea ecx, [ebp - 0x15c]
call fcn.004079f0
mov byte [ebp - 4], 7
push 0
push 1
lea ecx, [ebp - 0x140]
call fcn.004079f0
mov byte [ebp - 4], 6
push 0
push 1
lea ecx, [ebp - 0x1cc]
call fcn.004079f0
mov dword [ebp - 4], 0xffffffff
push 0
push 1
lea ecx, [ebp - 0x1b0]
call fcn.00407a40
push 1
mov ecx, dword [ebp - 0x3f8]
call fcn.004d56d0
mov ecx, dword [ebp - 0x3f8]
mov dl, byte [ecx + 0x53e]
mov byte [ebp - 0x11], dl
call dword [sym.imp.USER32.dll_GetActiveWindow]
mov ecx, dword [ebp - 0x3f8]
xor edx, edx
cmp eax, dword [ecx + 0x374]
sete dl
mov eax, dword [ebp - 0x3f8]
mov byte [eax + 0x53e], dl
mov ecx, dword [ebp - 0x3f8]
mov byte [ecx + 0x540], 0
mov edx, dword [ebp - 0x3f8]
movzx eax, byte [edx + 0x53f]
test eax, eax
je 0x4dd26a
mov ecx, dword [ebp - 0x3f8]
movzx edx, byte [ecx + 0x469]
test edx, edx
je 0x4dd243
push 1
mov eax, dword [ebp - 0x3f8]
mov edx, dword [eax]
mov ecx, dword [ebp - 0x3f8]
mov eax, dword [edx + 0xfc]
call eax
mov ecx, dword [ebp - 0x3f8]
mov byte [ecx + 0x53f], 0
mov edx, dword [ebp - 0x3f8]
mov al, byte [edx + 0x53e]
mov byte [ebp - 0x11], al
mov ecx, dword [ebp - 0x3f8]
call fcn.004d9960
movzx ecx, byte [ebp - 0x11]
mov edx, dword [ebp - 0x3f8]
movzx eax, byte [edx + 0x53e]
cmp ecx, eax
je 0x4dd28a
mov ecx, dword [ebp - 0x3f8]
call fcn.004d9960
mov ecx, dword [ebp - 0x3f8]
mov edx, dword [ecx]
mov ecx, dword [ebp - 0x3f8]
mov eax, dword [edx + 0x34]
call eax
mov ecx, dword [ebp - 0x3f8]
mov ecx, dword [ecx + 0x3a0]
call fcn.004604b0
mov edx, dword [ebp - 0x3f8]
mov ecx, dword [edx + 0x320]
mov dword [ecx + 0x70], eax
mov edx, dword [ebp - 0x3f8]
mov eax, dword [edx + 0x320]
mov ecx, dword [ebp - 0x3f8]
mov ecx, dword [ecx + 0x320]
mov edx, dword [eax]
mov eax, dword [edx + 0x28]
call eax
push 0
mov ecx, dword [ebp - 0x3f8]
mov edx, dword [ecx + 0x4b4]
push edx
push 0x64
mov eax, dword [ebp - 0x3f8]
mov ecx, dword [eax + 0x374]
push ecx
call dword [sym.imp.USER32.dll_SetTimer]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
mov esp, ebp
pop ebp
ret