Function at 0x643028
Capabilities:
Get geographical location

Disassembly:
push ebp
mov ebp, esp
push ecx
mov ecx, 0x19
push 0
push 0
dec ecx
jne 0x643031
push ecx
xchg dword [ebp - 4], ecx
push ebx
push esi
push edi
mov dword [ebp - 0x40], ecx
mov byte [ebp - 0x39], dl
mov ebx, eax
lea eax, [ebp - 0x38]
mov edx, dword [0x651784]
call fcn.0040b244
xor eax, eax
push ebp
push 0x643978
push dword fs:[eax]
mov dword fs:[eax], esp
mov dword [ebp - 0x70], ebx
mov dl, 1
mov eax, dword [0x63e85c]
call fcn.00407bc8
mov dword [ebp - 0xc], eax
mov byte [ebp - 0x28], 1
mov dl, 4
mov eax, dword [ebp - 0x70]
call fcn.0066d750
xor eax, eax
push ebp
push 0x6438f4
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0x70]
mov edx, dword [eax + 0x290]
mov eax, dword [ebp - 0x70]
mov ecx, dword [eax]
call dword [ecx + 0x3d0]
mov dl, 1
mov eax, dword [0x4e5634]
call fcn.00508058
mov dword [ebp - 4], eax
mov dl, 1
mov eax, dword [0x644fb0]
call fcn.00645e7c
mov dword [ebp - 0x10], eax
mov dword [ebp - 8], 0xffffffff
mov dword [ebp - 0x14], 0xffffffff
mov dword [ebp - 0x18], 0xffffffff
lea eax, [ebp - 0x24]
mov edx, dword [0x6494b4]
call fcn.0040bfc8
lea eax, [ebp - 0x20]
call fcn.00409938
xor eax, eax
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x70]
mov eax, dword [eax + 0x2a0]
call fcn.00660554
mov ebx, eax
test bl, bl
je 0x64311b
lea edx, [ebp - 0x24]
mov eax, dword [ebp - 0x70]
mov eax, dword [eax + 0x2a0]
mov eax, dword [eax + 8]
call fcn.0065ee7c
lea eax, [ebp - 0x60]
push eax
movzx edx, byte [ebp - 0x39]
lea ecx, [ebp - 0x54]
mov eax, dword [ebp - 0x70]
call fcn.0068284c
mov eax, dword [ebp - 0x54]
mov dword [ebp - 0x50], eax
mov edx, 0x643994
mov eax, dword [ebp - 0xc]
call fcn.0063eab8
xor eax, eax
mov dword [ebp - 0x4c], eax
test bl, bl
je 0x6431c6
mov eax, dword [ebp - 0x24]
call fcn.0040bc90
test eax, eax
jl 0x64322b
inc eax
mov dword [ebp - 0x74], eax
xor esi, esi
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + esi*4]
mov eax, dword [eax + 0x18]
add dword [ebp - 0x4c], eax
imul eax, dword [ebp - 0x4c], 0x5a0
mov dword [ebp - 0x78], eax
fild dword [ebp - 0x78]
mov eax, dword [0x768f98]
mov eax, dword [eax]
fild dword [eax + 0x50]
fdivp st(1)
call fcn.00406ca0
mov edi, eax
mov edx, 0x6439b4
mov eax, dword [ebp - 0xc]
call fcn.0063eab8
lea edx, [ebp - 0x80]
mov eax, edi
call fcn.004490bc
mov edx, dword [ebp - 0x80]
lea eax, [ebp - 0x7c]
mov ecx, 0
call fcn.0040a554
mov edx, dword [ebp - 0x7c]
mov eax, dword [ebp - 0xc]
call fcn.0063eab8
inc esi
dec dword [ebp - 0x74]
jne 0x643160
jmp 0x64322b
mov eax, dword [ebp - 0x70]
call fcn.0056103c
imul eax, eax, 0x5a0
mov dword [ebp - 0x78], eax
fild dword [ebp - 0x78]
mov eax, dword [0x768f98]
mov eax, dword [eax]
fild dword [eax + 0x50]
fdivp st(1)
call fcn.00406ca0
mov edi, eax
mov edx, 0x6439b4
mov eax, dword [ebp - 0xc]
call fcn.0063eab8
lea edx, [ebp - 0x88]
mov eax, edi
call fcn.004490bc
mov edx, dword [ebp - 0x88]
lea eax, [ebp - 0x84]
mov ecx, 0
call fcn.0040a554
mov edx, dword [ebp - 0x84]
mov eax, dword [ebp - 0xc]
call fcn.0063eab8
test bl, bl
je 0x64339a
mov eax, dword [ebp - 0x70]
cmp word [eax + 0x52a], 0
je 0x643254
mov esi, dword [ebp - 0x70]
mov cl, 1
mov edx, dword [ebp - 0x70]
mov eax, dword [esi + 0x52c]
call dword [esi + 0x528]
mov edx, 0x6439c8
mov eax, dword [ebp - 0xc]
call fcn.0063eab8
mov eax, dword [ebp - 0x24]
call fcn.0040bc90
daa
mov bl, ah
inc dword [ebp - 0x473f040]
add byte [eax], al
invalid
inc eax
mov dword [ebp - 0x74], eax
xor esi, esi
mov eax, dword [ebp - 0x70]
cmp word [eax + 0x502], 0
je 0x64329f
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + esi*4]
push eax
mov edi, dword [ebp - 0x70]
mov cl, 1
mov edx, dword [ebp - 0x70]
mov eax, dword [edi + 0x504]
call dword [edi + 0x500]
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + esi*4]
call fcn.0065beb0
mov byte [ebp - 0x65], al
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + esi*4]
movzx eax, byte [eax + 0x30]
mov byte [ebp - 0x66], al
cmp byte [ebp - 0x66], 0
je 0x6432c8
lea eax, [ebp - 0x65]
call fcn.0055dd38
movzx eax, byte [ebp - 0x65]
sub al, 1
jb 0x6432d8
je 0x6432e7
dec al
je 0x6432f6
jmp 0x643303
mov edx, 0x6439e0
mov eax, dword [ebp - 0xc]
call fcn.0063eab8
jmp 0x643303
mov edx, 0x6439f0
mov eax, dword [ebp - 0xc]
call fcn.0063eab8
jmp 0x643303
mov edx, 0x643a00
mov eax, dword [ebp - 0xc]
call fcn.0063eab8
push ebp
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + esi*4]
lea edx, [ebp - 0x8c]
mov ecx, dword [eax]
call dword [ecx + 0x24]
mov eax, dword [ebp - 0x8c]
mov edx, dword [ebp - 0x70]
mov edx, dword [edx + 0x2a0]
mov edx, dword [edx + 0x10]
call fcn.00642d3c
pop ecx
mov edx, 0x643a10
mov eax, dword [ebp - 0xc]
call fcn.0063eab8
mov eax, dword [ebp - 0x70]
cmp word [eax + 0x512], 0
je 0x643362
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + esi*4]
push eax
mov edi, dword [ebp - 0x70]
mov cl, 1
mov edx, dword [ebp - 0x70]
mov eax, dword [edi + 0x514]
call dword [edi + 0x510]
inc esi
dec dword [ebp - 0x74]
jne 0x643277
mov edx, 0x643a24
mov eax, dword [ebp - 0xc]
call fcn.0063eab8
mov eax, dword [ebp - 0x70]
cmp word [eax + 0x532], 0
je 0x64339a
mov esi, dword [ebp - 0x70]
mov cl, 1
mov edx, dword [ebp - 0x70]
mov eax, dword [esi + 0x534]
call dword [esi + 0x530]
mov eax, dword [ebp - 0x50]
mov dword [ebp - 0x54], eax
jmp 0x643683
mov edx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x70]
call fcn.00684438
test al, al
je 0x6433dd
mov eax, dword [ebp - 0x70]
cmp word [eax + 0x4ea], 0
je 0x6433f0
mov eax, dword [ebp - 0x54]
push eax
mov esi, dword [ebp - 0x70]
mov cl, 1
mov edx, dword [ebp - 0x70]
mov eax, dword [esi + 0x4ec]
call dword [esi + 0x4e8]
test al, al
jne 0x6433f0
xor ecx, ecx
mov edx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x5c]
call dword [ebp - 0x60]
mov dword [ebp - 0x54], eax
jmp 0x643683
xor esi, esi
jmp 0x643623
test bl, bl
je 0x643425
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + esi*4]
call fcn.005056a8
mov dword [ebp - 0x64], eax
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + esi*4]
movzx eax, byte [eax + 0x4c]
mov byte [ebp - 0x65], al
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + esi*4]
movzx eax, byte [eax + 0x30]
mov byte [ebp - 0x66], al
jmp 0x643443
mov dword [ebp - 0x64], 0xffffffff
mov eax, dword [ebp - 0x70]
movzx eax, byte [eax + 0x43a]
mov byte [ebp - 0x65], al
mov eax, dword [ebp - 0x70]
movzx eax, byte [eax + 0x71]
mov byte [ebp - 0x66], al
test bl, bl
je 0x643457
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + esi*4]
test byte [eax + 0x3c], 0x80
je 0x64361e
mov eax, dword [ebp - 0x54]
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x64]
mov dword [ebp - 0x34], eax
lea edx, [ebp - 0x38]
mov eax, dword [ebp - 0x70]
mov ecx, dword [eax]
call dword [ecx + 0x4b8]
mov edx, 0x6439c8
mov eax, dword [ebp - 0xc]
call fcn.0063eab8
cmp byte [ebp - 0x66], 0
je 0x64348c
lea eax, [ebp - 0x65]
call fcn.0055dd38
movzx eax, byte [ebp - 0x65]
dec al
je 0x64349a
dec al
je 0x6434a9
jmp 0x6434b6
mov edx, 0x6439f0
mov eax, dword [ebp - 0xc]
call fcn.0063eab8
jmp 0x6434b6
mov edx, 0x643a00
mov eax, dword [ebp - 0xc]
call fcn.0063eab8
mov eax, dword [ebp - 0x70]
mov edx, dword [eax + 0x74]
mov eax, dword [ebp - 0x70]
mov eax, dword [eax + 0x290]
call fcn.00545c98
mov eax, dword [ebp - 0x70]
mov byte [eax + 0x899], 0
mov eax, dword [ebp - 0x64]
push eax
push 0
mov eax, dword [ebp - 0x70]
mov ecx, dword [eax + 0x290]
mov edx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x70]
mov edi, dword [eax]
call dword [edi + 0x4c0]
mov eax, dword [ebp - 0x70]
mov eax, dword [eax + 0x2a0]
call fcn.00660538
cmp eax, dword [ebp - 0x64]
jne 0x643598
mov edx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x70]
call fcn.0067c17c
mov dword [ebp - 0x44], eax
mov eax, dword [ebp - 0x44]
cmp eax, dword [ebp - 0x48]
je 0x64354a
mov eax, dword [ebp - 0x44]
mov dword [ebp - 0x48], eax
lea eax, [ebp - 0x20]
call fcn.00409938
mov eax, dword [ebp - 0x44]
dec eax
test eax, eax
jl 0x64354a
inc eax
mov dword [ebp - 0x74], eax
lea eax, [ebp - 0x20]
mov edx, 0x643a38
call fcn.0040a184
dec dword [ebp - 0x74]
jne 0x643538
cmp dword [ebp - 0x44], 0
jle 0x643580
mov edx, dword [ebp - 0x20]
mov eax, dword [ebp - 0xc]
call fcn.0063eab8
mov edx, 0x643a4c
mov eax, dword [ebp - 0xc]
call fcn.0063eab8
push ebp
mov eax, dword [ebp - 0x70]
mov eax, dword [eax + 0x290]
mov edx, dword [eax + 0x40]
mov eax, dword [ebp - 0x30]
call fcn.00642d3c
pop ecx
jmp 0x6435ae
push ebp
mov eax, dword [ebp - 0x70]
mov eax, dword [eax + 0x290]
mov edx, dword [eax + 0x40]
mov eax, dword [ebp - 0x30]
call fcn.00642d3c
pop ecx
jmp 0x6435ae
push ebp
mov eax, dword [ebp - 0x70]
mov eax, dword [eax + 0x290]
mov edx, dword [eax + 0x40]
mov eax, dword [ebp - 0x30]
call fcn.00642d3c
pop ecx
lea eax, [ebp - 0x2c]
call fcn.00451bd0
test al, al
jne 0x643611
mov eax, dword [ebp - 0x70]
call fcn.0068291c
test byte [eax + 0x18], 2
je 0x643611
mov eax, dword [ebp - 0x64]
push eax
push 1
mov eax, dword [ebp - 0x70]
mov ecx, dword [eax + 0x290]
mov edx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x70]
mov edi, dword [eax]
call dword [edi + 0x4c0]
push ebp
lea eax, [ebp - 0x90]
mov ecx, dword [ebp - 0x2c]
mov edx, 0x643a5c
call fcn.0040abb0
mov eax, dword [ebp - 0x90]
mov edx, dword [ebp - 0x70]
mov edx, dword [edx + 0x290]
mov edx, dword [edx + 0x40]
call fcn.00642d3c
pop ecx
mov edx, 0x643a10
mov eax, dword [ebp - 0xc]
call fcn.0063eab8
test bl, bl
je 0x64363b
inc esi
test bl, bl
je 0x6433f7
mov eax, dword [ebp - 0x24]
call fcn.0040bc88
cmp esi, eax
jl 0x6433f7
mov edx, 0x643a24
mov eax, dword [ebp - 0xc]
call fcn.0063eab8
mov eax, dword [ebp - 0xc]
call fcn.0063eb2c
mov eax, dword [ebp - 0x70]
cmp word [eax + 0x4fa], 0
je 0x643675
mov eax, dword [ebp - 0x54]
push eax
mov esi, dword [ebp - 0x70]
mov cl, 1
mov edx, dword [ebp - 0x70]
mov eax, dword [esi + 0x4fc]
call dword [esi + 0x4f8]
xor ecx, ecx
mov edx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x5c]
call dword [ebp - 0x60]
mov dword [ebp - 0x54], eax
cmp dword [ebp - 0x54], 0
je 0x643699
mov eax, dword [ebp - 0x70]
call fcn.0067301c
test al, al
je 0x6433a5
mov edx, 0x643a6c
mov eax, dword [ebp - 0xc]
call fcn.0063eab8
lea eax, [ebp - 0x1c]
mov edx, 0x643a84
call fcn.00409de0
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
test eax, eax
jl 0x643754
inc eax
mov dword [ebp - 0x74], eax
xor esi, esi
lea eax, [ebp - 0x94]
mov edx, dword [ebp - 0x1c]
call fcn.0040aa1c
lea eax, [ebp - 0x94]
push eax
lea eax, [ebp - 0x98]
push eax
mov dword [ebp - 0xa8], esi
mov byte [ebp - 0xa4], 0
lea ecx, [ebp - 0xac]
mov edx, esi
mov eax, dword [ebp - 4]
mov ebx, dword [eax]
call dword [ebx + 0xc]
mov eax, dword [ebp - 0xac]
mov dword [ebp - 0xa0], eax
mov byte [ebp - 0x9c], 0x11
lea edx, [ebp - 0xa8]
mov ecx, 1
mov eax, 0x643ac4
call fcn.0044aa9c
mov edx, dword [ebp - 0x98]
pop eax
call fcn.0040ab58
mov edx, dword [ebp - 0x94]
lea eax, [ebp - 0x1c]
mov ecx, 0
call fcn.0040a554
inc esi
dec dword [ebp - 0x74]
jne 0x6436ca
lea eax, [ebp - 0x1c]
mov edx, 0x643ae8
call fcn.0040a184
lea eax, [ebp - 0x1c]
mov edx, 0x643af8
call fcn.0040a184
mov eax, dword [ebp - 0x10]
mov eax, dword [eax + 8]
dec eax
test eax, eax
jl 0x643834
inc eax
mov dword [ebp - 0x74], eax
xor esi, esi
mov edx, esi
mov eax, dword [ebp - 0x10]
call fcn.00645dd0
call fcn.00543844
mov dword [ebp - 0x4c], eax
lea eax, [ebp - 0xb0]
mov edx, dword [ebp - 0x1c]
call fcn.0040aa1c
lea eax, [ebp - 0xb0]
push eax
lea eax, [ebp - 0xb4]
push eax
mov eax, dword [ebp - 0x4c]
and eax, 0xff
mov dword [ebp - 0xcc], eax
mov byte [ebp - 0xc8], 0
mov eax, dword [ebp - 0x4c]
shr eax, 8
and eax, 0xff
mov dword [ebp - 0xc4], eax
mov byte [ebp - 0xc0], 0
mov eax, dword [ebp - 0x4c]
shr eax, 0x10
and eax, 0xff
mov dword [ebp - 0xbc], eax
mov byte [ebp - 0xb8], 0
lea edx, [ebp - 0xcc]
mov ecx, 2
mov eax, 0x643b10
call fcn.0044aa9c
mov edx, dword [ebp - 0xb4]
pop eax
call fcn.0040ab58
mov edx, dword [ebp - 0xb0]
lea eax, [ebp - 0x1c]
mov ecx, 0
call fcn.0040a554
inc esi
dec dword [ebp - 0x74]
jne 0x643783
lea eax, [ebp - 0x1c]
mov edx, 0x643ae8
call fcn.0040a184
push 2
lea eax, [ebp - 0x6a]
push eax
push 0xd
push 0x400
call sub.kernel32.dll_GetLocaleInfoW_1
test eax, eax
je 0x64386d
cmp word [ebp - 0x6a], 0x30
jne 0x64386d
lea eax, [ebp - 0x1c]
mov edx, 0x643b4c
call fcn.0040a184
jmp 0x64387a
lea eax, [ebp - 0x1c]
mov edx, 0x643b74
call fcn.0040a184
lea eax, [ebp - 0x1c]
mov edx, 0x643b9c
call fcn.0040a184
push dword [ebp - 0x1c]
lea edx, [ebp - 0xd0]
mov eax, dword [ebp - 0xc]
call fcn.0063eaa0
push dword [ebp - 0xd0]
push 0x643ae8
mov eax, dword [ebp - 0x40]
mov edx, 3
call fcn.0040a260
mov eax, dword [ebp - 4]
call fcn.00407bf8
mov eax, dword [ebp - 0x10]
call fcn.00407bf8
mov eax, dword [ebp - 0x70]
mov edx, dword [eax + 0x290]
mov eax, dword [ebp - 0x70]
mov ecx, dword [eax]
call dword [ecx + 0x3e4]
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x6438fb
mov dl, 4
mov eax, dword [ebp - 0x70]
call fcn.006729ec
mov eax, dword [ebp - 0xc]
call fcn.00407bf8
ret