Function at 0x7ec303
Capabilities:
Get geographical location
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffd80
push ebx
push esi
push edi
xor edi, edi
lea eax, [ebp - 4]
push eax
push 0x20019
push 0
push dword [0x8ce4e0]
push 0x80000001
call sub.advapi32.dll_RegOpenKeyExA
test eax, eax
je 0x7ec3d7
lea edx, [ebp - 4]
push edx
push 0x20019
push 0
push dword [0x8ce4e0]
push 0x80000002
call sub.advapi32.dll_RegOpenKeyExA
test eax, eax
je 0x7ec3d7
lea ecx, [ebp - 4]
push ecx
push 0x20019
push 0
push dword [0x8ce4dc]
push 0x80000001
call sub.advapi32.dll_RegOpenKeyExA
test eax, eax
je 0x7ec3d7
lea esi, [ebp - 4]
push esi
push 0x20019
push 0
push dword [0x8ce4dc]
push 0x80000002
call sub.advapi32.dll_RegOpenKeyExA
test eax, eax
je 0x7ec3d7
lea eax, [ebp - 4]
push eax
push 0x20019
push 0
push dword [0x8ce4d8]
push 0x80000001
call sub.advapi32.dll_RegOpenKeyExA
test eax, eax
je 0x7ec3d7
lea edx, [ebp - 4]
push edx
push 0x20019
push 0
push dword [0x8ce4d4]
push 0x80000001
call sub.advapi32.dll_RegOpenKeyExA
test eax, eax
jne 0x7ec47a
push 0x104
lea ecx, [ebp - 0x228]
push ecx
push 0
call sub.kernel32.dll_GetModuleFileNameA
lea esi, [ebp - 8]
push esi
push 0
push 0
push 0
lea eax, [ebp - 0x228]
call fcn.007ec171
push eax
push dword [ebp - 4]
call sub.advapi32.dll_RegQueryValueExA
test eax, eax
jne 0x7ec436
push dword [ebp - 8]
call fcn.007f32fd
pop ecx
mov edi, eax
lea eax, [ebp - 8]
push eax
push edi
push 0
push 0
lea eax, [ebp - 0x228]
call fcn.007ec171
push eax
push dword [ebp - 4]
call sub.advapi32.dll_RegQueryValueExA
jmp 0x7ec472
lea edx, [ebp - 8]
push edx
push 0
push 0
push 0
push 0x8cf186
push dword [ebp - 4]
call sub.advapi32.dll_RegQueryValueExA
test eax, eax
jne 0x7ec472
push dword [ebp - 8]
call fcn.007f32fd
pop ecx
mov edi, eax
lea eax, [ebp - 8]
push eax
push edi
push 0
push 0
push 0x8cf187
push dword [ebp - 4]
call sub.advapi32.dll_RegQueryValueExA
push dword [ebp - 4]
call sub.advapi32.dll_RegCloseKey
push 0x104
lea edx, [ebp - 0x124]
push edx
push dword [0x8ce4cc]
call sub.kernel32.dll_GetModuleFileNameA
cmp byte [ebp - 0x124], 0
je 0x7ec722
lea ecx, [ebp - 0x124]
push ecx
call sub.msvcrt.dll_strlen
pop ecx
mov esi, eax
lea eax, [ebp - 0x124]
add esi, eax
jmp 0x7ec4b8
dec esi
movsx edx, byte [esi]
cmp edx, 0x2e
je 0x7ec4ca
lea ecx, [ebp - 0x124]
cmp esi, ecx
jne 0x7ec4b7
lea eax, [ebp - 0x124]
cmp esi, eax
je 0x7ec722
inc esi
lea edx, [ebp - 0x124]
mov ecx, esi
sub ecx, edx
mov ebx, 0x104
sub ebx, ecx
mov dword [ebp - 0xc], ebx
test edi, edi
je 0x7ec553
cmp byte [edi], 0
je 0x7ec553
mov eax, edi
jmp 0x7ec53c
mov ebx, eax
jmp 0x7ec4ff
inc ebx
movsx edx, byte [ebx]
cmp edx, 0x2c
je 0x7ec50c
cmp byte [ebx], 0
jne 0x7ec4fe
movsx ecx, byte [ebx]
cmp ecx, 0x2c
jne 0x7ec518
mov byte [ebx], 0
inc ebx
push dword [ebp - 0xc]
push eax
push esi
call sub.msvcrt.dll_strncpy
add esp, 0xc
push 2
push 0
lea eax, [ebp - 0x124]
push eax
call sub.kernel32.dll_LoadLibraryExA
mov dword [0x8ce4d0], eax
mov eax, ebx
cmp dword [0x8ce4d0], 0
jne 0x7ec722
cmp byte [eax], 0
jne 0x7ec4fa
jmp 0x7ec722
xor ebx, ebx
push str.kernel32.dll
call sub.kernel32.dll_GetModuleHandleA
test eax, eax
je 0x7ec570
push str.GetThreadPreferredUILanguages
push eax
call sub.kernel32.dll_GetProcAddress
mov ebx, eax
test ebx, ebx
je 0x7ec610
xor eax, eax
mov dword [ebp - 0x10], eax
xor edx, edx
mov dword [ebp - 0x14], edx
lea ecx, [ebp - 0x10]
push ecx
push 0
lea ecx, [ebp - 0x14]
push ecx
push 0x38
call ebx
test eax, eax
je 0x7ec6af
mov eax, dword [ebp - 0x10]
add eax, eax
push eax
call fcn.007f32fd
pop ecx
mov dword [ebp - 0x18], eax
lea edx, [ebp - 0x10]
push edx
push dword [ebp - 0x18]
lea ecx, [ebp - 0x14]
push ecx
push 0x38
call ebx
mov ebx, dword [ebp - 0x18]
cmp dword [ebp - 0x18], 0
je 0x7ec6af
jmp 0x7ec5f3
push dword [ebp - 0xc]
push ebx
push esi
call sub.msvcrt.dll_wcstombs
add esp, 0xc
push 2
push 0
lea eax, [ebp - 0x124]
push eax
call sub.kernel32.dll_LoadLibraryExA
mov dword [0x8ce4d0], eax
push ebx
call sub.msvcrt.dll_wcslen
pop ecx
inc eax
add eax, eax
add ebx, eax
cmp word [ebx], 0
je 0x7ec602
cmp dword [0x8ce4d0], 0
je 0x7ec5c5
push dword [ebp - 0x18]
call fcn.007f330f
pop ecx
jmp 0x7ec6af
push 0x55
lea edx, [ebp - 0x280]
push edx
push 0x59
call sub.kernel32.dll_GetThreadLocale
push eax
call sub.kernel32.dll_GetLocaleInfoA
dec eax
mov dword [ebp - 0x1c], eax
lea ebx, [ebp - 0x280]
add ebx, dword [ebp - 0x1c]
mov byte [ebx], 0x2d
mov eax, dword [ebp - 0x1c]
inc eax
mov edx, 0x55
sub edx, eax
push edx
lea ecx, [ebx + 1]
push ecx
push 0x5a
call sub.kernel32.dll_GetThreadLocale
push eax
call sub.kernel32.dll_GetLocaleInfoA
push dword [ebp - 0xc]
lea ecx, [ebp - 0x280]
push ecx
push esi
call sub.msvcrt.dll_strncpy
add esp, 0xc
push 2
push 0
lea eax, [ebp - 0x124]
push eax
call sub.kernel32.dll_LoadLibraryExA
mov dword [0x8ce4d0], eax
cmp dword [0x8ce4d0], 0
jne 0x7ec6af
mov byte [ebx], 0
push dword [ebp - 0xc]
lea edx, [ebp - 0x280]
push edx
push esi
call sub.msvcrt.dll_strncpy
add esp, 0xc
push 2
push 0
lea eax, [ebp - 0x124]
push eax
call sub.kernel32.dll_LoadLibraryExA
mov dword [0x8ce4d0], eax
cmp dword [0x8ce4d0], 0
jne 0x7ec722
push 4
lea edx, [ebp - 0x20]
push edx
push 3
call sub.kernel32.dll_GetThreadLocale
push eax
call sub.kernel32.dll_GetLocaleInfoA
push dword [ebp - 0xc]
lea ecx, [ebp - 0x20]
push ecx
push esi
call sub.msvcrt.dll_strncpy
add esp, 0xc
push 2
push 0
lea eax, [ebp - 0x124]
push eax
call sub.kernel32.dll_LoadLibraryExA
mov dword [0x8ce4d0], eax
cmp dword [0x8ce4d0], 0
jne 0x7ec722
mov byte [ebp - 0x1e], 0
push dword [ebp - 0xc]
lea edx, [ebp - 0x20]
push edx
push esi
call sub.msvcrt.dll_strncpy
add esp, 0xc
push 2
push 0
lea ecx, [ebp - 0x124]
push ecx
call sub.kernel32.dll_LoadLibraryExA
mov dword [0x8ce4d0], eax
test edi, edi
je 0x7ec72d
push edi
call fcn.007f330f
pop ecx
cmp dword [0x8ce4d0], 0
jne 0x7ec740
mov eax, dword [0x8ce4cc]
mov dword [0x8ce4d0], eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret