Function at 0x558e56
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 [0x571d28]
push 0x80000001
call sub.advapi32.dll_RegOpenKeyExA
test eax, eax
je 0x558f2a
lea edx, [ebp - 4]
push edx
push 0x20019
push 0
push dword [0x571d28]
push 0x80000002
call sub.advapi32.dll_RegOpenKeyExA
test eax, eax
je 0x558f2a
lea ecx, [ebp - 4]
push ecx
push 0x20019
push 0
push dword [0x571d24]
push 0x80000001
call sub.advapi32.dll_RegOpenKeyExA
test eax, eax
je 0x558f2a
lea esi, [ebp - 4]
push esi
push 0x20019
push 0
push dword [0x571d24]
push 0x80000002
call sub.advapi32.dll_RegOpenKeyExA
test eax, eax
je 0x558f2a
lea eax, [ebp - 4]
push eax
push 0x20019
push 0
push dword [0x571d20]
push 0x80000001
call sub.advapi32.dll_RegOpenKeyExA
test eax, eax
je 0x558f2a
lea edx, [ebp - 4]
push edx
push 0x20019
push 0
push dword [0x571d1c]
push 0x80000001
call sub.advapi32.dll_RegOpenKeyExA
test eax, eax
jne 0x558fcd
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.00558cc4
push eax
push dword [ebp - 4]
call sub.advapi32.dll_RegQueryValueExA
test eax, eax
jne 0x558f89
push dword [ebp - 8]
call fcn.0055fe8d
pop ecx
mov edi, eax
lea eax, [ebp - 8]
push eax
push edi
push 0
push 0
lea eax, [ebp - 0x228]
call fcn.00558cc4
push eax
push dword [ebp - 4]
call sub.advapi32.dll_RegQueryValueExA
jmp 0x558fc5
lea edx, [ebp - 8]
push edx
push 0
push 0
push 0
push 0x5729d1
push dword [ebp - 4]
call sub.advapi32.dll_RegQueryValueExA
test eax, eax
jne 0x558fc5
push dword [ebp - 8]
call fcn.0055fe8d
pop ecx
mov edi, eax
lea eax, [ebp - 8]
push eax
push edi
push 0
push 0
push 0x5729d2
push dword [ebp - 4]
call sub.advapi32.dll_RegQueryValueExA
push dword [ebp - 4]
call sub.advapi32.dll_RegCloseKey_1
push 0x104
lea edx, [ebp - 0x124]
push edx
push dword [0x571d14]
call sub.kernel32.dll_GetModuleFileNameA
cmp byte [ebp - 0x124], 0
je 0x559275
lea ecx, [ebp - 0x124]
push ecx
call fcn.0052bd7c
pop ecx
mov esi, eax
lea eax, [ebp - 0x124]
add esi, eax
jmp 0x55900b
dec esi
movsx edx, byte [esi]
cmp edx, 0x2e
je 0x55901d
lea ecx, [ebp - 0x124]
cmp esi, ecx
jne 0x55900a
lea eax, [ebp - 0x124]
cmp esi, eax
je 0x559275
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 0x5590a6
cmp byte [edi], 0
je 0x5590a6
mov eax, edi
jmp 0x55908f
mov ebx, eax
jmp 0x559052
inc ebx
movsx edx, byte [ebx]
cmp edx, 0x2c
je 0x55905f
cmp byte [ebx], 0
jne 0x559051
movsx ecx, byte [ebx]
cmp ecx, 0x2c
jne 0x55906b
mov byte [ebx], 0
inc ebx
push dword [ebp - 0xc]
push eax
push esi
call fcn.0052bde0
add esp, 0xc
push 2
push 0
lea eax, [ebp - 0x124]
push eax
call sub.kernel32.dll_LoadLibraryExA
mov dword [0x571d18], eax
mov eax, ebx
cmp dword [0x571d18], 0
jne 0x559275
cmp byte [eax], 0
jne 0x55904d
jmp 0x559275
xor ebx, ebx
push str.kernel32.dll
call sub.kernel32.dll_GetModuleHandleA
test eax, eax
je 0x5590c3
push str.GetThreadPreferredUILanguages
push eax
call sub.kernel32.dll_GetProcAddress_1
mov ebx, eax
test ebx, ebx
je 0x559163
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 0x559202
mov eax, dword [ebp - 0x10]
add eax, eax
push eax
call fcn.0055fe8d
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 0x559202
jmp 0x559146
push dword [ebp - 0xc]
push ebx
push esi
call fcn.0052cc88
add esp, 0xc
push 2
push 0
lea eax, [ebp - 0x124]
push eax
call sub.kernel32.dll_LoadLibraryExA
mov dword [0x571d18], eax
push ebx
call fcn.0052e5d4
pop ecx
inc eax
add eax, eax
add ebx, eax
cmp word [ebx], 0
je 0x559155
cmp dword [0x571d18], 0
je 0x559118
push dword [ebp - 0x18]
call fcn.0055fe9f
pop ecx
jmp 0x559202
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 fcn.0052bde0
add esp, 0xc
push 2
push 0
lea eax, [ebp - 0x124]
push eax
call sub.kernel32.dll_LoadLibraryExA
mov dword [0x571d18], eax
cmp dword [0x571d18], 0
jne 0x559202
mov byte [ebx], 0
push dword [ebp - 0xc]
lea edx, [ebp - 0x280]
push edx
push esi
call fcn.0052bde0
add esp, 0xc
push 2
push 0
lea eax, [ebp - 0x124]
push eax
call sub.kernel32.dll_LoadLibraryExA
mov dword [0x571d18], eax
cmp dword [0x571d18], 0
jne 0x559275
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 fcn.0052bde0
add esp, 0xc
push 2
push 0
lea eax, [ebp - 0x124]
push eax
call sub.kernel32.dll_LoadLibraryExA
mov dword [0x571d18], eax
cmp dword [0x571d18], 0
jne 0x559275
mov byte [ebp - 0x1e], 0
push dword [ebp - 0xc]
lea edx, [ebp - 0x20]
push edx
push esi
call fcn.0052bde0
add esp, 0xc
push 2
push 0
lea ecx, [ebp - 0x124]
push ecx
call sub.kernel32.dll_LoadLibraryExA
mov dword [0x571d18], eax
test edi, edi
je 0x559280
push edi
call fcn.0055fe9f
pop ecx
cmp dword [0x571d18], 0
jne 0x559293
mov eax, dword [0x571d14]
mov dword [0x571d18], eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret