Function at 0x418110
Capabilities:
Get geographical location

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
push 0xffffffffffffffff
push 0x481fad
mov eax, dword fs:[0]
push eax
sub esp, 0x68
mov eax, dword [0x4c33d0]
xor eax, esp
mov dword [esp + 0x30], eax
push ebx
push esi
push edi
mov eax, dword [0x4c33d0]
xor eax, esp
push eax
lea eax, [esp + 0x78]
mov dword fs:[0], eax
mov edi, ecx
call fcn.00405210
test al, al
jne 0x418159
xor al, al
jmp 0x4185af
mov eax, dword [edi + 0xc8]
test eax, eax
je 0x418168
mov eax, dword [eax + 4]
jmp 0x41816a
xor eax, eax
push 0
push 0x4c4278
push 0x4c3eb8
push 0
push eax
call sub.MSVCR110.dll___RTDynamicCast
mov ebx, eax
add esp, 0x14
test ebx, ebx
je 0x418152
push edi
call dword [sym.imp.ouilibx.dll_public:_static_class_OUI::COUIManager____cdecl_OUI::COUIManager::GetUIManager_void_]
mov ecx, eax
call dword [sym.imp.ouilibx.dll_public:_void___thiscall_OUI::COUIManager::RegisterListener_void__]
mov ecx, edi
call fcn.00418c00
push 4
push 0
lea esi, [ebx + 0x18]
push str.city
mov ecx, esi
call fcn.0041a640
cmp eax, 0xffffffff
je 0x4181f2
push ecx
push str.today
mov ecx, esi
call fcn.0041a020
cmp eax, 0xffffffff
je 0x4181f2
push ecx
push str.tomorrow
mov ecx, esi
call fcn.0041a020
cmp eax, 0xffffffff
je 0x4181f2
sub esp, 0x18
mov ecx, esp
push esi
call fcn.00408ee0
mov ecx, edi
call fcn.00416960
mov ecx, edi
call fcn.004177c0
lea ecx, [esp + 0x18]
call dword [sym.imp.ouilibx.dll_public:_void___thiscall_OUI::COString::constructor_void_]
push 0
push 0x4c4998
push 0x4c4048
push 0
push str.IDC_BEATS
mov ecx, edi
mov dword [esp + 0x94], 0
call dword [sym.imp.ouilibx.dll_public:_class_OUI::COVWnd____thiscall_OUI::COVContainer::GetChildWnd_wchar_t_const__]
push eax
call sub.MSVCR110.dll___RTDynamicCast
add esp, 0x14
cmp dword [ebx + 0x14], 0
mov esi, eax
jle 0x41835b
lea eax, [esp + 0x14]
push str.IDS_POP_STARTUPASS_SPEEDTIP
push eax
call dword [sym.imp.ouilibx.dll_public:_static_class_OUI::OSTRING_TABLE____cdecl_OUI::OSTRING_TABLE::GetStringTable_void_]
mov ecx, eax
call dword [sym.imp.ouilibx.dll_public:_class_OUI::COString___thiscall_OUI::OSTRING_TABLE::LoadStringW_wchar_t_const__]
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0x84], 1
call dword [sym.imp.ouilibx.dll_public:_class_OUI::COString____thiscall_OUI::COString::operator_class_OUI::COString_const__]
lea ecx, [esp + 0x14]
mov byte [esp + 0x80], 0
call dword [sym.imp.ouilibx.dll_public:_void___thiscall_OUI::COString::destructor_void_]
lea ecx, [esp + 0x20]
call dword [sym.imp.ouilibx.dll_public:_void___thiscall_OUI::COString::constructor_void_]
mov byte [esp + 0x80], 2
push dword [ebx + 0x14]
lea eax, [esp + 0x24]
push str._c_color_0xff8d07___font_fontsize__14__fontfamily_Microsoft_Yahei__nbsp_dnbsp__font___c_
push eax
call dword [sym.imp.ouilibx.dll_public:_int___cdecl_OUI::COString::Format_wchar_t_const__]
add esp, 0xc
lea ecx, [esp + 0x20]
call dword [sym.imp.ouilibx.dll_public:_wchar_t_const____thiscall_OUI::COString::operator_wchar_t_const__void_const]
push eax
push str.count
lea ecx, [esp + 0x20]
call dword [sym.imp.ouilibx.dll_public:_int___thiscall_OUI::COString::Replace_wchar_t_const___wchar_t_const__]
push 0
push 0x4c4064
push 0x4c4048
push 0
push str.IDC_SPEEDUP
mov ecx, edi
call dword [sym.imp.ouilibx.dll_public:_class_OUI::COVWnd____thiscall_OUI::COVDialog::GetDlgItem_wchar_t_const__]
push eax
call sub.MSVCR110.dll___RTDynamicCast
add esp, 0x14
mov dword [esp + 0x24], eax
test eax, eax
je 0x41832d
cmp dword [ebx + 0x10], 0x28
jge 0x4182ef
push str.IDB_TRAY_STARTUP_ASSIST_FAST_BTN_BG
jmp 0x4182f4
push str.IDB_TRAY_STARTUP_ASSIST_SLOW_BTN_BG
call dword [sym.imp.ouilibx.dll_public:_static_class_OUI::COIDManager____cdecl_OUI::COIDManager::GetIDManager_void_]
mov ecx, eax
mov eax, dword [sym.imp.ouilibx.dll_public:_unsigned_long_int___thiscall_OUI::COIDManager::GetResID_wchar_t_const__]
call eax
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x14], eax
call dword [sym.imp.ouilibx.dll_public:_struct_OUI::IControl____thiscall_OUI::COVWnd::GetControl_void_]
test eax, eax
je 0x41832d
mov ecx, dword [esp + 0x24]
call dword [sym.imp.ouilibx.dll_public:_struct_OUI::IControl____thiscall_OUI::COVWnd::GetControl_void_]
mov edx, dword [eax]
push dword [esp + 0x14]
mov ecx, eax
call dword [edx + 0x8c]
test esi, esi
je 0x418344
lea ecx, [esp + 0x18]
call dword [sym.imp.ouilibx.dll_public:_wchar_t_const____thiscall_OUI::COString::operator_wchar_t_const__void_const]
push eax
mov ecx, esi
call dword [sym.imp.ouilibx.dll_public:_bool___thiscall_OUI::COVRichText::SetText_wchar_t_const__]
lea ecx, [esp + 0x20]
mov byte [esp + 0x80], 0
call dword [sym.imp.ouilibx.dll_public:_void___thiscall_OUI::COString::destructor_void_]
jmp 0x418401
push 1
push 0
push str.IDC_SPEEDUP
mov ecx, edi
call dword [sym.imp.ouilibx.dll_public:_void___thiscall_OUI::COVDialog::ShowChildWnd_wchar_t_const___bool__bool_]
cmp dword [edi + 0x13c], 0
je 0x41839b
cmp dword [edi + 0x154], 0
je 0x41839b
mov eax, dword [sym.imp.ouilibx.dll_public:_void___thiscall_OUI::COVDialog::ShowChildWnd_wchar_t_const___bool__bool_]
push 1
push 0
push str.IDC_BEATS
mov ecx, edi
call eax
push 1
mov ecx, edi
call fcn.00418000
jmp 0x418401
test esi, esi
je 0x418401
mov eax, dword [sym.imp.ouilibx.dll_public:_void___thiscall_OUI::COVDialog::ShowChildWnd_wchar_t_const___bool__bool_]
push 1
push 1
push str.IDC_BEATS
mov ecx, edi
call eax
lea eax, [esp + 0x14]
push str.190010
push eax
call dword [sym.imp.ouilibx.dll_public:_static_class_OUI::OSTRING_TABLE____cdecl_OUI::OSTRING_TABLE::GetStringTable_void_]
mov ecx, eax
call dword [sym.imp.ouilibx.dll_public:_class_OUI::COString___thiscall_OUI::OSTRING_TABLE::LoadStringW_wchar_t_const__]
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0x84], 3
call dword [sym.imp.ouilibx.dll_public:_class_OUI::COString____thiscall_OUI::COString::operator_class_OUI::COString_const__]
lea ecx, [esp + 0x14]
mov byte [esp + 0x80], 0
call dword [sym.imp.ouilibx.dll_public:_void___thiscall_OUI::COString::destructor_void_]
lea ecx, [esp + 0x18]
call dword [sym.imp.ouilibx.dll_public:_wchar_t_const____thiscall_OUI::COString::operator_wchar_t_const__void_const]
push eax
mov ecx, esi
call dword [sym.imp.ouilibx.dll_public:_bool___thiscall_OUI::COVRichText::SetText_wchar_t_const__]
push 0
push 0x4c5754
push 0x4c4048
push 0
push str.IDC_TIME
mov ecx, edi
call dword [sym.imp.ouilibx.dll_public:_class_OUI::COVWnd____thiscall_OUI::COVDialog::GetDlgItem_wchar_t_const__]
push eax
call sub.MSVCR110.dll___RTDynamicCast
add esp, 0x14
test eax, eax
je 0x41849d
mov ecx, eax
call dword [sym.imp.ouilibx.dll_public:_struct_OUI::IControl____thiscall_OUI::COVWnd::GetControl_void_]
push eax
lea ecx, [esp + 0x18]
call fcn.0041b240
mov byte [esp + 0x80], 4
mov esi, dword [esp + 0x14]
test esi, esi
je 0x41848b
movd xmm0, dword [ebx + 0x10]
mov eax, dword [esi]
cvtdq2pd xmm0, xmm0
sub esp, 8
mov ecx, esi
movsd qword [esp], xmm0
call dword [eax + 0x1c]
cmp dword [ebx + 0x10], 0x28
jge 0x418470
push str.IDB_TRAY_STARTUP_ASSIST_FAST_NUM
jmp 0x418475
push str.IDB_TRAY_STARTUP_ASSIST_SLOW_NUM
call dword [sym.imp.ouilibx.dll_public:_static_class_OUI::COIDManager____cdecl_OUI::COIDManager::GetIDManager_void_]
mov ecx, eax
call dword [sym.imp.ouilibx.dll_public:_unsigned_long_int___thiscall_OUI::COIDManager::GetResID_wchar_t_const__]
mov edx, dword [esi]
push eax
mov ecx, esi
call dword [edx + 0x14]
mov byte [esp + 0x80], 0
test esi, esi
je 0x41849d
mov eax, dword [esi]
push esi
call dword [eax + 8]
push 0
push 0x4c4e4c
push 0x4c4048
push 0
push str.IDC_SPEED_TEXT
mov ecx, edi
call dword [sym.imp.ouilibx.dll_public:_class_OUI::COVWnd____thiscall_OUI::COVDialog::GetDlgItem_wchar_t_const__]
push eax
call sub.MSVCR110.dll___RTDynamicCast
mov esi, eax
add esp, 0x14
test esi, esi
je 0x418524
push dword [ebx + 0x10]
lea eax, [esp + 0x2c]
push eax
call fcn.00417b70
mov ecx, eax
mov byte [esp + 0x80], 5
cmp dword [ecx + 0x14], 8
jb 0x4184e6
mov ecx, dword [ecx]
mov eax, dword [esi]
push ecx
mov ecx, esi
call dword [eax + 0xb4]
mov byte [esp + 0x80], 0
cmp dword [esp + 0x3c], 8
jb 0x41850d
push dword [esp + 0x28]
call dword [sym.imp.MSVCR110.dll_void___cdecl_operator_delete_void__]
add esp, 4
xor eax, eax
mov dword [esp + 0x3c], 7
mov dword [esp + 0x38], 0
mov word [esp + 0x28], ax
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x8c]
mov eax, dword [edi]
mov ecx, edi
mov eax, dword [eax + 0x250]
call eax
test al, al
je 0x418542
xor bl, bl
jmp 0x418598
lea ecx, [esp + 0x1c]
call dword [sym.imp.ouilibx.dll_public:_void___thiscall_OUI::COString::constructor_void_]
mov byte [esp + 0x80], 6
push dword [ebx + 0x10]
lea eax, [esp + 0x20]
push str.screenview.pop.startassist__d
push eax
call dword [sym.imp.ouilibx.dll_public:_int___cdecl_OUI::COString::Format_wchar_t_const__]
add esp, 0xc
call dword [sym.imp.isafepxy.dll_public:_static_class_elex::commumod::SCommuMod____cdecl_elex::commumod::SCommuMod::instance_void_]
lea ecx, [esp + 0x1c]
call dword [sym.imp.ouilibx.dll_public:_wchar_t_const____thiscall_OUI::COString::operator_wchar_t_const__void_const]
push eax
call dword [sym.imp.isafepxy.dll_public:_static_int___cdecl_elex::commumod::SCommuMod::SendAction_wchar_t_const__]
add esp, 4
lea ecx, [esp + 0x1c]
mov bl, 1
mov byte [esp + 0x80], 0
call dword [sym.imp.ouilibx.dll_public:_void___thiscall_OUI::COString::destructor_void_]
lea ecx, [esp + 0x18]
mov dword [esp + 0x80], 0xffffffff
call dword [sym.imp.ouilibx.dll_public:_void___thiscall_OUI::COString::destructor_void_]
mov al, bl
mov ecx, dword [esp + 0x78]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x30]
xor ecx, esp
call fcn.0047cd06
mov esp, ebp
pop ebp
ret