Function at 0x410982
Capabilities:
Get disk size
Get geographical location
Get keyboard layout

Disassembly:
push 0x68
mov eax, 0x4adf06
call fcn.0048f423
mov edi, dword [ebp + 8]
xor ebx, ebx
push ebx
lea ecx, [ebp - 0x74]
mov dword [ebp - 0x50], edi
call fcn.0042f326
mov dword [ebp - 4], ebx
call fcn.004111af
mov esi, dword [0x507340]
test al, al
jne 0x410a07
test esi, esi
je 0x410a07
push 3
pop edi
mov ecx, esi
and ecx, 0x80000001
jns 0x4109c7
dec ecx
or ecx, 0xfffffffe
inc ecx
jne 0x4109d4
mov eax, esi
cdq
sub eax, edx
mov esi, eax
sar esi, 1
jmp 0x4109db
lea esi, [esi*2 + 1]
mov eax, esi
cdq
idiv edi
mov dword [0x507340], esi
sub edx, ebx
je 0x4109f3
dec edx
dec edx
je 0x4109f6
dec edx
je 0x4109f7
jmp 0x410a00
add esi, 2
inc esi
add esi, 2
mov dword [0x507340], esi
test esi, esi
jne 0x4109b8
mov edi, dword [ebp - 0x50]
lea ecx, [esi + 1]
lea eax, [esi + 2]
imul eax, ecx
imul eax, esi
push 0x12
cdq
pop ecx
idiv ecx
push 3
pop eax
cmp edx, eax
jne 0x410a2b
push ebx
push ebx
push ebx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceW]
push ebx
push ebx
call dword [sym.imp.USER32.dll_GetKeyboardLayoutList]
xor ebx, ebx
mov esi, eax
inc ebx
test esi, esi
jne 0x410ac9
mov esi, 0x505ab0
push esi
lea ecx, [ebp - 0x4c]
call fcn.00408fd9
mov byte [ebp - 4], bl
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea eax, [ebp - 0x4c]
push str.getkeybordLayout_error_GetKeyboardLayoutList_check_
push eax
call fcn.00405092
lea eax, [ebp - 0x4c]
push eax
lea eax, [ebp - 0x28]
push eax
call fcn.00438012
add esp, 0x14
push eax
lea ecx, [ebp - 0x64]
mov byte [ebp - 4], 2
call fcn.0042f275
push 3
pop eax
mov byte [ebp - 4], al
lea eax, [ebp - 0x64]
push eax
push 0x4c0c00
lea ecx, [ebp - 0x74]
call fcn.0042f5f2
mov ecx, eax
call fcn.0042f4ab
lea ecx, [ebp - 0x64]
mov byte [ebp - 4], 2
call fcn.0042f451
lea ecx, [ebp - 0x28]
call fcn.00401056
mov ecx, dword [ebp - 0x4c]
mov byte [ebp - 4], 0
lea ecx, [ecx - 0x10]
call fcn.00407864
jmp 0x410cae
xor ecx, ecx
push 4
pop edx
mov eax, esi
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0048dbeb
pop ecx
mov edi, eax
push edi
push esi
call dword [sym.imp.USER32.dll_GetKeyboardLayoutList]
mov edx, dword [0x507340]
mov esi, eax
lea ecx, [edx + 1]
lea eax, [edx + 2]
imul eax, ecx
imul eax, edx
push 0xc
cdq
pop ecx
idiv ecx
mov dword [ebp - 0x4c], esi
cmp edx, 9
jne 0x410b23
push 0xa3
push 0xa2
push str._d__d_n
call fcn.0049172d
add esp, 0xc
test esi, esi
mov esi, 0x505ab0
jne 0x410bb3
push esi
lea ecx, [ebp - 0x4c]
call fcn.00408fd9
mov byte [ebp - 4], 4
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea eax, [ebp - 0x4c]
push str.getkeybordLayout_error_GetKeyboardLayoutList_check_
push eax
call fcn.00405092
lea eax, [ebp - 0x4c]
push eax
lea eax, [ebp - 0x28]
push eax
call fcn.00438012
add esp, 0x14
push eax
lea ecx, [ebp - 0x64]
mov byte [ebp - 4], 5
call fcn.0042f275
lea eax, [ebp - 0x64]
push eax
push 0x4c0c00
lea ecx, [ebp - 0x74]
mov byte [ebp - 4], 6
call fcn.0042f5f2
mov ecx, eax
call fcn.0042f4ab
lea ecx, [ebp - 0x64]
mov byte [ebp - 4], 5
call fcn.0042f451
lea ecx, [ebp - 0x28]
call fcn.00401056
mov ecx, dword [ebp - 0x4c]
mov byte [ebp - 4], 0
lea ecx, [ecx - 0x10]
call fcn.00407864
jmp 0x410cab
and dword [ebp - 0x54], 0
cmp dword [ebp - 0x4c], 0
jbe 0x410c5f
mov ebx, dword [ebp - 0x4c]
push esi
lea ecx, [ebp - 0x4c]
call fcn.00408fd9
push 0x104
lea ecx, [ebp - 0x4c]
mov byte [ebp - 4], 7
call fcn.00406eed
push 0x104
push eax
mov eax, dword [ebp - 0x54]
push 0x1001
movzx eax, word [edi + eax*4]
push eax
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
lea ecx, [ebp - 0x4c]
push 0xffffffffffffffff
call fcn.00409a5b
lea eax, [ebp - 0x4c]
push eax
lea eax, [ebp - 0x28]
push eax
call fcn.00438012
pop ecx
pop ecx
push eax
lea ecx, [ebp - 0x64]
mov byte [ebp - 4], 8
call fcn.0042f275
push eax
lea ecx, [ebp - 0x74]
mov byte [ebp - 4], 9
call fcn.0042fa35
lea ecx, [ebp - 0x64]
mov byte [ebp - 4], 8
call fcn.0042f451
lea ecx, [ebp - 0x28]
call fcn.00401056
mov ecx, dword [ebp - 0x4c]
mov byte [ebp - 4], 0
lea ecx, [ecx - 0x10]
call fcn.00407864
mov eax, dword [ebp - 0x54]
inc eax
mov dword [ebp - 0x54], eax
cmp eax, ebx
jb 0x410bc4
xor ebx, ebx
inc ebx
lea ecx, [ebp - 0x74]
call fcn.0042fe3a
test al, al
je 0x410ca0
push str.empty
lea ecx, [ebp - 0x64]
call fcn.0042f2f7
lea eax, [ebp - 0x64]
push eax
push 0x4c0c00
lea ecx, [ebp - 0x74]
mov byte [ebp - 4], 0xa
call fcn.0042f5f2
mov ecx, eax
call fcn.0042f4ab
lea ecx, [ebp - 0x64]
mov byte [ebp - 4], 0
call fcn.0042f451
test edi, edi
je 0x410cab
push edi
call fcn.0048fbd7
pop ecx
mov edi, dword [ebp - 0x50]
lea ecx, [ebp - 0x48]
call fcn.00430a82
push esi
lea ecx, [ebp - 0x50]
mov byte [ebp - 4], 0xb
call fcn.00408fd9
push 0xc
pop eax
mov byte [ebp - 4], al
lea eax, [ebp - 0x74]
push eax
lea eax, [ebp - 0x28]
push eax
lea ecx, [ebp - 0x48]
call fcn.00432bf9
cmp dword [eax + 0x14], 0x10
mov byte [ebp - 4], 0xd
jb 0x410ce5
mov eax, dword [eax]
sub esp, 0x18
mov ecx, esp
push eax
call fcn.00401027
lea eax, [ebp - 0x54]
push eax
call fcn.00437fc7
add esp, 0x1c
push eax
lea ecx, [ebp - 0x50]
mov byte [ebp - 4], 0xe
call fcn.00402394
mov ecx, dword [ebp - 0x54]
lea ecx, [ecx - 0x10]
call fcn.00407864
push 0xc
pop eax
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], al
call fcn.00401056
push 8
pop eax
mov word [edi], ax
mov ecx, dword [0x507340]
mov eax, ecx
imul eax, ecx
push 0x17
cdq
pop esi
idiv esi
cmp edx, 0xf
jne 0x410d54
cmp ecx, ebx
jle 0x410d4e
mov eax, ecx
cdq
idiv ebx
inc ebx
add ebx, edx
cmp ebx, ecx
jl 0x410d42
mov dword [0x507340], ebx
mov esi, dword [ebp - 0x50]
push dword [esi - 0xc]
push esi
call dword [sym.imp.OLEAUT32.dll_SysReAllocStringLen]
test eax, eax
jne 0x410d6a
call fcn.00409bd9
lea ecx, [esi - 0x10]
mov dword [edi + 8], eax
call fcn.00407864
lea ecx, [ebp - 0x48]
mov byte [ebp - 4], 0
call fcn.004090f2
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x74]
call fcn.0042f451
call fcn.0048f3d2
ret