Function at 0x1003f330
Capabilities:
Get geographical location

Disassembly:
sub esp, 0x7c
mov ecx, 0x100651a4
push ebx
push ebp
push esi
push edi
mov ebx, dword [esp + 0x90]
mov ebp, dword [esp + 0x98]
mov esi, dword [esp + 0x94]
push ecx
push ebx
call fcn.10040a80
add esp, 8
test eax, eax
jne 0x1003f3a1
test esi, esi
jne 0x1003f36a
mov esi, 0x100651a4
jmp 0x1003f378
push 0x100651a4
push esi
call fcn.1000d06c
add esp, 8
test ebp, ebp
je 0x1003f7c3
xor eax, eax
mov word [ebp + 4], ax
mov word [ebp + 6], ax
mov word [ebp + 0xc], ax
mov word [ebp + 0xe], ax
mov dword [ebp], eax
mov dword [ebp + 8], eax
mov word [ebp + 0x10], ax
jmp 0x1003f7c3
push 0x46
push 0
lea edx, [esp + 0x30]
push edx
call fcn.1000cfc4
mov byte [esp + 0x7a], 0x2f
add esp, 0xc
push 0x100651a8
push ebx
call fcn.10040d48
add esp, 8
mov edi, eax
test eax, eax
jne 0x1003f3d3
mov cl, byte [ebx + edi]
inc ebx
mov byte [esp + 0x6e], cl
cmp byte [esp + 0x6e], 0
je 0x1003f476
push 0x100651a8
push ebx
call fcn.10040d48
mov edi, eax
add esp, 8
movsx edx, byte [esp + 0x6e]
cmp edx, 0x2f
je 0x1003f407
cmp edx, 0x5f
je 0x1003f426
cmp edx, 0x2e
je 0x1003f445
jmp 0x1003f738
cmp edi, 0x20
jae 0x1003f410
mov ecx, edi
jmp 0x1003f415
mov ecx, 0x1f
push ecx
push ebx
lea edx, [esp + 0x30]
push edx
call fcn.1003fba0
add esp, 0xc
jmp 0x1003f462
cmp edi, 0x20
jae 0x1003f42f
mov ecx, edi
jmp 0x1003f434
mov ecx, 0x1f
push ecx
push ebx
lea edx, [esp + 0x50]
push edx
call fcn.1003fba0
add esp, 0xc
jmp 0x1003f462
cmp edi, 6
jae 0x1003f44e
mov ecx, edi
jmp 0x1003f453
mov ecx, 5
push ecx
push ebx
lea edx, [esp + 0x70]
push edx
call fcn.1003fba0
add esp, 0xc
mov cl, byte [ebx + edi]
lea edx, [edi + 1]
add ebx, edx
mov byte [esp + 0x6e], cl
test cl, cl
jne 0x1003f3de
xor eax, eax
mov word [esp + 0x18], ax
mov word [esp + 0x1a], ax
cmp byte [esp + 0x28], al
je 0x1003f4a3
lea ebx, [esp + 0x28]
push ebx
call fcn.1003f21c
mov word [esp + 0x1c], ax
add esp, 4
test ax, ax
je 0x1003f738
xor edi, edi
mov word [esp + 0x20], di
mov word [esp + 0x22], di
cmp byte [esp + 0x48], 0
je 0x1003f4d1
lea ecx, [esp + 0x48]
push ecx
call fcn.1003f28c
mov word [esp + 0x24], ax
add esp, 4
test ax, ax
je 0x1003f738
mov dword [esp + 0x74], edi
mov word [esp + 0x24], di
cmp byte [esp + 0x68], 0
je 0x1003f532
push 0x100651ac
lea edx, [esp + 0x6c]
push edx
call fcn.10040a80
add esp, 8
test eax, eax
jne 0x1003f501
mov dword [esp + 0x74], 1
jmp 0x1003f532
push 0x100651b0
lea eax, [esp + 0x6c]
push eax
call fcn.10040a80
add esp, 8
test eax, eax
je 0x1003f532
lea ebx, [esp + 0x68]
push ebx
call fcn.10040af4
mov word [esp + 0x28], ax
add esp, 4
test ax, ax
je 0x1003f738
mov di, word [esp + 0x18]
and edi, 0xffff
test edi, edi
je 0x1003f543
jmp 0x1003f594
mov cx, word [esp + 0x20]
and ecx, 0xffff
test ecx, ecx
je 0x1003f554
jmp 0x1003f569
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLCID]
mov word [esp + 0x20], ax
mov word [esp + 0x18], ax
jmp 0x1003f643
mov dx, word [esp + 0x20]
and edx, 0xffff
push edx
call fcn.1003f2d0
mov ax, word [eax*8 + 0x10065056]
mov word [esp + 0x24], ax
mov word [esp + 0x1c], ax
add esp, 4
jmp 0x1003f643
mov bx, word [esp + 0x20]
and ebx, 0xffff
test ebx, ebx
je 0x1003f5a5
jmp 0x1003f5b4
mov di, word [esp + 0x18]
mov word [esp + 0x20], di
jmp 0x1003f643
mov cx, word [esp + 0x18]
and cx, 0x3ff
mov dx, word [esp + 0x20]
mov word [esp + 0x78], cx
xor ebx, ebx
and edx, 0xffff
push edx
call fcn.1003f2d0
lea edi, [eax*8 + 0x10065056]
mov dword [esp + 0x74], eax
add esp, 4
mov dx, word [esp + 0x78]
mov ax, word [edi + ebx*2]
test ax, ax
je 0x1003f61a
mov ecx, eax
and cx, 0x3ff
cmp cx, dx
jne 0x1003f61a
mov dx, word [esp + 0x18]
and edx, 0xffff
sar edx, 0xa
jne 0x1003f613
mov word [esp + 0x18], ax
mov word [esp + 0x20], ax
jmp 0x1003f620
inc ebx
cmp ebx, 3
jb 0x1003f5e9
mov ecx, 3
cmp ebx, ecx
jl 0x1003f643
mov eax, dword [esp + 0x70]
mov bx, word [eax*8 + 0x10065056]
mov word [esp + 0x20], bx
test bx, bx
je 0x1003f738
mov di, word [esp + 0x1a]
mov dx, word [esp + 0x18]
mov cx, word [esp + 0x22]
mov ax, word [esp + 0x20]
and edi, 0xffff
shl edi, 0x10
and edx, 0xffff
or edi, edx
and ecx, 0xffff
shl ecx, 0x10
mov dword [esp + 0x14], edi
and eax, 0xffff
or ecx, eax
mov dword [esp + 0x1c], ecx
cmp word [esp + 0x24], 0
jne 0x1003f6d1
cmp dword [esp + 0x74], 0
je 0x1003f696
mov ebx, 0xb
jmp 0x1003f69b
mov ebx, 0x1004
push 0x10
lea edx, [esp + 0x80]
push edx
push ebx
push dword [esp + 0x28]
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoA]
test eax, eax
je 0x1003f738
push 0xa
push 0
lea ebx, [esp + 0x84]
push ebx
call fcn.10040858
mov word [esp + 0x30], ax
add esp, 0xc
mov di, word [esp + 0x24]
and edi, 0xffff
push edi
call dword [sym.imp.KERNEL32.dll_IsValidCodePage]
test eax, eax
je 0x1003f738
push 0x20
lea ecx, [esp + 0x2c]
push ecx
push 0x1001
push dword [esp + 0x20]
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoA]
test eax, eax
je 0x1003f738
push 0x20
lea eax, [esp + 0x4c]
push eax
push 0x1002
push dword [esp + 0x28]
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoA]
test eax, eax
je 0x1003f738
push 0xa
lea edx, [esp + 0x6c]
mov bx, word [esp + 0x28]
push edx
and ebx, 0xffff
push ebx
call fcn.10040850
add esp, 0xc
jmp 0x1003f742
pop edi
xor eax, eax
pop esi
pop ebp
pop ebx
add esp, 0x7c
ret
lea ecx, [esp + 0x68]
push ecx
push 0x100651b8
lea edx, [esp + 0x50]
push edx
push 0x100651b4
lea ecx, [esp + 0x38]
push ecx
push 0
push esi
call fcn.1003f2f0
add esp, 0xc
push eax
push esi
call fcn.1003f2f0
add esp, 0xc
push eax
push esi
call fcn.1003f2f0
add esp, 0xc
push eax
push esi
call fcn.1003f2f0
add esp, 0xc
push eax
push esi
call fcn.1003f2f0
add esp, 0xc
mov edi, eax
test esi, esi
jne 0x1003f7a6
lea edx, [edi + 1]
push edx
call fcn.1000f138
add esp, 4
mov esi, eax
test eax, eax
jne 0x1003f742
test ebp, ebp
je 0x1003f7c3
mov dword [esp + 0x94], esi
lea esi, [esp + 0x14]
mov edi, ebp
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x94]
pop edi
mov eax, esi
pop esi
pop ebp
pop ebx
add esp, 0x7c
ret