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

Disassembly:
mov edi, edi
push ebp
lea ebp, [esp - 0x1ec]
sub esp, 0x26c
mov eax, dword [0x1023904c]
xor eax, ebp
mov dword [ebp + 0x1e8], eax
push ebx
push esi
mov esi, ecx
mov eax, dword [esi + 0x34]
xor ebx, ebx
or ecx, 0xffffffff
push edi
mov edi, dword [sym.imp.msvcr100.dll_atoi]
mov dword [ebp - 0x6c], ebx
mov dword [ebp - 0x7c], ebx
mov dword [ebp - 0x80], ebx
mov dword [ebp - 0x74], ecx
mov dword [ebp - 0x78], ecx
test eax, eax
je 0x10188b89
cmp byte [eax], 0x23
jne 0x10188b89
push eax
call dword [sym.imp.USER32.dll_CharNextA]
push eax
call edi
pop ecx
mov dword [ebp - 0x74], eax
mov dword [ebp - 0x7c], 1
mov eax, dword [esi + 0x30]
test eax, eax
je 0x10188baa
cmp byte [eax], 0x23
jne 0x10188baa
push eax
call dword [sym.imp.USER32.dll_CharNextA]
push eax
call edi
pop ecx
mov dword [ebp - 0x78], eax
mov dword [ebp - 0x80], 1
cmp dword [esi + 0x3c], ebx
je 0x10189070
cmp dword [esi + 0x38], ebx
jne 0x10188e05
xor eax, eax
push 0x102
mov word [ebp - 0x58], ax
lea eax, [ebp - 0x56]
push ebx
push eax
mov dword [ebp + 0x1e0], ebx
call sub.msvcr100.dll_memset
xor eax, eax
push 0x102
mov word [ebp + 0xac], ax
lea eax, [ebp + 0xae]
push ebx
push eax
call sub.msvcr100.dll_memset
add esp, 0x18
xor eax, eax
push 9
mov word [ebp + 0x1b0], ax
pop ecx
lea edi, [ebp + 0x1b2]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov edi, dword [esi + 0x2c]
test edi, 0xffff0000
je 0x10188c3b
mov ecx, edi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10188c1b
sub ecx, edx
lea eax, [ecx*2 + 2]
call fcn.1000c5c0
mov eax, esp
push edi
push eax
call fcn.1001ce5b
mov edi, eax
lea eax, [ebp - 0x68]
push eax
push edi
call fcn.1015692e
test eax, eax
js 0x10189052
push 0x28
lea eax, [ebp + 0x1b0]
push eax
lea eax, [ebp - 0x68]
push eax
call fcn.1015692e
push 0x101890b0
mov edi, 0x104
lea eax, [ebp - 0x58]
push edi
push eax
call dword [sym.imp.msvcr100.dll_strcpy_s]
lea eax, [ebp + 0x1b0]
push eax
lea eax, [ebp - 0x58]
push edi
push eax
call dword [sym.imp.msvcr100.dll_strcat_s]
add esp, 0x18
lea eax, [ebp + 0x1e0]
push eax
lea eax, [ebp - 0x58]
push eax
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyA]
push eax
call fcn.100bb880
mov ebx, eax
mov dword [ebp - 0x6c], ebx
test ebx, ebx
js 0x10188dfa
lea eax, [ebp - 0x70]
push eax
lea eax, [ebp + 0xac]
push eax
push 0x10189074
push dword [ebp + 0x1e0]
mov dword [ebp - 0x70], edi
mov edi, dword [sym.imp.ADVAPI32.dll_RegQueryValueA]
call edi
push eax
call fcn.100bb880
mov ebx, eax
mov dword [ebp - 0x6c], ebx
test ebx, ebx
jns 0x10188d6c
lea eax, [ebp - 0x70]
push eax
lea eax, [ebp + 0xac]
push eax
push 0x10189090
push dword [ebp + 0x1e0]
mov dword [ebp - 0x70], 0x104
call edi
push eax
call fcn.100bb880
mov ebx, eax
mov dword [ebp - 0x6c], ebx
test ebx, ebx
jns 0x10188d6c
lea eax, [ebp - 0x70]
push eax
lea eax, [ebp + 0xac]
push eax
push 0x10189084
push dword [ebp + 0x1e0]
mov dword [ebp - 0x70], 0x104
call edi
push eax
call fcn.100bb880
mov ebx, eax
mov dword [ebp - 0x6c], ebx
test ebx, ebx
jns 0x10188d6c
lea eax, [ebp - 0x70]
push eax
lea eax, [ebp + 0xac]
push eax
push 0x101890a0
push dword [ebp + 0x1e0]
mov dword [ebp - 0x70], 0x104
call edi
push eax
call fcn.100bb880
mov ebx, eax
mov dword [ebp - 0x6c], eax
push dword [ebp + 0x1e0]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test ebx, ebx
js 0x10188dfa
mov edi, 0x104
push edi
call dword [sym.imp.msvcr100.dll_malloc]
pop ecx
lea ecx, [ebp + 0xac]
push ecx
push eax
mov dword [esi + 0x40], eax
call dword [sym.imp.kernel32.dll_lstrcpyA]
lea eax, [ebp + 0xac]
push 0x5c
push eax
call dword [sym.imp.msvcr100.dll_strrchr]
pop ecx
pop ecx
test eax, eax
je 0x10188dfa
lea ecx, [ebp + 0xac]
sub eax, ecx
cmp eax, edi
jae 0x10188df5
xor ebx, ebx
mov byte [ebp + eax + 0xac], bl
cmp dword [esi + 0x38], ebx
je 0x10188dd6
push dword [esi + 0x38]
call dword [sym.imp.msvcr100.dll_free]
pop ecx
mov dword [esi + 0x38], ebx
push edi
call dword [sym.imp.msvcr100.dll_malloc]
pop ecx
mov dword [esi + 0x38], eax
test eax, eax
je 0x10188dfc
lea ecx, [ebp + 0xac]
push ecx
push eax
call dword [sym.imp.kernel32.dll_lstrcpyA]
jmp 0x10188dfc
call fcn.1015692e
xor ebx, ebx
cmp dword [esi + 0x38], ebx
je 0x1018904f
cmp dword [esi + 0x3c], ebx
je 0x1018904f
xor eax, eax
push 0x102
push eax
mov word [ebp + 0xac], ax
lea eax, [ebp + 0xae]
push eax
mov ebx, 0x101890c8
call sub.msvcr100.dll_memset
mov ecx, dword [esi + 0x5c]
xor eax, eax
mov word [ebp + 0x1e0], ax
add esp, 0xc
lea edi, [ebp + 0x1e2]
stosw word es:[edi], ax
push 0xa
stosb byte es:[edi], al
push 5
lea eax, [ebp + 0x1e0]
push eax
call fcn.1018a1d2
push eax
call dword [sym.imp.msvcr100.dll__ultoa_s]
push 0x5c
push dword [esi + 0x38]
call dword [sym.imp.msvcr100.dll_strrchr]
add esp, 0x18
test eax, eax
je 0x10188e80
push eax
call dword [sym.imp.USER32.dll_CharNextA]
cmp byte [eax], 0
jne 0x10188e80
mov ebx, 0x101890e0
push dword [esi + 0x3c]
lea eax, [ebp + 0x1e0]
push eax
push 0x101890d4
push dword [esi + 0x38]
lea eax, [ebp + 0xac]
push ebx
mov ebx, dword [sym.imp.USER32.dll_wsprintfA]
push eax
call ebx
add esp, 0x18
push 2
push 0
lea eax, [ebp + 0xac]
push eax
call dword [sym.imp.kernel32.dll_LoadLibraryExA]
mov edi, eax
test edi, edi
jne 0x10188f80
push dword [esi + 0x3c]
lea eax, [ebp + 0xac]
push dword [esi + 0x38]
push 0x1014cbb8
push eax
call ebx
add esp, 0x10
push 2
push edi
lea eax, [ebp + 0xac]
push eax
call dword [sym.imp.kernel32.dll_LoadLibraryExA]
mov edi, eax
test edi, edi
jne 0x10188f80
push 0x2e
push dword [esi + 0x3c]
call dword [sym.imp.msvcr100.dll_strrchr]
pop ecx
pop ecx
test eax, eax
jne 0x10188f51
push 5
lea eax, [ebp + 0x1d8]
push eax
push 3
push dword [0x1023a260]
call dword [sym.imp.kernel32.dll_GetLocaleInfoA]
test eax, eax
je 0x10188f51
lea eax, [ebp + 0x1d8]
push eax
push dword [esi + 0x3c]
lea eax, [ebp + 0xac]
push dword [esi + 0x38]
push 0x101890ec
push eax
call ebx
add esp, 0x14
push 2
push edi
lea eax, [ebp + 0xac]
push eax
call dword [sym.imp.kernel32.dll_LoadLibraryExA]
mov edi, eax
test edi, edi
jne 0x10188f80
push dword [esi + 0x40]
lea eax, [ebp + 0xac]
push 0x1014cef0
push eax
call ebx
add esp, 0xc
push 2
push 0
lea eax, [ebp + 0xac]
push eax
call dword [sym.imp.kernel32.dll_LoadLibraryExA]
mov edi, eax
test edi, edi
je 0x1018904f
cmp dword [ebp - 0x80], 0
je 0x10188fe4
push 0x800
call dword [sym.imp.msvcr100.dll_malloc]
mov ebx, eax
pop ecx
test ebx, ebx
je 0x10188fe4
push 0x1f4
push ebx
push dword [ebp - 0x78]
push edi
call dword [sym.imp.USER32.dll_LoadStringA]
mov dword [ebp - 0x78], eax
test eax, eax
je 0x10188fdc
cmp dword [esi + 0x30], 0
je 0x10188fc2
push dword [esi + 0x30]
call dword [sym.imp.msvcr100.dll_free]
mov eax, dword [ebp - 0x78]
pop ecx
add eax, 2
push eax
call dword [sym.imp.msvcr100.dll_malloc]
pop ecx
mov dword [esi + 0x30], eax
test eax, eax
je 0x10188fdc
push ebx
push eax
call dword [sym.imp.kernel32.dll_lstrcpyA]
push ebx
call dword [sym.imp.msvcr100.dll_free]
pop ecx
cmp dword [ebp - 0x7c], 0
je 0x10189048
push 0x800
call dword [sym.imp.msvcr100.dll_malloc]
mov ebx, eax
pop ecx
test ebx, ebx
je 0x10189048
push 0x1f4
push ebx
push dword [ebp - 0x74]
push edi
call dword [sym.imp.USER32.dll_LoadStringA]
mov dword [ebp - 0x74], eax
test eax, eax
je 0x10189040
cmp dword [esi + 0x34], 0
je 0x10189026
push dword [esi + 0x34]
call dword [sym.imp.msvcr100.dll_free]
mov eax, dword [ebp - 0x74]
pop ecx
add eax, 2
push eax
call dword [sym.imp.msvcr100.dll_malloc]
pop ecx
mov dword [esi + 0x34], eax
test eax, eax
je 0x10189040
push ebx
push eax
call dword [sym.imp.kernel32.dll_lstrcpyA]
push ebx
call dword [sym.imp.msvcr100.dll_free]
pop ecx
push edi
call dword [sym.imp.kernel32.dll_FreeLibrary]
mov eax, dword [ebp - 0x6c]
lea esp, [ebp - 0x8c]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x1e8]
xor ecx, ebp
call fcn.10001e57
add ebp, 0x1ec
leave
ret
mov eax, ebx
jmp 0x10189052