Function at 0x556df0
Capabilities:
Terminate process

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x47c
mov eax, dword [ebp + 8]
push ebx
push esi
cmp eax, 1
push edi
mov dword [ebp - 4], 0
mov dword [ebp - 0xc], 0xffffffff
jle 0x556e5a
mov ecx, dword [ebp + 0xc]
dec eax
mov dword [ebp + 8], eax
lea edx, [ecx + 4]
mov eax, dword [edx]
mov edi, str._config
mov esi, eax
mov ecx, 8
xor ebx, ebx
repe cmpsb byte [esi], byte es:[edi]
jne 0x556e39
mov dword [ebp - 4], 1
jmp 0x556e4e
mov esi, eax
mov edi, 0x5cdb64
mov ecx, 4
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x556e4e
mov dword [ebp - 0xc], eax
mov eax, dword [ebp + 8]
add edx, 4
dec eax
mov dword [ebp + 8], eax
jne 0x556e1c
mov dword [ebp - 8], 1
call fcn.0055e7d0
push 0
mov dword [0x7119a0], eax
call dword [sym.imp.USER32.dll_GetDC]
mov edi, dword [sym.imp.GDI32.dll_GetDeviceCaps]
mov esi, eax
push 8
push esi
call edi
push 0xa
push esi
mov ebx, eax
call edi
push 0xc
push esi
mov dword [ebp + 8], eax
call edi
push esi
xor esi, esi
push esi
mov edi, eax
call dword [sym.imp.USER32.dll_ReleaseDC]
lea ecx, [ebp - 0x54]
push 0x40
push ecx
call fcn.0055e640
mov edx, dword [ebp + 8]
add esp, 8
lea eax, [ebp - 0x54]
push edi
push edx
push ebx
push eax
push str.Machine:__s__Desktop:__dx_d___d_bpp
call fcn.005585e0
add esp, 0x14
call fcn.005565b0
test eax, eax
je 0x556fc9
cmp dword [ebp - 4], esi
jne 0x556fc9
mov ecx, dword [0x711790]
xor edx, edx
cmp ecx, esi
mov dword [ebp + 8], edx
jle 0x556efb
mov eax, 0x710b4c
cmp dword [eax], 2
jne 0x556ef0
dec edx
add eax, 0x198
dec ecx
jne 0x556eea
mov dword [ebp + 8], edx
lea ecx, [ebp + 8]
push ecx
push 0x5570f0
call fcn.00557110
mov eax, dword [ebp + 8]
add esp, 8
cmp eax, esi
jne 0x556fc9
mov eax, dword [0x711790]
mov dword [ebp + 0xc], esi
cmp eax, esi
mov dword [ebp - 0x10], esi
jle 0x556fc1
mov ebx, 0x710b2c
mov esi, dword [ebx + 0x20]
xor eax, eax
cmp esi, 2
lea edx, [ebp - 0x14]
setne al
dec eax
push 0
and eax, ebx
push edx
push eax
call sub.DDRAW.dll_DirectDrawCreate
test eax, eax
jne 0x556fa5
mov eax, dword [ebp - 0x14]
lea edx, [ebp - 4]
push edx
push 0x598158
mov ecx, dword [eax]
push eax
call dword [ecx]
test eax, eax
jne 0x556f97
mov eax, dword [ebp - 4]
lea edx, [ebp - 0x47c]
push 0
push edx
mov ecx, dword [eax]
push eax
call dword [ecx + 0x6c]
test eax, eax
jne 0x556f8c
mov ecx, 0x10
lea edi, [ebx + 0x10]
lea esi, [ebp - 0x64]
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x556f8c
inc dword [ebp + 0xc]
mov eax, dword [ebp - 4]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
jmp 0x556f9c
call fcn.005570c0
mov eax, dword [ebp - 0x14]
push eax
mov edx, dword [eax]
call dword [edx + 8]
mov ecx, dword [ebp - 0x10]
mov eax, dword [0x711790]
inc ecx
add ebx, 0x198
cmp ecx, eax
mov dword [ebp - 0x10], ecx
jl 0x556f2f
xor esi, esi
cmp dword [ebp + 0xc], eax
jne 0x556fc9
mov dword [ebp - 8], esi
cmp dword [ebp - 8], esi
je 0x5570a2
mov eax, dword [str.Midtown_Madness_]
push esi
push eax
push 0x20d
call fcn.0050e090
mov ebx, dword [sym.imp.USER32.dll_MessageBoxA]
add esp, 4
push eax
push esi
call ebx
mov esi, dword [sym.imp.WINMM.dll_timeGetTime]
call esi
mov edi, eax
call fcn.00557180
call esi
sub eax, edi
push eax
push str.DETECT_TIME:__d_ms
call fcn.005585e0
mov edx, dword [0x711790]
add esp, 8
lea ecx, [edx - 1]
mov eax, ecx
mov dword [0x5cd880], ecx
shl eax, 4
add eax, ecx
lea ecx, [eax + eax*2]
test byte [ecx*8 + 0x710ae8], 1
je 0x55703e
mov dword [0x5cd880], 0
test edx, edx
jne 0x557091
push 0x20e
call fcn.0050e090
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
add esp, 4
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push eax
mov esi, edi
mov edx, ecx
mov edi, 0x7117a0
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov eax, dword [str.Midtown_Madness_]
mov ecx, edx
and ecx, 3
push eax
push 0x7117a0
push 0
rep movsb byte es:[edi], byte [esi]
call ebx
push 0
call dword [sym.imp.KERNEL32.dll_ExitProcess]
call fcn.00556920
push 0xffffffffffffffff
push 0xffffffffffffffff
call fcn.0048e130
add esp, 8
mov eax, dword [ebp - 0xc]
cmp eax, 0xffffffff
je 0x5570af
mov dword [0x5cd880], eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret