Function at 0x10018197
Capabilities:
Get disk information

Disassembly:
mov eax, 0x100805ce
call fcn.1007fd98
sub esp, 0xa8
push ebx
push esi
push edi
mov dword [ebp - 0x58], ecx
lea ecx, [ebp - 0x84]
push 2
mov dword [ebp - 0x5c], edx
call fcn.10014d59
mov dword [ebp - 0x10], 0xec3203bd
xor ebx, ebx
mov dword [ebp - 0x18], 7
mov dword [ebp - 0x14], ebx
jmp 0x100181e5
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x84]
mov dword [eax + ecx*4], 0xfff7
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 2
jl 0x100181d2
mov byte [ebp - 0x19], bl
cmp byte [ebp - 0x19], bl
je 0x10018206
push ebx
push ebx
push 0x145f
push 0x4f8
push ebx
call dword [sym.imp.USER32.dll_InsertMenuW]
mov eax, dword [ebp - 0x84]
xor ecx, ecx
mov dword [ebp - 0x10], 1
mov edi, dword [eax + 4]
mov esi, dword [eax]
mov eax, dword [ebp - 0x10]
cmp eax, edi
setle cl
xor edx, edx
imul ecx, esi
cmp ecx, 0x1f90ef30
setl dl
xor eax, eax
cmp esi, 0xffffffff
setl al
xor ecx, ecx
imul eax, esi
cmp eax, edx
setl cl
inc ecx
neg ecx
sbb ecx, ecx
inc ecx
add ecx, edi
mov dword [ebp - 0x18], ecx
lea ecx, [ebp - 0x84]
call fcn.100155d3
cmp byte [ebp + 8], bl
je 0x10018342
push 3
pop esi
push esi
lea ecx, [ebp - 0x9c]
call fcn.10014d59
push 2
pop edi
push edi
lea ecx, [ebp - 0xb4]
mov dword [ebp - 4], ebx
call fcn.10014d59
mov dword [ebp - 0x10], 0xcee61780
mov dword [ebp + 8], ebx
jmp 0x100182a1
mov ecx, dword [ebp + 8]
mov eax, dword [ebp - 0x9c]
mov dword [eax + ecx*4], 0xae9714a
inc dword [ebp + 8]
cmp dword [ebp + 8], esi
jl 0x1001828e
mov dword [ebp + 8], ebx
jmp 0x100182ba
mov ecx, dword [ebp + 8]
mov eax, dword [ebp - 0xb4]
mov dword [eax + ecx*4], ebx
inc dword [ebp + 8]
cmp dword [ebp + 8], edi
jl 0x100182ab
mov dword [ebp + 8], ebx
jmp 0x100182d5
mov eax, dword [ebp + 8]
mov dword [ebp + eax*4 - 0x90], 0xfffffff8
inc dword [ebp + 8]
cmp dword [ebp + 8], esi
jl 0x100182c4
inc dword [ebp - 0x88]
mov dword [ebp - 0x10], 0xfffffffc
jmp 0x10018314
mov dword [ebp - 0x14], edi
mov dword [ebp - 0x14], ebx
jmp 0x10018304
mov byte [ebp + 0xb], bl
cmp byte [ebp + 0xb], 0
je 0x10018301
push ebx
call dword [sym.imp.ADVAPI32.dll_GetLengthSid]
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], edi
jle 0x100182f1
cmp dword [ebp - 0x88], ebx
jne 0x1001831a
dec dword [ebp - 0x10]
cmp dword [ebp - 0x10], 0xffffffe6
jg 0x100182e9
lea ecx, [ebp - 0xb4]
call fcn.100155d3
lea ecx, [ebp - 0x9c]
call fcn.100155d3
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_GetMenu]
jmp 0x10018720
xor edi, edi
lea ecx, [ebp - 0x48]
inc edi
push edi
call fcn.10014d59
mov dword [ebp - 4], edi
lea ecx, [ebp - 0xa8]
mov dword [ebp + 8], edi
mov dword [ebp - 0x10], 0x213ec752
push 4
call fcn.10014d59
mov dword [ebp + 8], ebx
jmp 0x1001837d
mov ecx, dword [ebp + 8]
mov eax, dword [ebp - 0x48]
mov dword [eax + ecx*4], 0xb0f7
inc dword [ebp + 8]
cmp dword [ebp + 8], edi
jl 0x1001836d
mov dword [ebp + 8], ebx
jmp 0x1001839a
mov ecx, dword [ebp + 8]
mov eax, dword [ebp - 0xa8]
mov dword [eax + ecx*4], 0xdc02
inc dword [ebp + 8]
cmp dword [ebp + 8], 4
jl 0x10018387
mov eax, dword [ebp - 0x48]
xor ecx, ecx
mov eax, dword [eax]
mov dword [ebp + 8], eax
mov eax, dword [ebp - 0x10]
cmp eax, 0x66bb
setne cl
cmp ecx, 0xffff
ja 0x100183c6
mov eax, dword [ebp - 0x48]
mov ecx, ebx
cmp dword [eax], ebx
je 0x100183c8
mov ecx, edi
xor eax, eax
cmp ecx, edi
setle al
xor ecx, ecx
imul eax, dword [ebp - 0x10]
imul eax, dword [ebp + 8]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x48]
mov esi, dword [eax]
mov eax, dword [ebp - 0x10]
cmp eax, esi
setge cl
cmp ecx, esi
jg 0x100183f3
mov ecx, ebx
test esi, esi
je 0x100183f5
mov ecx, edi
xor eax, eax
cmp ecx, esi
sete al
xor edx, edx
cmp eax, esi
setne dl
xor ecx, ecx
sub edx, dword [ebp + 8]
mov eax, dword [ebp - 0x48]
cmp dword [eax], edx
setge cl
mov dword [ebp + 8], ecx
lea ecx, [ebp - 0xa8]
call fcn.100155d3
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x48]
call fcn.100155d3
mov dword [ebp + 8], 0xad3b3152
mov dword [ebp - 0x10], 0x40c18ab9
mov dword [ebp - 0x10], 0x3a4d1b40
push 3
mov dword [ebp - 0x18], 0xd214
mov dword [ebp + 8], ebx
pop esi
jmp 0x1001845c
mov eax, dword [ebp + 8]
mov dword [ebp + eax*4 - 0x2c], 0x5f70ad6f
inc dword [ebp + 8]
cmp dword [ebp + 8], esi
jl 0x1001844e
mov dword [ebp - 0x2c], ebx
jmp 0x10018479
mov byte [ebp + 0xb], bl
cmp byte [ebp + 0xb], 0
je 0x10018476
push ebx
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
inc dword [ebp - 0x2c]
cmp dword [ebp - 0x2c], 0xf
je 0x10018466
mov dword [ebp + 8], 2
cmp dword [ebp + 8], ebx
jl 0x10018528
push edi
lea ecx, [ebp - 0x68]
call fcn.10014d59
mov dword [ebp - 0x10], ebx
jmp 0x100184ad
mov ecx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x68]
mov dword [eax + ecx*4], 0xcc4b7c70
inc dword [ebp - 0x10]
cmp dword [ebp - 0x10], edi
jl 0x1001849d
mov eax, dword [ebp + 8]
xor ecx, ecx
mov eax, dword [ebp + 8]
mov eax, dword [ebp + eax*4 - 0x2c]
mov eax, dword [ebp + 8]
mov edx, dword [ebp + eax*4 - 0x2c]
mov eax, dword [ebp - 0x68]
mov dword [eax], edx
mov eax, dword [ebp + 8]
mov eax, dword [ebp + eax*4 - 0x2c]
cmp edx, eax
mov eax, dword [ebp + 8]
setl cl
cmp ecx, dword [ebp + eax*4 - 0x2c]
jle 0x100184e6
mov ecx, edi
cmp dword [ebp + 8], ebx
jne 0x100184e8
mov ecx, ebx
mov eax, dword [ebp + 8]
mov eax, dword [ebp + eax*4 - 0x2c]
imul eax, ecx
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x10], 0x8787d636
mov eax, dword [ebp + 8]
mov eax, dword [ebp + eax*4 - 0x2c]
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x18], eax
mov ecx, dword [ebp + 8]
mov eax, dword [ebp - 0x68]
mov dword [eax], ecx
lea ecx, [ebp - 0x68]
call fcn.100155d3
dec dword [ebp + 8]
jns 0x1001848f
mov dword [ebp - 0x14], 0xd69f4288
lea ecx, [ebp - 0x54]
push edi
call fcn.10014d59
push 8
pop eax
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x34], 7
mov dword [ebp - 0x10], eax
mov dword [ebp + 8], 0x2715ee56
mov dword [ebp + 8], 0xce3044b1
mov dword [ebp + 8], ebx
jmp 0x10018567
mov ecx, dword [ebp + 8]
mov eax, dword [ebp - 0x54]
mov dword [eax + ecx*4], edi
inc dword [ebp + 8]
cmp dword [ebp + 8], edi
jl 0x1001855b
mov dword [ebp + 8], ebx
jmp 0x1001857f
mov eax, dword [ebp + 8]
mov dword [ebp + eax*4 - 0x3c], 7
inc dword [ebp + 8]
cmp dword [ebp + 8], 2
jl 0x10018571
mov dword [ebp + 8], ebx
jmp 0x10018598
mov eax, dword [ebp + 8]
mov dword [ebp + eax*4 - 0x30], 0xd345464c
inc dword [ebp + 8]
cmp dword [ebp + 8], edi
jl 0x1001858a
mov eax, dword [ebp - 0x10]
inc dword [ebp - 0x10]
test eax, eax
je 0x100185d8
cmp dword [ebp - 0x18], ebx
jne 0x100185c6
mov eax, dword [ebp - 0x34]
neg eax
sbb eax, eax
neg eax
mov dword [ebp + 8], eax
mov eax, dword [ebp + 8]
mov eax, dword [ebp - 0x54]
cmp dword [eax], ebx
jne 0x100185c9
mov ecx, ebx
jmp 0x100185cb
mov eax, dword [ebp - 0x54]
mov ecx, edi
cmp ecx, dword [eax]
je 0x100185d2
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x34]
mov byte [ebp + 0xb], bl
cmp byte [ebp + 0xb], 0
je 0x100185f6
push ebx
push 0xaff
call dword [sym.imp.SHELL32.dll_Shell_NotifyIconW]
mov eax, dword [ebp - 0x30]
xor ecx, ecx
cmp eax, 0xc3bc
mov eax, dword [ebp - 0x38]
setle cl
xor edx, edx
cmp ecx, eax
mov eax, dword [ebp - 0x30]
setl dl
xor ecx, ecx
cmp edx, eax
mov eax, dword [ebp - 0x14]
setl cl
xor edx, edx
cmp ecx, eax
mov eax, dword [ebp - 0x54]
sete dl
mov dword [eax], edx
test edx, edx
je 0x10018631
mov eax, edi
cmp dword [ebp - 0x3c], ebx
jne 0x10018633
mov eax, ebx
cmp eax, dword [ebp - 0x18]
je 0x1001863f
mov eax, ebx
cmp dword [ebp - 0x14], ebx
je 0x10018641
mov eax, edi
mov dword [ebp + 8], eax
lea ecx, [ebp - 0x54]
call fcn.100155d3
mov eax, 0x2d5e48d3
mov dword [ebp - 0x78], eax
mov dword [ebp - 0x74], eax
mov dword [ebp - 0x70], eax
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x14], 0x52061f6
mov dword [ebp - 0x14], ebx
jmp 0x1001867a
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp + eax*4 - 0x78]
mov eax, dword [ebp - 0x14]
mov dword [ebp + eax*4 - 0x78], ecx
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], esi
jle 0x10018669
mov dword [ebp - 0x14], ebx
jmp 0x10018697
mov byte [ebp + 0xb], bl
cmp byte [ebp + 0xb], 0
je 0x10018694
push ebx
call dword [sym.imp.GDI32.dll_CreateRectRgnIndirect]
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 2
jl 0x10018684
mov dword [ebp - 0x18], 0xba772304
mov dword [ebp + 8], ebx
jmp 0x100186b7
mov eax, dword [ebp + 8]
mov dword [ebp + eax*4 - 0x20], 7
inc dword [ebp + 8]
cmp dword [ebp + 8], edi
jl 0x100186a9
mov dword [ebp - 0x20], 0x1d
jmp 0x100186d5
mov dword [ebp + 8], 0xfffffffc
mov eax, dword [ebp - 0x18]
mov dword [ebp + 8], eax
dec dword [ebp - 0x20]
cmp dword [ebp - 0x20], 0xffffffe6
jg 0x100186c5
mov ecx, dword [ebp + 0x14]
mov edi, dword [ebp - 0x5c]
mov edx, dword [ebp + 0x1c]
mov esi, dword [ebp + 0xc]
mov eax, dword [ecx]
mov eax, dword [edi]
mov dword [edx], eax
mov eax, dword [ecx]
mov eax, dword [esi]
mov eax, dword [edx]
mov eax, dword [edi]
cmp dword [edi], 1
jl 0x100186fe
cmp dword [edi], ebx
je 0x10018701
xor ebx, ebx
inc ebx
mov eax, dword [ebp - 0x58]
mov ecx, 0xd8eb7bfb
mov dword [eax], ecx
mov eax, dword [ebp + 0x10]
mov dword [eax], ebx
mov eax, dword [esi]
sub ecx, eax
mov eax, dword [ebp + 0x18]
sub ecx, ebx
neg ecx
sbb ecx, ecx
inc ecx
mov dword [eax], ecx
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret