Function at 0x41fc20
Capabilities:
Get geographical location
Identify system language via api

Disassembly:
sub esp, 0x428
mov eax, dword [0x44f3d8]
xor eax, esp
mov dword [esp + 0x424], eax
mov eax, dword [esp + 0x42c]
test eax, eax
push ebx
push ebp
push esi
push edi
mov dword [esp + 0x1c], 0
mov byte [esp + 0x16], 0
mov byte [esp + 0x17], 0
jne 0x41fcb2
mov esi, dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
call esi
movzx eax, ax
push eax
push str.User_default_LangID:_0x_X
push 0x450638
xor eax, eax
call fcn.0041ee40
mov edi, dword [sym.imp.KERNEL32.dll_GetUserDefaultUILanguage]
add esp, 0xc
call edi
movzx ecx, ax
push ecx
push str.User_default_UI_language:_0x_X
push 0x450638
xor eax, eax
call fcn.0041ee40
add esp, 0xc
call dword [sym.imp.KERNEL32.dll_GetVersion]
movzx eax, ax
cmp ax, 0x105
je 0x41fcae
cmp ax, 0x205
je 0x41fcae
call edi
jmp 0x41fcc2
call esi
jmp 0x41fcc2
push 0x10
lea edx, [esp + 0x20]
push edx
push eax
call fcn.00429942
add esp, 0xc
mov esi, dword [0x451b64]
cmp esi, dword [0x451b68]
movzx ebx, ax
mov dword [esp + 0x18], ebx
jbe 0x41fcdc
call fcn.004281b2
mov eax, 0x451b60
mov ebp, eax
jmp 0x41fcf0
mov edi, dword [0x451b68]
cmp dword [0x451b64], edi
jbe 0x41fd03
call fcn.004281b2
test ebp, ebp
je 0x41fd0f
cmp ebp, 0x451b60
je 0x41fd14
call fcn.004281b2
cmp esi, edi
je 0x41fd81
cmp byte [esp + 0x16], 0
jne 0x4200c1
test ebp, ebp
jne 0x41fd2c
call fcn.004281b2
cmp esi, dword [ebp + 8]
jb 0x41fd36
call fcn.004281b2
cmp word [esi + 0x1c], bx
jne 0x41fd6f
cmp esi, dword [ebp + 8]
jb 0x41fd46
call fcn.004281b2
mov ax, word [esi + 0x1c]
mov word [0x451b70], ax
cmp esi, dword [ebp + 8]
jb 0x41fd5a
call fcn.004281b2
push 0xffffffffffffffff
push 0
mov eax, esi
mov ecx, 0x451b7c
call fcn.00404070
mov byte [esp + 0x16], 1
cmp esi, dword [ebp + 8]
jb 0x41fd79
call fcn.004281b2
add esi, 0x20
jmp 0x41fcf0
cmp byte [esp + 0x16], 0
jne 0x4200c1
cmp bx, 0x403
je 0x41fda5
cmp bx, 0x42d
je 0x41fda5
cmp bx, 0x456
jne 0x41fe6d
mov esi, dword [0x451b64]
cmp esi, dword [0x451b68]
mov ebx, 0xc0a
mov dword [esp + 0x18], ebx
jbe 0x41fdc1
call fcn.004281b2
mov eax, 0x451b60
mov edi, eax
jmp 0x41fdd0
mov ebp, dword [0x451b68]
cmp dword [0x451b64], ebp
jbe 0x41fde3
call fcn.004281b2
test edi, edi
je 0x41fdef
cmp edi, 0x451b60
je 0x41fdf4
call fcn.004281b2
cmp esi, ebp
je 0x41fe62
cmp byte [esp + 0x16], 0
jne 0x4200c1
test edi, edi
jne 0x41fe0c
call fcn.004281b2
cmp esi, dword [edi + 8]
jb 0x41fe16
call fcn.004281b2
cmp word [esi + 0x1c], bx
jne 0x41fe50
cmp esi, dword [edi + 8]
jb 0x41fe26
call fcn.004281b2
mov cx, word [esi + 0x1c]
mov word [0x451b70], cx
cmp esi, dword [edi + 8]
jb 0x41fe3b
call fcn.004281b2
push 0xffffffffffffffff
push 0
mov eax, esi
mov ecx, 0x451b7c
call fcn.00404070
mov byte [esp + 0x16], 1
cmp esi, dword [edi + 8]
jb 0x41fe5a
call fcn.004281b2
add esi, 0x20
jmp 0x41fdd0
cmp byte [esp + 0x16], 0
jne 0x4200c1
mov esi, dword [0x451b64]
cmp esi, dword [0x451b68]
jbe 0x41fe80
call fcn.004281b2
mov ebx, dword [sym.imp.KERNEL32.dll_ConvertDefaultLocale]
mov ebp, 0x451b60
jmp 0x41fe90
mov edi, dword [0x451b68]
cmp dword [0x451b64], edi
jbe 0x41fea3
call fcn.004281b2
test ebp, ebp
je 0x41feaf
cmp ebp, 0x451b60
je 0x41feb4
call fcn.004281b2
cmp esi, edi
je 0x41ff92
cmp byte [esp + 0x16], 0
jne 0x4200c1
test ebp, ebp
jne 0x41fed0
call fcn.004281b2
cmp esi, dword [ebp + 8]
jb 0x41feda
call fcn.004281b2
movzx edi, word [esp + 0x18]
mov edx, edi
and edx, 0x3ff
push edx
call ebx
movzx ecx, word [esi + 0x1c]
cmp ecx, eax
jne 0x41ff80
push 0x104
lea edx, [esp + 0x22c]
push edx
push 0x1004
push edi
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
cmp esi, dword [ebp + 8]
jb 0x41ff19
call fcn.004281b2
movzx ecx, word [esi + 0x1c]
push 0x104
lea eax, [esp + 0x24]
push eax
push 0x1004
push ecx
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
lea edx, [esp + 0x20]
push edx
lea eax, [esp + 0x22c]
push eax
call fcn.00428644
add esp, 8
test eax, eax
jne 0x41ff80
cmp esi, dword [ebp + 8]
jb 0x41ff56
call fcn.004281b2
mov cx, word [esi + 0x1c]
mov word [0x451b70], cx
cmp esi, dword [ebp + 8]
jb 0x41ff6b
call fcn.004281b2
push 0xffffffffffffffff
push 0
mov eax, esi
mov ecx, 0x451b7c
call fcn.00404070
mov byte [esp + 0x16], 1
cmp esi, dword [ebp + 8]
jb 0x41ff8a
call fcn.004281b2
add esi, 0x20
jmp 0x41fe90
mov bl, byte [esp + 0x16]
test bl, bl
jne 0x4200c1
mov esi, dword [0x451b64]
cmp esi, dword [0x451b68]
jbe 0x41ffb1
call fcn.004281b2
mov eax, 0x451b60
mov edi, eax
jmp 0x41ffc0
mov ebp, dword [0x451b68]
cmp dword [0x451b64], ebp
jbe 0x41ffd3
call fcn.004281b2
test edi, edi
je 0x41ffdf
cmp edi, 0x451b60
je 0x41ffe4
call fcn.004281b2
cmp esi, ebp
je 0x4200bd
test bl, bl
jne 0x4200c1
test edi, edi
jne 0x41fffd
call fcn.004281b2
cmp esi, dword [edi + 8]
jb 0x420007
call fcn.004281b2
mov dx, word [esi + 0x1c]
xor dx, word [esp + 0x18]
test dx, 0x3ff
jne 0x4200ab
movzx ecx, word [esp + 0x18]
mov ebp, dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
push 0x104
lea eax, [esp + 0x22c]
push eax
push 0x1004
push ecx
call ebp
cmp esi, dword [edi + 8]
jb 0x420045
call fcn.004281b2
movzx eax, word [esi + 0x1c]
push 0x104
lea edx, [esp + 0x24]
push edx
push 0x1004
push eax
call ebp
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x22c]
push edx
call fcn.00428644
add esp, 8
test eax, eax
jne 0x4200ab
cmp esi, dword [edi + 8]
jb 0x42007e
call fcn.004281b2
mov ax, word [esi + 0x1c]
mov word [0x451b70], ax
cmp esi, dword [edi + 8]
jb 0x420092
call fcn.004281b2
push 0xffffffffffffffff
push 0
mov eax, esi
mov ecx, 0x451b7c
call fcn.00404070
mov byte [esp + 0x16], 1
mov bl, byte [esp + 0x16]
cmp esi, dword [edi + 8]
jb 0x4200b5
call fcn.004281b2
add esi, 0x20
jmp 0x41ffc0
test bl, bl
je 0x4200e7
cmp dword [0x451b94], 8
mov eax, dword [0x451b80]
jae 0x4200d4
mov eax, 0x451b80
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov dword [0x451b98], eax
mov bl, 1
jmp 0x4201af
mov esi, dword [0x451b64]
cmp esi, dword [0x451b68]
mov word [0x451b70], 0x409
jbe 0x420103
call fcn.004281b2
mov ebx, dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov eax, 0x451b60
mov ebp, eax
mov edi, dword [0x451b68]
cmp dword [0x451b64], edi
jbe 0x420123
call fcn.004281b2
test ebp, ebp
je 0x42012f
cmp ebp, 0x451b60
je 0x420134
call fcn.004281b2
cmp esi, edi
je 0x4201ab
cmp byte [esp + 0x17], 0
jne 0x4201ab
test ebp, ebp
jne 0x420148
call fcn.004281b2
cmp esi, dword [ebp + 8]
jb 0x420152
call fcn.004281b2
mov cx, word [0x451b70]
cmp word [esi + 0x1c], cx
jne 0x420199
cmp esi, dword [ebp + 8]
jb 0x420169
call fcn.004281b2
push 0xffffffffffffffff
push 0
mov eax, esi
mov ecx, 0x451b7c
call fcn.00404070
cmp dword [0x451b94], 8
mov eax, dword [0x451b80]
jae 0x42018c
mov eax, 0x451b80
push eax
call ebx
mov dword [0x451b98], eax
mov byte [esp + 0x17], 1
cmp esi, dword [ebp + 8]
jb 0x4201a3
call fcn.004281b2
add esi, 0x20
jmp 0x420110
mov bl, byte [esp + 0x17]
movzx edx, word [0x451b70]
push 4
push 0x451b72
push 3
push edx
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
mov ecx, dword [esp + 0x434]
pop edi
pop esi
pop ebp
mov al, bl
pop ebx
xor ecx, esp
call fcn.00426d9a
add esp, 0x428
ret 4