Function at 0x10045949
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3c
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_QueryDosDeviceW]
push esi
push edi
mov dword [ebp - 0xc], 0x53b26bdd
mov edi, ecx
push 1
mov dword [ebp - 0x10], 0xf5ecce35
mov dword [ebp - 0x18], edi
mov dword [ebp - 0xc], 0
pop esi
jmp 0x10045a60
mov dword [ebp - 0x10], 0xb999fb0
lea ecx, [ebp - 0x24]
mov dword [ebp - 8], 0xa2c39d5b
push esi
call fcn.1000bc50
xor edx, edx
mov dword [ebp - 8], edx
jmp 0x100459a6
mov eax, dword [ebp - 8]
mov dword [ebp + eax*4 - 0x3c], 0xfffffffb
inc dword [ebp - 8]
cmp dword [ebp - 8], 3
jl 0x10045998
mov dword [ebp - 8], edx
jmp 0x100459be
mov ecx, dword [ebp - 8]
mov eax, dword [ebp - 0x24]
or dword [eax + ecx*4], 0xffffffff
inc dword [ebp - 8]
cmp dword [ebp - 8], esi
jl 0x100459b1
mov eax, dword [ebp - 0xc]
xor ecx, ecx
cmp eax, 0x307a329f
mov dword [ebp - 0x34], eax
setge cl
cmp ecx, 0x24891023
jl 0x100459e2
mov ecx, esi
cmp dword [ebp - 0x10], edx
jne 0x100459e4
mov ecx, edx
mov eax, dword [ebp - 0xc]
sub ecx, eax
cmp esi, ecx
mov ecx, dword [ebp - 0xc]
sbb eax, eax
add ecx, dword [ebp - 0xc]
neg eax
sub ecx, eax
neg ecx
sbb ecx, ecx
xor edx, edx
inc ecx
sub ecx, dword [ebp - 0xc]
mov dword [ebp - 8], ecx
mov ecx, dword [ebp - 8]
mov eax, dword [ebp - 0x10]
cmp ecx, eax
mov eax, dword [ebp - 0x10]
setg dl
xor ecx, ecx
cmp edx, eax
setl cl
sub ecx, dword [ebp - 0x10]
mov eax, dword [ebp - 0xc]
neg ecx
sbb ecx, ecx
xor edx, edx
inc ecx
cmp ecx, eax
mov eax, dword [ebp - 0x24]
setne dl
xor ecx, ecx
mov dword [eax], edx
mov eax, dword [ebp - 0x10]
sub edx, eax
mov eax, dword [ebp - 0x10]
cmp eax, edx
setge cl
xor eax, eax
mov dword [ebp - 0x10], ecx
mov byte [ebp - 1], al
cmp byte [ebp - 1], al
je 0x10045a55
push 0xe1f
push eax
push eax
call ebx
lea ecx, [ebp - 0x24]
call fcn.1000bcb2
dec dword [ebp - 0xc]
cmp dword [ebp - 0xc], 0xfffffffa
jle 0x1004597a
mov dword [ebp - 8], 0xd5e48d32
mov dword [ebp - 0xc], 0x91cb4e76
mov dword [ebp - 0x10], 0xffffffff
mov dword [ebp - 0x10], 0
jmp 0x10045a96
mov eax, dword [ebp - 0x10]
mov dword [ebp + eax*4 - 0x14], 0x66c1932e
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], esi
jl 0x10045a88
mov dword [ebp - 8], 0xffffffea
cmp dword [ebp - 8], 0xffffffe9
jg 0x10045b68
mov edi, dword [sym.imp.USER32.dll_GetDesktopWindow]
mov dword [ebp - 0x10], esi
xor edx, edx
mov eax, dword [ebp - 0xc]
mov ecx, 0x30cc2fdc
mov eax, dword [ebp - 8]
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 8]
sub ecx, eax
cmp ecx, esi
setle dl
xor ecx, ecx
add edx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
cmp edx, eax
setge cl
neg ecx
mov dword [ebp - 0x10], ecx
mov ecx, dword [ebp - 0x10]
mov eax, dword [ebp - 8]
add eax, 0xc8fc558b
add eax, ecx
je 0x10045b1e
mov byte [ebp - 1], 0
cmp byte [ebp - 1], 0
je 0x10045b02
push 0
call dword [sym.imp.COMDLG32.dll_GetSaveFileNameW]
mov byte [ebp - 1], 0
cmp byte [ebp - 1], 0
je 0x10045b58
call edi
push eax
call dword [sym.imp.USER32.dll_GetDC]
push eax
call dword [sym.imp.GDI32.dll_SaveDC]
jmp 0x10045b58
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x10], eax
mov dword [ebp - 0xc], 0
jmp 0x10045b52
mov dword [ebp - 0x10], 0xfffffffb
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x14], eax
mov byte [ebp - 1], 0
cmp byte [ebp - 1], 0
je 0x10045b4f
push 0
call edi
push eax
call dword [sym.imp.USER32.dll_TranslateMDISysAccel]
inc dword [ebp - 0xc]
cmp dword [ebp - 0xc], 0x2e
jle 0x10045b2d
dec dword [ebp - 8]
cmp dword [ebp - 8], 0xffffffe9
jle 0x10045ab2
mov edi, dword [ebp - 0x18]
mov dword [ebp - 0xc], 0x16
jmp 0x10045b8f
mov dword [ebp - 0x18], esi
cmp dword [ebp - 0x18], 0
jne 0x10045b95
mov byte [ebp - 1], 0
cmp byte [ebp - 1], 0
je 0x10045b8c
push 0
call dword [sym.imp.USER32.dll_RegisterClassW]
inc dword [ebp - 0xc]
cmp dword [ebp - 0xc], 0x26
jl 0x10045b71
cmp byte [edi], 0
je 0x10045ba5
push 0xe1f
push 0
push 0
call ebx
mov dword [ebp - 0xc], 0x42c7
lea ecx, [ebp - 0x30]
mov dword [ebp - 0x10], 0xf8067e3
mov dword [ebp - 0x10], 4
mov dword [ebp - 8], 0x441791e6
push 3
call fcn.1000bc50
mov dword [ebp - 0x10], 0xbb1300ca
xor ebx, ebx
mov dword [ebp - 0x18], 0x2967684a
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x10], ebx
jmp 0x10045bf3
mov ecx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x30]
mov dword [eax + ecx*4], 5
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], 3
jl 0x10045be3
mov dword [ebp - 0xc], 0xfffffff8
mov ecx, 0xfff7
cmp dword [ebp - 0xc], 0xfffffffc
sbb eax, eax
add eax, 0xb8736202
neg eax
sbb eax, eax
inc eax
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x10]
cmp ecx, eax
sbb eax, eax
inc eax
add eax, dword [ebp - 0xc]
mov edx, dword [ebp - 0xc]
sub edx, eax
mov eax, dword [ebp - 0xc]
neg edx
sbb edx, edx
xor ecx, ecx
inc edx
cmp edx, eax
mov eax, dword [ebp - 0xc]
setge cl
xor edx, edx
cmp ecx, eax
mov eax, dword [ebp - 0xc]
setl dl
xor ecx, ecx
cmp edx, eax
setle cl
mov dword [ebp - 8], ecx
mov ecx, dword [ebp - 8]
mov eax, dword [ebp - 0x30]
mov dword [eax + 8], ecx
test ecx, ecx
jne 0x10045c62
mov edx, ebx
cmp dword [ebp - 0x10], ebx
je 0x10045c64
mov edx, esi
mov eax, dword [ebp - 0xc]
xor ecx, ecx
cmp edx, eax
setg cl
sub ecx, dword [ebp - 0xc]
jne 0x10045c78
cmp dword [ebp - 8], ebx
jne 0x10045c7a
mov esi, ebx
mov eax, dword [ebp - 0xc]
cmp esi, 0xffffffff
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0xc]
sbb edx, edx
inc edx
xor ecx, ecx
cmp edx, eax
mov eax, dword [ebp - 0x10]
setg cl
xor edx, edx
imul ecx, ecx, 0x7279
sub ecx, 0x7279
cmp eax, ecx
lea ecx, [ebp - 0x30]
setg dl
add edx, 0x2e8326ad
mov dword [ebp - 0x10], edx
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x18], eax
call fcn.1000bcb2
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret