Function at 0x12d5571
Capabilities:
Get geographical location

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x62c
mov eax, dword [0x12d8140]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [0x12d8498]
push esi
push edi
test eax, eax
jne 0x12d5673
push ebx
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLCID]
and dword [ebp - 0x628], 0
mov ebx, eax
push 2
lea eax, [ebp - 0x628]
push eax
push 0x20000070
push ebx
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
test eax, eax
je 0x12d55ca
cmp dword [ebp - 0x628], 1
sete al
jmp 0x12d55cc
xor al, al
test al, al
je 0x12d55e7
cmp dword [0x12d8484], 0x7d0
je 0x12d566d
mov byte [0x12d8488], 1
cmp byte [0x12d848a], 0
jne 0x12d566d
movzx eax, bx
push 9
mov dword [ebp - 0x62c], eax
and eax, 0x3ff
pop ecx
cmp cx, ax
je 0x12d566d
mov edi, 0x104
lea eax, [ebp - 0x624]
push edi
push eax
push dword [0x12d848c]
xor esi, esi
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
test eax, eax
je 0x12d5638
mov edx, dword [ebp - 0x62c]
lea ecx, [ebp - 0x624]
call fcn.012d7403
mov esi, eax
cmp esi, dword [0x12d848c]
jne 0x12d5649
push esi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
jmp 0x12d5651
test esi, esi
jne 0x12d5966
push 5
lea eax, [ebp - 0xc]
push eax
push 3
push ebx
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoA]
test eax, eax
jne 0x12d5683
mov eax, dword [0x12d8498]
test eax, eax
jne 0x12d5672
mov eax, dword [0x12d848c]
pop ebx
mov ecx, dword [ebp - 4]
pop edi
xor ecx, ebp
pop esi
call fcn.012d7a50
mov esp, ebp
pop ebp
ret
push edi
lea eax, [ebp - 0x41c]
push eax
push 0x3e9
push dword [0x12d848c]
call dword [sym.imp.USER32.dll_LoadStringA]
test eax, eax
je 0x12d5664
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 0x41c]
push eax
push 0x12c4234
lea eax, [ebp - 0x214]
push edi
push eax
call fcn.012c7fda
add esp, 0x14
lea eax, [ebp - 0x110]
push edi
push eax
push dword [0x12d848c]
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
mov cl, byte [ebp - 0x110]
lea esi, [ebp - 0x110]
mov eax, esi
jmp 0x12d56f7
cmp cl, 0x5c
jne 0x12d56ee
inc eax
mov esi, eax
jmp 0x12d56f5
push eax
call dword [sym.imp.USER32.dll_CharNextA]
mov cl, byte [eax]
test cl, cl
jne 0x12d56e4
lea eax, [ebp - 0x110]
lea ecx, [ebp - 0x214]
sub esi, eax
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x12d570c
sub ecx, edx
lea eax, [esi + 1]
add eax, ecx
cmp eax, edi
ja 0x12d5750
push esi
lea eax, [ebp - 0x110]
push eax
lea eax, [ebp - 0x318]
push eax
call sub.msvcrt.dll_memcpy
lea eax, [ebp - 0x214]
push eax
mov eax, edi
sub eax, esi
push eax
lea eax, [ebp - 0x318]
add eax, esi
push eax
call dword [sym.imp.msvcrt.dll_strcpy_s]
add esp, 0x18
push 0x60
xor ebx, ebx
lea eax, [ebp - 0x318]
push ebx
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryExA]
mov esi, eax
test esi, esi
jne 0x12d5966
push 0x60
push ebx
lea eax, [ebp - 0x214]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryExA]
mov esi, eax
test esi, esi
jne 0x12d5966
lea ecx, [ebp - 0xc]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x12d578c
sub ecx, edx
cmp ecx, 2
jbe 0x12d5872
lea eax, [ebp - 0xc]
mov byte [ebp - 0xa], bl
push eax
lea eax, [ebp - 0x41c]
push eax
push 0x12c4234
lea eax, [ebp - 0x214]
push edi
push eax
call dword [sym.imp.msvcrt.dll_sprintf_s]
mov cl, byte [ebp - 0x110]
lea esi, [ebp - 0x110]
add esp, 0x14
mov eax, esi
jmp 0x12d57e5
cmp cl, 0x5c
jne 0x12d57dc
inc eax
mov esi, eax
jmp 0x12d57e3
push eax
call dword [sym.imp.USER32.dll_CharNextA]
mov cl, byte [eax]
test cl, cl
jne 0x12d57d2
lea eax, [ebp - 0x110]
lea ecx, [ebp - 0x214]
sub esi, eax
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x12d57fa
sub ecx, edx
lea eax, [esi + 1]
add eax, ecx
cmp eax, edi
ja 0x12d583e
push esi
lea eax, [ebp - 0x110]
push eax
lea eax, [ebp - 0x318]
push eax
call sub.msvcrt.dll_memcpy
lea eax, [ebp - 0x214]
push eax
mov eax, edi
sub eax, esi
push eax
lea eax, [ebp - 0x318]
add eax, esi
push eax
call dword [sym.imp.msvcrt.dll_strcpy_s]
add esp, 0x18
push 0x60
push ebx
lea eax, [ebp - 0x318]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryExA]
mov esi, eax
test esi, esi
jne 0x12d5966
push 0x60
push ebx
lea eax, [ebp - 0x214]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryExA]
mov esi, eax
test esi, esi
jne 0x12d5966
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLCID]
push 5
lea ecx, [ebp - 0xc]
and eax, 0x3ff
push ecx
or eax, 0x400
push 3
push eax
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoA]
test eax, eax
je 0x12d5664
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 0x41c]
push eax
push 0x12c4234
lea eax, [ebp - 0x214]
push edi
push eax
call dword [sym.imp.msvcrt.dll_sprintf_s]
mov cl, byte [ebp - 0x110]
lea esi, [ebp - 0x110]
add esp, 0x14
mov eax, esi
jmp 0x12d58dd
cmp cl, 0x5c
jne 0x12d58d4
inc eax
mov esi, eax
jmp 0x12d58db
push eax
call dword [sym.imp.USER32.dll_CharNextA]
mov cl, byte [eax]
test cl, cl
jne 0x12d58ca
lea eax, [ebp - 0x110]
lea ecx, [ebp - 0x214]
sub esi, eax
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x12d58f2
sub ecx, edx
lea eax, [esi + 1]
add eax, ecx
cmp eax, edi
ja 0x12d5934
push esi
lea eax, [ebp - 0x110]
push eax
lea eax, [ebp - 0x318]
push eax
call sub.msvcrt.dll_memcpy
lea eax, [ebp - 0x214]
sub edi, esi
push eax
lea eax, [ebp - 0x318]
add eax, esi
push edi
push eax
call dword [sym.imp.msvcrt.dll_strcpy_s]
add esp, 0x18
push 0x60
push ebx
lea eax, [ebp - 0x318]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryExA]
mov esi, eax
test esi, esi
jne 0x12d5966
push 0x60
push ebx
lea eax, [ebp - 0x214]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryExA]
mov esi, eax
test esi, esi
jne 0x12d5966
mov esi, dword [0x12d848c]
mov eax, esi
jmp 0x12d5672