Function at 0x468950
Capabilities:
Get geographical location

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x4c0
mov eax, dword [0x53a090]
xor eax, ebp
mov dword [ebp - 8], eax
mov eax, dword [ebp + 8]
push ebx
mov ebx, dword [sym.imp.USER32.dll_SendMessageW]
push esi
push edi
mov edi, dword [0x56e17c]
push 0
push 0
push 0x7d6
push edi
mov dword [ebp - 0x438], edx
mov dword [ebp - 0x498], eax
mov dword [ebp - 0x440], edi
call ebx
test eax, eax
jne 0x4689ab
push 0xc36b
push 1
call fcn.004422f0
add esp, 8
jmp 0x469524
xor eax, eax
push edi
mov dword [ebp - 0x4ac], 0x14
mov dword [ebp - 0x4a8], 0
mov dword [ebp - 0x4a4], 0
mov dword [ebp - 0x4a0], 0
mov dword [ebp - 0x49c], 0
mov dword [ebp - 0x494], 0x42
mov dword [ebp - 0x490], 0
mov dword [ebp - 0x48c], 0
mov dword [ebp - 0x488], 0
mov dword [ebp - 0x484], 0
mov dword [ebp - 0x480], 0
mov dword [ebp - 0x47c], eax
mov dword [ebp - 0x478], eax
mov word [ebp - 0x474], ax
mov dword [ebp - 0x472], eax
mov dword [ebp - 0x46e], eax
mov dword [ebp - 0x46a], eax
mov dword [ebp - 0x466], eax
mov dword [ebp - 0x462], eax
mov dword [ebp - 0x45e], eax
mov dword [ebp - 0x45a], eax
mov dword [ebp - 0x456], eax
call dword [sym.imp.USER32.dll_GetParent]
mov dword [ebp - 0x490], eax
mov eax, dword [0x56e6cc]
push 0
mov dword [ebp - 0x472], eax
mov eax, dword [0x567b50]
push 0
mov dword [ebp - 0x48c], eax
mov eax, dword [0x567b54]
push 0x85f
mov ecx, 1
push edi
mov dword [ebp - 0x480], 0x40100
mov dword [ebp - 0x47c], 0x10001
mov dword [ebp - 0x478], 0xffff0001
mov word [ebp - 0x474], cx
mov dword [ebp - 0x484], 0
mov dword [ebp - 0x488], eax
call ebx
push 0
push 0
push 0x861
mov esi, eax
push edi
mov dword [ebp - 0x420], esi
call ebx
mov dword [ebp - 0x430], eax
cmp esi, eax
jne 0x468af3
or dword [ebp - 0x480], 4
jmp 0x468afa
or dword [ebp - 0x480], 1
lea ecx, [ebp - 0x494]
push ecx
call dword [sym.imp.COMDLG32.dll_PrintDlgW]
test eax, eax
je 0x469524
mov eax, dword [ebp - 0x48c]
mov esi, dword [ebp - 0x484]
mov edi, dword [sym.imp.GDI32.dll_GetDeviceCaps]
mov dword [0x567b50], eax
mov eax, dword [ebp - 0x488]
push 0x58
push esi
mov dword [0x567b54], eax
call edi
push 0x5a
push esi
mov dword [ebp - 0x41c], eax
call edi
push 0x6e
push esi
mov dword [ebp - 0x418], eax
call edi
push 0x6f
push esi
mov dword [ebp - 0x44c], eax
call edi
push 0x70
push esi
mov dword [ebp - 0x448], eax
call edi
push 0x71
push esi
mov dword [ebp - 0x378], eax
call edi
push 8
push esi
mov dword [ebp - 0x374], eax
call edi
mov ecx, dword [ebp - 0x44c]
sub ecx, dword [ebp - 0x378]
push 0xa
sub ecx, eax
push esi
mov dword [ebp - 0x370], ecx
call edi
mov ecx, dword [ebp - 0x448]
mov edx, dword [ebp - 0x374]
mov ebx, dword [sym.imp.KERNEL32.dll_MulDiv]
sub ecx, edx
sub ecx, eax
cmp dword [0x56dcd0], 0
mov dword [ebp - 0x36c], ecx
jne 0x468bf4
cmp dword [0x56dcd8], 0
jne 0x468bf4
cmp dword [0x56dcd4], 0
jne 0x468bf4
cmp dword [0x56dcdc], 0
jne 0x468bf4
mov eax, dword [ebp - 0x378]
mov dword [ebp - 0x388], eax
mov eax, dword [ebp - 0x370]
mov dword [ebp - 0x384], edx
mov dword [ebp - 0x380], eax
jmp 0x468d1b
push 3
lea eax, [ebp - 0x10]
push eax
push 0xd
push 0x400
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
cmp word [ebp - 0x10], 0x30
jne 0x468c5b
push 0x9ec
push dword [ebp - 0x41c]
push dword [0x56dcd0]
call ebx
mov edi, dword [ebp - 0x418]
push 0x9ec
push edi
push dword [0x56dcd4]
mov dword [ebp - 0x424], eax
call ebx
push 0x9ec
push dword [ebp - 0x41c]
mov dword [ebp - 0x428], eax
push dword [0x56dcd8]
call ebx
push 0x9ec
jmp 0x468ca6
push 0x3e8
push dword [ebp - 0x41c]
push dword [0x56dcd0]
call ebx
mov edi, dword [ebp - 0x418]
push 0x3e8
push edi
push dword [0x56dcd4]
mov dword [ebp - 0x424], eax
call ebx
push 0x3e8
push dword [ebp - 0x41c]
mov dword [ebp - 0x428], eax
push dword [0x56dcd8]
call ebx
push 0x3e8
push edi
push dword [0x56dcdc]
mov dword [ebp - 0x42c], eax
call ebx
mov edx, dword [ebp - 0x378]
mov ecx, eax
mov eax, dword [ebp - 0x424]
mov dword [ebp - 0x388], edx
cmp edx, eax
jg 0x468cd3
mov dword [ebp - 0x388], eax
mov edx, dword [ebp - 0x374]
mov eax, dword [ebp - 0x428]
mov dword [ebp - 0x384], edx
cmp edx, eax
jg 0x468cef
mov dword [ebp - 0x384], eax
mov edx, dword [ebp - 0x370]
mov eax, dword [ebp - 0x42c]
mov dword [ebp - 0x380], edx
cmp edx, eax
jg 0x468d0b
mov dword [ebp - 0x380], eax
mov eax, dword [ebp - 0x36c]
mov dword [ebp - 0x37c], eax
cmp eax, ecx
jg 0x468d21
mov dword [ebp - 0x37c], ecx
mov edi, dword [sym.imp.GDI32.dll_DPtoLP]
push 2
lea eax, [ebp - 0x388]
push eax
push esi
call edi
push 2
lea eax, [ebp - 0x378]
push eax
push esi
call edi
push 1
lea eax, [ebp - 0x44c]
push eax
push esi
call edi
push 0x48
push dword [ebp - 0x418]
push 8
call ebx
push 0x40b6cc
push 0
push 0
mov ebx, dword [sym.imp.GDI32.dll_CreateFontW]
push 0
push 0
push 0
push 0
push 0
push 0
push 0x2bc
push 0
push 0
push 0
push eax
call ebx
push eax
push esi
mov dword [ebp - 0x428], eax
call dword [sym.imp.GDI32.dll_SelectObject]
mov edi, dword [sym.imp.GDI32.dll_GetTextMetricsW]
lea eax, [ebp - 0x3e4]
push eax
push esi
call edi
mov ecx, dword [0x56d688]
mov eax, dword [ebp - 0x3d4]
add eax, dword [ebp - 0x3e4]
sub ecx, 3
neg ecx
push 0x48
push dword [ebp - 0x418]
sbb ecx, ecx
and ecx, eax
push 7
mov dword [ebp - 0x444], ecx
call dword [sym.imp.KERNEL32.dll_MulDiv]
push 0x40b6cc
push 0
push 0
push 0
push 0
push 0
push 0
push 0
push 0
push 0x190
push 0
push 0
push 0
push eax
call ebx
mov ebx, eax
push ebx
push esi
mov dword [ebp - 0x424], ebx
call dword [sym.imp.GDI32.dll_SelectObject]
lea eax, [ebp - 0x3e4]
push eax
push esi
call edi
mov ecx, dword [0x56a840]
mov eax, dword [ebp - 0x3d4]
add eax, dword [ebp - 0x3e4]
dec ecx
neg ecx
sbb ecx, ecx
and ecx, eax
mov eax, dword [ebp - 0x438]
mov dword [ebp - 0x4a8], eax
lea eax, [ebp - 0x4ac]
push eax
push esi
mov dword [ebp - 0x434], ecx
mov dword [ebp - 0x4a4], 0
mov dword [ebp - 0x4a0], 0
mov dword [ebp - 0x49c], 0
call dword [sym.imp.GDI32.dll_StartDocW]
test eax, eax
jns 0x468e9b
push esi
call dword [sym.imp.GDI32.dll_DeleteDC]
mov eax, dword [ebp - 0x428]
mov esi, dword [sym.imp.GDI32.dll_DeleteObject]
test eax, eax
je 0x468e81
push eax
call esi
test ebx, ebx
je 0x468e88
push ebx
call esi
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.0050ecf7
mov esp, ebp
pop ebp
ret
lea eax, [ebp - 0x3a8]
push eax
call dword [sym.imp.KERNEL32.dll_GetLocalTime]
push 0x100
lea eax, [ebp - 0x254]
push eax
push 0
lea eax, [ebp - 0x3a8]
push eax
push 1
push 0x400
call dword [sym.imp.KERNEL32.dll_GetDateFormatW]
cmp dword [0x56d688], 0
jne 0x468f19
push 0x80
lea eax, [ebp - 0x354]
push eax
push 0
lea eax, [ebp - 0x3a8]
push eax
push 2
push 0x400
call dword [sym.imp.KERNEL32.dll_GetTimeFormatW]
mov edi, dword [sym.imp.KERNEL32.dll_lstrcatW]
push 0x407fb8
lea eax, [ebp - 0x254]
push eax
call edi
lea eax, [ebp - 0x354]
push eax
lea eax, [ebp - 0x254]
push eax
call edi
mov eax, dword [0x56a9b8]
mov edi, dword [ebp - 0x440]
mov ebx, dword [sym.imp.USER32.dll_SendMessageW]
push 0
mov dword [ebp - 0x368], 0
mov dword [ebp - 0x364], 1
mov dword [ebp - 0x360], 2
mov dword [ebp - 0x35c], 3
mov dword [ebp - 0x358], 4
push dword [ebp + eax*4 - 0x368]
push 0x864
push edi
call ebx
push 0
push dword [0x56d220]
push 0x862
push edi
call ebx
push 0
push 0
push 0x7d6
push edi
call ebx
test byte [ebp - 0x480], 1
mov dword [ebp - 0x418], eax
mov edi, eax
mov dword [ebp - 0x41c], 0
je 0x468fe2
mov eax, dword [ebp - 0x420]
mov ecx, dword [ebp - 0x430]
cmp eax, ecx
jle 0x468fc0
mov edx, ecx
mov ecx, eax
mov dword [ebp - 0x418], eax
jmp 0x468fc8
mov edx, eax
mov dword [ebp - 0x418], ecx
xor eax, eax
test edx, edx
sets al
dec eax
and eax, edx
mov dword [ebp - 0x41c], eax
cmp ecx, edi
jle 0x468fe2
mov dword [ebp - 0x418], edi
mov edx, dword [ebp - 0x378]
mov eax, dword [ebp - 0x388]
mov edi, dword [ebp - 0x374]
mov ecx, dword [ebp - 0x44c]
sub eax, edx
mov dword [ebp - 0x40c], eax
mov eax, dword [ebp - 0x384]
sub eax, edi
mov dword [ebp - 0x420], eax
mov eax, ecx
sub eax, dword [ebp - 0x380]
sub ecx, dword [ebp - 0x370]
sub eax, edx
mov dword [ebp - 0x404], eax
mov eax, dword [ebp - 0x448]
mov ebx, eax
sub eax, dword [ebp - 0x36c]
sub ecx, edx
sub eax, edi
sub ebx, dword [ebp - 0x37c]
dec eax
dec ecx
mov dword [ebp - 0x3f0], eax
mov dword [ebp - 0x3f4], ecx
mov ecx, dword [ebp - 0x444]
mov eax, ecx
cdq
sub eax, edx
mov edx, dword [ebp - 0x420]
sar eax, 1
add ecx, eax
add edx, ecx
mov ecx, dword [ebp - 0x434]
mov dword [ebp - 0x43c], eax
mov dword [ebp - 0x408], edx
mov eax, ecx
cdq
sub eax, edx
sub ebx, edi
mov edi, dword [ebp - 0x418]
mov edx, eax
sar edx, 1
add ecx, edx
sub ebx, ecx
cmp dword [ebp - 0x41c], edi
mov edi, dword [sym.imp.GDI32.dll_DeleteObject]
mov dword [ebp - 0x400], ebx
mov ebx, 1
mov dword [ebp - 0x414], esi
mov dword [ebp - 0x410], esi
mov dword [ebp - 0x3fc], 0
mov dword [ebp - 0x3f8], 0
mov dword [ebp - 0x420], edx
mov dword [ebp - 0x42c], ebx
jge 0x4694cf
mov dx, word [ebp - 0x47a]
mov al, byte [ebp - 0x480]
test al, 2
je 0x4690fa
movzx eax, word [ebp - 0x47c]
cmp ebx, eax
jl 0x4690f6
movzx eax, dx
cmp ebx, eax
jle 0x4690fa
xor edi, edi
jmp 0x4690ff
mov edi, 1
push ebx
push dword [ebp - 0x498]
lea eax, [ebp - 0x54]
push eax
mov dword [ebp - 0x430], edi
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
test edi, edi
je 0x4692fc
push 0
push 4
push 0x952
push dword [0x56e17c]
call dword [sym.imp.USER32.dll_SendMessageW]
mov ecx, ebx
call fcn.004688d0
push esi
call dword [sym.imp.GDI32.dll_StartPage]
push 0
push esi
call dword [sym.imp.GDI32.dll_SetTextColor]
push 0xffffff
push esi
call dword [sym.imp.GDI32.dll_SetBkColor]
push dword [ebp - 0x428]
push esi
call dword [sym.imp.GDI32.dll_SelectObject]
push 8
push esi
call dword [sym.imp.GDI32.dll_SetTextAlign]
mov edx, dword [ebp - 0x408]
sub edx, dword [ebp - 0x43c]
mov ecx, dword [ebp - 0x40c]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x444]
sub edx, eax
add eax, edx
mov dword [ebp - 0x38c], eax
mov eax, dword [0x56d688]
mov dword [ebp - 0x398], ecx
mov ecx, dword [ebp - 0x404]
mov dword [ebp - 0x394], edx
mov dword [ebp - 0x390], ecx
cmp eax, 3
jge 0x4691f7
push 0
push dword [ebp - 0x438]
call dword [sym.imp.KERNEL32.dll_lstrlenW]
push eax
push dword [ebp - 0x438]
lea eax, [ebp - 0x398]
push eax
mov eax, dword [ebp - 0x408]
sub eax, dword [ebp - 0x43c]
push 0
push eax
mov eax, dword [ebp - 0x40c]
add eax, 5
push eax
push esi
call dword [sym.imp.GDI32.dll_ExtTextOutW]
mov eax, dword [0x56d688]
test eax, eax
je 0x469200
cmp eax, 1
jne 0x469279
push dword [ebp - 0x424]
push esi
call dword [sym.imp.GDI32.dll_SelectObject]
lea eax, [ebp - 0x4b4]
push eax
lea eax, [ebp - 0x254]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
push eax
lea eax, [ebp - 0x254]
push eax
push esi
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32W]
push 0
lea eax, [ebp - 0x254]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
push eax
lea eax, [ebp - 0x254]
push eax
lea eax, [ebp - 0x398]
push eax
mov eax, dword [ebp - 0x408]
sub eax, dword [ebp - 0x43c]
push 0
push eax
mov eax, dword [ebp - 0x404]
sub eax, dword [ebp - 0x4b4]
sub eax, 5
push eax
push esi
call dword [sym.imp.GDI32.dll_ExtTextOutW]
mov eax, dword [0x56d688]
cmp eax, 3
jge 0x4692fc
push dword [ebp - 0x10]
push esi
call dword [sym.imp.GDI32.dll_SetTextAlign]
push 0
push 1
push 0
call dword [sym.imp.GDI32.dll_CreatePen]
push eax
push esi
mov dword [ebp - 0x10], eax
call dword [sym.imp.GDI32.dll_SelectObject]
mov ecx, dword [ebp - 0x408]
mov ebx, eax
mov eax, dword [ebp - 0x444]
cdq
and edx, 3
push 0
lea edi, [edx + eax]
sar edi, 2
sub ecx, edi
push ecx
push dword [ebp - 0x40c]
push esi
call dword [sym.imp.GDI32.dll_MoveToEx]
mov eax, dword [ebp - 0x408]
sub eax, edi
push eax
push dword [ebp - 0x404]
push esi
call dword [sym.imp.GDI32.dll_LineTo]
push ebx
push esi
call dword [sym.imp.GDI32.dll_SelectObject]
push dword [ebp - 0x10]
call dword [sym.imp.GDI32.dll_DeleteObject]
mov ebx, dword [ebp - 0x42c]
mov edi, dword [ebp - 0x430]
mov eax, dword [ebp - 0x41c]
mov dword [ebp - 0x3ec], eax
mov eax, dword [ebp - 0x418]
mov dword [ebp - 0x3e8], eax
lea eax, [ebp - 0x414]
push eax
push edi
push 0x867
push dword [ebp - 0x440]
call dword [sym.imp.USER32.dll_SendMessageW]
mov ecx, eax
mov dword [ebp - 0x41c], ecx
test edi, edi
je 0x469498
push 0
push esi
call dword [sym.imp.GDI32.dll_SetTextColor]
push 0xffffff
push esi
call dword [sym.imp.GDI32.dll_SetBkColor]
push dword [ebp - 0x424]
mov ebx, dword [sym.imp.GDI32.dll_SelectObject]
push esi
call ebx
push 0
push esi
call dword [sym.imp.GDI32.dll_SetTextAlign]
mov ecx, dword [ebp - 0x40c]
mov edx, dword [ebp - 0x400]
mov edi, eax
mov eax, dword [ebp - 0x420]
mov dword [ebp - 0x364], ecx
lea ecx, [eax + edx]
mov dword [ebp - 0x360], ecx
mov ecx, dword [ebp - 0x404]
mov dword [ebp - 0x35c], ecx
lea ecx, [eax + edx]
add ecx, dword [ebp - 0x434]
cmp dword [0x56a840], 0
mov dword [ebp - 0x358], ecx
jne 0x469485
lea eax, [ebp - 0x4bc]
push eax
lea eax, [ebp - 0x54]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
push eax
lea eax, [ebp - 0x54]
push eax
push esi
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32W]
push 0
lea eax, [ebp - 0x54]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
push eax
lea eax, [ebp - 0x54]
push eax
lea eax, [ebp - 0x364]
push eax
mov eax, dword [ebp - 0x400]
add eax, dword [ebp - 0x420]
push 0
push eax
mov eax, dword [ebp - 0x404]
sub eax, dword [ebp - 0x4bc]
sub eax, 5
push eax
push esi
call dword [sym.imp.GDI32.dll_ExtTextOutW]
push edi
push esi
call dword [sym.imp.GDI32.dll_SetTextAlign]
push 0
push 1
push 0
call dword [sym.imp.GDI32.dll_CreatePen]
push eax
push esi
mov dword [ebp - 0x10], eax
call ebx
push 0
push esi
mov ebx, eax
call dword [sym.imp.GDI32.dll_SetBkColor]
mov eax, dword [ebp - 0x434]
mov ecx, dword [ebp - 0x400]
cdq
and edx, 3
push 0
lea edi, [edx + eax]
sar edi, 2
add ecx, edi
push ecx
push dword [ebp - 0x40c]
push esi
call dword [sym.imp.GDI32.dll_MoveToEx]
mov eax, dword [ebp - 0x400]
add eax, edi
push eax
push dword [ebp - 0x404]
push esi
call dword [sym.imp.GDI32.dll_LineTo]
push ebx
push esi
call dword [sym.imp.GDI32.dll_SelectObject]
push dword [ebp - 0x10]
call dword [sym.imp.GDI32.dll_DeleteObject]
push esi
call dword [sym.imp.GDI32.dll_EndPage]
mov ebx, dword [ebp - 0x42c]
mov ecx, dword [ebp - 0x41c]
mov al, byte [ebp - 0x480]
mov dx, word [ebp - 0x47a]
inc ebx
mov dword [ebp - 0x42c], ebx
test al, 2
je 0x4694bd
movzx eax, dx
cmp ebx, eax
jg 0x4694c9
mov al, byte [ebp - 0x480]
cmp ecx, dword [ebp - 0x418]
jl 0x4690e0
mov edi, dword [sym.imp.GDI32.dll_DeleteObject]
mov ebx, dword [sym.imp.USER32.dll_SendMessageW]
push 0
push 0
push 0x867
push dword [ebp - 0x440]
call ebx
push esi
call dword [sym.imp.GDI32.dll_EndDoc]
push esi
call dword [sym.imp.GDI32.dll_DeleteDC]
mov eax, dword [ebp - 0x428]
test eax, eax
je 0x469501
push eax
call edi
mov eax, dword [ebp - 0x424]
test eax, eax
je 0x46950e
push eax
call edi
push 0
push 0
push 0x409
push dword [0x56a9b4]
call ebx
call fcn.00446f10
mov ecx, dword [ebp - 8]
pop edi
pop esi
xor ecx, ebp
mov eax, 1
pop ebx
call fcn.0050ecf7
mov esp, ebp
pop ebp
ret