Function at 0x14003d630
Capabilities:
Get geographical location

Disassembly:
push r13
push r15
sub rsp, 0x78
movsxd rax, dword [rcx + 0xc28]
mov r13, rcx
movsxd r8, dword [rcx + 0xc5c]
imul r15, rax, 0x110
add r15, qword [0x1400b2ef0]
cmp r8d, 0xffffffff
je 0x14003e138
mov rcx, qword [r15 + 0x60]
movabs rax, 0xe38e38e38e38e39
mov qword [rsp + 0xa0], rbp
mov rbp, qword [r15 + 0x58]
sub rcx, rbp
imul rcx
sar rdx, 3
mov rax, rdx
shr rax, 0x3f
add rdx, rax
je 0x14003e130
mov qword [rsp + 0x70], rsi
lea rcx, str.Info
lea rsi, [r8 + r8*8]
xor edx, edx
xor r8d, r8d
shl rsi, 4
call fcn.14006df50
test al, al
je 0x14003e126
lea rcx, str.MyTabBar
call fcn.14005f370
test al, al
je 0x14003e121
cmp qword [rsi + rbp + 0x58], 0
mov qword [rsp + 0x98], rbx
mov qword [rsp + 0x68], rdi
movaps xmmword [rsp + 0x50], xmm6
je 0x14003db6b
mov rdx, qword [0x1400b2e50]
mov rax, qword [rdx + 0x2210]
cmp byte [rax + 0x93], 0
jne 0x14003db72
mov rbx, qword [rdx + 0x2658]
test rbx, rbx
je 0x14003db72
xor r9d, r9d
lea rdx, str.City
xor r8d, r8d
mov rcx, rbx
call fcn.140060fc0
test al, al
je 0x14003db6b
movsx rax, word [rbx + 0x70]
lea rcx, [rax + rax*8]
mov rax, qword [rbx + 8]
mov ecx, dword [rax + rcx*4]
call fcn.140070cb0
lea rcx, str.CITY
call fcn.140051c40
mov rax, qword [rsi + rbp + 0x58]
cmp qword [rax + 0x50], 0x10
lea rdx, [rax + 0x38]
jb 0x14003d769
mov rdx, qword [rdx]
mov r8d, dword [rax + 8]
lea rcx, str.Name:__s___d_
call fcn.140051c40
lea rcx, str.PRODUCTION
call fcn.140051c40
mov rcx, qword [0x1400b2e50]
mov rax, qword [rcx + 0x2210]
mov byte [rax + 0x90], 1
mov rax, qword [rcx + 0x2210]
movss xmm0, dword [rcx + 0x1bc8]
addss xmm0, dword [rax + 0x118]
movss dword [rax + 0x118], xmm0
addss xmm0, dword [rax + 0x10]
addss xmm0, dword [rax + 0x11c]
movss dword [rax + 0xd8], xmm0
mov rax, qword [rsi + rbp + 0x58]
mov rbx, qword [rax + 0x158]
cmp rbx, qword [rax + 0x160]
je 0x14003d838
nop dword [rax]
nop word [rax + rax]
lea rcx, [rax + 0x178]
mov rdx, rbx
call fcn.14000d690
mov rdx, rbx
mov edi, dword [rax]
shr edi, 8
call fcn.14000b8f0
mov r8d, edi
lea rcx, str._s_:__d
lea rdx, [rax + 0xe]
call fcn.140051c40
mov rax, qword [rsi + rbp + 0x58]
add rbx, 4
cmp rbx, qword [rax + 0x160]
jne 0x14003d7f0
mov rcx, qword [0x1400b2e50]
mov rax, qword [rcx + 0x2210]
mov byte [rax + 0x90], 1
mov rax, qword [rcx + 0x2210]
movss xmm0, dword [rax + 0x118]
subss xmm0, dword [rcx + 0x1bc8]
lea rcx, str.BUILDING
movss dword [rax + 0x118], xmm0
addss xmm0, dword [rax + 0x10]
addss xmm0, dword [rax + 0x11c]
movss dword [rax + 0xd8], xmm0
call fcn.140051c40
mov rdx, qword [0x1400b2e50]
mov rax, qword [rdx + 0x2210]
mov byte [rax + 0x90], 1
mov rax, qword [rdx + 0x2210]
movss xmm0, dword [rdx + 0x1bc8]
addss xmm0, dword [rax + 0x118]
movss dword [rax + 0x118], xmm0
addss xmm0, dword [rax + 0x10]
addss xmm0, dword [rax + 0x11c]
movss dword [rax + 0xd8], xmm0
mov rax, qword [rsi + rbp + 0x58]
mov rcx, qword [rax + 0x188]
mov rbx, qword [rcx]
cmp rbx, rcx
je 0x14003d978
cmp dword [rbx + 0x20], 0xffff
je 0x14003d909
lea rdx, [rbx + 0x1c]
call fcn.14000b8f0
lea rcx, [0x1400a191c]
lea rdx, [rax + 0xe]
call fcn.140051c40
mov rax, qword [rbx + 0x10]
cmp byte [rax + 0x19], 0
je 0x14003d938
mov rax, qword [rbx + 8]
cmp byte [rax + 0x19], 0
jne 0x14003d933
nop dword [rax]
cmp rbx, qword [rax + 0x10]
jne 0x14003d933
mov rbx, rax
mov rax, qword [rax + 8]
cmp byte [rax + 0x19], 0
je 0x14003d920
mov rbx, rax
jmp 0x14003d95f
mov rcx, qword [rax]
mov rbx, rax
cmp byte [rcx + 0x19], 0
jne 0x14003d95f
nop dword [rax]
nop dword [rax + rax]
mov rax, qword [rcx]
mov rbx, rcx
mov rcx, rax
cmp byte [rax + 0x19], 0
je 0x14003d950
mov rax, qword [rsi + rbp + 0x58]
cmp rbx, qword [rax + 0x188]
jne 0x14003d8e7
mov rdx, qword [0x1400b2e50]
mov rax, qword [rdx + 0x2210]
lea rcx, str.Yields
mov byte [rax + 0x90], 1
mov rax, qword [rdx + 0x2210]
movss xmm0, dword [rax + 0x118]
subss xmm0, dword [rdx + 0x1bc8]
movss dword [rax + 0x118], xmm0
addss xmm0, dword [rax + 0x10]
addss xmm0, dword [rax + 0x11c]
movss dword [rax + 0xd8], xmm0
call fcn.140051c40
mov rdx, qword [0x1400b2e50]
mov rax, qword [rdx + 0x2210]
mov byte [rax + 0x90], 1
mov rax, qword [rdx + 0x2210]
movss xmm0, dword [rdx + 0x1bc8]
addss xmm0, dword [rax + 0x118]
movss dword [rax + 0x118], xmm0
addss xmm0, dword [rax + 0x10]
addss xmm0, dword [rax + 0x11c]
movss dword [rax + 0xd8], xmm0
mov rcx, qword [rsi + rbp + 0x58]
mov rax, qword [rcx + 0x18]
mov rbx, qword [rax]
cmp rbx, rax
je 0x14003daea
movaps xmmword [rsp + 0x40], xmm7
nop dword [rax]
add rcx, 0x28
lea rdx, [rbx + 0x1c]
call fcn.14000d690
movss xmm7, dword [rbx + 0x20]
lea rdx, [rbx + 0x1c]
cvtps2pd xmm7, xmm7
movss xmm6, dword [rax]
cvtps2pd xmm6, xmm6
call fcn.14000b8f0
lea rcx, str._s__.2f___.2f
lea rdx, [rax + 0xe]
movaps xmm3, xmm6
movq r9, xmm6
movaps xmm2, xmm7
movq r8, xmm7
call fcn.140051c40
mov rax, qword [rbx + 0x10]
cmp byte [rax + 0x19], 0
je 0x14003daa8
mov rax, qword [rbx + 8]
cmp byte [rax + 0x19], 0
jne 0x14003daa3
nop dword [rax]
cmp rbx, qword [rax + 0x10]
jne 0x14003daa3
mov rbx, rax
mov rax, qword [rax + 8]
cmp byte [rax + 0x19], 0
je 0x14003da90
mov rbx, rax
jmp 0x14003dacf
mov rcx, qword [rax]
mov rbx, rax
cmp byte [rcx + 0x19], 0
jne 0x14003dacf
nop dword [rax]
nop dword [rax + rax]
mov rax, qword [rcx]
mov rbx, rcx
mov rcx, rax
cmp byte [rax + 0x19], 0
je 0x14003dac0
mov rcx, qword [rsi + rbp + 0x58]
cmp rbx, qword [rcx + 0x18]
jne 0x14003da30
mov rdx, qword [0x1400b2e50]
movaps xmm7, xmmword [rsp + 0x40]
mov rax, qword [rdx + 0x2210]
mov byte [rax + 0x90], 1
mov rax, qword [rdx + 0x2210]
movss xmm0, dword [rax + 0x118]
subss xmm0, dword [rdx + 0x1bc8]
movss dword [rax + 0x118], xmm0
addss xmm0, dword [rax + 0x10]
addss xmm0, dword [rax + 0x11c]
movss dword [rax + 0xd8], xmm0
mov rax, qword [rdx + 0x2210]
cmp byte [rax + 0x93], 0
jne 0x14003db72
mov r8, qword [rdx + 0x2658]
test r8, r8
je 0x14003db72
movsx rax, word [r8 + 0x70]
lea rcx, [rax + rax*8]
mov rax, qword [r8 + 8]
test byte [rax + rcx*4 + 4], 8
jne 0x14003db72
mov rax, qword [rdx + 0x2210]
dec dword [rax + 0xc8]
jmp 0x14003db72
mov rdx, qword [0x1400b2e50]
cmp qword [rsi + rbp + 0x78], 0
je 0x14003dd15
mov rax, qword [rdx + 0x2210]
cmp byte [rax + 0x93], 0
jne 0x14003dd15
mov rbx, qword [rdx + 0x2658]
test rbx, rbx
je 0x14003dd15
xor r9d, r9d
lea rdx, str.District
xor r8d, r8d
mov rcx, rbx
call fcn.140060fc0
test al, al
je 0x14003dd0e
movsx rax, word [rbx + 0x70]
mov qword [rsp + 0x60], r14
lea rcx, [rax + rax*8]
mov rax, qword [rbx + 8]
mov ecx, dword [rax + rcx*4]
call fcn.140070cb0
mov rdi, qword [rsi + rbp + 0x78]
lea rcx, str.DISTRICT__d
mov edx, dword [rdi + 0xc]
call fcn.140051c40
cmp dword [rdi + 8], 0xffffffff
jne 0x14003dc02
lea rax, str.UNKNOWN
mov r8d, 0xffffffff
jmp 0x14003dc13
lea rdx, [rdi + 8]
call fcn.14000b8f0
mov r8d, dword [rdi + 8]
add rax, 0xe
mov rdx, rax
lea rcx, str.Type:__s___x_
call fcn.140051c40
cmp dword [rdi + 8], 0x62f1b509
jne 0x14003dc4c
lea rbx, [rsi + rbp]
lea rdx, [rbx + 0x44]
call fcn.14000b8f0
mov r8d, dword [rbx + 0x44]
lea rcx, str.Type:__s___x_
lea rdx, [rax + 0xe]
call fcn.140051c40
cmp dword [rdi + 0x1c], 0
je 0x14003dc94
mov eax, dword [rdi + 8]
cmp eax, 0x8a32007d
je 0x14003dc78
cmp eax, 0x66db35b9
je 0x14003dc78
cmp eax, 0xb45b1b15
je 0x14003dc78
cmp eax, 0x66fc953d
je 0x14003dc78
cmp eax, 0x79dd476d
jne 0x14003dc94
mov r8d, dword [rdi + 0x10]
lea rcx, str.Health_:__d__damage__d__wall_damage__d_
mov r9d, dword [rdi + 0x14]
mov edx, 0xc8
sub edx, r8d
call fcn.140051c40
mov rax, qword [rsi + rbp + 0x78]
lea rcx, str.Wall__d__d
mov r8d, dword [rax + 0x14]
mov edx, dword [rax + 0x18]
call fcn.140051c40
mov rax, qword [rsi + rbp + 0x78]
mov r14, qword [rsp + 0x60]
cmp byte [rax + 0x20], 0
je 0x14003dcc8
lea rcx, str.PILLAGED
call fcn.140051c40
mov rdx, qword [0x1400b2e50]
mov rax, qword [rdx + 0x2210]
cmp byte [rax + 0x93], 0
jne 0x14003dd15
mov r8, qword [rdx + 0x2658]
test r8, r8
je 0x14003dd15
movsx rax, word [r8 + 0x70]
lea rcx, [rax + rax*8]
mov rax, qword [r8 + 8]
test byte [rax + rcx*4 + 4], 8
jne 0x14003dd15
mov rax, qword [rdx + 0x2210]
dec dword [rax + 0xc8]
jmp 0x14003dd15
mov rdx, qword [0x1400b2e50]
mov rax, qword [rsi + rbp + 0x68]
sub rax, qword [rsi + rbp + 0x60]
test rax, 0xfffffffffffffff8
je 0x14003df14
mov rax, qword [rdx + 0x2210]
cmp byte [rax + 0x93], 0
jne 0x14003df14
mov rbx, qword [rdx + 0x2658]
test rbx, rbx
je 0x14003df14
xor r9d, r9d
lea rdx, str.Units
xor r8d, r8d
mov rcx, rbx
call fcn.140060fc0
test al, al
je 0x14003df0d
movsx rax, word [rbx + 0x70]
lea rcx, [rax + rax*8]
mov rax, qword [rbx + 8]
mov ecx, dword [rax + rcx*4]
call fcn.140070cb0
mov r8, qword [rsi + rbp + 0x60]
xor edi, edi
mov rax, qword [rsi + rbp + 0x68]
sub rax, r8
sar rax, 3
test rax, rax
je 0x14003dec7
movss xmm6, dword [0x1400a30d8]
mov ebx, edi
nop word [rax + rax]
mov rdx, qword [rbx + r8]
add rdx, 0xc
cmp dword [rdx], 0xffffffff
jne 0x14003ddc6
lea rdx, str.UNKNOWN
jmp 0x14003ddd4
call fcn.14000b8f0
mov r8, qword [rsi + rbp + 0x60]
lea rdx, [rax + 0xe]
mov rax, qword [rbx + r8]
lea rcx, str.Type:__s___x_
mov r8d, dword [rax + 0xc]
call fcn.140051c40
mov rax, qword [rsi + rbp + 0x60]
mov rcx, qword [rbx + rax]
mov edx, dword [rcx + 8]
lea rcx, str.id_:__d
call fcn.140051c40
mov rax, qword [rsi + rbp + 0x60]
mov rcx, qword [rbx + rax]
mov edx, dword [rcx + 0x10]
lea rcx, str.Xp_:__d
call fcn.140051c40
mov rax, qword [rsi + rbp + 0x60]
mov rcx, qword [rbx + rax]
mov edx, dword [rcx + 0x14]
lea rcx, str.Damage_:__d
call fcn.140051c40
mov rax, qword [rsi + rbp + 0x60]
mov rcx, qword [rbx + rax]
mov edx, dword [rcx + 0x1c]
lea rcx, str.Level_:__d
call fcn.140051c40
mov rax, qword [rsi + rbp + 0x60]
mov rcx, qword [rbx + rax]
mov edx, dword [rcx + 0x18]
lea rcx, str.Army_:__d
call fcn.140051c40
mov rdx, qword [0x1400b2e50]
mov rax, qword [rdx + 0x2210]
mov byte [rax + 0x90], 1
mov rax, qword [rdx + 0x2210]
cmp byte [rax + 0x93], 0
jne 0x14003dea2
movaps xmm1, xmm6
mov qword [rsp + 0x30], 0
lea rcx, [rsp + 0x30]
call fcn.140070d30
mov rdx, qword [0x1400b2e50]
mov r8, qword [rsi + rbp + 0x60]
inc edi
mov rcx, qword [rsi + rbp + 0x68]
add rbx, 8
sub rcx, r8
movsxd rax, edi
sar rcx, 3
cmp rax, rcx
jb 0x14003ddb0
jmp 0x14003dece
mov rdx, qword [0x1400b2e50]
mov rax, qword [rdx + 0x2210]
cmp byte [rax + 0x93], 0
jne 0x14003df14
mov r8, qword [rdx + 0x2658]
test r8, r8
je 0x14003df14
movsx rax, word [r8 + 0x70]
lea rcx, [rax + rax*8]
mov rax, qword [r8 + 8]
test byte [rax + rcx*4 + 4], 8
jne 0x14003df14
mov rax, qword [rdx + 0x2210]
dec dword [rax + 0xc8]
jmp 0x14003df14
mov rdx, qword [0x1400b2e50]
mov rax, qword [rdx + 0x2210]
movaps xmm6, xmmword [rsp + 0x50]
mov rdi, qword [rsp + 0x68]
cmp byte [rax + 0x93], 0
jne 0x14003e119
mov rbx, qword [rdx + 0x2658]
test rbx, rbx
je 0x14003e119
xor r9d, r9d
lea rdx, str.Terrain
xor r8d, r8d
mov rcx, rbx
call fcn.140060fc0
test al, al
je 0x14003e119
movsx rax, word [rbx + 0x70]
lea rcx, [rax + rax*8]
mov rax, qword [rbx + 8]
mov ecx, dword [rax + rcx*4]
call fcn.140070cb0
mov eax, dword [r13 + 0xc5c]
lea rcx, str.iTile:__d__x:__d___02x___y:__d___02x_
cdq
idiv dword [r15 + 0xec]
mov r9d, edx
mov dword [rsp + 0x28], eax
mov r8d, edx
mov dword [rsp + 0x20], eax
mov edx, dword [rsi + rbp]
call fcn.140051c40
lea rbx, [rsi + rbp]
lea rdx, [rbx + 8]
call fcn.14000b8f0
mov r8d, dword [rbx + 8]
lea rcx, str.terrain_:__s___x_
lea rdx, [rax + 0xe]
call fcn.140051c40
lea rdx, [rsi + 0xc]
add rdx, rbp
mov ebx, dword [rdx]
cmp ebx, 0xffffffff
je 0x14003dfe7
call fcn.14000b8f0
mov r8d, ebx
lea rcx, str.feature_:__s___x_
lea rdx, [rax + 0xe]
call fcn.140051c40
lea rdx, [rsi + 0x10]
add rdx, rbp
cmp dword [rdx], 0xffffffff
je 0x14003e00d
call fcn.14000b8f0
mov r8d, dword [rsi + rbp + 0x14]
lea rcx, str.resource_:__s___d_
lea rdx, [rax + 0xe]
call fcn.140051c40
movsx edx, word [rsi + rbp + 0x28]
lea rcx, str.Appeal_:__d
call fcn.140051c40
lea rdx, [rsi + 0x18]
add rdx, rbp
mov ebx, dword [rdx]
cmp ebx, 0xffffffff
je 0x14003e044
call fcn.14000b8f0
mov r8d, ebx
lea rcx, str.Improvment:__s___x_
lea rdx, [rax + 0xe]
call fcn.140051c40
mov edx, dword [rsi + rbp + 0x24]
lea rcx, str.Continent_:__d
call fcn.140051c40
mov edx, dword [rsi + rbp + 0x48]
test edx, edx
je 0x14003e068
lea rcx, str.Pillage_:__d
call fcn.140051c40
mov edx, dword [rsi + rbp + 0x1c]
test edx, edx
je 0x14003e081
mov r8d, dword [rsi + rbp + 0x20]
lea rcx, str.Road_lvl__d____d
call fcn.140051c40
movsx rcx, word [rsi + rbp + 0x8a]
mov eax, 0xff
cmp cx, ax
je 0x14003e0d5
movsx rax, word [rsi + rbp + 0x88]
cmp ax, 0xffff
je 0x14003e0d5
imul rdx, rax, 0x308
mov rax, qword [r15 + 0x70]
mov rax, qword [rdx + rax + 0x40]
mov rdx, qword [rax + rcx*8]
add rdx, 0x10
cmp dword [rdx], 0xffffffff
je 0x14003e0d5
call fcn.14000b8f0
lea rcx, str.Religion:__s
lea rdx, [rax + 0xe]
call fcn.140051c40
mov rdx, qword [0x1400b2e50]
mov rax, qword [rdx + 0x2210]
cmp byte [rax + 0x93], 0
jne 0x14003e119
mov r8, qword [rdx + 0x2658]
test r8, r8
je 0x14003e119
movsx rax, word [r8 + 0x70]
lea rcx, [rax + rax*8]
mov rax, qword [r8 + 8]
test byte [rax + rcx*4 + 4], 8
jne 0x14003e119
mov rax, qword [rdx + 0x2210]
dec dword [rax + 0xc8]
mov rbx, qword [rsp + 0x98]
call fcn.14005f7e0
call fcn.140070280
mov rsi, qword [rsp + 0x70]
mov rbp, qword [rsp + 0xa0]
add rsp, 0x78
pop r15
pop r13
ret