Function at 0x45b620
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0xb
push 0
push 0
dec ecx
jne 0x45b628
push ebx
push esi
push edi
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x45bdea
push dword fs:[eax]
mov dword fs:[eax], esp
xor eax, eax
mov dword [ebp - 0x20], eax
xor eax, eax
mov dword [ebp - 0x10], eax
mov byte [ebp - 0x21], 0
mov eax, dword [ebp - 4]
cmp byte [eax + 0xdc], 0
jne 0x45b67e
mov eax, dword [ebp - 8]
call fcn.00451be4
call fcn.00408460
call fcn.00408a40
mov eax, dword [ebp - 4]
fstp qword [eax + 0xf0]
wait
jmp 0x45b68d
call fcn.004097e0
mov eax, dword [ebp - 4]
fstp qword [eax + 0xf0]
wait
mov eax, dword [ebp - 4]
call fcn.0045bea0
test eax, eax
jle 0x45b6d8
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe8]
test eax, eax
je 0x45b6bf
mov edx, dword [ebp - 4]
cmp byte [edx + 0x2c], 7
je 0x45b6bf
call fcn.00402e68
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0xe8], edx
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe4]
call fcn.00402e68
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0xe4], edx
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x154]
mov edx, dword [ebp - 8]
call fcn.004541f8
mov ebx, eax
test bl, bl
jne 0x45b78a
mov eax, dword [ebp - 4]
cmp byte [eax + 0xdc], 0
jne 0x45b78a
lea edx, [ebp - 0x30]
mov eax, dword [ebp - 4]
call fcn.0045a4f4
mov eax, dword [ebp - 0x30]
lea ecx, [ebp - 0x2c]
mov edx, 0x45be00
call fcn.004086f4
mov eax, dword [ebp - 0x2c]
call fcn.00408450
test al, al
je 0x45b78a
mov eax, dword [ebp - 8]
mov dword [ebp - 0x20], eax
push 0
lea edx, [ebp - 0x38]
mov eax, dword [ebp - 4]
call fcn.0045a4f4
mov eax, dword [ebp - 0x38]
lea ecx, [ebp - 0x34]
mov edx, 0x45be00
call fcn.004086f4
mov ecx, dword [ebp - 0x34]
mov dl, 1
mov eax, dword [0x40d6a8]
call fcn.00410404
mov dword [ebp - 8], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x154]
mov edx, dword [ebp - 8]
call fcn.004541f8
mov ebx, eax
test bl, bl
je 0x45b77c
mov byte [ebp - 0x21], 1
jmp 0x45b78a
mov eax, dword [ebp - 8]
call fcn.00402e68
mov eax, dword [ebp - 0x20]
mov dword [ebp - 8], eax
test bl, bl
jne 0x45b87b
mov eax, dword [ebp - 4]
cmp byte [eax + 0x18c], 0
jne 0x45b817
mov eax, dword [ebp - 4]
cmp word [eax + 0x92], 0
je 0x45b7c3
mov eax, dword [ebp - 4]
lea ecx, [eax + 0x3c]
mov ebx, dword [ebp - 4]
mov edx, dword [ebp - 4]
mov eax, dword [ebx + 0x94]
call dword [ebx + 0x90]
mov eax, dword [ebp - 4]
cmp byte [eax + 0x3c], 2
jne 0x45b7ed
lea edx, [ebp - 0x3c]
mov eax, 0xb7
call fcn.004082e8
mov ecx, dword [ebp - 0x3c]
mov dl, 1
mov eax, dword [0x454864]
call fcn.0040a010
call fcn.004035c0
mov eax, dword [ebp - 4]
cmp byte [eax + 0x3c], 0
jne 0x45b817
lea edx, [ebp - 0x40]
mov eax, 0xb6
call fcn.004082e8
mov ecx, dword [ebp - 0x40]
mov dl, 1
mov eax, dword [0x454808]
call fcn.0040a010
call fcn.004035c0
mov eax, dword [ebp - 4]
cmp byte [eax + 0x3c], 1
je 0x45b830
mov eax, dword [ebp - 4]
cmp byte [eax + 0x18c], 0
je 0x45b997
push ebp
call fcn.0045b240
pop ecx
test al, al
jne 0x45b997
mov eax, dword [0x465be8]
mov eax, dword [eax]
xor edx, edx
call fcn.00444214
mov eax, dword [ebp - 4]
call fcn.0045b1b4
lea edx, [ebp - 0x44]
mov eax, 0xb7
call fcn.004082e8
mov ecx, dword [ebp - 0x44]
mov dl, 1
mov eax, dword [0x4547b0]
call fcn.0040a010
call fcn.004035c0
jmp 0x45b997
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x154]
movzx eax, word [eax + 8]
mov edx, dword [ebp - 4]
mov dword [edx + 0xfc], eax
cmp byte [ebp - 0x21], 0
je 0x45b8a2
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0xfc], edx
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x154]
cmp word [eax + 8], 0
jbe 0x45b910
lea ecx, [ebp - 0x48]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x24]
mov edx, 3
call fcn.00452590
mov eax, dword [ebp - 0x48]
lea edx, [ebp - 0x1c]
call fcn.00407f1c
mov eax, dword [ebp - 0x1c]
cmp byte [eax + 1], 0x3a
je 0x45b8e5
mov dl, 2
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x40]
jmp 0x45b91a
lea eax, [ebp - 0x1c]
call fcn.00452dac
push eax
call sub.kernel32.dll_GetDriveTypeA
cmp eax, 2
jne 0x45b904
mov dl, 1
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x40]
jmp 0x45b91a
mov dl, 2
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x40]
jmp 0x45b91a
xor edx, edx
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x40]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x154]
cmp word [eax + 0xe], 0
jbe 0x45b997
cmp byte [ebp - 0x21], 0
jne 0x45b96d
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x3c]
test al, al
je 0x45b96d
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x154]
movzx eax, word [eax + 0xa]
mov edx, dword [ebp - 4]
cmp eax, dword [edx + 0xfc]
je 0x45b96d
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x154]
movzx edx, word [eax + 0xa]
inc edx
mov eax, dword [ebp - 4]
call fcn.0045b03c
mov dword [ebp - 8], eax
cmp byte [ebp - 0x21], 0
je 0x45b981
xor ecx, ecx
xor edx, edx
mov eax, dword [ebp - 8]
mov ebx, dword [eax]
call dword [ebx + 0xc]
jmp 0x45b997
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x154]
mov edx, dword [eax + 0x14]
xor ecx, ecx
mov eax, dword [ebp - 8]
mov ebx, dword [eax]
call dword [ebx + 0xc]
mov eax, dword [ebp - 4]
call fcn.0045bea0
test eax, eax
jne 0x45b9c9
mov cl, 2
mov dl, 1
mov eax, dword [0x4532f8]
call fcn.004543cc
mov ebx, eax
mov eax, dword [ebp - 4]
mov dword [eax + 0xe4], ebx
mov byte [ebx + 0x18], 7
mov eax, dword [ebp - 4]
mov dword [eax + 0xe8], ebx
mov word [ebp - 0x24], 0
xor eax, eax
mov dword [ebp - 0x14], eax
jmp 0x45bc96
mov dl, 1
mov eax, dword [0x453140]
call fcn.004533c4
mov dword [ebp - 0xc], eax
xor esi, esi
mov eax, dword [ebp - 4]
cmp byte [eax + 0xf8], 0
jne 0x45ba02
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x3c]
test al, al
jne 0x45ba15
push 0
push 0
lea edx, [ebp - 8]
mov eax, dword [ebp - 0xc]
call fcn.00453bb0
mov ebx, eax
jmp 0x45ba2b
mov eax, dword [ebp - 4]
push eax
push 0x45b190
lea edx, [ebp - 8]
mov eax, dword [ebp - 0xc]
call fcn.00453bb0
mov ebx, eax
inc esi
test bl, bl
jne 0x45ba62
cmp esi, 1
jne 0x45ba62
cmp word [ebp - 0x24], 0
jbe 0x45ba62
cmp dword [ebp - 0x10], 0
je 0x45ba4b
mov eax, dword [ebp - 0x10]
mov word [eax + 0x1e], 0
movzx edx, word [ebp - 0x24]
neg edx
mov cx, 1
mov eax, dword [ebp - 8]
mov edi, dword [eax]
call dword [edi + 0xc]
xor eax, eax
mov dword [ebp - 0x10], eax
test bl, bl
jne 0x45ba76
cmp esi, 2
je 0x45ba76
cmp word [ebp - 0x24], 0
jne 0x45b9ea
mov word [ebp - 0x24], 0
test bl, bl
jne 0x45baf7
mov eax, dword [ebp - 4]
cmp byte [eax + 0xf8], 0
je 0x45ba9e
mov eax, dword [ebp - 0xc]
call fcn.00402e68
xor eax, eax
mov dword [ebp - 0xc], eax
jmp 0x45bcac
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x3c]
test al, al
jne 0x45bab5
push ebp
call fcn.0045b240
pop ecx
test al, al
jne 0x45baed
mov eax, dword [ebp - 0xc]
call fcn.00402e68
xor eax, eax
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 4]
call fcn.0045b1b4
lea edx, [ebp - 0x4c]
mov eax, 0xb7
call fcn.004082e8
mov ecx, dword [ebp - 0x4c]
mov dl, 1
mov eax, dword [0x4547b0]
call fcn.0040a010
call fcn.004035c0
jmp 0x45baf7
xor eax, eax
mov dword [ebp - 0x14], eax
jmp 0x45bc96
mov eax, dword [ebp - 4]
cmp byte [eax + 0xf8], 0
je 0x45bb93
lea ecx, [ebp - 0x18]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe4]
mov edx, dword [ebp - 0xc]
mov ebx, dword [eax]
call dword [ebx + 0x48]
test al, al
je 0x45bb7e
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe4]
mov edx, dword [ebp - 0x18]
call fcn.00451460
mov edx, dword [0x453140]
call fcn.00402ff8
mov ebx, eax
mov esi, dword [ebx + 0x2c]
mov edx, dword [ebp - 0xc]
mov eax, ebx
mov ecx, dword [eax]
call dword [ecx + 8]
mov dword [ebx + 0x2c], esi
mov dword [ebp - 0x10], ebx
mov eax, dword [ebp - 0xc]
movzx edx, word [eax + 0x1e]
mov eax, dword [ebp - 4]
movzx eax, word [eax + 0x146]
add edx, eax
mov cx, 1
mov eax, dword [ebp - 8]
mov ebx, dword [eax]
call dword [ebx + 0xc]
mov eax, dword [ebp - 0xc]
call fcn.00402e68
xor eax, eax
mov dword [ebp - 0xc], eax
jmp 0x45bb93
mov eax, dword [ebp - 0xc]
call fcn.00402e68
xor eax, eax
mov dword [ebp - 0xc], eax
inc dword [ebp - 0x14]
jmp 0x45bc96
mov eax, dword [ebp - 4]
cmp byte [eax + 0xf8], 0
jne 0x45bc26
xor eax, eax
push ebp
push 0x45bbcc
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe4]
mov edx, dword [ebp - 0xc]
mov ecx, dword [eax]
call dword [ecx + 0x1c]
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x45bc26
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x154]
cmp word [eax + 8], 0
jbe 0x45bc50
mov eax, dword [ebp - 0xc]
call fcn.00453e20
test al, al
je 0x45bc50
lea ecx, [ebp - 0x54]
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 4]
call fcn.0045a8cc
cmp dword [ebp - 0xc], 0
je 0x45bc8d
mov eax, dword [ebp - 0xc]
movzx edx, word [eax + 0x1e]
mov eax, dword [ebp - 4]
movzx eax, word [eax + 0x146]
add edx, eax
mov cx, 1
mov eax, dword [ebp - 8]
mov ebx, dword [eax]
call dword [ebx + 0xc]
mov eax, dword [ebp - 0xc]
mov ax, word [eax + 0x1e]
test ax, ax
jbe 0x45bc93
mov word [ebp - 0x24], ax
mov eax, dword [ebp - 0xc]
mov dword [ebp - 0x10], eax
jmp 0x45bc93
mov word [ebp - 0x24], 0
inc dword [ebp - 0x14]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x154]
movzx eax, word [eax + 0xe]
cmp eax, dword [ebp - 0x14]
jg 0x45b9d9
mov eax, dword [ebp - 4]
mov ebx, dword [eax + 0x154]
cmp word [ebx + 8], 0
jbe 0x45bd68
mov eax, ebx
call fcn.00454354
test al, al
je 0x45bd68
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x154]
mov ax, word [eax + 8]
movzx edx, ax
mov ecx, dword [ebp - 4]
cmp edx, dword [ecx + 0xfc]
je 0x45bcfc
cmp byte [ebp - 0x21], 0
jne 0x45bcfc
movzx edx, ax
inc edx
mov eax, dword [ebp - 4]
call fcn.0045b03c
cmp byte [ebp - 0x21], 0
jne 0x45bd0f
lea edx, [ebp - 0x58]
mov eax, dword [ebp - 4]
call fcn.0045aa84
jmp 0x45bd68
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x154]
mov edx, dword [eax + 0x20]
xor ecx, ecx
mov eax, dword [ebp - 8]
mov ebx, dword [eax]
call dword [ebx + 0xc]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x154]
movzx ebx, word [eax + 0x18]
lea eax, [ebp - 0x28]
mov edx, ebx
call fcn.00404118
lea eax, [ebp - 0x28]
call fcn.00403fb4
mov edx, eax
mov ecx, ebx
mov eax, dword [ebp - 8]
mov ebx, dword [eax]
call dword [ebx + 4]
mov edx, dword [ebp - 0x28]
mov eax, dword [ebp - 4]
call fcn.0045ab5c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x154]
mov byte [eax + 0x24], 0
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x154]
movzx eax, word [eax + 8]
inc eax
mov edx, dword [ebp - 4]
mov dword [edx + 0x40], eax
cmp byte [ebp - 0x21], 0
jne 0x45bd9a
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x154]
movzx eax, word [eax + 8]
mov edx, dword [ebp - 4]
mov dword [edx + 0xfc], eax
jmp 0x45bda5
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0xfc], edx
mov eax, dword [ebp - 4]
mov dl, byte [eax + 0x2c]
mov eax, dword [ebp - 4]
call fcn.0045be08
cmp byte [ebp - 0x21], 0
je 0x45bdc7
mov eax, dword [ebp - 8]
call fcn.00402e68
mov eax, dword [ebp - 0x20]
mov dword [ebp - 8], eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x45bdf1
lea eax, [ebp - 0x58]
mov edx, 0xd
call fcn.00403b88
lea eax, [ebp - 0x1c]
call fcn.00403b64
ret