Function at 0x446eea
Capabilities:
Get disk information
Get disk size

Disassembly:
push ebp
lea ebp, [esp - 0x70]
sub esp, 0xb8
push ebx
push esi
push edi
mov edi, 0x49062c
push edi
mov dword [ebp + 0x5c], ecx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
lea eax, [ebp + 0x78]
push eax
call fcn.0042609c
pop ecx
push 5
lea ecx, [ebp + 0x6c]
call fcn.0042aed6
push 0x14
lea ecx, [ebp + 0x64]
call fcn.0042aed6
lea ecx, [ebp + 0x60]
call fcn.0042aeb8
xor ebx, ebx
mov byte [ebp + 0x6b], 0xff
mov byte [ebp + 0x6a], bl
jmp 0x446fb5
push 9
lea eax, [ebp + 0x78]
push eax
push str._userfree
call fcn.0042c7e8
add esp, 0xc
test al, al
je 0x446f54
mov byte [ebp + 0x6b], bl
jmp 0x446fb5
push 8
lea eax, [ebp + 0x78]
push eax
push str._userall
call fcn.0042c7e8
add esp, 0xc
test al, al
je 0x446f71
mov byte [ebp + 0x6b], 1
jmp 0x446fb5
push 5
lea eax, [ebp + 0x78]
push eax
push str._free
call fcn.0042c7e8
add esp, 0xc
test al, al
je 0x446f8e
mov byte [ebp + 0x6b], 2
jmp 0x446fb5
push 4
lea eax, [ebp + 0x78]
push eax
push str._raw
call fcn.0042c7e8
add esp, 0xc
test al, al
je 0x446fab
mov byte [ebp + 0x6a], 1
jmp 0x446fb5
lea eax, [ebp + 0x78]
push eax
call fcn.00403b20
pop ecx
mov eax, dword [ebp + 0x78]
cmp word [eax], 0x2d
je 0x446f38
push 0x3d
lea eax, [ebp + 0x64]
push eax
lea eax, [ebp + 0x78]
push eax
call fcn.0042d669
mov ecx, dword [ebp + 0x5c]
add esp, 0xc
push ebx
lea eax, [ebp + 0x64]
push eax
call fcn.00402aa0
mov eax, dword [ebp + 0x78]
cmp word [eax], 0x3d
jne 0x447000
add dword [ebp + 0x78], 2
push 0x2c
lea eax, [ebp + 0x6c]
push eax
lea eax, [ebp + 0x78]
push eax
call fcn.0042d669
add esp, 0xc
mov eax, dword [ebp + 0x6c]
push eax
mov dword [ebp + 0x78], eax
mov dword [ebp + 0x6c], ebx
call fcn.0040ca55
pop ecx
push eax
lea ecx, [ebp + 0x6c]
call fcn.004346c9
lea ecx, [ebp + 0x78]
call fcn.0042602e
mov eax, dword [ebp + 0x64]
xor ecx, ecx
jmp 0x447030
cmp cx, 0x2c
je 0x44703a
inc eax
inc eax
mov cx, word [eax]
cmp cx, bx
jne 0x447028
jmp 0x447054
mov word [eax], bx
inc eax
inc eax
mov dword [ebp + 0x78], eax
push 0x2c
lea eax, [ebp + 0x60]
push eax
lea eax, [ebp + 0x78]
push eax
call fcn.0042d669
add esp, 0xc
mov ecx, dword [ebp + 0x5c]
push ebx
lea eax, [ebp + 0x60]
push eax
call fcn.00402aa0
push dword [ebp + 0x64]
call fcn.0040aea9
mov eax, dword [ebp + 0x64]
cmp word [eax], bx
pop ecx
jne 0x44707a
mov eax, dword [ebp + 0x60]
cmp word [eax], bx
je 0x447082
mov esi, dword [ebp + 0x6c]
cmp word [esi], bx
jne 0x447087
xor ebx, ebx
inc ebx
jmp 0x4470cb
push esi
push 0x481264
call fcn.00426fa9
test al, al
pop ecx
pop ecx
je 0x4470e9
push 0xca
lea ecx, [ebp + 0x60]
call fcn.0042aeff
mov eax, dword [ebp + 0x60]
push ebx
push ebx
push 1
mov word [eax], bx
lea eax, [ebp + 0x6c]
push 0x7c
push eax
call fcn.004305d7
mov ecx, dword [ebp + 0x5c]
add esp, 0x14
push dword [ebp + 0x6c]
push dword [ebp + 0x64]
call fcn.00429dbf
lea ecx, [ebp + 0x60]
call fcn.0042602e
lea ecx, [ebp + 0x64]
call fcn.0042602e
lea ecx, [ebp + 0x6c]
call fcn.0042602e
push edi
jmp 0x44737b
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov esi, eax
lea eax, [esi + 0x19]
push eax
lea ecx, [ebp + 0x6c]
call fcn.0042aeff
cmp byte [ebp + 0x6b], bl
jl 0x4471df
cmp esi, 1
jne 0x44712b
mov edx, dword [ebp + 0x6c]
cmp word [edx], 0x2e
je 0x44714a
mov word [edx + 2], 0x3a
mov eax, dword [ebp + 0x6c]
mov word [eax + 4], 0x5c
mov eax, dword [ebp + 0x6c]
mov word [eax + 6], bx
cmp esi, 2
mov edx, dword [ebp + 0x6c]
jne 0x44714a
cmp word [edx + 2], 0x3a
jne 0x44714a
mov word [edx + 4], 0x5c
mov eax, dword [ebp + 0x6c]
mov word [eax + 6], bx
mov edx, dword [ebp + 0x6c]
mov esi, 0x48125c
lea edi, [ebp - 0x48]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
xor eax, eax
push 0xe
pop ecx
lea edi, [ebp - 0x42]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
xor eax, eax
mov dword [ebp + 0x38], ebx
mov dword [ebp + 0x3c], ebx
lea edi, [ebp + 0x40]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
lea eax, [ebp + 0x48]
push eax
lea eax, [ebp + 0x40]
push eax
lea eax, [ebp + 0x38]
push eax
push edx
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceExW]
mov esi, eax
cmp esi, ebx
je 0x4471a1
movsx eax, byte [ebp + 0x6b]
push dword [ebp + eax*8 + 0x3c]
push dword [ebp + eax*8 + 0x38]
lea eax, [ebp - 0x48]
push eax
call fcn.0043451e
add esp, 0xc
mov ecx, dword [ebp + 0x5c]
lea eax, [ebp - 0x48]
push eax
push dword [ebp + 0x64]
call fcn.00429dbf
lea ecx, [ebp + 0x60]
call fcn.0042602e
lea ecx, [ebp + 0x64]
call fcn.0042602e
lea ecx, [ebp + 0x6c]
call fcn.0042602e
push 0x49062c
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
xor eax, eax
cmp esi, ebx
sete al
jmp 0x447383
push str..C:
lea ecx, [ebp + 0x50]
call fcn.00434695
mov eax, dword [ebp + 0x6c]
mov ax, word [eax]
mov esi, dword [ebp + 0x50]
or dword [ebp + 0x54], 0xffffffff
or dword [ebp + 0x58], 0xffffffff
mov word [esi + 8], ax
mov word [esi + 0xe], bx
mov word [esi + 0xc], bx
mov edi, dword [ebp + 0x6c]
push 4
push edi
push 0x481240
call fcn.00426f79
add esp, 0xc
test al, al
jne 0x4472a6
push 8
push edi
push str.Device_
call fcn.00426f79
add esp, 0xc
test al, al
jne 0x4472a6
mov word [edi + 2], 0x3a
mov eax, dword [ebp + 0x6c]
mov word [eax + 6], bx
mov eax, dword [ebp + 0x6c]
mov word [eax + 4], bx
mov eax, dword [ebp + 0x64]
cmp word [eax], bx
je 0x447261
push dword [ebp + 0x6c]
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
mov edi, eax
jmp 0x447264
mov edi, dword [ebp + 0x54]
mov eax, dword [ebp + 0x60]
cmp word [eax], bx
jne 0x447280
cmp byte [ebp + 0x6a], bl
jne 0x44728c
cmp edi, 2
je 0x447280
cmp edi, 3
je 0x447280
cmp edi, 5
jne 0x44728c
push ebx
push esi
call fcn.0042c3bd
pop ecx
pop ecx
mov dword [ebp + 0x58], eax
or eax, 0xffffffff
cmp byte [ebp + 0x6a], bl
jne 0x447297
mov eax, dword [ebp + 0x58]
push eax
lea eax, [ebp - 8]
push eax
push edi
call fcn.00428b6d
mov esi, eax
jmp 0x44730d
push ebx
push 0x20000000
push 3
push ebx
push 3
push 0xc0000000
push edi
lea ecx, [ebp + 0x78]
mov dword [ebp + 0x78], ebx
call fcn.00403b3c
mov eax, dword [ebp + 0x64]
cmp word [eax], bx
je 0x4472db
push 1
push ebx
push dword [ebp + 0x78]
call fcn.0042f22d
add esp, 0xc
mov dword [ebp + 0x54], eax
mov eax, dword [ebp + 0x60]
cmp word [eax], bx
je 0x4472f1
push dword [ebp + 0x78]
push ebx
call fcn.0042c3bd
pop ecx
pop ecx
mov dword [ebp + 0x58], eax
lea ecx, [ebp + 0x78]
call fcn.004029f8
push dword [ebp + 0x54]
lea esi, [ebp - 8]
mov eax, esi
push 0x47f950
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
mov eax, dword [ebp + 0x64]
add esp, 0xc
cmp word [eax], bx
je 0x447322
mov ecx, dword [ebp + 0x5c]
push esi
push eax
call fcn.00429dbf
mov eax, dword [ebp + 0x60]
cmp word [eax], bx
je 0x44734e
push dword [ebp + 0x58]
lea eax, [ebp - 8]
push 0x47f950
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
mov ecx, dword [ebp + 0x5c]
add esp, 0xc
lea eax, [ebp - 8]
push eax
push dword [ebp + 0x60]
call fcn.00429dbf
cmp word [esi], bx
jne 0x447356
xor ebx, ebx
inc ebx
lea ecx, [ebp + 0x50]
call fcn.0042602e
lea ecx, [ebp + 0x60]
call fcn.0042602e
lea ecx, [ebp + 0x64]
call fcn.0042602e
lea ecx, [ebp + 0x6c]
call fcn.0042602e
push 0x49062c
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, ebx
pop edi
pop esi
pop ebx
add ebp, 0x70
leave
ret 8