Function at 0x10031430
Capabilities:
Get geographical location
Get keyboard layout
Hide graphical window
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x130
mov eax, dword [0x1008ce00]
xor eax, esp
mov dword [esp + 0x12c], eax
push ebx
mov ebx, dword [esp + 0x138]
push 0
call fcn.100332e0
add esp, 4
call fcn.1002ff10
cmp dword [ebx + 4], 0
je 0x1003148a
mov ecx, ebx
call fcn.10033030
cmp dword [eax + 0x68], 0
jne 0x1003148a
and dword [ebx + 0x40], 0xfffffffd
xor eax, eax
pop ebx
mov ecx, dword [esp + 0x12c]
xor ecx, esp
call fcn.10045740
add esp, 0x130
ret
mov eax, dword fs:[0x2c]
mov ecx, dword [0x10090dfc]
mov ecx, dword [eax + ecx*4]
mov eax, dword [0x1008eb1c]
cmp eax, dword [ecx + 8]
jg 0x10031b69
push edi
mov ecx, ebx
call fcn.10033050
mov edi, eax
mov eax, dword [0x1008eb20]
test edi, edi
jne 0x100314c8
mov edi, eax
test edi, edi
jne 0x100314d2
mov edi, str.FLTK
test eax, eax
jne 0x100314d2
mov dword [0x1008eb20], edi
mov ecx, edi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x100314d7
push ebp
push esi
push 0x64
lea eax, [esp + 0x78]
sub ecx, edx
push eax
push ecx
push edi
call fcn.100358f0
mov ebp, dword [0x1008eb14]
add esp, 0x10
xor esi, esi
test ebp, ebp
jle 0x10031542
nop
mov eax, dword [0x1008eb10]
mov ecx, edi
mov eax, dword [eax + esi*4]
nop word [eax + eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x10031530
test dl, dl
je 0x1003152c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x10031530
add eax, 2
add ecx, 2
test dl, dl
jne 0x10031510
xor eax, eax
jmp 0x10031535
sbb eax, eax
or eax, 1
test eax, eax
je 0x1003169b
inc esi
cmp esi, ebp
jl 0x10031500
xor al, al
test al, al
jne 0x1003163b
mov eax, dword [0x1008df50]
mov ecx, ebx
mov dword [esp + 0x60], 0
mov dword [esp + 0x34], 0x30
mov dword [esp + 0x38], 0x2b
mov dword [esp + 0x3c], 0x1002e2b0
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x48], eax
call fcn.10032f90
test eax, eax
jne 0x100315ae
mov eax, dword [ebx + 0x74]
cmp dword [eax + 8], 0
jne 0x100315ae
push 0x7f00
push 0
call dword [sym.imp.USER32.dll_LoadIconA]
push eax
mov ecx, ebx
call fcn.10032f70
mov ecx, ebx
call fcn.10032f90
push 0x7f00
push 0
mov dword [esp + 0x68], eax
mov dword [esp + 0x54], eax
call dword [sym.imp.USER32.dll_LoadCursorA]
mov dword [esp + 0x50], eax
lea eax, [esp + 0x74]
mov dword [esp + 0x5c], eax
lea eax, [esp + 0x34]
push eax
mov dword [esp + 0x58], 0
mov dword [esp + 0x5c], 0
call dword [sym.imp.USER32.dll_RegisterClassExW]
mov eax, dword [0x1008eb18]
cmp eax, dword [0x1008eb14]
jne 0x1003161d
add eax, 5
mov dword [0x1008eb18], eax
shl eax, 2
push eax
push dword [0x1008eb10]
call fcn.1004ce4d
add esp, 8
mov dword [0x1008eb10], eax
push edi
call fcn.1004ea70
mov edx, dword [0x1008eb14]
add esp, 4
mov ecx, dword [0x1008eb10]
mov dword [ecx + edx*4], eax
inc dword [0x1008eb14]
cmp dword [0x1008def0], 0
jne 0x10031654
push str.FLTK::ThreadWakeup
call dword [sym.imp.USER32.dll_RegisterWindowMessageW]
mov dword [0x1008def0], eax
cmp dword [ebx + 4], 0
mov esi, 1
mov eax, dword [ebx + 0x14]
mov edi, dword [ebx + 0x10]
mov ebp, dword [ebx + 0x1c]
mov dword [esp + 0x1c], eax
mov eax, dword [ebx + 0x18]
mov dword [esp + 0x14], edi
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], ebp
mov dword [esp + 0x2c], esi
je 0x100316a2
mov ecx, ebx
mov dword [esp + 0x20], 0x10100
mov ebp, 0x46000000
call fcn.10033030
mov eax, dword [eax + 0x68]
jmp 0x100318f9
mov al, 1
jmp 0x10031544
mov cl, byte [ebx + 0x94]
mov byte [esp + 0x10], cl
test cl, cl
jne 0x1003174c
mov edx, dword [ebx + 0x5c]
test edx, edx
je 0x10031731
mov edi, dword [edx + 0x18]
mov ecx, 0x64
mov edx, dword [edx + 0x1c]
cmp edi, ecx
mov esi, edi
mov dword [esp + 0x64], ecx
cmovg esi, ecx
mov dword [ebx + 0x80], 0
cmp edx, 0x64
mov dword [ebx + 0x84], 0
mov ecx, edx
mov dword [ebx + 0x88], 0
cmovg ecx, dword [esp + 0x64]
sub eax, edi
mov edi, dword [esp + 0x14]
add eax, esi
mov dword [ebx + 0x78], eax
mov esi, 1
mov eax, ebp
mov dword [ebx + 0x8c], 0
sub eax, edx
mov dword [ebx + 0x90], 0
add eax, ecx
mov byte [ebx + 0x94], 1
mov dword [ebx + 0x7c], eax
mov cl, 1
jmp 0x10031748
push 0
push 0
push 0
push ebp
push eax
push ebp
push eax
mov ecx, ebx
call fcn.10032bd0
mov cl, byte [ebx + 0x94]
mov byte [esp + 0x10], cl
mov edx, dword [ebx + 0x40]
mov ebp, edx
mov eax, edx
mov dword [esp + 0x20], 0x10100
shr eax, 3
not eax
test al, 1
je 0x100317b0
cmp dword [ebx + 4], 0
jne 0x100317b0
test cl, cl
je 0x10031798
mov eax, dword [ebx + 0x80]
cmp eax, dword [ebx + 0x78]
jne 0x10031784
mov eax, dword [ebx + 0x84]
cmp eax, dword [ebx + 0x7c]
je 0x10031798
mov ebp, 0x6cd0000
test edx, 0x4000
jne 0x100317bd
mov ebp, 0x6cf0000
jmp 0x100317bd
and ebp, 0x4000
neg ebp
sbb ebp, ebp
and ebp, 0xfff60000
add ebp, 0x6ca0000
jmp 0x100317bd
mov ebp, 0x86000000
mov dword [esp + 0x20], 0x10180
push dword [esp + 0x10]
mov eax, dword [esp + 0x20]
push dword [ebx + 0x7c]
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x6c]
push dword [ebx + 0x84]
mov dword [esp + 0x24], edi
push dword [ebx + 0x78]
push dword [ebx + 0x80]
push dword [esp + 0x34]
push ebp
push eax
lea eax, [esp + 0x30]
push eax
lea eax, [esp + 0x54]
push eax
lea eax, [esp + 0x3c]
push eax
lea eax, [esp + 0x44]
push eax
push ebx
call fcn.1002f700
mov ecx, dword [esp + 0x64]
add esp, 0x34
mov edx, dword [esp + 0x64]
lea eax, [ecx + edx]
test eax, eax
je 0x10031830
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x10]
lea eax, [eax + esi*2]
mov esi, 1
mov dword [esp + 0x28], eax
lea eax, [ecx + edx*2]
add dword [esp + 0x24], eax
mov eax, dword [ebx + 0x40]
mov ecx, dword [0x1008ded4]
test al, 0x10
jne 0x1003184f
mov dword [esp + 0x1c], 0x80000000
mov dword [esp + 0x14], 0x80000000
jmp 0x10031886
test ecx, ecx
jne 0x10031869
mov edi, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
mov dword [ebx + 0x10], edi
mov dword [ebx + 0x14], edx
mov ecx, dword [0x1008ded4]
jmp 0x1003186d
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x30]
add eax, dword [esp + 0x64]
sub edi, dword [esp + 0x10]
sub edx, eax
mov eax, dword [ebx + 0x40]
mov dword [esp + 0x14], edi
mov dword [esp + 0x1c], edx
mov dword [esp + 0x10], 0
test eax, 0x4020
je 0x100318f2
mov eax, dword [0x1008deec]
test eax, eax
je 0x100318f2
cmp dword [0x1008df48], 0
jne 0x100318f2
mov eax, dword [eax + 8]
cmp dword [eax + 4], 0
je 0x100318bd
mov ecx, eax
call fcn.10033030
cmp dword [eax + 4], 0
jne 0x100318b0
mov ecx, dword [eax + 0x68]
test ecx, ecx
je 0x100318da
mov esi, dword [eax + 0x40]
mov ecx, dword [ecx]
shr esi, 1
not esi
mov dword [esp + 0x10], ecx
and esi, 1
mov dword [esp + 0x2c], esi
jmp 0x1003190d
mov esi, dword [eax + 0x40]
shr esi, 1
not esi
mov dword [esp + 0x10], 0
and esi, 1
mov dword [esp + 0x2c], esi
jmp 0x1003190d
test ecx, ecx
je 0x1003190d
mov eax, dword [ecx + 0x68]
test eax, eax
je 0x10031905
mov eax, dword [eax]
mov dword [esp + 0x10], eax
jmp 0x1003190d
mov dword [esp + 0x10], 0
push 0x28
call fcn.1004574e
mov edi, eax
add esp, 4
push 0x7f00
mov dword [edi + 4], 0
mov dword [edi + 8], ebx
mov dword [ebx + 0x68], edi
push 0
mov dword [edi + 0xc], 0
mov dword [edi + 0x18], 0
call dword [sym.imp.USER32.dll_LoadCursorA]
mov dword [edi + 0x1c], eax
mov dword [edi + 0x20], 0
cmp dword [0x1008fcdc], 0
jne 0x10031984
push 0
call dword [sym.imp.USER32.dll_GetKeyboardLayout]
push 6
lea ecx, [esp + 0x68]
movzx eax, ax
push ecx
push 0x1004
push eax
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoA]
lea eax, [esp + 0x64]
push eax
call fcn.1004f679
add esp, 4
mov dword [0x1008fcdc], eax
mov edx, dword [ebx + 0x20]
xor ecx, ecx
mov dword [esp + 0x18], ecx
test edx, edx
je 0x100319e0
mov ecx, edx
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10031996
push 0
sub ecx, esi
push 0
push ecx
push edx
mov dword [esp + 0x74], ecx
call fcn.100358f0
lea esi, [eax + 1]
lea ecx, [esi + esi]
push ecx
call fcn.100494ab
push esi
push eax
push dword [esp + 0x80]
mov dword [esp + 0x38], eax
push dword [ebx + 0x20]
call fcn.100358f0
mov ecx, dword [esp + 0x3c]
add esp, 0x24
mov esi, dword [esp + 0x2c]
xor edx, edx
mov word [ecx + eax*2], dx
mov eax, dword [esp + 0x1c]
push 0
push dword [0x1008df50]
push 0
push dword [esp + 0x1c]
push dword [esp + 0x34]
push dword [esp + 0x3c]
push eax
push dword [esp + 0x30]
lea eax, [esp + 0x94]
push ebp
mov ebp, dword [esp + 0x3c]
push ebp
push eax
push dword [esp + 0x4c]
call dword [sym.imp.USER32.dll_CreateWindowExW]
mov dword [edi], eax
test ebp, ebp
je 0x10031a26
push ebp
call fcn.10049123
add esp, 4
mov eax, dword [0x1008deec]
mov ecx, edi
mov dword [edi + 0x10], eax
mov dword [0x1008deec], edi
call fcn.10032a60
test dword [ebx + 0x40], 0x40000
je 0x10031a70
lea eax, [esp + 0x64]
push eax
push dword [edi]
call dword [sym.imp.USER32.dll_GetWindowRect]
mov eax, dword [esp + 0x70]
mov edx, dword [esp + 0x68]
sub eax, edx
mov ecx, dword [esp + 0x64]
push eax
mov eax, dword [esp + 0x70]
sub eax, ecx
push eax
push edx
push ecx
mov ecx, edi
call fcn.10031bc0
cmp dword [0x1008df60], 0
je 0x10031a9c
cmp dword [0x1008df6c], 0
jne 0x10031a9c
mov eax, dword [edi]
push eax
mov byte [0x1008b178], 1
mov dword [0x1008df6c], eax
call dword [sym.imp.USER32.dll_SetClipboardViewer]
mov dword [0x1008df70], eax
mov dword [edi + 0x14], 1
cmp byte [0x1008dede], 0
je 0x10031ab7
xor esi, esi
mov byte [0x1008dede], 0
jmp 0x10031ae9
test esi, esi
je 0x10031ae9
and dword [ebx + 0x40], 0xfffffffd
mov ecx, ebx
mov esi, dword [0x1008de84]
mov dword [0x1008de84], 0x10
mov eax, dword [ebx]
push 0x10
call dword [eax + 8]
mov ecx, ebx
mov dword [0x1008de84], esi
call fcn.10032280
mov esi, dword [esp + 0x2c]
test dword [ebx + 0x40], 0x4000
je 0x10031afd
mov dword [0x1008ded0], ebx
call fcn.1002fd30
test esi, esi
pop esi
pop ebp
jne 0x10031b0a
mov eax, 7
jmp 0x10031b24
cmp dword [0x1008ded4], 0
jne 0x10031b1f
test byte [esp + 0x18], 0x80
mov eax, 1
je 0x10031b24
mov eax, 4
push eax
push dword [edi]
call dword [sym.imp.USER32.dll_ShowWindow]
push dword [0x1008bf4c]
push dword [edi]
call dword [sym.imp.ole32.dll_RegisterDragDrop]
cmp byte [0x1008b179], 0
jne 0x10031b50
push 0
push 0
push dword [edi]
call dword [0x1008df84]
mov ecx, dword [esp + 0x134]
mov eax, edi
pop edi
pop ebx
xor ecx, esp
call fcn.10045740
add esp, 0x130
ret
push 0x1008eb1c
call fcn.1004657c
add esp, 4
cmp dword [0x1008eb1c], 0xffffffff
jne 0x100314aa
push 4
call fcn.100494ab
push 0x1006ab20
mov dword [0x1008eb10], eax
mov dword [0x1008eb18], 1
mov dword [0x1008eb14], 0
call fcn.100462eb
push 0x1008eb1c
call fcn.1004652b
add esp, 0xc
jmp 0x100314aa