Function at 0x10040e50
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x100946d2
mov eax, dword fs:[0]
push eax
sub esp, 0x7bc
mov eax, dword [0x100b2370]
xor eax, ebp
mov dword [ebp - 0x10], eax
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, 2
imul eax, eax, 0
movzx ecx, word [eax + 0x100b7fe8]
test ecx, ecx
je 0x10040f0c
mov dword [ebp - 0x6c0], 0x100b7fe8
mov edx, dword [ebp - 0x6c0]
add edx, 2
mov dword [ebp - 0x6f4], edx
mov eax, dword [ebp - 0x6c0]
mov cx, word [eax]
mov word [ebp - 0x6c6], cx
add dword [ebp - 0x6c0], 2
cmp word [ebp - 0x6c6], 0
jne 0x10040ea7
mov edx, dword [ebp - 0x6c0]
sub edx, dword [ebp - 0x6f4]
sar edx, 1
mov dword [ebp - 0x6e4], edx
mov eax, dword [ebp - 0x6e4]
push eax
push 0x100b7fe8
mov ecx, dword [ebp + 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
call fcn.1004c9d2
add esp, 0x10
xor eax, eax
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp + 8]
mov word [edx + ecx*2 - 2], ax
mov al, 1
jmp 0x100414cf
lea eax, [ebp - 0x6ac]
push eax
push 0
call fcn.10040b40
add esp, 8
test eax, eax
je 0x1004131e
lea ecx, [ebp - 0x698]
push ecx
lea ecx, [ebp - 0x48c]
call fcn.1000df50
mov dword [ebp - 4], 0
push 0x100a6c1c
lea ecx, [ebp - 0x720]
call fcn.1000df50
mov byte [ebp - 4], 1
push 0x100a6c20
lea ecx, [ebp - 0x738]
call fcn.1000df50
mov byte [ebp - 4], 2
lea edx, [ebp - 0x720]
push edx
lea eax, [ebp - 0x738]
push eax
lea ecx, [ebp - 0x48c]
push ecx
lea edx, [ebp - 0x7c8]
push edx
call fcn.100408f0
add esp, 0x10
mov dword [ebp - 0x6fc], eax
mov eax, dword [ebp - 0x6fc]
push eax
lea ecx, [ebp - 0x48c]
call fcn.10013c00
lea ecx, [ebp - 0x7c8]
call fcn.1000df90
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x738]
call fcn.1000df90
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x720]
call fcn.1000df90
lea ecx, [ebp - 0x676]
push ecx
lea ecx, [ebp - 0x4a4]
call fcn.1000df50
mov byte [ebp - 4], 3
push 0x100a6c24
lea ecx, [ebp - 0x750]
call fcn.1000df50
mov byte [ebp - 4], 4
push 0x100a6c28
lea ecx, [ebp - 0x768]
call fcn.1000df50
mov byte [ebp - 4], 5
lea edx, [ebp - 0x750]
push edx
lea eax, [ebp - 0x768]
push eax
lea ecx, [ebp - 0x4a4]
push ecx
lea edx, [ebp - 0x780]
push edx
call fcn.100408f0
add esp, 0x10
mov dword [ebp - 0x6dc], eax
mov eax, dword [ebp - 0x6dc]
push eax
lea ecx, [ebp - 0x4a4]
call fcn.10013c00
lea ecx, [ebp - 0x780]
call fcn.1000df90
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x768]
call fcn.1000df90
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x750]
call fcn.1000df90
lea ecx, [ebp - 0x48c]
call fcn.100102e0
push eax
lea ecx, [ebp - 0x798]
push ecx
call fcn.10040a10
add esp, 8
mov dword [ebp - 0x6e0], eax
mov edx, dword [ebp - 0x6e0]
push edx
lea ecx, [ebp - 0x48c]
call fcn.10013c00
lea ecx, [ebp - 0x798]
call fcn.1000df90
lea ecx, [ebp - 0x4a4]
call fcn.100102e0
push eax
lea eax, [ebp - 0x7b0]
push eax
call fcn.10040a10
add esp, 8
mov dword [ebp - 0x6e8], eax
mov ecx, dword [ebp - 0x6e8]
push ecx
lea ecx, [ebp - 0x4a4]
call fcn.10013c00
lea ecx, [ebp - 0x7b0]
call fcn.1000df90
push 0
push 0
push 0xffffffffffffffff
lea ecx, [ebp - 0x48c]
call fcn.100102e0
push eax
push 0
push 0xfde9
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov dword [ebp - 0x6b0], eax
mov eax, dword [ebp - 0x6b0]
add eax, 1
xor ecx, ecx
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.10049ac0
add esp, 4
mov dword [ebp - 0x6f8], eax
mov eax, dword [ebp - 0x6f8]
mov dword [ebp - 0x6b8], eax
mov ecx, dword [ebp - 0x6b0]
add ecx, 1
push ecx
push 0
mov edx, dword [ebp - 0x6b8]
push edx
call fcn.1004f5f0
add esp, 0xc
mov eax, dword [ebp - 0x6b0]
push eax
mov ecx, dword [ebp - 0x6b8]
push ecx
mov edx, dword [ebp - 0x6b0]
push edx
lea ecx, [ebp - 0x48c]
call fcn.100102e0
push eax
push 0
push 0xfde9
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
push 0
push 0
push 0xffffffffffffffff
lea ecx, [ebp - 0x4a4]
call fcn.100102e0
push eax
push 0
push 0xfde9
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov dword [ebp - 0x6b0], eax
mov eax, dword [ebp - 0x6b0]
add eax, 1
xor ecx, ecx
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.10049ac0
add esp, 4
mov dword [ebp - 0x700], eax
mov eax, dword [ebp - 0x700]
mov dword [ebp - 0x6bc], eax
mov ecx, dword [ebp - 0x6b0]
add ecx, 1
push ecx
push 0
mov edx, dword [ebp - 0x6bc]
push edx
call fcn.1004f5f0
add esp, 0xc
mov eax, dword [ebp - 0x6b0]
push eax
mov ecx, dword [ebp - 0x6bc]
push ecx
mov edx, dword [ebp - 0x6b0]
push edx
lea ecx, [ebp - 0x4a4]
call fcn.100102e0
push eax
push 0
push 0xfde9
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov eax, dword [ebp + 0xc]
shl eax, 1
push eax
push 0
mov ecx, dword [ebp + 8]
push ecx
call fcn.1004f5f0
add esp, 0xc
mov edx, dword [ebp - 0x6b8]
push edx
mov eax, dword [ebp - 0x6bc]
push eax
push 0x100a6c2c
mov ecx, dword [ebp + 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
call fcn.10049aa4
add esp, 0x14
mov eax, dword [ebp - 0x6bc]
mov dword [ebp - 0x6d4], eax
mov ecx, dword [ebp - 0x6d4]
push ecx
call fcn.10049e9a
add esp, 4
cmp dword [ebp - 0x6d4], 0
jne 0x10041295
mov dword [ebp - 0x708], 0
jmp 0x100412ab
mov dword [ebp - 0x6bc], 0x8123
mov edx, dword [ebp - 0x6bc]
mov dword [ebp - 0x708], edx
mov eax, dword [ebp - 0x6b8]
mov dword [ebp - 0x6cc], eax
mov ecx, dword [ebp - 0x6cc]
push ecx
call fcn.10049e9a
add esp, 4
cmp dword [ebp - 0x6cc], 0
jne 0x100412db
mov dword [ebp - 0x6d8], 0
jmp 0x100412f1
mov dword [ebp - 0x6b8], 0x8123
mov edx, dword [ebp - 0x6b8]
mov dword [ebp - 0x6d8], edx
mov byte [ebp - 0x6b1], 0
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x4a4]
call fcn.1000df90
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x48c]
call fcn.1000df90
jmp 0x10041430
xor eax, eax
mov word [ebp - 0x38], ax
xor ecx, ecx
mov dword [ebp - 0x36], ecx
mov dword [ebp - 0x32], ecx
mov dword [ebp - 0x2e], ecx
mov dword [ebp - 0x2a], ecx
mov dword [ebp - 0x26], ecx
mov dword [ebp - 0x22], ecx
mov dword [ebp - 0x1e], ecx
mov dword [ebp - 0x1a], ecx
mov dword [ebp - 0x16], ecx
mov word [ebp - 0x12], cx
xor edx, edx
mov word [ebp - 0x60], dx
xor eax, eax
mov dword [ebp - 0x5e], eax
mov dword [ebp - 0x5a], eax
mov dword [ebp - 0x56], eax
mov dword [ebp - 0x52], eax
mov dword [ebp - 0x4e], eax
mov dword [ebp - 0x4a], eax
mov dword [ebp - 0x46], eax
mov dword [ebp - 0x42], eax
mov dword [ebp - 0x3e], eax
mov word [ebp - 0x3a], ax
push 0xff
lea ecx, [ebp - 0x60]
push ecx
lea edx, [ebp - 0x4a8]
push edx
lea eax, [ebp - 0x4ac]
push eax
lea ecx, [ebp - 0x474]
push ecx
push 0xff
lea edx, [ebp - 0x38]
push edx
push 0
call dword [sym.imp.KERNEL32.dll_GetVolumeInformationW]
xor eax, eax
mov word [ebp - 0x470], ax
push 0x40e
push 0
lea ecx, [ebp - 0x46e]
push ecx
call fcn.1004f5f0
add esp, 0xc
push 0x208
lea edx, [ebp - 0x470]
push edx
call fcn.10040de0
add esp, 8
test eax, eax
jne 0x100413f2
mov dword [ebp - 0x6f0], 0x208
mov eax, dword [ebp - 0x6f0]
push eax
lea ecx, [ebp - 0x470]
push ecx
call fcn.10040db0
add esp, 8
mov edx, dword [ebp + 0xc]
shl edx, 1
push edx
push 0
mov eax, dword [ebp + 8]
push eax
call fcn.1004f5f0
add esp, 0xc
mov ecx, dword [ebp - 0x474]
push ecx
lea edx, [ebp - 0x470]
push edx
push str._s__08X
mov eax, dword [ebp + 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.10049aa4
add esp, 0x14
mov byte [ebp - 0x6b1], 1
mov edx, dword [ebp + 8]
mov dword [ebp - 0x6c4], edx
mov eax, dword [ebp - 0x6c4]
add eax, 2
mov dword [ebp - 0x704], eax
mov ecx, dword [ebp - 0x6c4]
mov dx, word [ecx]
mov word [ebp - 0x6c8], dx
add dword [ebp - 0x6c4], 2
cmp word [ebp - 0x6c8], 0
jne 0x10041448
mov eax, dword [ebp - 0x6c4]
sub eax, dword [ebp - 0x704]
sar eax, 1
mov dword [ebp - 0x6ec], eax
mov ecx, dword [ebp - 0x6ec]
push ecx
mov edx, dword [ebp + 8]
push edx
push 0x104
push 0x100b7fe8
call fcn.1004c9d2
add esp, 0x10
mov eax, 2
imul eax, eax, 0x103
mov dword [ebp - 0x6d0], eax
cmp dword [ebp - 0x6d0], 0x208
jae 0x100414b9
jmp 0x100414be
call fcn.1004c077
xor ecx, ecx
mov edx, dword [ebp - 0x6d0]
mov word [edx + 0x100b7fe8], cx
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.10048fad
mov esp, ebp
pop ebp
ret