Function at 0x458898
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0xb
push 0
push 0
dec ecx
jne 0x4588a0
push ebx
push esi
push edi
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x45908d
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [0x45b920]
mov eax, dword [eax]
mov si, word [eax + 0x38]
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 + 0xe4], 0
jne 0x458901
mov eax, dword [ebp - 8]
call fcn.00451368
call fcn.004081b0
call fcn.00408708
mov eax, dword [ebp - 4]
fstp qword [eax + 0xf8]
wait
jmp 0x458910
call fcn.004091fc
mov eax, dword [ebp - 4]
fstp qword [eax + 0xf8]
wait
mov eax, dword [ebp - 4]
call fcn.00459144
test eax, eax
jle 0x45895b
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xf0]
test eax, eax
je 0x458937
mov edx, dword [ebp - 4]
cmp byte [edx + 0x2c], 7
je 0x458937
call fcn.00402f1c
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0xf0], edx
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xec]
call fcn.00402f1c
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0xec], edx
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x130]
mov edx, dword [ebp - 8]
call fcn.00450d18
mov ebx, eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x130]
mov dx, word [eax + 8]
cmp dx, 0x3e7
ja 0x458996
cmp word [eax + 0xa], 0x3e7
ja 0x458996
cmp dx, word [eax + 0xa]
jb 0x458996
cmp dword [eax + 0x14], 0
jge 0x458998
xor ebx, ebx
test bl, bl
jne 0x458a37
mov eax, dword [ebp - 4]
cmp byte [eax + 0xe4], 0
jne 0x458a37
lea edx, [ebp - 0x30]
mov eax, dword [ebp - 4]
call fcn.00457750
mov eax, dword [ebp - 0x30]
lea ecx, [ebp - 0x2c]
mov edx, 0x4590a4
call fcn.00408420
mov eax, dword [ebp - 0x2c]
call fcn.004081a0
test al, al
je 0x458a37
mov eax, dword [ebp - 8]
mov dword [ebp - 0x20], eax
push 0
lea edx, [ebp - 0x38]
mov eax, dword [ebp - 4]
call fcn.00457750
mov eax, dword [ebp - 0x38]
lea ecx, [ebp - 0x34]
mov edx, 0x4590a4
call fcn.00408420
mov ecx, dword [ebp - 0x34]
mov dl, 1
mov eax, dword [0x40d01c]
call fcn.0040fd78
mov dword [ebp - 8], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x130]
mov edx, dword [ebp - 8]
call fcn.00450d18
mov ebx, eax
test bl, bl
je 0x458a29
mov byte [ebp - 0x21], 1
jmp 0x458a37
mov eax, dword [ebp - 8]
call fcn.00402f1c
mov eax, dword [ebp - 0x20]
mov dword [ebp - 8], eax
test bl, bl
jne 0x458b28
mov eax, dword [ebp - 4]
cmp byte [eax + 0x168], 0
jne 0x458ac4
mov eax, dword [ebp - 4]
cmp word [eax + 0x92], 0
je 0x458a70
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 0x458a9a
lea edx, [ebp - 0x3c]
mov eax, 0xb7
call fcn.00408038
mov ecx, dword [ebp - 0x3c]
mov dl, 1
mov eax, dword [0x4519e8]
call fcn.00409a2c
call fcn.00403674
mov eax, dword [ebp - 4]
cmp byte [eax + 0x3c], 0
jne 0x458ac4
lea edx, [ebp - 0x40]
mov eax, 0xb6
call fcn.00408038
mov ecx, dword [ebp - 0x40]
mov dl, 1
mov eax, dword [0x45198c]
call fcn.00409a2c
call fcn.00403674
mov eax, dword [ebp - 4]
cmp byte [eax + 0x3c], 1
je 0x458add
mov eax, dword [ebp - 4]
cmp byte [eax + 0x168], 0
je 0x458c44
push ebp
call fcn.004584ac
pop ecx
test al, al
jne 0x458c44
mov eax, dword [0x45b920]
mov eax, dword [eax]
mov edx, esi
call fcn.0042d218
mov eax, dword [ebp - 4]
call fcn.0045831c
lea edx, [ebp - 0x44]
mov eax, 0xb7
call fcn.00408038
mov ecx, dword [ebp - 0x44]
mov dl, 1
mov eax, dword [0x451934]
call fcn.00409a2c
call fcn.00403674
jmp 0x458c44
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x130]
movzx eax, word [eax + 8]
mov edx, dword [ebp - 4]
mov dword [edx + 0x104], eax
cmp byte [ebp - 0x21], 0
je 0x458b4f
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x104], edx
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x130]
cmp word [eax + 8], 0
jbe 0x458bbd
lea ecx, [ebp - 0x48]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x24]
mov edx, 3
call fcn.00451534
mov eax, dword [ebp - 0x48]
lea edx, [ebp - 0x1c]
call fcn.00407cbc
mov eax, dword [ebp - 0x1c]
cmp byte [eax + 1], 0x3a
je 0x458b92
mov dl, 2
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x40]
jmp 0x458bc7
lea eax, [ebp - 0x1c]
call fcn.00451858
push eax
call sub.kernel32.dll_GetDriveTypeA
cmp eax, 2
jne 0x458bb1
mov dl, 1
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x40]
jmp 0x458bc7
mov dl, 2
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
call dword [ecx + 0x40]
jmp 0x458bc7
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 + 0x130]
cmp word [eax + 0xe], 0
jbe 0x458c44
cmp byte [ebp - 0x21], 0
jne 0x458c1a
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x3c]
test al, al
je 0x458c1a
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x130]
movzx eax, word [eax + 0xa]
mov edx, dword [ebp - 4]
cmp eax, dword [edx + 0x104]
je 0x458c1a
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x130]
movzx edx, word [eax + 0xa]
inc edx
mov eax, dword [ebp - 4]
call fcn.0045818c
mov dword [ebp - 8], eax
cmp byte [ebp - 0x21], 0
je 0x458c2e
xor ecx, ecx
xor edx, edx
mov eax, dword [ebp - 8]
mov ebx, dword [eax]
call dword [ebx + 0xc]
jmp 0x458c44
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x130]
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.00459144
test eax, eax
jne 0x458c76
mov cl, 2
mov dl, 1
mov eax, dword [0x450170]
call fcn.00450ee4
mov ebx, eax
mov eax, dword [ebp - 4]
mov dword [eax + 0xec], ebx
mov byte [ebx + 0x18], 7
mov eax, dword [ebp - 4]
mov dword [eax + 0xf0], ebx
mov word [ebp - 0x24], 0
xor eax, eax
mov dword [ebp - 0x14], eax
jmp 0x458f39
mov eax, dword [ebp - 4]
call fcn.00458304
mov dword [ebp - 0xc], eax
xor esi, esi
mov eax, dword [ebp - 4]
cmp byte [eax + 0x100], 0
jne 0x458cab
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x3c]
test al, al
jne 0x458cbe
push 0
push 0
lea edx, [ebp - 8]
mov eax, dword [ebp - 0xc]
call fcn.00450768
mov ebx, eax
jmp 0x458cd4
mov eax, dword [ebp - 4]
push eax
push 0x4582e0
lea edx, [ebp - 8]
mov eax, dword [ebp - 0xc]
call fcn.00450768
mov ebx, eax
inc esi
test bl, bl
jne 0x458d0b
cmp esi, 1
jne 0x458d0b
cmp word [ebp - 0x24], 0
jbe 0x458d0b
cmp dword [ebp - 0x10], 0
je 0x458cf4
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 0x458d1f
cmp esi, 2
je 0x458d1f
cmp word [ebp - 0x24], 0
jne 0x458c93
mov word [ebp - 0x24], 0
test bl, bl
jne 0x458da0
mov eax, dword [ebp - 4]
cmp byte [eax + 0x100], 0
je 0x458d47
mov eax, dword [ebp - 0xc]
call fcn.00402f1c
xor eax, eax
mov dword [ebp - 0xc], eax
jmp 0x458f4f
mov eax, dword [ebp - 4]
mov edx, dword [eax]
call dword [edx + 0x3c]
test al, al
jne 0x458d5e
push ebp
call fcn.004584ac
pop ecx
test al, al
jne 0x458d96
mov eax, dword [ebp - 0xc]
call fcn.00402f1c
xor eax, eax
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 4]
call fcn.0045831c
lea edx, [ebp - 0x4c]
mov eax, 0xb7
call fcn.00408038
mov ecx, dword [ebp - 0x4c]
mov dl, 1
mov eax, dword [0x451934]
call fcn.00409a2c
call fcn.00403674
jmp 0x458da0
xor eax, eax
mov dword [ebp - 0x14], eax
jmp 0x458f39
mov eax, dword [ebp - 4]
cmp byte [eax + 0x100], 0
je 0x458e39
lea ecx, [ebp - 0x18]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xec]
mov edx, dword [ebp - 0xc]
mov ebx, dword [eax]
call dword [ebx + 0x48]
test al, al
je 0x458e24
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xec]
mov edx, dword [ebp - 0x18]
call fcn.0044ecd4
mov edx, dword [0x44ffb8]
call fcn.004030ac
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 - 0xc]
movzx eax, word [eax + 0x22]
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.00402f1c
xor eax, eax
mov dword [ebp - 0xc], eax
jmp 0x458e39
mov eax, dword [ebp - 0xc]
call fcn.00402f1c
xor eax, eax
mov dword [ebp - 0xc], eax
inc dword [ebp - 0x14]
jmp 0x458f39
mov eax, dword [ebp - 4]
cmp byte [eax + 0x100], 0
jne 0x458ecc
xor eax, eax
push ebp
push 0x458e72
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xec]
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 0x458ecc
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x130]
cmp word [eax + 8], 0
jbe 0x458ef6
mov eax, dword [ebp - 0xc]
call fcn.004509a4
test al, al
je 0x458ef6
lea ecx, [ebp - 0x54]
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 4]
call fcn.00457a10
cmp dword [ebp - 0xc], 0
je 0x458f30
mov eax, dword [ebp - 0xc]
movzx edx, word [eax + 0x1e]
mov eax, dword [ebp - 0xc]
movzx eax, word [eax + 0x22]
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 0x458f36
mov word [ebp - 0x24], ax
mov eax, dword [ebp - 0xc]
mov dword [ebp - 0x10], eax
jmp 0x458f36
mov word [ebp - 0x24], 0
inc dword [ebp - 0x14]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x130]
movzx eax, word [eax + 0xe]
cmp eax, dword [ebp - 0x14]
jg 0x458c86
mov eax, dword [ebp - 4]
mov ebx, dword [eax + 0x130]
cmp word [ebx + 8], 0
jbe 0x45900b
mov eax, ebx
call fcn.00450e74
test al, al
je 0x45900b
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x130]
mov ax, word [eax + 8]
movzx edx, ax
mov ecx, dword [ebp - 4]
cmp edx, dword [ecx + 0x104]
je 0x458f9f
cmp byte [ebp - 0x21], 0
jne 0x458f9f
movzx edx, ax
inc edx
mov eax, dword [ebp - 4]
call fcn.0045818c
cmp byte [ebp - 0x21], 0
jne 0x458fb2
lea edx, [ebp - 0x58]
mov eax, dword [ebp - 4]
call fcn.00457bf0
jmp 0x45900b
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x130]
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 + 0x130]
movzx ebx, word [eax + 0x18]
lea eax, [ebp - 0x28]
mov edx, ebx
call fcn.00404158
lea eax, [ebp - 0x28]
call fcn.00403ff4
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.00457cec
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x130]
mov byte [eax + 0x24], 0
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x130]
movzx eax, word [eax + 8]
inc eax
mov edx, dword [ebp - 4]
mov dword [edx + 0x40], eax
cmp byte [ebp - 0x21], 0
jne 0x45903d
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x130]
movzx eax, word [eax + 8]
mov edx, dword [ebp - 4]
mov dword [edx + 0x104], eax
jmp 0x459048
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x104], edx
mov eax, dword [ebp - 4]
mov dl, byte [eax + 0x2c]
mov eax, dword [ebp - 4]
call fcn.004590ac
cmp byte [ebp - 0x21], 0
je 0x45906a
mov eax, dword [ebp - 8]
call fcn.00402f1c
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 0x459094
lea eax, [ebp - 0x58]
mov edx, 0xd
call fcn.00403bc8
lea eax, [ebp - 0x1c]
call fcn.00403ba4
ret