Function at 0x405220
Capabilities:
Check mutex on windows
Get geographical location

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x4b8
mov eax, dword [0x493040]
xor eax, esp
mov dword [esp + 0x4b4], eax
mov edx, dword [ebp + 0x10]
xorps xmm0, xmm0
mov ecx, edx
mov dword [esp + 0x34], 0
push esi
push edi
movaps xmmword [esp + 0x10], xmm0
mov dword [esp + 0x20], 0
lea esi, [ecx + 1]
mov dword [esp + 0x24], 0
mov al, byte [ecx]
inc ecx
test al, al
jne 0x405264
sub ecx, esi
push ecx
push edx
lea ecx, [esp + 0x18]
call fcn.0040b940
lea eax, [esp + 0x10]
mov ecx, 0x494af4
push eax
call fcn.0040b050
mov ecx, dword [esp + 0x24]
cmp ecx, 0x10
jb 0x4052bd
mov edx, dword [esp + 0x10]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x4052b3
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x405e57
push ecx
push edx
call fcn.0045b012
add esp, 8
cmp dword [0x494b04], 0
ja 0x4052f2
push 0
push 0x48f86c
push 0x48f874
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
xor eax, eax
pop edi
pop esi
mov ecx, dword [esp + 0x4b4]
xor ecx, esp
call fcn.0045a978
mov esp, ebp
pop ebp
ret 0x10
cmp dword [0x494ac0], 0x10
mov eax, 0x494aac
cmovae eax, dword [0x494aac]
push eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
je 0x405e3f
push 0x200
lea eax, [esp + 0xbc]
push 0
push eax
call fcn.0045c980
add esp, 0xc
lea eax, [esp + 0x2b8]
push 0x200
push 0
push eax
call fcn.0045c980
mov esi, dword [sym.imp.KERNEL32.dll_GetLocaleInfoA]
lea eax, [esp + 0xc4]
add esp, 0xc
push 0x200
push eax
push 3
push 0x800
call esi
xorps xmm0, xmm0
mov dword [esp + 0x20], 0
lea ecx, [esp + 0xb8]
movaps xmmword [esp + 0x10], xmm0
mov dword [esp + 0x24], 0
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x405390
sub ecx, edx
lea eax, [esp + 0xb8]
push ecx
push eax
lea ecx, [esp + 0x18]
call fcn.0040b940
lea eax, [esp + 0x10]
mov ecx, 0x493a98
push eax
call fcn.0040b050
mov ecx, dword [esp + 0x24]
cmp ecx, 0x10
jb 0x4053f0
mov edx, dword [esp + 0x10]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x4053e6
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x405e57
push ecx
push edx
call fcn.0045b012
add esp, 8
push 0x200
lea eax, [esp + 0x2bc]
push eax
push 7
push 0x800
call esi
push 3
xorps xmm0, xmm0
mov dword [esp + 0x24], 0
push 0x48f88c
lea ecx, [esp + 0x18]
movaps xmmword [esp + 0x18], xmm0
mov dword [esp + 0x2c], 0
call fcn.0040b940
xorps xmm0, xmm0
mov dword [esp + 0x50], 0
lea ecx, [esp + 0xb8]
movaps xmmword [esp + 0x40], xmm0
mov dword [esp + 0x54], 0
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x405450
sub ecx, edx
lea eax, [esp + 0xb8]
push ecx
push eax
lea ecx, [esp + 0x48]
call fcn.0040b940
cmp dword [esp + 0x24], 0x10
lea ecx, [esp + 0x10]
mov esi, dword [esp + 0x50]
lea edx, [esp + 0x40]
cmovae ecx, dword [esp + 0x10]
cmp dword [esp + 0x54], 0x10
cmovae edx, dword [esp + 0x40]
cmp esi, dword [esp + 0x20]
jne 0x4054f9
sub esi, 4
jb 0x4054a7
mov eax, dword [edx]
cmp eax, dword [ecx]
jne 0x4054ac
add edx, 4
add ecx, 4
sub esi, 4
jae 0x405496
cmp esi, 0xfffffffc
je 0x4054e0
mov al, byte [edx]
cmp al, byte [ecx]
jne 0x4054d9
cmp esi, 0xfffffffd
je 0x4054e0
mov al, byte [edx + 1]
cmp al, byte [ecx + 1]
jne 0x4054d9
cmp esi, 0xfffffffe
je 0x4054e0
mov al, byte [edx + 2]
cmp al, byte [ecx + 2]
jne 0x4054d9
cmp esi, 0xffffffff
je 0x4054e0
mov al, byte [edx + 3]
cmp al, byte [ecx + 3]
je 0x4054e0
sbb eax, eax
or eax, 1
jmp 0x4054e2
xor eax, eax
test eax, eax
jne 0x4054f9
mov edi, dword [esp + 0x80]
mov eax, 3
xor ecx, ecx
jmp 0x4055fe
push 3
xorps xmm0, xmm0
mov dword [esp + 0x94], 0
push 0x48f88c
lea ecx, [esp + 0x88]
movaps xmmword [esp + 0x88], xmm0
mov dword [esp + 0x9c], 0
call fcn.0040b940
xorps xmm0, xmm0
mov dword [esp + 0x70], 0
lea ecx, [esp + 0x2b8]
movaps xmmword [esp + 0x60], xmm0
mov dword [esp + 0x74], 0
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x405550
sub ecx, edx
lea eax, [esp + 0x2b8]
push ecx
push eax
lea ecx, [esp + 0x68]
call fcn.0040b940
cmp dword [esp + 0x94], 0x10
lea ecx, [esp + 0x80]
mov edi, dword [esp + 0x80]
lea edx, [esp + 0x60]
mov esi, dword [esp + 0x70]
cmovae ecx, edi
cmp dword [esp + 0x74], 0x10
cmovae edx, dword [esp + 0x60]
cmp esi, dword [esp + 0x90]
jne 0x405611
sub esi, 4
jb 0x4055b5
mov eax, dword [edx]
cmp eax, dword [ecx]
jne 0x4055ba
add edx, 4
add ecx, 4
sub esi, 4
jae 0x4055a4
cmp esi, 0xfffffffc
je 0x4055ee
mov al, byte [edx]
cmp al, byte [ecx]
jne 0x4055e7
cmp esi, 0xfffffffd
je 0x4055ee
mov al, byte [edx + 1]
cmp al, byte [ecx + 1]
jne 0x4055e7
cmp esi, 0xfffffffe
je 0x4055ee
mov al, byte [edx + 2]
cmp al, byte [ecx + 2]
jne 0x4055e7
cmp esi, 0xffffffff
je 0x4055ee
mov al, byte [edx + 3]
cmp al, byte [ecx + 3]
je 0x4055ee
sbb eax, eax
or eax, 1
jmp 0x4055f0
xor eax, eax
test eax, eax
jne 0x405611
mov eax, 0xf
mov ecx, 8
mov edx, dword [esp + 0x60]
mov byte [esp + 0xf], 0
mov dword [esp + 0x3c], eax
test ecx, ecx
je 0x40565c
jmp 0x40561f
mov edx, dword [esp + 0x60]
mov eax, 0xf
mov byte [esp + 0xf], 1
mov ecx, dword [esp + 0x74]
and eax, 0xfffffff7
mov dword [esp + 0x3c], eax
cmp ecx, 0x10
jb 0x40565c
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x40564e
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x405e57
push ecx
push edx
call fcn.0045b012
mov eax, dword [esp + 0x44]
add esp, 8
test al, 4
je 0x405697
mov eax, dword [esp + 0x94]
cmp eax, 0x10
jb 0x405697
lea ecx, [eax + 1]
mov eax, edi
cmp ecx, 0x1000
jb 0x40568d
mov edi, dword [eax - 4]
add ecx, 0x23
sub eax, edi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x405e57
push ecx
push edi
call fcn.0045b012
add esp, 8
mov eax, dword [esp + 0x54]
cmp eax, 0x10
jb 0x4056cf
mov edx, dword [esp + 0x40]
lea ecx, [eax + 1]
mov eax, edx
cmp ecx, 0x1000
jb 0x4056c5
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x405e57
push ecx
push edx
call fcn.0045b012
add esp, 8
mov eax, dword [esp + 0x24]
cmp eax, 0x10
jb 0x405707
mov edx, dword [esp + 0x10]
lea ecx, [eax + 1]
mov eax, edx
cmp ecx, 0x1000
jb 0x4056fd
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x405e57
push ecx
push edx
call fcn.0045b012
add esp, 8
cmp byte [esp + 0xf], 0
jne 0x405e3f
push 0
push str.MMCMainFrame
call dword [sym.imp.USER32.dll_FindWindowA]
push eax
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
jne 0x405e3f
push str.favoritemonwait
push eax
push 1
push eax
call dword [sym.imp.KERNEL32.dll_CreateEventA]
mov esi, eax
push 0x4e20
push esi
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [0x494b04], 2
jbe 0x405d07
push 0x40
mov dword [esp + 0xa8], 0
call fcn.0045ad91
sub esp, 0x14
mov ecx, esp
mov dword [eax], eax
mov dword [eax + 4], eax
mov dword [eax + 8], eax
mov word [eax + 0xc], 0x101
push 0x494af4
mov dword [esp + 0xbc], eax
call fcn.0040b0d0
lea ecx, [esp + 0xb8]
call fcn.004087f0
add esp, 0x18
mov dword [esp + 0x20], 0
xorps xmm0, xmm0
mov dword [esp + 0x24], 0
lea ecx, [esp + 0x10]
movaps xmmword [esp + 0x10], xmm0
push 1
push 0x48f8b0
call fcn.0040b940
lea eax, [esp + 0x10]
push eax
lea ecx, [esp + 0xa4]
call fcn.0040ae50
mov ecx, dword [esp + 0x24]
mov esi, dword [eax + 0x10]
cmp ecx, 0x10
jb 0x405816
mov edx, dword [esp + 0x10]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x40580c
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x405e5c
push ecx
push edx
call fcn.0045b012
add esp, 8
mov dword [esp + 0x20], 0
xorps xmm0, xmm0
mov dword [esp + 0x24], 0
lea ecx, [esp + 0x10]
movaps xmmword [esp + 0x10], xmm0
test esi, esi
je 0x405919
push 1
push 0x48f8b0
call fcn.0040b940
sub esp, 0x18
xorps xmm0, xmm0
mov ecx, esp
push 4
movups xmmword [ecx], xmm0
push str._t_n_r
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0
call fcn.0040b940
lea eax, [esp + 0x28]
push eax
lea ecx, [esp + 0xbc]
call fcn.0040ae50
mov edx, eax
lea ecx, [esp + 0x58]
call fcn.00408d00
add esp, 0x18
mov ecx, 0x494ac4
push eax
call fcn.0040b050
mov ecx, dword [esp + 0x54]
cmp ecx, 0x10
jb 0x4058cb
mov edx, dword [esp + 0x40]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x4058c1
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x405e61
push ecx
push edx
call fcn.0045b012
add esp, 8
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0xf
mov byte [esp + 0x40], 0
cmp ecx, 0x10
jb 0x405a6f
mov edx, dword [esp + 0x10]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x405a65
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x405e61
jmp 0x405a65
push 3
push 0x48f8bc
call fcn.0040b940
lea eax, [esp + 0x10]
push eax
lea ecx, [esp + 0xa4]
call fcn.0040ae50
mov ecx, dword [esp + 0x24]
mov esi, dword [eax + 0x10]
cmp ecx, 0x10
jb 0x40596f
mov edx, dword [esp + 0x10]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x405965
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x405e66
push ecx
push edx
call fcn.0045b012
add esp, 8
test esi, esi
je 0x405a6f
push 3
xorps xmm0, xmm0
mov dword [esp + 0x24], 0
push 0x48f8bc
lea ecx, [esp + 0x18]
movaps xmmword [esp + 0x18], xmm0
mov dword [esp + 0x2c], 0
call fcn.0040b940
sub esp, 0x18
xorps xmm0, xmm0
mov ecx, esp
push 4
movups xmmword [ecx], xmm0
push str._t_n_r
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0
call fcn.0040b940
lea eax, [esp + 0x28]
push eax
lea ecx, [esp + 0xbc]
call fcn.0040ae50
mov edx, eax
lea ecx, [esp + 0x58]
call fcn.00408d00
add esp, 0x18
mov ecx, 0x494ac4
push eax
call fcn.0040b050
mov ecx, dword [esp + 0x54]
cmp ecx, 0x10
jb 0x405a24
mov edx, dword [esp + 0x40]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x405a1a
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x405e6b
push ecx
push edx
call fcn.0045b012
add esp, 8
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0xf
mov byte [esp + 0x40], 0
cmp ecx, 0x10
jb 0x405a6f
mov edx, dword [esp + 0x10]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x405a65
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x405e6b
push ecx
push edx
call fcn.0045b012
add esp, 8
push 1
xorps xmm0, xmm0
mov dword [esp + 0x24], 0
push 0x48f8c0
lea ecx, [esp + 0x18]
movaps xmmword [esp + 0x18], xmm0
mov dword [esp + 0x2c], 0
call fcn.0040b940
lea eax, [esp + 0x10]
push eax
lea ecx, [esp + 0xa4]
call fcn.0040ae50
mov ecx, dword [esp + 0x24]
mov esi, dword [eax + 0x10]
cmp ecx, 0x10
jb 0x405ae1
mov edx, dword [esp + 0x10]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x405ad7
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x405e70
push ecx
push edx
call fcn.0045b012
add esp, 8
test esi, esi
je 0x405cfb
push 1
xorps xmm0, xmm0
mov dword [esp + 0x24], 0
push 0x48f8c0
lea ecx, [esp + 0x18]
movaps xmmword [esp + 0x18], xmm0
mov dword [esp + 0x2c], 0
call fcn.0040b940
sub esp, 0x18
xorps xmm0, xmm0
mov ecx, esp
push 4
movups xmmword [ecx], xmm0
push str._t_n_r
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0
call fcn.0040b940
lea eax, [esp + 0x28]
push eax
lea ecx, [esp + 0xbc]
call fcn.0040ae50
mov edx, eax
lea ecx, [esp + 0x58]
call fcn.00408d00
add esp, 0x18
mov ecx, 0x494adc
push eax
call fcn.0040b050
mov ecx, dword [esp + 0x54]
cmp ecx, 0x10
jb 0x405b96
mov edx, dword [esp + 0x40]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x405b8c
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x405e75
push ecx
push edx
call fcn.0045b012
add esp, 8
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0xf
mov byte [esp + 0x40], 0
cmp ecx, 0x10
jb 0x405be1
mov edx, dword [esp + 0x10]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x405bd7
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x405e75
push ecx
push edx
call fcn.0045b012
add esp, 8
mov eax, dword [0x494af0]
mov ecx, 0x494adc
mov edx, dword [0x494aec]
cmp eax, 0x10
cmovae ecx, dword [0x494adc]
cmp edx, 3
jne 0x405c69
mov edi, edx
mov esi, 0x48f8c4
sub edi, 4
jb 0x405c21
nop dword [eax]
mov eax, dword [ecx]
cmp eax, dword [esi]
jne 0x405c26
add ecx, 4
add esi, 4
sub edi, 4
jae 0x405c10
cmp edi, 0xfffffffc
je 0x405c5a
mov al, byte [ecx]
cmp al, byte [esi]
jne 0x405c53
cmp edi, 0xfffffffd
je 0x405c5a
mov al, byte [ecx + 1]
cmp al, byte [esi + 1]
jne 0x405c53
cmp edi, 0xfffffffe
je 0x405c5a
mov al, byte [ecx + 2]
cmp al, byte [esi + 2]
jne 0x405c53
cmp edi, 0xffffffff
je 0x405c5a
mov al, byte [ecx + 3]
cmp al, byte [esi + 3]
je 0x405c5a
sbb eax, eax
or eax, 1
jmp 0x405c5c
xor eax, eax
test eax, eax
je 0x405cfb
mov eax, dword [0x494af0]
cmp eax, 0x10
mov ecx, 0x494adc
cmovae ecx, dword [0x494adc]
cmp edx, 5
jne 0x405cd7
mov esi, str.first
sub edx, 4
jb 0x405c98
mov eax, dword [ecx]
cmp eax, dword [esi]
jne 0x405c9d
add ecx, 4
add esi, 4
sub edx, 4
jae 0x405c87
cmp edx, 0xfffffffc
je 0x405cd1
mov al, byte [ecx]
cmp al, byte [esi]
jne 0x405cca
cmp edx, 0xfffffffd
je 0x405cd1
mov al, byte [ecx + 1]
cmp al, byte [esi + 1]
jne 0x405cca
cmp edx, 0xfffffffe
je 0x405cd1
mov al, byte [ecx + 2]
cmp al, byte [esi + 2]
jne 0x405cca
cmp edx, 0xffffffff
je 0x405cd1
mov al, byte [ecx + 3]
cmp al, byte [esi + 3]
je 0x405cd1
sbb eax, eax
or eax, 1
jmp 0x405cd3
xor eax, eax
test eax, eax
je 0x405cfb
lea ecx, [esp + 0xa0]
call fcn.0040afb0
xor eax, eax
pop edi
pop esi
mov ecx, dword [esp + 0x4b4]
xor ecx, esp
call fcn.0045a978
mov esp, ebp
pop ebp
ret 0x10
lea ecx, [esp + 0xa0]
call fcn.0040afb0
push 0
call dword [sym.imp.ole32.dll_CoInitialize]
mov esi, dword [0x493a78]
mov ecx, dword [0x493a7c]
mov dword [0x494b50], 0
cmp esi, ecx
jae 0x405d4a
nop dword [eax]
mov eax, dword [esi]
test eax, eax
je 0x405d43
mov eax, dword [eax + 0x1c]
push 1
call eax
mov ecx, dword [0x493a7c]
add esi, 4
cmp esi, ecx
jb 0x405d30
lea eax, [esp + 0xa8]
mov dword [esp + 0xa8], 0x4949e0
push eax
mov dword [esp + 0xb0], 0x408470
mov dword [esp + 0xb4], 0
mov dword [esp + 0xb8], 0
call dword [sym.imp.ADVAPI32.dll_StartServiceCtrlDispatcherA]
mov esi, dword [0x494b50]
test esi, esi
je 0x405db6
cmp dword [esi], 0
je 0x405db6
mov ecx, dword [esi + 0x10]
test ecx, ecx
je 0x405da0
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
mov eax, dword [esi + 0x20]
push 0
mov dword [esi + 0x10], 0
call eax
add esi, 0x24
cmp dword [esi], 0
jne 0x405d93
mov esi, dword [0x493a78]
mov ecx, dword [0x493a7c]
cmp esi, ecx
jae 0x405de0
mov eax, dword [esi]
test eax, eax
je 0x405dd9
mov eax, dword [eax + 0x1c]
push 0
call eax
mov ecx, dword [0x493a7c]
add esi, 4
cmp esi, ecx
jb 0x405dc6
cmp dword [0x494b28], 0
je 0x405e39
mov edi, dword [0x494b30]
test edi, edi
je 0x405e14
push dword [edi + 4]
mov eax, dword [edi]
call eax
mov esi, dword [edi + 8]
push 0xc
push edi
call fcn.0045b012
add esp, 8
mov edi, esi
test esi, esi
jne 0x405df3
mov dword [0x494b30], esi
mov ecx, dword [0x494b4c]
test ecx, ecx
je 0x405e24
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
push 0x494b34
call dword [sym.imp.KERNEL32.dll_DeleteCriticalSection]
mov dword [0x494b28], 0
call dword [sym.imp.ole32.dll_CoUninitialize]
mov ecx, dword [esp + 0x4bc]
xor eax, eax
pop edi
pop esi
xor ecx, esp
call fcn.0045a978
mov esp, ebp
pop ebp
ret 0x10
call fcn.0045eee7
call fcn.0045eee7
call fcn.0045eee7
call fcn.0045eee7
call fcn.0045eee7
call fcn.0045eee7
call fcn.0045eee7
int3