Function at 0x433840
Capabilities:
Get disk information

Disassembly:
sub esp, 0xc
push ebx
push ebp
mov ebp, dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
push esi
mov esi, dword [0x460030]
mov ebx, 0x45e878
mov eax, dword [ebx]
push eax
call ebp
add ebx, 4
cmp ebx, 0x45e89c
jl 0x433857
xor ebx, ebx
lea ebp, [esi + 0x208]
mov ecx, ebp
mov dword [edi], ebx
mov dword [edi + 4], ebx
mov dword [edi + 8], ebx
mov dword [edi + 0xc], ebx
call fcn.00439c30
test eax, eax
je 0x4338be
mov ecx, ebp
call fcn.00439c30
mov ecx, dword [esi + 0x1598]
sub ecx, eax
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
cmp eax, 3
jle 0x4338be
mov ecx, dword [0x46000c]
mov edx, 2
mov eax, 1
mov word [0x46277c], dx
mov word [ecx + 0x328], ax
mov ecx, ebp
call fcn.00439c30
lea edx, [esp + 0xc]
push edx
mov ecx, ebp
mov dword [esi + 0x1598], eax
call fcn.0043a3b0
mov eax, dword [esp + 0xc]
cmp eax, 0x64
jl 0x4338e7
sub eax, 0x64
mov dword [esp + 0xc], eax
cmp eax, ebx
jle 0x433a04
mov edx, dword [esp + 0x10]
cmp edx, ebx
jle 0x433a04
cmp byte [esp + 0x1c], bl
jne 0x433967
mov ecx, dword [0x46000c]
cmp word [ecx + 0x326], bx
jg 0x433967
cmp eax, 0x64
jne 0x43391e
mov eax, 0x63
mov dword [esp + 0xc], eax
mov dword [edi + 8], eax
cmp eax, 0x63
je 0x433946
cmp eax, 0x14
mov dword [edi], 1
jle 0x43393a
mov edx, dword [esp + 0x14]
jmp 0x433dc3
mov dword [edi + 4], 1
jmp 0x433dc6
mov eax, 1
cmp dword [esp + 0x14], eax
mov dword [edi], edx
mov dword [edi + 4], eax
jle 0x433dc6
mov dword [edi + 4], eax
call fcn.0043bcb0
jmp 0x433dc6
mov ecx, dword [esi + 0x20]
cmp ecx, 0x14
jge 0x4339d0
cmp dword [esi + 0x10], ebx
jne 0x43397d
mov edx, dword [esi + 0x1598]
mov dword [esi + 0x10], edx
lea ecx, [ecx + ecx*2 + 6]
mov dword [esi + ecx*8], eax
mov eax, dword [esi + 0x20]
lea edx, [eax + eax*2]
mov eax, dword [esp + 0x14]
mov dword [esi + edx*8 + 0x34], eax
mov eax, dword [esi + 0x20]
mov edx, dword [esi + 0x1598]
lea ecx, [eax + eax*2]
mov dword [esi + ecx*8 + 0x3c], edx
mov eax, dword [esi + 0x20]
mov ecx, dword [esp + 0x10]
lea eax, [eax + eax*2]
mov dword [esi + eax*8 + 0x2c], ecx
mov edx, dword [esp + 0xc]
mov eax, 1
add dword [esi + 0x20], eax
add edx, 0xfffffff1
cmp edx, 5
ja 0x433dc6
add dword [esi + 0x24], eax
jmp 0x433dc6
cmp edx, 0x3e8
jl 0x433dc6
add dword [esi + 0x1f4], edx
mov eax, dword [esi + 0x1f4]
cmp eax, 0x493e0
jl 0x4339f9
mov dword [esi + 0x1f4], 0x493e0
inc dword [0x462ab8]
jmp 0x433dc6
cmp dword [esi + 0x20], ebx
jle 0x433add
cmp byte [esp + 0x1c], bl
jne 0x433add
mov eax, dword [0x46000c]
cmp word [eax + 0x326], bx
jg 0x433add
mov ecx, dword [esi + 0x2c]
mov eax, dword [esi + 0x30]
mov dword [edi], ecx
mov ecx, dword [esi + 0x34]
mov ebp, 1
mov dword [edi + 8], eax
mov dword [edi + 4], ecx
mov dword [edi + 0xc], ebp
cmp eax, 0x63
jne 0x433a53
cmp ecx, ebp
jle 0x433a53
mov dword [edi + 4], ebp
call fcn.0043bcb0
mov eax, dword [edi + 8]
cmp eax, 0x14
jg 0x433a63
cmp eax, 0xf
jl 0x433a63
dec dword [esi + 0x24]
dec dword [esi + 0x20]
mov eax, dword [esi + 0x20]
cmp eax, ebx
jg 0x433a72
mov dword [esi + 0x10], ebx
jmp 0x433a78
mov edx, dword [esi + 0x3c]
mov dword [esi + 0x10], edx
xor ecx, ecx
cmp eax, ebx
jle 0x433aae
lea eax, [esi + 0x28]
mov edx, dword [eax + 0x18]
mov dword [eax], edx
mov edx, dword [eax + 0x1c]
mov dword [eax + 4], edx
mov edx, dword [eax + 0x20]
mov dword [eax + 8], edx
mov edx, dword [eax + 0x24]
mov dword [eax + 0xc], edx
mov edx, dword [eax + 0x28]
mov dword [eax + 0x10], edx
mov edx, dword [eax + 0x2c]
mov dword [eax + 0x14], edx
add ecx, ebp
add eax, 0x18
cmp ecx, dword [esi + 0x20]
jl 0x433a81
mov eax, dword [esi + 0x20]
lea eax, [eax + eax*2]
mov dword [esi + eax*8 + 0x3c], ebx
mov eax, dword [esi + 0x20]
lea ecx, [eax + eax*2]
mov dword [esi + ecx*8 + 0x2c], ebx
mov eax, dword [esi + 0x20]
add eax, 2
lea edx, [eax + eax*2]
mov dword [esi + edx*8], ebx
mov eax, dword [esi + 0x20]
lea eax, [eax + eax*2]
mov dword [esi + eax*8 + 0x34], ebx
jmp 0x433dc6
cmp dword [esi + 0x15f4], ebx
jle 0x433dc6
cmp byte [esp + 0x1c], bl
jne 0x433dc6
or eax, 0xffffffff
cmp dword [esi + 0x15f8], ebx
jle 0x433b3e
add dword [esi + 0x1604], eax
cmp dword [esi + 0x1604], ebx
jg 0x433b3e
add dword [esi + 0x15f4], eax
mov ecx, dword [esi + 0x15f8]
mov edx, dword [esi + 0x15fc]
mov dword [edi + 8], ecx
mov ecx, dword [esi + 0x1600]
mov dword [edi], edx
mov dword [edi + 4], ecx
mov dword [esi + 0x15f8], ebx
mov dword [esi + 0x15fc], ebx
mov dword [esi + 0x1600], ebx
cmp dword [esi + 0x1608], ebx
jle 0x433b86
add dword [esi + 0x1614], eax
cmp dword [esi + 0x1614], ebx
jg 0x433b86
add dword [esi + 0x15f4], eax
mov edx, dword [esi + 0x1608]
mov ecx, dword [esi + 0x160c]
mov dword [edi + 8], edx
mov edx, dword [esi + 0x1610]
mov dword [edi], ecx
mov dword [edi + 4], edx
mov dword [esi + 0x1608], ebx
mov dword [esi + 0x160c], ebx
mov dword [esi + 0x1610], ebx
cmp dword [esi + 0x1618], ebx
jle 0x433bce
add dword [esi + 0x1624], eax
cmp dword [esi + 0x1624], ebx
jg 0x433bce
add dword [esi + 0x15f4], eax
mov ecx, dword [esi + 0x1618]
mov edx, dword [esi + 0x161c]
mov dword [edi + 8], ecx
mov ecx, dword [esi + 0x1620]
mov dword [edi], edx
mov dword [edi + 4], ecx
mov dword [esi + 0x1618], ebx
mov dword [esi + 0x161c], ebx
mov dword [esi + 0x1620], ebx
cmp dword [esi + 0x1628], ebx
jle 0x433c16
add dword [esi + 0x1634], eax
cmp dword [esi + 0x1634], ebx
jg 0x433c16
add dword [esi + 0x15f4], eax
mov edx, dword [esi + 0x1628]
mov ecx, dword [esi + 0x162c]
mov dword [edi + 8], edx
mov edx, dword [esi + 0x1630]
mov dword [edi], ecx
mov dword [edi + 4], edx
mov dword [esi + 0x1628], ebx
mov dword [esi + 0x162c], ebx
mov dword [esi + 0x1630], ebx
cmp dword [esi + 0x1638], ebx
jle 0x433c5e
add dword [esi + 0x1644], eax
cmp dword [esi + 0x1644], ebx
jg 0x433c5e
add dword [esi + 0x15f4], eax
mov ecx, dword [esi + 0x1638]
mov edx, dword [esi + 0x163c]
mov dword [edi + 8], ecx
mov ecx, dword [esi + 0x1640]
mov dword [edi], edx
mov dword [edi + 4], ecx
mov dword [esi + 0x1638], ebx
mov dword [esi + 0x163c], ebx
mov dword [esi + 0x1640], ebx
cmp dword [esi + 0x1648], ebx
jle 0x433ca6
add dword [esi + 0x1654], eax
cmp dword [esi + 0x1654], ebx
jg 0x433ca6
add dword [esi + 0x15f4], eax
mov edx, dword [esi + 0x1648]
mov ecx, dword [esi + 0x164c]
mov dword [edi + 8], edx
mov edx, dword [esi + 0x1650]
mov dword [edi], ecx
mov dword [edi + 4], edx
mov dword [esi + 0x1648], ebx
mov dword [esi + 0x164c], ebx
mov dword [esi + 0x1650], ebx
cmp dword [esi + 0x1658], ebx
jle 0x433cee
add dword [esi + 0x1664], eax
cmp dword [esi + 0x1664], ebx
jg 0x433cee
add dword [esi + 0x15f4], eax
mov ecx, dword [esi + 0x1658]
mov edx, dword [esi + 0x165c]
mov dword [edi + 8], ecx
mov ecx, dword [esi + 0x1660]
mov dword [edi], edx
mov dword [edi + 4], ecx
mov dword [esi + 0x1658], ebx
mov dword [esi + 0x165c], ebx
mov dword [esi + 0x1660], ebx
cmp dword [esi + 0x1668], ebx
jle 0x433d36
add dword [esi + 0x1674], eax
cmp dword [esi + 0x1674], ebx
jg 0x433d36
add dword [esi + 0x15f4], eax
mov edx, dword [esi + 0x1668]
mov ecx, dword [esi + 0x166c]
mov dword [edi + 8], edx
mov edx, dword [esi + 0x1670]
mov dword [edi], ecx
mov dword [edi + 4], edx
mov dword [esi + 0x1668], ebx
mov dword [esi + 0x166c], ebx
mov dword [esi + 0x1670], ebx
cmp dword [esi + 0x1678], ebx
jle 0x433d7e
add dword [esi + 0x1684], eax
cmp dword [esi + 0x1684], ebx
jg 0x433d7e
add dword [esi + 0x15f4], eax
mov eax, dword [esi + 0x1678]
mov ecx, dword [esi + 0x167c]
mov edx, dword [esi + 0x1680]
mov dword [edi + 8], eax
mov dword [edi], ecx
mov dword [edi + 4], edx
mov dword [esi + 0x1678], ebx
mov dword [esi + 0x167c], ebx
mov dword [esi + 0x1680], ebx
cmp dword [esi + 0x1688], ebx
jle 0x433dc6
dec dword [esi + 0x1694]
cmp dword [esi + 0x1694], ebx
jg 0x433dc6
dec dword [esi + 0x15f4]
mov eax, dword [esi + 0x1688]
mov ecx, dword [esi + 0x168c]
mov edx, dword [esi + 0x1690]
mov dword [edi + 8], eax
mov dword [edi], ecx
mov dword [esi + 0x1688], ebx
mov dword [esi + 0x168c], ebx
mov dword [esi + 0x1690], ebx
mov dword [edi + 4], edx
mov ecx, dword [0x46000c]
dec word [ecx + 0x326]
movzx eax, word [ecx + 0x326]
pop esi
pop ebp
cmp ax, bx
pop ebx
jg 0x433deb
xor eax, eax
mov word [ecx + 0x326], ax
mov eax, edi
add esp, 0xc
ret 4