Function at 0x5088c0
Capabilities:
Hide graphical window

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffa8
push ebx
push esi
push edi
mov dword [ebp - 4], eax
cmp byte [0x675f4c], 0
jne 0x508ff7
mov eax, dword [0x671ae4]
mov eax, dword [eax]
cmp byte [eax + 0x16d], 0
jne 0x508ff7
mov eax, dword [0x672ac4]
cmp byte [eax], 0
jne 0x508ff7
cmp byte [0x675ead], 0
jne 0x508ff7
call fcn.0053c3b8
test eax, eax
je 0x508923
call fcn.0053c3b8
cmp byte [eax + 0x464], 0
jne 0x508ff7
mov byte [0x675f4c], 1
mov byte [0x675eac], 0
call fcn.0053c3b8
call fcn.004e3214
call fcn.0053c3b8
test eax, eax
je 0x508957
call fcn.0053c3b8
mov byte [eax + 0x453], 0
mov dl, 0xff
call fcn.005e6210
mov eax, dword [ebp - 4]
call fcn.00644b88
xor edx, edx
push ebp
push 0x508f70
push dword fs:[edx]
mov dword fs:[edx], esp
call fcn.004e5960
mov edx, dword [ebp - 4]
mov edx, dword [edx + 0x1f0]
call fcn.004fd124
call fcn.004e5960
call fcn.004fd6a4
call fcn.004e5960
call fcn.004fd7b4
call fcn.004e5960
call fcn.004fd898
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x1f0]
call fcn.00649a78
call fcn.0053c3b8
call fcn.0048e2b4
mov eax, dword [0x672cb4]
cmp byte [eax + 8], 1
jne 0x5089d5
cmp byte [0x675ee8], 0
je 0x5089eb
mov eax, dword [0x672cb4]
test byte [eax + 0x2b], 2
jne 0x5089eb
mov eax, dword [ebp - 4]
call fcn.00506c14
test al, al
jne 0x5089eb
mov eax, dword [0x67276c]
cmp byte [eax], 0
je 0x508a5a
push ebp
call fcn.00506e50
pop ecx
mov eax, dword [ebp - 4]
call fcn.00506c14
test al, al
je 0x508a28
mov eax, dword [ebp - 4]
call fcn.00506c58
test al, al
je 0x508a28
mov eax, dword [0x675ed4]
call fcn.00643568
push 0
mov eax, dword [0x675ed4]
call fcn.00646ed0
push eax
call sub.user32.dll_ShowWindow
jmp 0x508a7f
mov eax, dword [0x675ed4]
call fcn.0061168c
mov eax, dword [0x675ed4]
call fcn.00643570
cmp byte [0x675ec7], 0
je 0x508a7f
mov byte [0x675ec7], 0
xor edx, edx
mov eax, dword [0x675ed4]
call fcn.00610f68
jmp 0x508a7f
cmp dword [0x675ed4], 0
je 0x508a7f
mov eax, dword [0x675ed4]
call fcn.00643568
push 0
mov eax, dword [0x675ed4]
call fcn.00646ed0
push eax
call sub.user32.dll_ShowWindow
cmp dword [0x675ed4], 0
je 0x508bea
mov eax, dword [ebp - 4]
call fcn.00506c14
test al, al
je 0x508ad8
xor edx, edx
mov eax, dword [0x675ed4]
call fcn.00642c78
xor edi, edi
call fcn.0048e300
cmp al, 2
jne 0x508ac0
mov eax, dword [ebp - 4]
call fcn.00642e8c
mov edi, eax
call fcn.004a84b8
sub edi, eax
mov edx, edi
mov eax, dword [0x675ed4]
call fcn.00642dd0
mov eax, dword [0x675ed4]
call fcn.00646e30
jmp 0x508afb
call fcn.0048e300
sub al, 1
jb 0x508ae5
je 0x508ae9
jmp 0x508aed
mov al, 1
jmp 0x508aef
mov al, 3
jmp 0x508aef
mov al, 4
mov edx, eax
mov eax, dword [0x675ed4]
call fcn.00642c78
mov eax, dword [0x675ed4]
cmp byte [eax + 0x3a], 0
je 0x508bea
call fcn.0048e300
sub al, 1
jb 0x508b17
je 0x508b37
jmp 0x508b41
mov eax, dword [ebp - 4]
call fcn.00506c14
test al, al
je 0x508b2d
mov al, byte [0x509000]
mov byte [ebp - 5], al
jmp 0x508b49
mov al, byte [0x509004]
mov byte [ebp - 5], al
jmp 0x508b49
mov al, byte [0x509008]
mov byte [ebp - 5], al
jmp 0x508b49
mov al, byte [0x50900c]
mov byte [ebp - 5], al
mov eax, dword [0x675ed4]
mov eax, dword [eax + 0x124]
mov edi, dword [eax + 0x18]
dec edi
cmp edi, 0
jl 0x508bea
mov eax, dword [0x675ed4]
mov eax, dword [eax + 0x124]
mov eax, dword [eax + 0x1c]
mov esi, dword [eax + edi*4]
mov bl, byte [ebp - 5]
cmp edi, 0x1e
jne 0x508ba1
call fcn.0048e300
test al, al
je 0x508ba1
mov eax, dword [0x675ed4]
mov eax, dword [eax + 0x128]
and eax, dword [0x509010]
mov edx, dword [0x509014]
cmp edx, eax
jne 0x508ba1
and bl, 0xf7
mov eax, ebx
cmp al, byte [esi + 0x157]
je 0x508be0
mov al, byte [esi + 0x157]
and al, byte [0x509018]
push eax
mov al, byte [0x509018]
and al, bl
pop edx
cmp al, dl
jne 0x508bd3
mov byte [esi + 0x157], bl
mov eax, esi
call fcn.0060f22c
jmp 0x508be0
mov byte [esi + 0x157], bl
mov eax, esi
mov edx, dword [eax]
call dword [edx + 0x38]
dec edi
cmp edi, 0xffffffff
jne 0x508b61
mov byte [0x675ec8], 0
call fcn.0053c3b8
test eax, eax
je 0x508c23
mov bl, 1
mov esi, 0x675ed8
mov eax, dword [esi]
test eax, eax
je 0x508c12
mov eax, dword [eax + 0x1a0]
call fcn.0061002c
add esi, 4
dec bl
jne 0x508c01
call fcn.004660ac
call fcn.0046389c
push ebp
call fcn.00507478
pop ecx
push ebp
call fcn.0050767c
pop ecx
call fcn.00508704
mov eax, dword [0x673378]
cmp dword [eax], 0
je 0x508c59
mov eax, dword [0x673378]
mov eax, dword [eax]
cmp byte [eax + 0x3a], 0
je 0x508c59
mov eax, dword [0x673378]
mov eax, dword [eax]
call fcn.004d3164
cmp dword [0x675edc], 0
je 0x508dca
mov eax, dword [0x675edc]
cmp byte [eax + 0x3a], 0
je 0x508dca
mov eax, dword [0x675edc]
and word [eax + 0xbc], 0xfbff
mov eax, dword [0x672cb4]
test byte [eax + 2], 1
jne 0x508ca6
call fcn.0053de3c
dec eax
sub al, 2
jae 0x508ca6
mov eax, dword [0x675edc]
or word [eax + 0xbc], 0x400
cmp dword [0x675ed4], 0
je 0x508d71
mov eax, dword [0x675ed4]
cmp byte [eax + 0x3a], 0
je 0x508d71
mov eax, dword [ebp - 4]
call fcn.00506c14
test al, al
jne 0x508d71
lea edx, [ebp - 0x28]
mov eax, dword [0x675ed4]
call fcn.00642e30
call fcn.0053de3c
cmp al, 1
jne 0x508d0d
call fcn.0048e300
test al, al
jne 0x508d0d
mov eax, dword [0x675edc]
mov eax, dword [eax + 0x2c]
cmp eax, dword [ebp - 0x1c]
jge 0x508d0d
mov edx, dword [ebp - 0x1c]
mov eax, dword [0x675edc]
call fcn.00642de8
jmp 0x508d71
call fcn.0053de3c
cmp al, 3
jne 0x508d3b
call fcn.0048e300
cmp al, 1
jne 0x508d3b
mov eax, dword [0x675edc]
mov eax, dword [eax + 0x28]
cmp eax, dword [ebp - 0x20]
jge 0x508d3b
mov edx, dword [ebp - 0x20]
mov eax, dword [0x675edc]
call fcn.00642dd0
jmp 0x508d71
call fcn.0053de3c
cmp al, 4
jne 0x508d71
call fcn.0048e300
cmp al, 2
jne 0x508d71
mov eax, dword [0x675edc]
call fcn.00642cdc
cmp eax, dword [ebp - 0x28]
jle 0x508d71
mov eax, dword [0x675edc]
mov edx, dword [ebp - 0x28]
sub edx, dword [eax + 0x30]
mov eax, dword [0x675edc]
call fcn.00642dd0
cmp dword [0x675ee0], 0
je 0x508dca
mov eax, dword [0x675ee0]
cmp byte [eax + 0x3a], 0
je 0x508dca
call fcn.0053de3c
cmp al, 2
jne 0x508dca
mov eax, dword [0x675edc]
call fcn.00642ce8
mov edx, dword [0x675ee0]
cmp eax, dword [edx + 0x2c]
jle 0x508dca
mov eax, dword [0x675edc]
mov eax, dword [eax + 0x34]
mov edx, 1
call fcn.00656b78
mov edx, dword [0x675ee0]
mov edx, dword [edx + 0x2c]
sub edx, eax
mov eax, dword [0x675edc]
call fcn.00642de8
call int.00516ae0
test eax, eax
je 0x508f0c
call int.00516ae0
cmp byte [eax + 0x3a], 0
je 0x508f0c
mov eax, dword [0x672cb4]
mov al, byte [eax + 0x1b]
sub al, 1
jb 0x508df6
je 0x508e01
jmp 0x508e0c
call int.00516ae0
mov esi, eax
xor ebx, ebx
jmp 0x508e1a
xor esi, esi
call int.00516ae0
mov ebx, eax
jmp 0x508e1a
call int.00516ae0
mov esi, eax
call fcn.00516ae8
mov ebx, eax
cmp dword [0x675ed4], 0
je 0x508e8c
mov eax, dword [0x675ed4]
cmp byte [eax + 0x3a], 0
je 0x508e8c
mov eax, dword [ebp - 4]
call fcn.00506c14
test al, al
jne 0x508e8c
lea edx, [ebp - 0x38]
mov eax, dword [0x675ed4]
call fcn.00642e30
test esi, esi
je 0x508e66
call fcn.0048e300
cmp al, 1
jne 0x508e66
mov eax, dword [esi + 0x28]
cmp eax, dword [ebp - 0x30]
jge 0x508e66
mov edx, dword [ebp - 0x30]
mov eax, esi
call fcn.00642dd0
test ebx, ebx
je 0x508e8c
call fcn.0048e300
cmp al, 2
jne 0x508e8c
mov eax, ebx
call fcn.00642cdc
cmp eax, dword [ebp - 0x38]
jle 0x508e8c
mov edx, dword [ebp - 0x38]
sub edx, dword [ebx + 0x30]
mov eax, ebx
call fcn.00642dd0
cmp dword [0x675edc], 0
je 0x508ef2
mov eax, dword [0x675edc]
cmp byte [eax + 0x3a], 0
je 0x508ef2
lea edx, [ebp - 0x48]
mov eax, dword [0x675edc]
call fcn.00642e30
test esi, esi
je 0x508ecc
call fcn.0053de3c
cmp al, 3
jne 0x508ecc
mov eax, dword [esi + 0x28]
cmp eax, dword [ebp - 0x40]
jge 0x508ecc
mov edx, dword [ebp - 0x40]
mov eax, esi
call fcn.00642dd0
test ebx, ebx
je 0x508ef2
call fcn.0053de3c
cmp al, 4
jne 0x508ef2
mov eax, ebx
call fcn.00642cdc
cmp eax, dword [ebp - 0x48]
jle 0x508ef2
mov edx, dword [ebp - 0x48]
sub edx, dword [ebx + 0x30]
mov eax, ebx
call fcn.00642dd0
test esi, esi
je 0x508eff
mov dl, 3
mov eax, esi
call fcn.00642c78
test ebx, ebx
je 0x508f0c
mov dl, 4
mov eax, ebx
call fcn.00642c78
mov eax, dword [0x675ee0]
cmp byte [eax + 0x3a], 0
je 0x508f66
mov eax, dword [0x675ee0]
and word [eax + 0xbc], 0xfbff
mov eax, dword [0x672cb4]
test byte [eax + 2], 2
jne 0x508f66
mov eax, dword [0x672cb4]
test byte [eax + 2], 1
je 0x508f58
cmp dword [0x675edc], 0
je 0x508f58
call fcn.0053de3c
cmp al, 2
jne 0x508f58
mov eax, dword [0x675edc]
cmp byte [eax + 0x3a], 0
jne 0x508f66
mov eax, dword [0x675ee0]
or word [eax + 0xbc], 0x400
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x508f7a
cmp dword [0x675ed4], 0
je 0x508f90
lea edx, [ebp - 0x18]
mov eax, dword [0x675ed4]
call fcn.00642e30
mov eax, dword [ebp - 4]
call fcn.00644b90
cmp dword [0x675ed4], 0
je 0x508fd6
mov eax, dword [0x675ed4]
cmp byte [eax + 0x3a], 0
je 0x508fd6
lea eax, [ebp - 0x18]
push eax
lea edx, [ebp - 0x58]
mov eax, dword [0x675ed4]
call fcn.00642e30
lea eax, [ebp - 0x58]
push eax
call sub.user32.dll_EqualRect
test eax, eax
jne 0x508fd6
xor edx, edx
mov eax, dword [0x675ed4]
call fcn.00610f68
call fcn.0053c3b8
test eax, eax
je 0x508feb
call fcn.0053c3b8
mov byte [eax + 0x453], 0
call fcn.004e3230
mov byte [0x675f4c], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret