Function at 0x40ecc0
Capabilities:
Get disk information

Disassembly:
sub esp, 0xc
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
push ebp
push esi
push edi
mov esi, ecx
mov edi, 0x450358
mov eax, dword [edi]
push eax
call ebx
add edi, 4
cmp edi, 0x45037c
jl 0x40ecd4
mov edi, dword [esp + 0x20]
xor ebx, ebx
lea ebp, [esi + 0x70]
mov ecx, ebp
mov dword [edi], ebx
mov dword [edi + 4], ebx
mov dword [edi + 8], ebx
mov dword [edi + 0xc], ebx
call fcn.0042bfd0
test eax, eax
je 0x40ed3c
mov ecx, ebp
call fcn.0042bfd0
mov ecx, dword [esi + 0x13fc]
sub ecx, eax
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
cmp eax, 3
jle 0x40ed3c
mov ecx, dword [0x452308]
mov edx, 2
mov eax, 1
mov word [0x4508a0], dx
mov word [ecx + 0x32e], ax
mov ecx, ebp
call fcn.0042bfd0
lea edx, [esp + 0x10]
push edx
mov ecx, ebp
mov dword [esi + 0x13fc], eax
call fcn.0042c750
mov ecx, dword [esp + 0x10]
cmp ecx, 0x64
jl 0x40ed65
sub ecx, 0x64
mov dword [esp + 0x10], ecx
cmp ecx, ebx
jle 0x40efd0
mov eax, dword [esp + 0x14]
cmp eax, ebx
jle 0x40efd0
cmp eax, 0x493e0
jne 0x40ede5
call fcn.0042e980
cdq
mov ecx, 0x64
idiv ecx
cmp edx, 0x21
jne 0x40eddd
call fcn.0042e980
and eax, 0x80000001
jns 0x40eda3
dec eax
or eax, 0xfffffffe
inc eax
jne 0x40edca
call fcn.0042e980
and eax, 0x80000001
jns 0x40edb6
dec eax
or eax, 0xfffffffe
inc eax
neg eax
sbb eax, eax
and eax, 0xfffcf2c0
add eax, 0x927c0
mov dword [esp + 0x14], eax
jmp 0x40ede1
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov ebp, 2
mov dword [esp + 0x18], ebp
jmp 0x40ede9
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov ebp, dword [esp + 0x18]
mov edx, dword [0x452308]
cmp byte [esp + 0x24], bl
jne 0x40ef09
cmp word [edx + 0x32a], bx
jg 0x40ef09
cmp ecx, 0x64
jne 0x40ee14
mov ecx, 0x63
mov dword [esp + 0x10], ecx
mov dword [edi + 8], ecx
cmp ecx, 0x63
je 0x40ee2d
mov edx, dword [esi + ecx*4 + 0x1400]
mov dword [edi], edx
mov dword [edi + 4], ebp
jmp 0x40f3b6
mov dword [edi], eax
mov dword [edi + 4], 1
cmp eax, 0x2710
je 0x40ee44
cmp eax, 0x4e20
jne 0x40ee8e
call fcn.0042e980
cdq
mov ecx, 0x64
idiv ecx
cmp edx, 0x23
jge 0x40ee8a
mov eax, dword [esi + 0x1424]
cmp eax, 0x2710
jge 0x40ee8a
mov edx, dword [edi]
add edx, eax
mov dword [edi + 8], ebx
mov dword [edi], ebx
mov dword [edi + 4], ebx
mov dword [edi + 0xc], ebx
mov eax, edi
pop edi
mov dword [esi + 0x1424], edx
inc dword [0x455780]
pop esi
pop ebp
pop ebx
add esp, 0xc
ret 8
mov ebp, dword [esp + 0x18]
cmp ebp, 1
jle 0x40f3b6
mov ecx, dword [edi]
mov eax, 0x10624dd3
imul ecx
mov ecx, dword [edi + 8]
mov esi, dword [esi + 0x1428]
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
imul eax, eax, 0x2710
lea edx, [eax + ecx + 0x64]
mov ecx, dword [0x452320]
push edx
push esi
mov dword [edi + 4], 1
call fcn.0040de30
call fcn.0042e980
cdq
mov ecx, 0x32a
idiv ecx
add edx, 0xc8
cmp esi, 9
ja 0x40f3b6
cmp edx, ebx
jg 0x40f3b6
mov eax, dword [0x452320]
shl esi, 4
mov dword [esi + eax + 0x143c], edx
jmp 0x40f3b6
cmp byte [edx + 0x578], bl
jne 0x40ef2e
mov ecx, dword [edi + 4]
mov edx, dword [edi]
mov eax, dword [edi + 8]
push 1
push ecx
mov ecx, dword [0x452308]
push edx
push eax
call fcn.00410000
jmp 0x40f3b6
mov edx, dword [esi + 0x18]
cmp edx, 7
jge 0x40ef92
lea edx, [edx + edx*2]
mov dword [esi + edx*4 + 0x1c], ecx
mov ecx, dword [esp + 0x10]
mov eax, dword [esi + 0x18]
cmp ecx, 0x63
je 0x40ef6f
mov ecx, dword [esi + ecx*4 + 0x1400]
lea eax, [eax + eax*2]
mov dword [esi + eax*4 + 0x20], ecx
mov eax, dword [esi + 0x18]
add eax, 3
lea edx, [eax + eax*2]
mov eax, dword [esp + 0x18]
mov dword [esi + edx*4], eax
inc dword [esi + 0x18]
jmp 0x40f3b6
mov edx, dword [esp + 0x14]
lea ecx, [eax + eax*2]
mov dword [esi + ecx*4 + 0x20], edx
mov eax, dword [esi + 0x18]
mov ecx, dword [esp + 0x18]
add eax, 3
lea eax, [eax + eax*2]
mov dword [esi + eax*4], ecx
inc dword [esi + 0x18]
jmp 0x40f3b6
cmp ecx, 0x63
je 0x40efb7
mov edx, dword [esi + ecx*4 + 0x1400]
mov eax, dword [0x452308]
imul edx, ebp
add dword [eax + 0x39c], edx
inc dword [0x455788]
jmp 0x40f3b6
imul ebp, eax
mov eax, dword [0x452308]
add dword [eax + 0x39c], ebp
inc dword [0x455788]
jmp 0x40f3b6
cmp dword [esi + 0x18], ebx
mov al, byte [esp + 0x24]
jle 0x40f0cf
cmp al, bl
jne 0x40f0cf
mov ecx, dword [0x452308]
cmp word [ecx + 0x32a], bx
jg 0x40f0cf
mov eax, dword [esi + 0x1c]
mov ecx, dword [esi + 0x20]
mov edx, dword [esi + 0x24]
mov dword [edi + 8], eax
mov dword [edi], ecx
mov dword [edi + 4], edx
mov dword [edi + 0xc], 1
cmp eax, 0x63
jne 0x40f07b
cmp edx, 1
jle 0x40f07b
mov eax, 0x10624dd3
imul ecx
mov ebp, dword [esi + 0x1428]
mov ecx, dword [0x452320]
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
imul eax, eax, 0x2710
add eax, 0xc7
push eax
push ebp
mov dword [edi + 4], 1
call fcn.0040de30
call fcn.0042e980
cdq
mov ecx, 0x32a
idiv ecx
add edx, 0xc8
cmp ebp, 9
ja 0x40f07b
cmp edx, ebx
jg 0x40f07b
mov eax, dword [0x452320]
shl ebp, 4
mov dword [eax + ebp + 0x143c], edx
dec dword [esi + 0x18]
mov eax, dword [esi + 0x18]
xor ecx, ecx
cmp eax, ebx
jle 0x40f0aa
lea eax, [esi + 0x1c]
lea ebx, [ebx]
mov edx, dword [eax + 0xc]
mov dword [eax], edx
mov edx, dword [eax + 0x10]
mov dword [eax + 4], edx
mov edx, dword [eax + 0x14]
mov dword [eax + 8], edx
inc ecx
add eax, 0xc
cmp ecx, dword [esi + 0x18]
jl 0x40f090
mov eax, dword [esi + 0x18]
lea eax, [eax + eax*2]
mov dword [esi + eax*4 + 0x20], ebx
mov eax, dword [esi + 0x18]
lea ecx, [eax + eax*2]
mov dword [esi + ecx*4 + 0x1c], ebx
mov eax, dword [esi + 0x18]
add eax, 3
lea edx, [eax + eax*2]
mov dword [esi + edx*4], ebx
jmp 0x40f3b6
cmp dword [esi + 0x1428], ebx
jle 0x40f3b6
cmp al, bl
jne 0x40f3b6
or eax, 0xffffffff
cmp dword [esi + 0x1430], ebx
jle 0x40f12e
add dword [esi + 0x143c], eax
cmp dword [esi + 0x143c], ebx
jg 0x40f12e
add dword [esi + 0x1428], eax
mov ecx, dword [esi + 0x1430]
mov edx, dword [esi + 0x1434]
mov dword [edi + 8], ecx
mov ecx, dword [esi + 0x1438]
mov dword [edi], edx
mov dword [edi + 4], ecx
mov dword [esi + 0x1430], ebx
mov dword [esi + 0x1434], ebx
mov dword [esi + 0x1438], ebx
cmp dword [esi + 0x1440], ebx
jle 0x40f176
add dword [esi + 0x144c], eax
cmp dword [esi + 0x144c], ebx
jg 0x40f176
add dword [esi + 0x1428], eax
mov edx, dword [esi + 0x1440]
mov ecx, dword [esi + 0x1444]
mov dword [edi + 8], edx
mov edx, dword [esi + 0x1448]
mov dword [edi], ecx
mov dword [edi + 4], edx
mov dword [esi + 0x1440], ebx
mov dword [esi + 0x1444], ebx
mov dword [esi + 0x1448], ebx
cmp dword [esi + 0x1450], ebx
jle 0x40f1be
add dword [esi + 0x145c], eax
cmp dword [esi + 0x145c], ebx
jg 0x40f1be
add dword [esi + 0x1428], eax
mov ecx, dword [esi + 0x1450]
mov edx, dword [esi + 0x1454]
mov dword [edi + 8], ecx
mov ecx, dword [esi + 0x1458]
mov dword [edi], edx
mov dword [edi + 4], ecx
mov dword [esi + 0x1450], ebx
mov dword [esi + 0x1454], ebx
mov dword [esi + 0x1458], ebx
cmp dword [esi + 0x1460], ebx
jle 0x40f206
add dword [esi + 0x146c], eax
cmp dword [esi + 0x146c], ebx
jg 0x40f206
add dword [esi + 0x1428], eax
mov edx, dword [esi + 0x1460]
mov ecx, dword [esi + 0x1464]
mov dword [edi + 8], edx
mov edx, dword [esi + 0x1468]
mov dword [edi], ecx
mov dword [edi + 4], edx
mov dword [esi + 0x1460], ebx
mov dword [esi + 0x1464], ebx
mov dword [esi + 0x1468], ebx
cmp dword [esi + 0x1470], ebx
jle 0x40f24e
add dword [esi + 0x147c], eax
cmp dword [esi + 0x147c], ebx
jg 0x40f24e
add dword [esi + 0x1428], eax
mov ecx, dword [esi + 0x1470]
mov edx, dword [esi + 0x1474]
mov dword [edi + 8], ecx
mov ecx, dword [esi + 0x1478]
mov dword [edi], edx
mov dword [edi + 4], ecx
mov dword [esi + 0x1470], ebx
mov dword [esi + 0x1474], ebx
mov dword [esi + 0x1478], ebx
cmp dword [esi + 0x1480], ebx
jle 0x40f296
add dword [esi + 0x148c], eax
cmp dword [esi + 0x148c], ebx
jg 0x40f296
add dword [esi + 0x1428], eax
mov edx, dword [esi + 0x1480]
mov ecx, dword [esi + 0x1484]
mov dword [edi + 8], edx
mov edx, dword [esi + 0x1488]
mov dword [edi], ecx
mov dword [edi + 4], edx
mov dword [esi + 0x1480], ebx
mov dword [esi + 0x1484], ebx
mov dword [esi + 0x1488], ebx
cmp dword [esi + 0x1490], ebx
jle 0x40f2de
add dword [esi + 0x149c], eax
cmp dword [esi + 0x149c], ebx
jg 0x40f2de
add dword [esi + 0x1428], eax
mov ecx, dword [esi + 0x1490]
mov edx, dword [esi + 0x1494]
mov dword [edi + 8], ecx
mov ecx, dword [esi + 0x1498]
mov dword [edi], edx
mov dword [edi + 4], ecx
mov dword [esi + 0x1490], ebx
mov dword [esi + 0x1494], ebx
mov dword [esi + 0x1498], ebx
cmp dword [esi + 0x14a0], ebx
jle 0x40f326
add dword [esi + 0x14ac], eax
cmp dword [esi + 0x14ac], ebx
jg 0x40f326
add dword [esi + 0x1428], eax
mov edx, dword [esi + 0x14a0]
mov ecx, dword [esi + 0x14a4]
mov dword [edi + 8], edx
mov edx, dword [esi + 0x14a8]
mov dword [edi], ecx
mov dword [edi + 4], edx
mov dword [esi + 0x14a0], ebx
mov dword [esi + 0x14a4], ebx
mov dword [esi + 0x14a8], ebx
cmp dword [esi + 0x14b0], ebx
jle 0x40f36e
add dword [esi + 0x14bc], eax
cmp dword [esi + 0x14bc], ebx
jg 0x40f36e
add dword [esi + 0x1428], eax
mov eax, dword [esi + 0x14b0]
mov ecx, dword [esi + 0x14b4]
mov edx, dword [esi + 0x14b8]
mov dword [edi + 8], eax
mov dword [edi], ecx
mov dword [edi + 4], edx
mov dword [esi + 0x14b0], ebx
mov dword [esi + 0x14b4], ebx
mov dword [esi + 0x14b8], ebx
cmp dword [esi + 0x14c0], ebx
jle 0x40f3b6
dec dword [esi + 0x14cc]
cmp dword [esi + 0x14cc], ebx
jg 0x40f3b6
dec dword [esi + 0x1428]
mov eax, dword [esi + 0x14c0]
mov ecx, dword [esi + 0x14c4]
mov edx, dword [esi + 0x14c8]
mov dword [edi + 8], eax
mov dword [edi], ecx
mov dword [edi + 4], edx
mov dword [esi + 0x14c0], ebx
mov dword [esi + 0x14c4], ebx
mov dword [esi + 0x14c8], ebx
mov eax, dword [0x452308]
dec word [eax + 0x32a]
mov eax, dword [0x452308]
cmp word [eax + 0x32a], bx
jg 0x40f3d9
xor ecx, ecx
mov word [eax + 0x32a], cx
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc
ret 8