Function at 0x774648
Capabilities:
Get geographical location

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x204
mov edi, dword [esp + 0x21c]
test edi, edi
je 0x77466a
push edi
call fcn.0076ce8c
add esp, 4
mov esi, eax
jmp 0x77466c
xor esi, esi
push dword [0x7c0f4c]
call sub.KERNEL32.DLL_EnterCriticalSection
mov eax, dword [0x7b4b98]
test eax, eax
je 0x774689
xor ebx, ebx
cmp eax, 0x7b4b6c
jne 0x7746b2
xor ebx, ebx
cmp eax, 0x7b4b6c
sete byte [esp]
push 0x2c
push 1
call fcn.0076c92c
add esp, 8
mov dword [0x7b4b98], eax
test eax, eax
je 0x774770
mov cl, byte [esp]
mov bl, cl
mov ecx, dword [eax + 0x24]
test ecx, ecx
je 0x7746ce
push ecx
call fcn.0076c950
add esp, 4
mov eax, dword [0x7b4b98]
mov dword [eax + 0x24], 0
movzx ebp, word [esp + 0x218]
test esi, esi
je 0x774718
cmp byte [esi], 0
je 0x774732
push str.en_US
push edi
call fcn.0076d0fc
add esp, 8
test eax, eax
je 0x77478b
mov dword [esi], 0x554e45
push 0x2e
push edi
call fcn.0076d688
add esp, 8
test eax, eax
je 0x7748bc
lea ecx, [esi + 3]
push eax
push ecx
jmp 0x7748b4
test ebx, ebx
je 0x7747c4
mov ecx, eax
call fcn.00774ca8
push dword [0x7b4b98]
jmp 0x774a45
call sub.KERNEL32.DLL_GetUserDefaultLCID
mov edi, eax
lea ebp, [esp + 0x104]
push 7
push ebp
push 0xb
push edi
call sub.KERNEL32.DLL_GetLocaleInfoA
push ebp
movzx ebp, word [esp + 0x21c]
call fcn.00778124
add esp, 4
mov ecx, dword [0x7b4b98]
mov dword [ecx], eax
mov dword [ecx + 8], 0
jmp 0x774a5e
push 0xe
call sub.KERNEL32.DLL_SetLastError
push esi
call fcn.0076c950
add esp, 4
push dword [0x7c0f4c]
jmp 0x774b7c
push str.en_GB
push edi
call fcn.0076d0fc
add esp, 8
test eax, eax
je 0x77485a
mov dword [esi], 0x474e45
push 0x2e
push edi
call fcn.0076d688
add esp, 8
test eax, eax
je 0x7748bc
lea ecx, [esi + 3]
push eax
push ecx
jmp 0x7748b4
movsx ebx, bp
test bl, 4
jne 0x774808
test bl, 0x10
jne 0x774819
test bl, 0x20
jne 0x77482e
test bl, 1
jne 0x774843
test bl, 2
je 0x7747f0
mov ecx, dword [0x7b4b98]
mov edx, str.LC_CTYPE
call fcn.00775078
call fcn.00776ba8
mov eax, dword [0x7b4b98]
mov esi, dword [eax + 0x24]
push dword [0x7c0f4c]
jmp 0x774abd
mov edx, str.LC_MONETARY
mov ecx, eax
call fcn.00775078
test bl, 0x10
je 0x7747d1
mov ecx, dword [0x7b4b98]
mov edx, str.LC_NUMERIC
call fcn.00775078
test bl, 0x20
je 0x7747d6
mov ecx, dword [0x7b4b98]
mov edx, str.LC_TIME
call fcn.00775078
test bl, 1
je 0x7747db
mov ecx, dword [0x7b4b98]
mov edx, str.LC_COLLATE
call fcn.00775078
test bl, 2
jne 0x7747e0
jmp 0x7747f0
push str.fr_FR
push edi
call fcn.0076d0fc
add esp, 8
test eax, eax
je 0x774888
mov dword [esi], 0x415246
push 0x2e
push edi
call fcn.0076d688
add esp, 8
test eax, eax
je 0x7748bc
lea ecx, [esi + 3]
push eax
push ecx
jmp 0x7748b4
push str.de_DE
push edi
call fcn.0076d0fc
add esp, 8
test eax, eax
je 0x7748bc
mov dword [esi], 0x554544
push 0x2e
push edi
call fcn.0076d688
add esp, 8
test eax, eax
je 0x7748bc
lea ecx, [esi + 3]
push eax
push ecx
call fcn.0076d728
add esp, 8
push 0x7b4947
push edi
call fcn.0076d6d8
add esp, 8
test eax, eax
je 0x774a34
cmp byte [esi], 0x4c
jne 0x774a0e
cmp byte [esi + 1], 0x43
jne 0x774a0e
cmp byte [esi + 2], 0x5f
jne 0x774a0e
push esi
call fcn.0076c950
add esp, 4
push dword [0x7c0f4c]
call sub.KERNEL32.DLL_LeaveCriticalSection
mov eax, dword [0x7b4b98]
mov dword [esp], eax
push dword [0x7c0f4c]
call sub.KERNEL32.DLL_EnterCriticalSection
lea ebp, [esp + 4]
push 0x100
push 0
push ebp
call fcn.0076d60f
add esp, 0xc
xor eax, eax
xor esi, esi
jmp 0x77495c
push ebp
lea eax, [esp + 0x108]
push eax
call fcn.0076d728
add esp, 8
push 0x100
push 0
push ebp
call fcn.0076d60f
add esp, 0xc
xor eax, eax
inc edi
movzx ecx, byte [edi]
cmp cl, 0xa
je 0x774938
cmp cl, 0x3d
je 0x774988
test cl, cl
je 0x774bfc
mov byte [esp + eax + 4], cl
inc eax
inc edi
jmp 0x77495c
push str.LC_CTYPE
push ebp
call fcn.0076d6d8
add esp, 8
test eax, eax
jne 0x77499d
or esi, 2
push str.LC_TIME
push ebp
call fcn.0076d6d8
add esp, 8
test eax, eax
jne 0x7749b2
or esi, 0x20
push str.LC_NUMERIC
push ebp
call fcn.0076d6d8
add esp, 8
test eax, eax
jne 0x7749c7
or esi, 0x10
push str.LC_MONETARY
push ebp
call fcn.0076d6d8
add esp, 8
test eax, eax
jne 0x7749dc
or esi, 4
push str.LC_COLLATE
push ebp
call fcn.0076d6d8
add esp, 8
xor ebx, ebx
test eax, eax
sete bl
or ebx, esi
push 0x100
push 0
push ebp
call fcn.0076d60f
add esp, 0xc
xor eax, eax
inc edi
mov si, bx
jmp 0x77495c
mov ecx, dword [0x7b4b98]
mov dword [ecx + 8], 0
mov edx, esi
call fcn.007751e8
mov edi, eax
test edi, edi
je 0x774b90
mov ecx, dword [0x7b4b98]
jmp 0x774a5e
mov ecx, dword [0x7b4b98]
call fcn.00774ca8
push dword [0x7b4b98]
call fcn.0076c950
add esp, 4
mov dword [0x7b4b98], 0x7b4b6c
xor edi, edi
mov ecx, 0x7b4b6c
mov dword [ecx + 4], edi
push esi
call fcn.0076c950
add esp, 4
mov eax, dword [0x7b4b98]
push 1
push dword [eax + 4]
call sub.KERNEL32.DLL_IsValidLocale
test eax, eax
mov eax, dword [0x7b4b98]
jne 0x774a8c
cmp dword [eax + 8], 0
je 0x774b0c
push dword [eax + 4]
call sub.KERNEL32.DLL_SetThreadLocale
mov ecx, dword [0x7b4b98]
cmp dword [ecx + 8], 0
je 0x774ac7
mov dword [0x7b48f8], 1
call fcn.00776ba8
mov eax, dword [0x7b4b98]
mov esi, dword [eax + 0x24]
push dword [0x7c0f4c]
call sub.KERNEL32.DLL_LeaveCriticalSection
jmp 0x774b83
call fcn.00774ca8
mov ecx, dword [0x7b4b98]
movsx edx, bp
call fcn.007754c8
test eax, eax
je 0x774b45
mov eax, dword [0x7b4b98]
push dword [eax]
call fcn.0077aae8
add esp, 4
test eax, eax
je 0x774bc2
push dword [0x7c0f4c]
call sub.KERNEL32.DLL_LeaveCriticalSection
push 0x20000106
call sub.KERNEL32.DLL_SetLastError
jmp 0x774b81
push 0x20000103
call sub.KERNEL32.DLL_SetLastError
test ebx, ebx
je 0x774b3d
mov ecx, dword [0x7b4b98]
call fcn.00774ca8
push dword [0x7b4b98]
call fcn.0076c950
add esp, 4
mov dword [0x7b4b98], 0x7b4b6c
push dword [0x7c0f4c]
jmp 0x774b7c
push 0x20000102
call sub.KERNEL32.DLL_SetLastError
test ebx, ebx
je 0x774b76
mov ecx, dword [0x7b4b98]
call fcn.00774ca8
push dword [0x7b4b98]
call fcn.0076c950
add esp, 4
mov dword [0x7b4b98], 0x7b4b6c
push dword [0x7c0f4c]
call sub.KERNEL32.DLL_LeaveCriticalSection
xor esi, esi
mov eax, esi
add esp, 0x204
pop esi
pop edi
pop ebx
pop ebp
ret
test ebx, ebx
je 0x774bac
push dword [0x7b4b98]
call fcn.0076c950
add esp, 4
mov dword [0x7b4b98], 0x7b4b6c
push dword [0x7c0f4c]
call sub.KERNEL32.DLL_LeaveCriticalSection
push esi
call fcn.0076c950
add esp, 4
jmp 0x774b81
mov eax, dword [0x7b4b98]
lea ecx, [esp + 4]
push ecx
push dword [eax]
call sub.KERNEL32.DLL_GetCPInfo
test eax, eax
je 0x774af5
mov eax, dword [esp + 4]
mov dword [0x7b48f8], eax
call fcn.00776ba8
mov eax, dword [0x7b4b98]
mov esi, dword [eax + 0x24]
push dword [0x7c0f4c]
jmp 0x774abd
lea edx, [esp + 0x104]
mov edi, dword [esp]
mov ecx, edi
call fcn.007751e8
mov dword [edi + 4], eax
push 1
push eax
call sub.KERNEL32.DLL_IsValidLocale
test eax, eax
jne 0x774c22
cmp dword [edi + 8], 0
je 0x774c79
mov eax, dword [0x7b4b98]
push dword [eax + 4]
call sub.KERNEL32.DLL_SetThreadLocale
mov ecx, dword [0x7b4b98]
call fcn.00774ca8
mov ecx, dword [0x7b4b98]
movsx edx, si
call fcn.007754c8
test eax, eax
je 0x774c64
call fcn.00776ba8
mov eax, dword [0x7b4b98]
mov esi, dword [eax + 0x24]
push dword [0x7c0f4c]
jmp 0x774abd
push 0x20000102
call sub.KERNEL32.DLL_SetLastError
push dword [0x7c0f4c]
jmp 0x774b7c
push 0x20000103
call sub.KERNEL32.DLL_SetLastError
push dword [0x7c0f4c]
jmp 0x774b7c