Function at 0x40eca0
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, 0x451358
mov eax, dword [edi]
push eax
call ebx
add edi, 4
cmp edi, 0x45137c
jl 0x40ecb4
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.0042c0d0
test eax, eax
je 0x40ed1c
mov ecx, ebp
call fcn.0042c0d0
mov ecx, dword [esi + 0x13fc]
sub ecx, eax
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
cmp eax, 3
jle 0x40ed1c
mov ecx, dword [0x453308]
mov edx, 2
mov eax, 1
mov word [0x4518a0], dx
mov word [ecx + 0x32e], ax
mov ecx, ebp
call fcn.0042c0d0
lea edx, [esp + 0x10]
push edx
mov ecx, ebp
mov dword [esi + 0x13fc], eax
call fcn.0042c850
mov ecx, dword [esp + 0x10]
cmp ecx, 0x64
jl 0x40ed45
sub ecx, 0x64
mov dword [esp + 0x10], ecx
cmp ecx, ebx
jle 0x40efb0
mov eax, dword [esp + 0x14]
cmp eax, ebx
jle 0x40efb0
cmp eax, 0x493e0
jne 0x40edc5
call fcn.0042ede0
cdq
mov ecx, 0x64
idiv ecx
cmp edx, 0x21
jne 0x40edbd
call fcn.0042ede0
and eax, 0x80000001
jns 0x40ed83
dec eax
or eax, 0xfffffffe
inc eax
jne 0x40edaa
call fcn.0042ede0
and eax, 0x80000001
jns 0x40ed96
dec eax
or eax, 0xfffffffe
inc eax
neg eax
sbb eax, eax
and eax, 0xfffcf2c0
add eax, 0x927c0
mov dword [esp + 0x14], eax
jmp 0x40edc1
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov ebp, 2
mov dword [esp + 0x18], ebp
jmp 0x40edc9
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov ebp, dword [esp + 0x18]
mov edx, dword [0x453308]
cmp byte [esp + 0x24], bl
jne 0x40eee9
cmp word [edx + 0x32a], bx
jg 0x40eee9
cmp ecx, 0x64
jne 0x40edf4
mov ecx, 0x63
mov dword [esp + 0x10], ecx
mov dword [edi + 8], ecx
cmp ecx, 0x63
je 0x40ee0d
mov edx, dword [esi + ecx*4 + 0x1400]
mov dword [edi], edx
mov dword [edi + 4], ebp
jmp 0x40f396
mov dword [edi], eax
mov dword [edi + 4], 1
cmp eax, 0x2710
je 0x40ee24
cmp eax, 0x4e20
jne 0x40ee6e
call fcn.0042ede0
cdq
mov ecx, 0x64
idiv ecx
cmp edx, 0x23
jge 0x40ee6a
mov eax, dword [esi + 0x1424]
cmp eax, 0x2710
jge 0x40ee6a
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 [0x456780]
pop esi
pop ebp
pop ebx
add esp, 0xc
ret 8
mov ebp, dword [esp + 0x18]
cmp ebp, 1
jle 0x40f396
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 [0x453320]
push edx
push esi
mov dword [edi + 4], 1
call fcn.0040de30
call fcn.0042ede0
cdq
mov ecx, 0x32a
idiv ecx
add edx, 0xc8
cmp esi, 9
ja 0x40f396
cmp edx, ebx
jg 0x40f396
mov eax, dword [0x453320]
shl esi, 4
mov dword [esi + eax + 0x143c], edx
jmp 0x40f396
cmp byte [edx + 0x578], bl
jne 0x40ef0e
mov ecx, dword [edi + 4]
mov edx, dword [edi]
mov eax, dword [edi + 8]
push 1
push ecx
mov ecx, dword [0x453308]
push edx
push eax
call fcn.0040ffe0
jmp 0x40f396
mov edx, dword [esi + 0x18]
cmp edx, 7
jge 0x40ef72
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 0x40ef4f
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 0x40f396
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 0x40f396
cmp ecx, 0x63
je 0x40ef97
mov edx, dword [esi + ecx*4 + 0x1400]
mov eax, dword [0x453308]
imul edx, ebp
add dword [eax + 0x39c], edx
inc dword [0x456788]
jmp 0x40f396
imul ebp, eax
mov eax, dword [0x453308]
add dword [eax + 0x39c], ebp
inc dword [0x456788]
jmp 0x40f396
cmp dword [esi + 0x18], ebx
mov al, byte [esp + 0x24]
jle 0x40f0af
cmp al, bl
jne 0x40f0af
mov ecx, dword [0x453308]
cmp word [ecx + 0x32a], bx
jg 0x40f0af
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 0x40f05b
cmp edx, 1
jle 0x40f05b
mov eax, 0x10624dd3
imul ecx
mov ebp, dword [esi + 0x1428]
mov ecx, dword [0x453320]
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.0042ede0
cdq
mov ecx, 0x32a
idiv ecx
add edx, 0xc8
cmp ebp, 9
ja 0x40f05b
cmp edx, ebx
jg 0x40f05b
mov eax, dword [0x453320]
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 0x40f08a
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 0x40f070
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 0x40f396
cmp dword [esi + 0x1428], ebx
jle 0x40f396
cmp al, bl
jne 0x40f396
or eax, 0xffffffff
cmp dword [esi + 0x1430], ebx
jle 0x40f10e
add dword [esi + 0x143c], eax
cmp dword [esi + 0x143c], ebx
jg 0x40f10e
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 0x40f156
add dword [esi + 0x144c], eax
cmp dword [esi + 0x144c], ebx
jg 0x40f156
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 0x40f19e
add dword [esi + 0x145c], eax
cmp dword [esi + 0x145c], ebx
jg 0x40f19e
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 0x40f1e6
add dword [esi + 0x146c], eax
cmp dword [esi + 0x146c], ebx
jg 0x40f1e6
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 0x40f22e
add dword [esi + 0x147c], eax
cmp dword [esi + 0x147c], ebx
jg 0x40f22e
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 0x40f276
add dword [esi + 0x148c], eax
cmp dword [esi + 0x148c], ebx
jg 0x40f276
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 0x40f2be
add dword [esi + 0x149c], eax
cmp dword [esi + 0x149c], ebx
jg 0x40f2be
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 0x40f306
add dword [esi + 0x14ac], eax
cmp dword [esi + 0x14ac], ebx
jg 0x40f306
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 0x40f34e
add dword [esi + 0x14bc], eax
cmp dword [esi + 0x14bc], ebx
jg 0x40f34e
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 0x40f396
dec dword [esi + 0x14cc]
cmp dword [esi + 0x14cc], ebx
jg 0x40f396
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 [0x453308]
dec word [eax + 0x32a]
mov eax, dword [0x453308]
cmp word [eax + 0x32a], bx
jg 0x40f3b9
xor ecx, ecx
mov word [eax + 0x32a], cx
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc
ret 8