Function at 0x4109f4
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0x5c
push 0
push 0
dec ecx
jne 0x4109fc
push ebx
push esi
push edi
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x41119a
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [0x4164d8]
cmp byte [eax], 0
jne 0x41113e
mov eax, dword [0x4164dc]
cmp byte [eax], 0
je 0x41113e
mov eax, dword [ebp - 4]
mov byte [eax + 0x28], 1
xor eax, eax
push ebp
push 0x411137
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0xc]
call fcn.0040157c
cmp dword [ebp - 8], 0
je 0x410a7e
lea eax, [ebp - 0x280]
push eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x20]
mov cl, 0x5c
mov edx, dword [ebp - 8]
call fcn.004078f0
mov eax, dword [ebp - 0x280]
lea edx, [ebp - 0xc]
call fcn.00403aec
call fcn.004067ec
mov dword [ebp - 0x24], eax
xor eax, eax
push ebp
push 0x41111b
push dword fs:[eax]
mov dword fs:[eax], esp
cmp dword [ebp - 8], 0
jne 0x410b77
mov byte [ebp - 0x25], 0x41
lea eax, [ebp - 0x284]
mov dl, byte [ebp - 0x25]
call fcn.00401758
lea eax, [ebp - 0x284]
mov edx, 0x4111b0
call fcn.004017f4
mov eax, dword [ebp - 0x284]
call fcn.004019e4
push eax
call sub.kernel32.dll_GetDriveTypeA
cmp eax, 6
ja case.0x410ad6.0
jmp dword [eax*4 + 0x410add]
xor ebx, ebx
jmp 0x410b0e
mov ebx, 1
jmp 0x410b0e
mov ebx, 2
jmp 0x410b0e
or ebx, 0xffffffff
test ebx, ebx
jl 0x410b65
lea eax, [ebp - 0x28c]
mov dl, byte [ebp - 0x25]
mov byte [eax + 1], dl
mov byte [eax], 1
lea edx, [ebp - 0x28c]
lea eax, [ebp - 0x290]
call fcn.00401260
mov edx, 0x4111b4
lea eax, [ebp - 0x290]
mov cl, 2
call fcn.00401230
lea edx, [ebp - 0x290]
lea eax, [ebp - 0x288]
call fcn.00401798
mov edx, dword [ebp - 0x288]
mov eax, dword [ebp - 0x24]
mov ecx, ebx
call fcn.00406958
inc byte [ebp - 0x25]
cmp byte [ebp - 0x25], 0x5b
jne 0x410aa2
jmp 0x410db3
call fcn.0040b664
cmp al, 4
jb 0x410ce1
mov eax, dword [ebp - 4]
call fcn.00411950
test al, al
je 0x410ce1
push 0
push 0
push 1
lea eax, [ebp - 0x27c]
push eax
push 0
lea eax, [ebp - 0x298]
mov ecx, 0x4111c0
mov edx, dword [ebp - 0xc]
call fcn.00401838
mov edx, dword [ebp - 0x298]
lea eax, [ebp - 0x294]
call fcn.00401d0c
mov eax, dword [ebp - 0x294]
call fcn.00401d1c
push eax
mov eax, dword [ebp - 4]
call dword [eax + 0x3c]
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x20], 0xffffffff
je 0x410db3
xor eax, eax
push ebp
push 0x410cda
push dword fs:[eax]
mov dword fs:[eax], esp
test byte [ebp - 0x27c], 0x10
je 0x410ca0
lea eax, [ebp - 0x29c]
lea edx, [ebp - 0x250]
mov ecx, 0x104
call fcn.00401cf0
mov eax, dword [ebp - 0x29c]
mov edx, 0x4111c8
call fcn.00401d38
je 0x410ca0
lea eax, [ebp - 0x2a0]
lea edx, [ebp - 0x250]
mov ecx, 0x104
call fcn.004017bc
mov eax, dword [ebp - 0x2a0]
mov edx, 0x4111d4
call fcn.00401930
je 0x410ca0
lea eax, [ebp - 0x2a4]
lea edx, [ebp - 0x48]
mov ecx, 0xe
call fcn.004017bc
mov ecx, dword [ebp - 0x2a4]
mov eax, dword [ebp - 4]
mov edx, dword [ebp - 0x27c]
call fcn.00410198
test al, al
je 0x410ca0
lea eax, [ebp - 0x2a8]
lea edx, [ebp - 0x250]
mov ecx, 0x104
call fcn.004017bc
mov edx, dword [ebp - 0x2a8]
mov eax, dword [ebp - 0x24]
call fcn.0040a408
lea eax, [ebp - 0x27c]
push eax
mov eax, dword [ebp - 0x20]
push eax
mov eax, dword [ebp - 4]
call dword [eax + 0x40]
test eax, eax
jne 0x410bf4
mov eax, dword [ebp - 0x24]
xor edx, edx
call fcn.00406878
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x410db3
mov eax, dword [ebp - 0x20]
push eax
call sub.kernel32.dll_FindClose
ret
mov ecx, 0x10
mov edx, 0x4111e0
mov eax, dword [ebp - 0xc]
call fcn.00403e98
mov dword [ebp - 0x14], eax
xor eax, eax
push ebp
push 0x410dac
push dword fs:[eax]
mov dword fs:[eax], esp
lea edx, [ebp - 0x2a8]
mov eax, dword [ebp - 0x14]
or ecx, 0xffffffff
call fcn.004044d8
mov eax, dword [ebp - 0x14]
call fcn.00408d14
dec eax
test eax, eax
jl 0x410d96
inc eax
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x18], 0
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp - 0x18]
call fcn.00403ec4
lea edx, [eax + 0x130]
lea eax, [ebp - 0x2ac]
mov ecx, 0xe
call fcn.004017a4
mov eax, dword [ebp - 0x2ac]
push eax
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp - 0x18]
call fcn.00403ec4
mov edx, dword [eax]
mov eax, dword [ebp - 4]
pop ecx
call fcn.00410198
test al, al
je 0x410d8e
lea ecx, [ebp - 0x2b0]
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp - 0x18]
call fcn.00403ed0
mov edx, dword [ebp - 0x2b0]
mov eax, dword [ebp - 0x24]
call fcn.0040a408
inc dword [ebp - 0x18]
dec dword [ebp - 0x2c]
jne 0x410d2d
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x410db3
mov eax, dword [ebp - 0x14]
call fcn.004081c0
ret
cmp dword [ebp - 8], 0
jne 0x410dca
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x20]
xor edx, edx
call fcn.00407808
mov edi, eax
jmp 0x410ddf
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x20]
mov ecx, 4
mov edx, dword [ebp - 8]
call fcn.00407828
mov edi, eax
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + 0x1c]
test eax, eax
jl 0x4110e6
inc eax
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x18], 0
jmp 0x410e85
mov dword [ebp - 0x1c], edi
lea ecx, [ebp - 0x10]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x20]
mov edx, edi
call fcn.004078a0
mov eax, dword [ebp - 0x24]
mov ebx, dword [eax + 0x1c]
dec ebx
test ebx, ebx
jl 0x410e4b
inc ebx
xor esi, esi
lea ecx, [ebp - 0x2b4]
mov eax, dword [ebp - 0x24]
mov edx, esi
call fcn.0040a474
mov eax, dword [ebp - 0x2b4]
mov edx, dword [ebp - 0x10]
call fcn.004035e8
test eax, eax
jne 0x410e47
xor eax, eax
mov dword [ebp - 0x1c], eax
jmp 0x410e4b
inc esi
dec ebx
jne 0x410e1e
cmp dword [ebp - 0x1c], 0
jne 0x410e60
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x20]
xor ecx, ecx
mov edx, edi
call fcn.00407ad8
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x20]
mov ecx, 1
mov edx, edi
call fcn.00407828
mov edi, eax
cmp dword [ebp - 0x1c], 0
je 0x410e85
mov eax, dword [ebp - 4]
mov edx, dword [ebp - 0x1c]
call fcn.0041008c
test edi, edi
je 0x410ed7
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + 0x1c]
cmp eax, dword [ebp - 0x18]
jle 0x410dfd
lea ecx, [ebp - 0x2b8]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x20]
mov edx, edi
call fcn.004078a0
mov eax, dword [ebp - 0x2b8]
push eax
lea ecx, [ebp - 0x2bc]
mov eax, dword [ebp - 0x24]
mov edx, dword [ebp - 0x18]
call fcn.0040a474
mov eax, dword [ebp - 0x2bc]
pop edx
call fcn.004035e8
test eax, eax
jg 0x410dfd
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + 0x1c]
cmp eax, dword [ebp - 0x18]
jle 0x4110e6
test edi, edi
je 0x410f4d
lea ecx, [ebp - 0x2c0]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x20]
mov edx, edi
call fcn.004078a0
mov eax, dword [ebp - 0x2c0]
push eax
lea ecx, [ebp - 0x2c4]
mov eax, dword [ebp - 0x24]
mov edx, dword [ebp - 0x18]
call fcn.0040a474
mov eax, dword [ebp - 0x2c4]
pop edx
call fcn.004035e8
test eax, eax
jne 0x410f4d
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x20]
xor ecx, ecx
mov edx, edi
call fcn.00407ad8
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x20]
mov ecx, 1
mov edx, edi
call fcn.00407828
mov edi, eax
jmp 0x4110da
test edi, edi
jne 0x410f80
lea ecx, [ebp - 0x2c8]
mov eax, dword [ebp - 0x24]
mov edx, dword [ebp - 0x18]
call fcn.0040a474
mov eax, dword [ebp - 0x2c8]
push eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x20]
mov ecx, 0xffff0002
mov edx, dword [ebp - 8]
call fcn.00407a28
mov esi, eax
jmp 0x410ff1
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x20]
mov ecx, 2
mov edx, edi
call fcn.00407828
mov esi, eax
test esi, esi
jne 0x410fc7
lea ecx, [ebp - 0x2cc]
mov eax, dword [ebp - 0x24]
mov edx, dword [ebp - 0x18]
call fcn.0040a474
mov eax, dword [ebp - 0x2cc]
push eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x20]
mov ecx, 0xffff0001
mov edx, dword [ebp - 8]
call fcn.00407a28
mov esi, eax
jmp 0x410ff1
lea ecx, [ebp - 0x2d0]
mov eax, dword [ebp - 0x24]
mov edx, dword [ebp - 0x18]
call fcn.0040a474
mov eax, dword [ebp - 0x2d0]
push eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x20]
mov ecx, esi
mov edx, dword [ebp - 8]
call fcn.00407a28
mov esi, eax
mov eax, dword [ebp - 0x24]
mov edx, dword [ebp - 0x18]
call fcn.00406818
cmp eax, 1
jne 0x41101a
mov eax, dword [ebp - 4]
cmp byte [eax + 0x18], 0
je 0x41101a
mov eax, dword [ebp - 0x24]
mov ecx, 2
mov edx, dword [ebp - 0x18]
call fcn.00406838
mov eax, dword [ebp - 0x24]
mov edx, dword [ebp - 0x18]
call fcn.00406818
sub eax, 1
jb 0x41102e
je 0x41106c
jmp 0x4110aa
push dword [ebp - 0xc]
lea ecx, [ebp - 0x2d8]
mov eax, dword [ebp - 0x24]
mov edx, dword [ebp - 0x18]
call fcn.0040a474
push dword [ebp - 0x2d8]
push 0x4111f0
lea eax, [ebp - 0x2d4]
mov edx, 3
call fcn.004018ac
mov eax, dword [ebp - 0x2d4]
call fcn.004039a8
mov ebx, eax
jmp 0x4110b4
push dword [ebp - 0xc]
lea ecx, [ebp - 0x2e0]
mov eax, dword [ebp - 0x24]
mov edx, dword [ebp - 0x18]
call fcn.0040a474
push dword [ebp - 0x2e0]
push 0x4111f0
lea eax, [ebp - 0x2dc]
mov edx, 3
call fcn.004018ac
mov eax, dword [ebp - 0x2dc]
call fcn.00403e5c
mov ebx, eax
jmp 0x4110b4
mov eax, dword [ebp - 4]
call fcn.0041089c
mov ebx, eax
push ebx
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x20]
mov ecx, 2
mov edx, esi
call fcn.00407838
push ebx
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x20]
mov ecx, 0x20
mov edx, esi
call fcn.00407838
inc dword [ebp - 0x18]
dec dword [ebp - 0x2c]
jne 0x410e85
mov eax, dword [ebp - 0x24]
cmp dword [eax + 0x1c], 0
jne 0x411105
cmp dword [ebp - 8], 0
je 0x411105
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x20]
xor ecx, ecx
mov edx, dword [ebp - 8]
call fcn.004079d0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x411122
mov eax, dword [ebp - 0x24]
call fcn.004081c0
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4111a1
lea eax, [ebp - 0x2e0]
mov edx, 0x11
call fcn.004015a0
lea eax, [ebp - 0x29c]
call fcn.00401ba4
lea eax, [ebp - 0x298]
call fcn.0040157c
lea eax, [ebp - 0x294]
call fcn.00401ba4
lea eax, [ebp - 0x288]
mov edx, 3
call fcn.004015a0
lea eax, [ebp - 0x10]
mov edx, 2
call fcn.004015a0
ret