Function at 0x45da20
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x47dc
call fcn.00526010
push esi
push edi
lea edi, [ebp - 0x47dc]
mov ecx, 0x11f7
mov eax, 0xcccccccc
rep stosd dword es:[edi], eax
mov eax, dword [0x5a2184]
xor eax, ebp
mov dword [ebp - 4], eax
mov dword [ebp - 8], 0
mov dword [ebp - 0xc], 0
mov dword [ebp - 0x401c], 0
mov eax, dword [ebp + 0xc]
push eax
call fcn.00523ac0
add esp, 4
cmp eax, 0x2000
jb 0x45da80
mov eax, 0x26
jmp 0x45e082
cmp dword [0x5a51dc], 0x14
jl 0x45dc64
mov ecx, dword [ebp + 0x10]
and ecx, 0x7000
jne 0x45daa2
mov edx, dword [ebp + 0x10]
not edx
and edx, 1
je 0x45dae4
mov eax, dword [ebp + 0x14]
push eax
mov ecx, dword [ebp + 0x10]
push ecx
mov edx, dword [ebp + 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call fcn.0045e1f0
add esp, 0x10
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], 0
jne 0x45dacd
mov eax, dword [ebp - 0xc]
jmp 0x45e082
cmp dword [ebp - 0xc], 0x11178
jne 0x45dae4
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 4]
not edx
and edx, dword [ebp + 0x10]
mov dword [ebp + 0x10], edx
mov eax, dword [ebp + 0xc]
push eax
push 0x2000
lea ecx, [ebp - 0x4014]
push ecx
call fcn.0045bb40
add esp, 0xc
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 0
je 0x45db0d
mov eax, dword [ebp - 0x10]
jmp 0x45e082
mov edx, dword [ebp + 0x10]
and edx, 0x2000000
jne 0x45db7d
lea eax, [ebp - 0x4270]
push eax
push 0
lea ecx, [ebp - 0x4014]
push ecx
call fcn.0045e9c0
add esp, 0xc
test eax, eax
jne 0x45db78
mov esi, esp
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp esi, esp
call fcn.0052354c
test eax, eax
jne 0x45db53
mov dword [ebp - 0x47cc], 0
jmp 0x45db6d
mov esi, esp
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp esi, esp
call fcn.0052354c
add eax, 0xafc80
mov dword [ebp - 0x47cc], eax
mov eax, dword [ebp - 0x47cc]
jmp 0x45e082
jmp 0x45dc5f
mov edx, dword [ebp + 0xc]
push edx
call fcn.0045e150
add esp, 4
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 0
je 0x45db9a
mov eax, dword [ebp - 0x10]
jmp 0x45e082
mov esi, esp
lea eax, [ebp - 0x4270]
push eax
lea ecx, [ebp - 0x4014]
push ecx
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
cmp esi, esp
call fcn.0052354c
mov dword [ebp - 0x4590], eax
cmp dword [ebp - 0x4590], 0xffffffff
jne 0x45dc0a
mov esi, esp
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp esi, esp
call fcn.0052354c
test eax, eax
jne 0x45dbe5
mov dword [ebp - 0x47d0], 0
jmp 0x45dbff
mov esi, esp
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp esi, esp
call fcn.0052354c
add eax, 0xafc80
mov dword [ebp - 0x47d0], eax
mov eax, dword [ebp - 0x47d0]
jmp 0x45e082
mov esi, esp
mov edx, dword [ebp - 0x4590]
push edx
call dword [sym.imp.KERNEL32.dll_FindClose]
cmp esi, esp
call fcn.0052354c
lea eax, [ebp - 0x4244]
push eax
push 0x30d
lea ecx, [ebp - 0x4588]
push ecx
call fcn.0045bcf0
add esp, 0xc
test eax, eax
je 0x45dc49
mov eax, 0x26
jmp 0x45e082
lea edx, [ebp - 0x4588]
push edx
mov eax, dword [ebp + 0x14]
push eax
call fcn.004991e0
mov dword [ebp - 0x401c], eax
jmp 0x45dec2
mov dword [ebp - 0x4598], 0
mov ecx, dword [ebp + 0xc]
mov dword [ebp - 0x45a4], ecx
mov edx, dword [ebp + 0x14]
push edx
push 0x10
lea eax, [ebp - 0x45a4]
push eax
lea ecx, [ebp - 0x4598]
push ecx
call fcn.00459fd0
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x4598], 0
je 0x45dcc2
mov edx, dword [ebp - 0x4598]
movsx eax, byte [edx]
test eax, eax
je 0x45dcc2
mov ecx, dword [ebp - 0x45a4]
movsx edx, byte [ecx]
test edx, edx
jne 0x45dcc2
mov dword [ebp - 0x47d4], 1
jmp 0x45dccc
mov dword [ebp - 0x47d4], 0
mov eax, dword [ebp - 0x47d4]
mov dword [ebp - 8], eax
cmp dword [0x5a51dc], 0xe
jl 0x45dd51
mov ecx, dword [ebp + 0x10]
and ecx, 0x2000000
je 0x45dcef
cmp dword [ebp - 8], 0
je 0x45dd51
lea edx, [ebp - 0x4270]
push edx
push 0
mov eax, dword [ebp + 0xc]
push eax
call fcn.0045e970
add esp, 0xc
test eax, eax
jne 0x45dd4c
mov esi, esp
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp esi, esp
call fcn.0052354c
test eax, eax
jne 0x45dd27
mov dword [ebp - 0x47d8], 0
jmp 0x45dd41
mov esi, esp
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp esi, esp
call fcn.0052354c
add eax, 0xafc80
mov dword [ebp - 0x47d8], eax
mov eax, dword [ebp - 0x47d8]
jmp 0x45e082
jmp 0x45dec2
cmp dword [ebp - 8], 0
je 0x45de0c
mov esi, esp
mov ecx, dword [ebp + 0xc]
push ecx
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
cmp esi, esp
call fcn.0052354c
test eax, eax
je 0x45ddfd
mov edx, dword [ebp + 8]
mov eax, dword [ebp + 0x14]
mov dword [edx], eax
mov ecx, dword [ebp + 8]
mov dword [ecx + 0xc], 0
call fcn.00499b80
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x40], eax
mov dword [ecx + 0x44], edx
mov edx, dword [ebp + 8]
mov eax, dword [edx + 8]
or eax, 7
mov ecx, dword [ebp + 8]
mov dword [ecx + 8], eax
mov edx, dword [ebp + 8]
mov eax, dword [edx + 8]
shl eax, 4
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 8]
shl edx, 8
or eax, edx
mov ecx, dword [ebp + 8]
or eax, dword [ecx + 8]
mov edx, dword [ebp + 8]
mov dword [edx + 8], eax
mov eax, dword [ebp + 0x10]
and eax, 1
or eax, 0x708010
mov ecx, dword [ebp + 8]
or eax, dword [ecx + 4]
mov edx, dword [ebp + 8]
mov dword [edx + 4], eax
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 4]
not ecx
and ecx, dword [ebp + 0x10]
mov dword [ebp + 0x10], ecx
mov eax, dword [ebp + 0x10]
neg eax
sbb eax, eax
and eax, 0x11178
jmp 0x45e082
mov eax, 0xafc83
jmp 0x45e082
mov edx, dword [ebp + 0xc]
push edx
call fcn.0045e150
add esp, 4
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 0
je 0x45de29
mov eax, dword [ebp - 0x10]
jmp 0x45e082
mov esi, esp
lea eax, [ebp - 0x4270]
push eax
mov ecx, dword [ebp + 0xc]
push ecx
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
cmp esi, esp
call fcn.0052354c
mov dword [ebp - 0x45ac], eax
cmp dword [ebp - 0x45ac], 0xffffffff
jne 0x45de96
mov esi, esp
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp esi, esp
call fcn.0052354c
test eax, eax
jne 0x45de71
mov dword [ebp - 0x47dc], 0
jmp 0x45de8b
mov esi, esp
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp esi, esp
call fcn.0052354c
add eax, 0xafc80
mov dword [ebp - 0x47dc], eax
mov eax, dword [ebp - 0x47dc]
jmp 0x45e082
mov esi, esp
mov edx, dword [ebp - 0x45ac]
push edx
call dword [sym.imp.KERNEL32.dll_FindClose]
cmp esi, esp
call fcn.0052354c
lea eax, [ebp - 0x4244]
push eax
mov ecx, dword [ebp + 0x14]
push ecx
call fcn.004991e0
mov dword [ebp - 0x401c], eax
cmp dword [ebp - 0xc], 0x11178
je 0x45e008
mov edx, dword [ebp + 0x10]
push edx
push 0
lea eax, [ebp - 0x4270]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.0045d6c0
add esp, 0x10
test eax, eax
je 0x45e000
cmp dword [0x5a51dc], 0x1e
jl 0x45dfee
mov dword [ebp - 0x47c4], 0
mov esi, esp
lea edx, [ebp - 0x47c4]
push edx
lea eax, [ebp - 0x47b8]
push eax
push 0x104
lea ecx, [ebp - 0x4014]
push ecx
call dword [sym.imp.KERNEL32.dll_GetFullPathNameW]
cmp esi, esp
call fcn.0052354c
test eax, eax
je 0x45dfda
push 4
push str.._
lea edx, [ebp - 0x47b8]
push edx
call fcn.005261b8
add esp, 0xc
test eax, eax
jne 0x45dfd8
lea eax, [ebp - 0x47b0]
cmp dword [ebp - 0x47c4], eax
jne 0x45df70
mov ecx, dword [ebp + 8]
mov dword [ecx + 0xc], 3
jmp 0x45dfd8
cmp dword [ebp - 0x47c4], 0
jne 0x45dfd8
lea edx, [ebp - 0x47b0]
mov dword [ebp - 0x47c4], edx
mov eax, dword [ebp - 0x47c4]
movzx ecx, word [eax]
test ecx, ecx
je 0x45dfc1
mov edx, dword [ebp - 0x47c4]
movzx eax, word [edx]
cmp eax, 0x5c
je 0x45dfae
mov ecx, dword [ebp - 0x47c4]
movzx edx, word [ecx]
cmp edx, 0x2f
jne 0x45dfb0
jmp 0x45dfc1
mov eax, dword [ebp - 0x47c4]
add eax, 2
mov dword [ebp - 0x47c4], eax
jmp 0x45df85
mov ecx, dword [ebp - 0x47c4]
movzx edx, word [ecx]
test edx, edx
jne 0x45dfd8
mov eax, dword [ebp + 8]
mov dword [eax + 0xc], 3
jmp 0x45dfec
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 4]
and edx, 0xffff7fff
mov eax, dword [ebp + 8]
mov dword [eax + 4], edx
jmp 0x45e000
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 4]
and edx, 0xffff7fff
mov eax, dword [ebp + 8]
mov dword [eax + 4], edx
mov ecx, dword [ebp + 8]
mov edx, dword [ebp + 0x14]
mov dword [ecx], edx
cmp dword [ebp - 0x401c], 0
je 0x45e034
cmp dword [ebp - 8], 0
jne 0x45e034
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0x401c]
mov dword [eax + 0x54], ecx
mov edx, dword [ebp + 8]
mov eax, dword [edx + 4]
or eax, 0x2000000
mov ecx, dword [ebp + 8]
mov dword [ecx + 4], eax
mov edx, dword [ebp + 8]
mov eax, dword [edx + 4]
not eax
and eax, dword [ebp + 0x10]
mov dword [ebp + 0x10], eax
je 0x45e080
cmp dword [0x5a51dc], 0x1e
jl 0x45e068
push 2
mov ecx, dword [ebp + 0x10]
push ecx
lea edx, [ebp - 0x4014]
push edx
mov eax, dword [ebp + 8]
push eax
call fcn.0045cfc0
add esp, 0x10
jmp 0x45e082
push 1
mov ecx, dword [ebp + 0x10]
push ecx
mov edx, dword [ebp + 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call fcn.0045cfc0
add esp, 0x10
jmp 0x45e082
xor eax, eax
push edx
mov ecx, ebp
push eax
lea edx, [0x45e0b4]
call fcn.0052356f
pop eax
pop edx
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00522672
add esp, 0x47dc
cmp ebp, esp
call fcn.0052354c
mov esp, ebp
pop ebp
ret 0x10