Function at 0x4e8110
Capabilities:
Get geographical location
Get keyboard layout

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x7227c3
mov eax, dword fs:[0]
push eax
sub esp, 0x204
mov eax, dword [0x7db1e8]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov dword [ebp - 0x210], edi
mov esi, dword [ebp + 8]
push 0
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
push 7
lea ecx, [ebp - 0x18]
movzx eax, ax
push ecx
push 0x1004
push eax
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoA]
lea eax, [ebp - 0x18]
push eax
call fcn.006fb470
add esp, 4
cmp dword [esi + 0x14], 0x10
jb 0x4e8179
mov esi, dword [esi]
lea ecx, [ebp - 0x1fc]
push eax
mov dword [ebp - 0x200], ecx
lea ecx, [ebp - 0x200]
push esi
call fcn.004d3aa0
mov edx, dword [ebp - 0x200]
xor eax, eax
mov ecx, edx
mov dword [ebp - 0x78], 0
mov dword [ebp - 4], 0
mov dword [ebp - 0x68], 0
mov dword [ebp - 0x64], 7
mov word [ebp - 0x78], ax
lea esi, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4e81c0
sub ecx, esi
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0x78]
call fcn.004da1e0
mov eax, dword [ebp - 0x200]
lea ecx, [ebp - 0x1fc]
mov byte [ebp - 4], 2
cmp eax, ecx
je 0x4e81f6
push eax
call fcn.006fa47e
add esp, 4
cmp dword [ebp - 0x64], 8
lea eax, [ebp - 0x78]
lea ecx, [ebp - 0xf8]
cmovae eax, dword [ebp - 0x78]
push 0xfde9
mov dword [ebp - 0xfc], ecx
lea ecx, [ebp - 0xfc]
push eax
call fcn.004d3ce0
mov edx, dword [ebp - 0xfc]
mov ecx, edx
mov dword [ebp - 0x60], 0
mov byte [ebp - 4], 3
mov dword [ebp - 0x50], 0
mov dword [ebp - 0x4c], 0xf
lea esi, [ecx + 1]
mov byte [ebp - 0x60], 0
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4e8246
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x60]
call fcn.0044f130
mov eax, dword [ebp - 0xfc]
lea ecx, [ebp - 0xf8]
cmp eax, ecx
je 0x4e8272
push eax
call fcn.006fa47e
add esp, 4
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x1c], 0xf
mov dword [ebp - 0x20], 0
mov byte [ebp - 0x30], 0
cmp byte [ebp + 0x10], 0
mov byte [ebp - 4], 6
je 0x4e848a
push 0x20
lea ecx, [ebp - 0x30]
call fcn.0044f2f0
movups xmm0, xmmword [str.WarcrafttfarcraW]
mov dword [ebp - 0x20], 0x10
lea ecx, [ebp - 0xe4]
mov dword [ebp - 0x1c], 0x1f
movups xmmword [eax], xmm0
mov byte [eax + 0x10], 0
mov dword [ebp - 0x30], eax
call fcn.00519060
lea ecx, [ebp - 0xe4]
call fcn.00519420
lea eax, [ebp - 0x30]
push eax
lea ecx, [ebp - 0xe4]
call fcn.00519d30
lea eax, [ebp - 0x48]
push eax
lea ecx, [ebp - 0xe4]
call fcn.00519450
mov esi, eax
lea eax, [ebp - 0x30]
cmp eax, esi
je 0x4e8367
mov edx, dword [ebp - 0x1c]
cmp edx, 0x10
jb 0x4e8333
mov ecx, dword [ebp - 0x30]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x4e8329
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4e85d0
push edx
push ecx
call fcn.006f4b9f
add esp, 8
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x1c], 0xf
mov byte [ebp - 0x30], 0
movups xmm0, xmmword [esi]
movups xmmword [ebp - 0x30], xmm0
movq xmm0, qword [esi + 0x10]
movq qword [ebp - 0x20], xmm0
mov dword [esi + 0x10], 0
mov dword [esi + 0x14], 0xf
mov byte [esi], 0
mov edx, dword [ebp - 0x34]
cmp edx, 0x10
jb 0x4e839b
mov ecx, dword [ebp - 0x48]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x4e8391
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4e85d0
push edx
push ecx
call fcn.006f4b9f
add esp, 8
mov edi, 0x10
mov dword [ebp - 0x48], 0
cmp dword [ebp - 0x20], edi
lea eax, [ebp - 0x30]
mov dword [ebp - 0x34], 0xf
cmovb edi, dword [ebp - 0x20]
cmp dword [ebp - 0x1c], 0x10
cmovae eax, dword [ebp - 0x30]
mov dword [ebp - 0x20c], eax
cmp edi, 0xf
ja 0x4e83e0
push edi
push eax
lea eax, [ebp - 0x48]
mov dword [ebp - 0x38], edi
push eax
call fcn.006f6ff0
mov byte [ebp + edi - 0x48], 0
jmp 0x4e843b
cmp edi, 0x7fffffff
ja 0x4e85d5
mov eax, edi
or eax, 0xf
cmp eax, 0x7fffffff
jbe 0x4e83ff
mov eax, closesocket
jmp 0x4e8409
mov ecx, 0x16
cmp eax, ecx
cmovb eax, ecx
mov dword [ebp - 0x208], eax
lea ecx, [ebp - 0x48]
inc eax
push eax
call fcn.0044f2f0
push edi
push dword [ebp - 0x20c]
mov esi, eax
mov dword [ebp - 0x38], edi
mov eax, dword [ebp - 0x208]
push esi
mov dword [ebp - 0x34], eax
call fcn.006f6ff0
mov byte [esi + edi], 0
mov dword [ebp - 0x48], esi
mov edx, dword [ebp - 0x1c]
add esp, 0xc
cmp edx, 0x10
jb 0x4e8472
mov ecx, dword [ebp - 0x30]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x4e8468
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4e85da
push edx
push ecx
call fcn.006f4b9f
add esp, 8
movups xmm0, xmmword [ebp - 0x48]
mov edi, dword [ebp - 0x210]
movups xmmword [ebp - 0x30], xmm0
movq xmm0, qword [ebp - 0x38]
movq qword [ebp - 0x20], xmm0
cmp dword [ebp - 0x4c], 0x10
lea eax, [ebp - 0x60]
push edi
cmovae eax, dword [ebp - 0x60]
push eax
mov byte [ebp - 0x201], 0
call fcn.00460340
add esp, 8
test eax, eax
jne 0x4e84eb
mov ecx, dword [ebp - 0x20]
test ecx, ecx
je 0x4e84e4
cmp byte [ebp + 0xc], 0
lea eax, [ebp - 0x30]
push ecx
je 0x4e84cd
cmp dword [ebp - 0x1c], 0x10
cmovae eax, dword [ebp - 0x30]
push eax
push dword [edi]
call fcn.004c24e0
jmp 0x4e84dd
cmp dword [ebp - 0x1c], 0x10
cmovae eax, dword [ebp - 0x30]
push eax
push dword [edi]
call fcn.004c2320
add esp, 0xc
test eax, eax
jne 0x4e84eb
mov byte [ebp - 0x201], 1
mov edx, dword [ebp - 0x1c]
cmp edx, 0x10
jb 0x4e851f
mov ecx, dword [ebp - 0x30]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x4e8515
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4e85df
push edx
push ecx
call fcn.006f4b9f
add esp, 8
mov edx, dword [ebp - 0x4c]
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x1c], 0xf
mov byte [ebp - 0x30], 0
cmp edx, 0x10
jb 0x4e8565
mov ecx, dword [ebp - 0x60]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x4e855b
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4e85df
push edx
push ecx
call fcn.006f4b9f
add esp, 8
mov edx, dword [ebp - 0x64]
mov dword [ebp - 0x50], 0
mov dword [ebp - 0x4c], 0xf
mov byte [ebp - 0x60], 0
cmp edx, 8
jb 0x4e85ad
mov ecx, dword [ebp - 0x78]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4e85a3
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4e85df
push edx
push ecx
call fcn.006f4b9f
add esp, 8
mov al, byte [ebp - 0x201]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.006f4db8
mov esp, ebp
pop ebp
ret 0xc
call fcn.006fb96e
call fcn.0044f120
call fcn.006fb96e
call fcn.006fb96e
int3