Function at 0x450566
Capabilities:
Encode data using xor
Get geographical location

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x178
mov eax, dword [0x7286bc]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov edi, ecx
lea ecx, [ebp - 0x14c]
mov esi, edi
mov dword [ebp - 0x170], edi
neg esi
lea eax, [edi - 0x364]
sbb esi, esi
and esi, eax
call fcn.005f9ef3
xor ebx, ebx
lea eax, [esi + 0x20]
push ebx
push ebx
push eax
lea eax, [esi + 0x18]
neg esi
sbb esi, esi
and esi, eax
push esi
push ebx
push ecx
mov eax, esp
lea ecx, [ebp - 0x14c]
mov dword [eax], str.IDX_OTHERCITYITEM
call fcn.005faa05
test eax, eax
je 0x4505d3
lea esi, [eax - 8]
mov dword [ebp - 0x158], esi
jmp 0x4505db
mov esi, ebx
mov dword [ebp - 0x158], ebx
call fcn.00418f81
push eax
lea ecx, [ebp - 0x178]
call fcn.0041775d
lea eax, [ebp + 0x14]
mov ecx, 0x68b398
push eax
push ecx
lea eax, [ebp + 0x10]
push eax
push ecx
lea eax, [ebp + 0xc]
push eax
push ecx
lea eax, [ebp + 8]
push eax
lea eax, [ebp - 0x16c]
push eax
call fcn.004227e4
add esp, 0xc
push eax
lea eax, [ebp - 0x168]
push eax
call fcn.004227ad
add esp, 0xc
push eax
lea eax, [ebp - 0x150]
push eax
call fcn.004227e4
add esp, 0xc
push eax
lea eax, [ebp - 0x154]
push eax
call fcn.004227ad
add esp, 0xc
push eax
lea eax, [ebp - 0x160]
push eax
call fcn.004227e4
add esp, 0xc
push eax
lea eax, [ebp - 0x164]
push eax
call fcn.004227ad
add esp, 0xc
lea ecx, [esi + 8]
mov edx, dword [ecx]
mov dword [ebp - 0x15c], ecx
push dword [eax]
call dword [edx + 0x170]
mov ecx, dword [ebp - 0x164]
lea ecx, [ecx - 0x10]
call fcn.00419521
mov ecx, dword [ebp - 0x160]
lea ecx, [ecx - 0x10]
call fcn.00419521
mov ecx, dword [ebp - 0x154]
lea ecx, [ecx - 0x10]
call fcn.00419521
mov ecx, dword [ebp - 0x150]
lea ecx, [ecx - 0x10]
call fcn.00419521
mov ecx, dword [ebp - 0x168]
lea ecx, [ecx - 0x10]
call fcn.00419521
mov ecx, dword [ebp - 0x16c]
lea ecx, [ecx - 0x10]
call fcn.00419521
call fcn.00418f81
push eax
lea ecx, [ebp - 0x174]
call fcn.0041775d
call fcn.00418f81
push eax
lea ecx, [ebp - 0x168]
call fcn.0041775d
mov eax, dword [esi]
mov ecx, esi
mov dword [ebp - 0x164], ebx
call dword [eax + 0xc]
test eax, eax
jle 0x450876
mov edi, ebx
mov eax, dword [esi]
mov ecx, esi
push edi
call dword [eax]
lea esi, [eax - 8]
test eax, eax
jne 0x450713
mov esi, ebx
lea edi, [esi + 8]
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x30]
push eax
lea ecx, [ebp - 0x150]
call fcn.004177e7
push str.cityitem_cityname
lea ecx, [ebp - 0x150]
call fcn.004334a5
test eax, eax
jne 0x45077f
mov eax, dword [ebp + 0x14]
add eax, 0xfffffff0
push eax
call fcn.00418dea
add eax, 0x10
mov dword [esp], 0x6c0750
lea ecx, [ebp - 0x160]
mov dword [ebp - 0x160], eax
call fcn.00505c74
mov eax, dword [edi]
mov ecx, edi
mov esi, dword [ebp - 0x160]
push esi
call dword [eax + 0x3c]
lea ecx, [esi - 0x10]
call fcn.00419521
jmp 0x450840
push str.cityitem_weathericon
lea ecx, [ebp - 0x150]
call fcn.004334a5
test eax, eax
jne 0x4507a4
push 0x6809b0
mov ecx, edi
call fcn.005db778
jmp 0x450840
push str.cityitem_ver
lea ecx, [ebp - 0x150]
call fcn.004334a5
test eax, eax
jne 0x450840
mov eax, dword [esi]
mov ecx, esi
mov dword [ebp - 0x16c], ebx
call dword [eax + 0xc]
test eax, eax
jle 0x450840
mov eax, dword [esi]
mov ecx, esi
push ebx
call dword [eax]
mov edi, eax
mov ecx, edi
mov edx, dword [edi]
call dword [edx + 0x30]
push eax
lea ecx, [ebp - 0x154]
call fcn.004177e7
push str.cityitem_weather
lea ecx, [ebp - 0x154]
call fcn.004334a5
test eax, eax
jne 0x450804
push 0x6809b0
jmp 0x45081d
push str.cityitem_wind
lea ecx, [ebp - 0x154]
call fcn.004334a5
test eax, eax
jne 0x450824
push str.ck_W
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x3c]
mov ecx, dword [ebp - 0x154]
lea ecx, [ecx - 0x10]
call fcn.00419521
mov eax, dword [esi]
mov ecx, esi
inc ebx
call dword [eax + 0xc]
cmp ebx, eax
jl 0x4507cd
xor ebx, ebx
mov ecx, dword [ebp - 0x150]
lea ecx, [ecx - 0x10]
call fcn.00419521
mov esi, dword [ebp - 0x158]
mov ecx, esi
mov edi, dword [ebp - 0x164]
inc edi
mov dword [ebp - 0x164], edi
mov eax, dword [esi]
call dword [eax + 0xc]
cmp edi, eax
jl 0x450703
mov edi, dword [ebp - 0x170]
mov ecx, dword [edi + 0x68]
test ecx, ecx
je 0x4508a6
cmp dword [ebp + 0x18], 0xffffffff
jne 0x450898
mov esi, dword [ecx]
call dword [esi + 0xc]
mov ecx, dword [edi + 0x68]
dec eax
push eax
push dword [ebp - 0x15c]
call dword [esi + 0x14]
jmp 0x4508a6
push dword [ebp + 0x18]
mov eax, dword [ecx]
push dword [ebp - 0x15c]
call dword [eax + 0x14]
mov ecx, dword [edi + 0x68]
mov eax, dword [ecx]
call dword [eax + 0xc]
mov dword [ebp - 0x170], eax
mov esi, ebx
mov dword [ebp - 0x158], esi
test eax, eax
jle 0x450925
call fcn.00418f81
push eax
lea ecx, [ebp - 0x15c]
call fcn.0041775d
push 0
pop eax
xor bl, 1
sete al
push eax
lea eax, [ebp - 0x15c]
push str.IDB_countdown_bg_d
push eax
call fcn.0041a1e9
mov ecx, dword [edi + 0x68]
add esp, 0xc
mov eax, dword [ecx]
push esi
call dword [eax]
mov esi, dword [ebp - 0x15c]
mov ecx, eax
push esi
mov edx, dword [eax]
call dword [edx + 0x84]
lea ecx, [esi - 0x10]
call fcn.00419521
mov esi, dword [ebp - 0x158]
inc esi
mov dword [ebp - 0x158], esi
cmp esi, dword [ebp - 0x170]
jl 0x4508c0
mov ecx, dword [ebp - 0x168]
lea ecx, [ecx - 0x10]
call fcn.00419521
mov ecx, dword [ebp - 0x174]
lea ecx, [ecx - 0x10]
call fcn.00419521
mov ecx, dword [ebp - 0x178]
lea ecx, [ecx - 0x10]
call fcn.00419521
lea ecx, [ebp - 0x14c]
call fcn.005c29b5
mov ecx, dword [ebp + 8]
lea ecx, [ecx - 0x10]
call fcn.00419521
mov ecx, dword [ebp + 0xc]
lea ecx, [ecx - 0x10]
call fcn.00419521
mov ecx, dword [ebp + 0x10]
lea ecx, [ecx - 0x10]
call fcn.00419521
mov ecx, dword [ebp + 0x14]
lea ecx, [ecx - 0x10]
call fcn.00419521
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00609802
mov esp, ebp
pop ebp
ret 0x14