Function at 0x100036e0
Capabilities:
Get geographical location

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x44
mov ebx, dword [ebp + 8]
mov dword [esp + 4], 0x30
mov dword [esp], 1
call dword [sym.imp.ucrtbase.dll_calloc]
mov dword [ebp - 0x20], eax
test eax, eax
je 0x100041d4
mov edi, eax
mov dword [esp], ebx
call dword [sym.imp.ucrtbase.dll__wcsdup]
test eax, eax
mov dword [edi + 8], eax
mov eax, dword [ebp - 0x20]
je 0x10004422
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0x100147fc
mov dword [esp + 8], 1
mov dword [esp + 4], 0
mov dword [esp], 0x100147ec
call dword [sym.imp.ole32.dll_CoCreateInstance]
sub esp, 0x14
test eax, eax
js 0x10004280
mov edi, dword [ebp - 0x20]
mov eax, dword [edi]
lea ecx, [edi + 4]
mov edx, dword [eax]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0x20
mov dword [esp + 8], 0
mov dword [esp + 4], ebx
mov dword [esp], eax
call dword [edx + 0x1c]
sub esp, 0x1c
test eax, eax
js 0x100042c0
mov esi, dword [ebp - 0x20]
mov eax, dword [esi + 4]
lea ecx, [esi + 0xc]
mov edx, dword [eax]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], str.STRINGS
mov dword [esp], eax
call dword [edx + 0x10]
sub esp, 0x18
test eax, eax
js 0x10003f20
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x18], 0xdeadbeef
lea ecx, [ebp - 0x1c]
mov eax, dword [eax + 4]
mov edx, dword [eax]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], str.SYSTEM
mov dword [esp], eax
call dword [edx + 0x10]
sub esp, 0x18
test eax, eax
js 0x100041c0
mov eax, dword [ebp - 0x1c]
lea ecx, [ebp - 0x18]
lea edi, [ebp - 0x14]
mov edx, dword [eax]
mov dword [esp + 0xc], edi
mov dword [esp + 8], 4
mov dword [esp + 4], ecx
mov dword [esp], eax
call dword [edx + 0xc]
sub esp, 0x10
test byte [0x10011018], 8
jne 0x100041f0
mov eax, dword [sym.imp.ucrtbase.dll_malloc]
mov dword [esp], 0x20
mov dword [ebp - 0x28], eax
call eax
mov edi, eax
test eax, eax
je 0x1000440f
mov dword [ebp - 0x24], 0x20
lea esi, cs:[esi]
nop
mov eax, dword [ebp - 0x1c]
lea esi, [ebp - 0x14]
mov edx, dword [eax]
mov dword [esp + 0xc], esi
lea esi, [ebp - 0x10]
mov dword [esp + 8], 4
mov dword [esp + 4], esi
mov dword [esp], eax
call dword [edx + 0xc]
sub esp, 0x10
test eax, eax
jne 0x10003ef0
movzx ebx, word [ebp - 0xe]
cmp dword [ebp - 0x24], ebx
jb 0x10003ed0
mov eax, dword [ebp - 0x1c]
lea ecx, [ebp - 0x14]
mov edx, dword [eax]
mov dword [esp + 0xc], ecx
mov dword [esp + 8], ebx
mov dword [esp + 4], edi
mov dword [esp], eax
call dword [edx + 0xc]
sub esp, 0x10
test eax, eax
jne 0x10003ef0
movzx eax, byte [0x10011018]
movzx edx, word [ebp - 0x10]
and eax, 8
cmp dx, 0xf
ja case.0x100038f5.1
movzx ecx, dx
jmp dword [ecx*4 + 0x100132cc]
test al, al
je 0x10003880
movzx eax, word [ebp - 0xe]
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], str.unhandled_code__x__size__x_n
mov dword [esp + 8], str.ReadChmSystem
mov dword [esp + 4], 0x10011018
mov dword [esp + 0x14], eax
mov dword [esp], 3
call fcn.10001570
jmp 0x10003880
test al, al
je 0x10003880
mov eax, dword [edi]
mov dword [esp + 0xc], str.Check_sum:__lx_n
mov dword [esp + 8], str.ReadChmSystem
mov dword [esp + 4], 0x10011018
mov dword [esp], 3
mov dword [esp + 0x10], eax
call fcn.10001570
jmp 0x10003880
test al, al
je 0x10003880
mov eax, dword [edi]
mov dword [esp + 0xc], str.Number_of_info_types:__ld_n
mov dword [esp + 8], str.ReadChmSystem
mov dword [esp + 4], 0x10011018
mov dword [esp], 3
mov dword [esp + 0x10], eax
call fcn.10001570
jmp 0x10003880
test al, al
je 0x10003880
mov eax, dword [edi]
mov dword [esp + 0xc], str.Time_is__08lx_n
mov dword [esp + 8], str.ReadChmSystem
mov dword [esp + 4], 0x10011018
mov dword [esp], 3
mov dword [esp + 0x10], eax
call fcn.10001570
jmp 0x10003880
test al, al
je 0x10003880
test edi, edi
je 0x100043e5
mov eax, edi
shr eax, 0x10
test eax, eax
je 0x10004339
movzx ebx, word [ebp - 0xe]
mov dword [esp], edi
mov dword [esp + 4], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrA]
mov edx, eax
sub esp, 8
mov eax, 0x1001300d
test edx, edx
jne 0x10003a45
mov edx, ebx
mov eax, edi
call fcn.100010c0
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.Version_is__s_n
mov dword [esp + 8], str.ReadChmSystem
mov dword [esp + 4], 0x10011018
mov dword [esp], 3
call fcn.10001570
jmp 0x10003880
test al, al
jne 0x10003fd0
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_free]
movzx esi, word [ebp - 0xe]
test edi, edi
je 0x1000438d
test esi, esi
je 0x10003abd
mov dword [esp + 8], esi
mov dword [esp + 4], 0
mov dword [esp], edi
call dword [sym.imp.ucrtbase.dll_memchr]
mov edx, eax
sub edx, edi
test eax, eax
cmovne esi, edx
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], esi
mov dword [esp + 8], edi
mov dword [esp + 4], 0
mov dword [esp], 0
call dword [sym.imp.kernel32.dll_MultiByteToWideChar]
lea ecx, [eax + 1]
sub esp, 0x18
lea edx, [ecx + ecx]
mov dword [ebp - 0x30], ecx
mov dword [esp], edx
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x2c], edx
call eax
mov ecx, dword [ebp - 0x30]
mov dword [esp + 0xc], esi
mov ebx, eax
mov dword [esp + 0x10], eax
mov dword [esp + 8], edi
mov dword [esp + 4], 0
mov dword [esp + 0x14], ecx
mov dword [esp], 0
call dword [sym.imp.kernel32.dll_MultiByteToWideChar]
mov edx, dword [ebp - 0x2c]
xor eax, eax
sub esp, 0x18
mov word [ebx + edx - 2], ax
mov eax, dword [ebp - 0x20]
mov dword [eax + 0x18], ebx
jmp 0x10003880
movzx ebx, word [ebp - 0xe]
mov ecx, ebx
test al, al
jne 0x10003f60
test edi, edi
je 0x100043c0
test ebx, ebx
je 0x10003b82
mov dword [esp + 8], ebx
mov dword [esp + 4], 0
mov dword [esp], edi
call dword [sym.imp.ucrtbase.dll_memchr]
mov edx, eax
sub edx, edi
test eax, eax
cmovne ebx, edx
mov ecx, ebx
mov edx, dword [sym.imp.kernel32.dll_MultiByteToWideChar]
mov dword [esp + 0xc], ecx
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [ebp - 0x34], ecx
mov dword [esp + 8], edi
mov dword [esp + 4], 0
mov dword [esp], 0
mov dword [ebp - 0x30], edx
call edx
add eax, 1
sub esp, 0x18
lea esi, [eax + eax]
mov dword [ebp - 0x2c], eax
mov dword [esp], esi
mov ecx, dword [ebp - 0x28]
call ecx
mov ebx, eax
mov eax, dword [ebp - 0x2c]
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], eax
mov ecx, dword [ebp - 0x34]
mov dword [esp + 8], edi
mov dword [esp + 4], 0
mov dword [esp], 0
mov dword [esp + 0xc], ecx
mov edx, dword [ebp - 0x30]
call edx
xor edx, edx
sub esp, 0x18
mov word [ebx + esi - 2], dx
mov eax, dword [ebp - 0x20]
mov dword [eax + 0x1c], ebx
jmp 0x10003880
test al, al
jne 0x10004190
mov dword [esp + 0xc], 2
mov ebx, dword [ebp - 0x20]
mov dword [esp + 4], 0x20001004
lea eax, [ebx + 0x2c]
mov dword [esp + 8], eax
mov eax, dword [edi]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_GetLocaleInfoW]
sub esp, 0x10
test eax, eax
jne 0x10003880
mov dword [ebx + 0x2c], 0
jmp 0x10003880
test al, al
jne 0x10004120
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x24]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_free]
movzx esi, word [ebp - 0xe]
test edi, edi
je 0x1000437f
test esi, esi
je 0x10003c9d
mov dword [esp + 8], esi
mov dword [esp + 4], 0
mov dword [esp], edi
call dword [sym.imp.ucrtbase.dll_memchr]
mov edx, eax
sub edx, edi
test eax, eax
cmovne esi, edx
mov ecx, dword [sym.imp.kernel32.dll_MultiByteToWideChar]
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], esi
mov dword [esp + 8], edi
mov dword [esp + 4], 0
mov dword [esp], 0
mov dword [ebp - 0x34], ecx
call ecx
add eax, 1
sub esp, 0x18
lea edx, [eax + eax]
mov dword [ebp - 0x2c], eax
mov dword [esp], edx
mov ecx, dword [ebp - 0x28]
mov dword [ebp - 0x30], edx
call ecx
mov ebx, eax
mov eax, dword [ebp - 0x2c]
mov dword [esp + 0xc], esi
mov dword [esp + 0x10], ebx
mov dword [esp + 8], edi
mov dword [esp + 4], 0
mov dword [esp + 0x14], eax
mov dword [esp], 0
mov ecx, dword [ebp - 0x34]
call ecx
mov edx, dword [ebp - 0x30]
xor ecx, ecx
sub esp, 0x18
mov word [ebx + edx - 2], cx
mov eax, dword [ebp - 0x20]
mov dword [eax + 0x24], ebx
jmp 0x10003880
test al, al
jne 0x100040b0
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x20]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_free]
movzx esi, word [ebp - 0xe]
test edi, edi
je 0x10004378
test esi, esi
je 0x10003d75
mov dword [esp + 8], esi
mov dword [esp + 4], 0
mov dword [esp], edi
call dword [sym.imp.ucrtbase.dll_memchr]
mov edx, eax
sub edx, edi
test eax, eax
cmovne esi, edx
mov ecx, dword [sym.imp.kernel32.dll_MultiByteToWideChar]
mov dword [esp + 0xc], esi
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 8], edi
mov dword [esp + 4], 0
mov dword [esp], 0
mov dword [ebp - 0x34], ecx
call ecx
add eax, 1
sub esp, 0x18
lea edx, [eax + eax]
mov dword [ebp - 0x2c], eax
mov dword [esp], edx
mov ecx, dword [ebp - 0x28]
mov dword [ebp - 0x30], edx
call ecx
mov ebx, eax
mov eax, dword [ebp - 0x2c]
mov dword [esp + 0xc], esi
xor esi, esi
mov dword [esp + 0x10], ebx
mov dword [esp + 8], edi
mov dword [esp + 4], 0
mov dword [esp + 0x14], eax
mov dword [esp], 0
mov ecx, dword [ebp - 0x34]
call ecx
mov edx, dword [ebp - 0x30]
sub esp, 0x18
mov word [ebx + edx - 2], si
mov eax, dword [ebp - 0x20]
mov dword [eax + 0x20], ebx
jmp 0x10003880
test al, al
jne 0x10004040
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x28]
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_free]
movzx esi, word [ebp - 0xe]
test edi, edi
je 0x10004386
test esi, esi
je 0x10003e45
mov dword [esp + 8], esi
mov dword [esp + 4], 0
mov dword [esp], edi
call dword [sym.imp.ucrtbase.dll_memchr]
mov edx, eax
sub edx, edi
test eax, eax
cmovne esi, edx
mov ecx, dword [sym.imp.kernel32.dll_MultiByteToWideChar]
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], esi
mov dword [esp + 8], edi
mov dword [esp + 4], 0
mov dword [esp], 0
mov dword [ebp - 0x34], ecx
call ecx
add eax, 1
sub esp, 0x18
lea edx, [eax + eax]
mov dword [ebp - 0x2c], eax
mov dword [esp], edx
mov ecx, dword [ebp - 0x28]
mov dword [ebp - 0x30], edx
call ecx
mov ebx, eax
mov eax, dword [ebp - 0x2c]
mov dword [esp + 0xc], esi
mov dword [esp + 0x10], ebx
mov dword [esp + 8], edi
mov dword [esp + 4], 0
mov dword [esp + 0x14], eax
mov dword [esp], 0
mov ecx, dword [ebp - 0x34]
call ecx
mov edx, dword [ebp - 0x30]
xor eax, eax
sub esp, 0x18
mov word [ebx + edx - 2], ax
mov eax, dword [ebp - 0x20]
mov dword [eax + 0x28], ebx
jmp 0x10003880
mov dword [esp + 4], ebx
mov dword [esp], edi
call dword [sym.imp.ucrtbase.dll_realloc]
test eax, eax
je 0x10004406
mov edi, eax
mov dword [ebp - 0x24], ebx
jmp 0x100038b9
mov ebx, eax
mov dword [esp], edi
call dword [sym.imp.ucrtbase.dll_free]
mov eax, dword [ebp - 0x1c]
mov edx, dword [eax]
mov dword [esp], eax
call dword [edx + 8]
sub esp, 4
test ebx, ebx
js 0x10004248
mov eax, dword [ebp - 0x20]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
test byte [0x10011018], 4
je 0x100037dc
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.Could_not_open_STRINGS_stream:__08lx_n
mov dword [esp + 8], str.OpenCHM
mov dword [esp + 4], 0x10011018
mov dword [esp], 2
call fcn.10001570
jmp 0x100037dc
test edi, edi
je 0x10004394
mov eax, edi
shr eax, 0x10
test eax, eax
je 0x10004324
mov dword [esp + 4], ebx
mov dword [esp], edi
call dword [sym.imp.kernel32.dll_IsBadStringPtrA]
sub esp, 8
test eax, eax
jne 0x100043f9
mov edx, ebx
mov eax, edi
call fcn.100010c0
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.Window_name_is__s_n
mov dword [esp + 8], str.ReadChmSystem
mov dword [esp + 4], 0x10011018
mov dword [esp], 3
call fcn.10001570
movzx ebx, word [ebp - 0xe]
mov ecx, ebx
jmp 0x10003b5e
test edi, edi
je 0x100043ef
mov eax, edi
shr eax, 0x10
test eax, eax
je 0x1000430f
movzx ebx, word [ebp - 0xe]
mov dword [esp], edi
mov dword [esp + 4], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrA]
mov edx, eax
sub esp, 8
mov eax, 0x1001300d
test edx, edx
jne 0x1000400d
mov edx, ebx
mov eax, edi
call fcn.100010c0
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.Compiled_file_is__s_n
mov dword [esp + 8], str.ReadChmSystem
mov dword [esp + 4], 0x10011018
mov dword [esp], 3
call fcn.10001570
jmp 0x10003a80
test edi, edi
je 0x100043db
mov eax, edi
shr eax, 0x10
test eax, eax
je 0x1000434e
movzx ebx, word [ebp - 0xe]
mov dword [esp], edi
mov dword [esp + 4], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrA]
mov edx, eax
sub esp, 8
mov eax, 0x1001300d
test edx, edx
jne 0x1000407d
mov edx, ebx
mov eax, edi
call fcn.100010c0
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.TOC_is__s_n
mov dword [esp + 8], str.ReadChmSystem
mov dword [esp + 4], 0x10011018
mov dword [esp], 3
call fcn.10001570
jmp 0x10003e08
test edi, edi
je 0x100043d1
mov eax, edi
shr eax, 0x10
test eax, eax
je 0x10004363
movzx ebx, word [ebp - 0xe]
mov dword [esp], edi
mov dword [esp + 4], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrA]
mov edx, eax
sub esp, 8
mov eax, 0x1001300d
test edx, edx
jne 0x100040ed
mov edx, ebx
mov eax, edi
call fcn.100010c0
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.Default_topic_is__s_n
mov dword [esp + 8], str.ReadChmSystem
mov dword [esp + 4], 0x10011018
mov dword [esp], 3
call fcn.10001570
jmp 0x10003d38
test edi, edi
je 0x100043c7
mov eax, edi
shr eax, 0x10
test eax, eax
je 0x100042fa
movzx ebx, word [ebp - 0xe]
mov dword [esp], edi
mov dword [esp + 4], ebx
call dword [sym.imp.kernel32.dll_IsBadStringPtrA]
mov edx, eax
sub esp, 8
mov eax, 0x1001300d
test edx, edx
jne 0x1000415d
mov edx, ebx
mov eax, edi
call fcn.100010c0
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.Title_is__s_n
mov dword [esp + 8], str.ReadChmSystem
mov dword [esp + 4], 0x10011018
mov dword [esp], 3
call fcn.10001570
jmp 0x10003c60
mov eax, dword [edi]
mov dword [esp + 0xc], str.Locale_is:__ld_n
mov dword [esp + 8], str.ReadChmSystem
mov dword [esp + 4], 0x10011018
mov dword [esp], 3
mov dword [esp + 0x10], eax
call fcn.10001570
jmp 0x10003c18
test byte [0x10011018], 4
jne 0x10004220
mov eax, dword [ebp - 0x20]
mov dword [esp], eax
call fcn.10003630
mov dword [ebp - 0x20], 0
mov eax, dword [ebp - 0x20]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [ebp - 0x18]
mov dword [esp + 0xc], str.version_is__lx_n
mov dword [esp + 8], str.ReadChmSystem
mov dword [esp + 4], 0x10011018
mov dword [esp], 3
mov dword [esp + 0x10], eax
call fcn.10001570
jmp 0x10003854
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.Could_not_open_SYSTEM_stream:__08lx_n
mov dword [esp + 8], str.ReadChmSystem
mov dword [esp + 4], 0x10011018
mov dword [esp], 2
call fcn.10001570
test byte [0x10011018], 4
je 0x100041c9
mov dword [esp + 0xc], str.Could_not_read_SYSTEM_n
mov dword [esp + 8], str.OpenCHM
mov dword [esp + 4], 0x10011018
mov dword [esp], 2
call fcn.10001570
jmp 0x100041c9
test byte [0x10011018], 4
je 0x100041c9
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.Could_not_create_ITStorage:__08lx_n
mov dword [esp + 8], str.OpenCHM
mov dword [esp + 4], 0x10011018
mov dword [esp], 2
call fcn.10001570
jmp 0x100041c9
test byte [0x10011018], 4
je 0x100041c9
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.Could_not_open_storage:__08lx_n
mov dword [esp + 8], str.OpenCHM
mov dword [esp + 4], 0x10011018
mov dword [esp], 2
call fcn.10001570
jmp 0x100041c9
mov dword [esp + 4], edi
mov dword [esp], section..rdata
call fcn.10001280
jmp 0x1000415d
mov dword [esp + 4], edi
mov dword [esp], section..rdata
call fcn.10001280
jmp 0x1000400d
mov dword [esp + 4], edi
mov dword [esp], section..rdata
call fcn.10001280
jmp 0x10003f96
mov dword [esp + 4], edi
mov dword [esp], section..rdata
call fcn.10001280
jmp 0x10003a45
mov dword [esp + 4], edi
mov dword [esp], section..rdata
call fcn.10001280
jmp 0x1000407d
mov dword [esp + 4], edi
mov dword [esp], section..rdata
call fcn.10001280
jmp 0x100040ed
xor ebx, ebx
jmp 0x10003df4
xor ebx, ebx
jmp 0x10003d1c
xor ebx, ebx
jmp 0x10003ec4
xor ebx, ebx
jmp 0x10003b38
mov dword [esp + 0x10], 0x10013006
mov dword [esp + 0xc], str.Window_name_is__s_n
mov dword [esp + 8], str.ReadChmSystem
mov dword [esp + 4], 0x10011018
mov dword [esp], 3
call fcn.10001570
xor ebx, ebx
jmp 0x10003c01
mov eax, 0x10013006
jmp 0x1000415d
mov eax, 0x10013006
jmp 0x100040ed
mov eax, 0x10013006
jmp 0x1000407d
mov eax, 0x10013006
jmp 0x10003a45
mov eax, 0x10013006
jmp 0x1000400d
mov dword [esp + 0x10], 0x1001300d
jmp 0x10003f9a
mov dword [esp], edi
call dword [sym.imp.ucrtbase.dll_free]
mov eax, dword [ebp - 0x1c]
mov edx, dword [eax]
mov dword [esp], eax
call dword [edx + 8]
sub esp, 4
jmp 0x10004248
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_free]
jmp 0x100041d4