Function at 0x44b703
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, 0x48b5d4
push edi
mov dword [ebp + 0x5c], ecx
call dword [sym.imp.KERNEL32.DLL_EnterCriticalSection]
lea ecx, [ebp + 0x78]
call fcn.00429ef2
push 5
lea ecx, [ebp + 0x6c]
call fcn.0042465d
push 0x14
lea ecx, [ebp + 0x64]
call fcn.0042465d
lea ecx, [ebp + 0x60]
call fcn.0042460b
xor ebx, ebx
mov byte [ebp + 0x6b], 0xff
mov byte [ebp + 0x6a], bl
jmp 0x44b7cc
push 9
lea eax, [ebp + 0x78]
push eax
push str._userfree
call fcn.0042c9b5
add esp, 0xc
test al, al
je 0x44b76b
mov byte [ebp + 0x6b], bl
jmp 0x44b7cc
push 8
lea eax, [ebp + 0x78]
push eax
push str._userall
call fcn.0042c9b5
add esp, 0xc
test al, al
je 0x44b788
mov byte [ebp + 0x6b], 1
jmp 0x44b7cc
push 5
lea eax, [ebp + 0x78]
push eax
push str._free
call fcn.0042c9b5
add esp, 0xc
test al, al
je 0x44b7a5
mov byte [ebp + 0x6b], 2
jmp 0x44b7cc
push 4
lea eax, [ebp + 0x78]
push eax
push str._raw
call fcn.0042c9b5
add esp, 0xc
test al, al
je 0x44b7c2
mov byte [ebp + 0x6a], 1
jmp 0x44b7cc
lea eax, [ebp + 0x78]
push eax
call fcn.00403977
pop ecx
mov eax, dword [ebp + 0x78]
cmp word [eax], 0x2d
je 0x44b74f
push 0x3d
lea eax, [ebp + 0x64]
push eax
lea eax, [ebp + 0x78]
push eax
call fcn.0042df66
mov ecx, dword [ebp + 0x5c]
add esp, 0xc
push ebx
lea eax, [ebp + 0x64]
push eax
call fcn.00402996
mov eax, dword [ebp + 0x78]
cmp word [eax], 0x3d
jne 0x44b817
add dword [ebp + 0x78], 2
push 0x2c
lea eax, [ebp + 0x6c]
push eax
lea eax, [ebp + 0x78]
push eax
call fcn.0042df66
add esp, 0xc
mov eax, dword [ebp + 0x6c]
push eax
mov dword [ebp + 0x78], eax
mov dword [ebp + 0x6c], ebx
call fcn.00412d51
pop ecx
push eax
lea ecx, [ebp + 0x6c]
call fcn.0042a1b7
lea ecx, [ebp + 0x78]
call fcn.00424686
mov eax, dword [ebp + 0x64]
xor ecx, ecx
jmp 0x44b847
cmp cx, 0x2c
je 0x44b851
inc eax
inc eax
mov cx, word [eax]
cmp cx, bx
jne 0x44b83f
jmp 0x44b86b
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.0042df66
add esp, 0xc
mov ecx, dword [ebp + 0x5c]
push ebx
lea eax, [ebp + 0x60]
push eax
call fcn.00402996
push dword [ebp + 0x64]
call fcn.0040a93c
mov eax, dword [ebp + 0x64]
cmp word [eax], bx
pop ecx
jne 0x44b891
mov eax, dword [ebp + 0x60]
cmp word [eax], bx
je 0x44b899
mov esi, dword [ebp + 0x6c]
cmp word [esi], bx
jne 0x44b89e
xor ebx, ebx
inc ebx
jmp 0x44b8e2
push esi
push 0x47be7c
call fcn.004257d3
test al, al
pop ecx
pop ecx
je 0x44b900
push 0xca
lea ecx, [ebp + 0x60]
call fcn.00424699
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.0042774b
mov ecx, dword [ebp + 0x5c]
add esp, 0x14
push dword [ebp + 0x6c]
push dword [ebp + 0x64]
call fcn.00428e1b
lea ecx, [ebp + 0x60]
call fcn.00424686
lea ecx, [ebp + 0x64]
call fcn.00424686
lea ecx, [ebp + 0x6c]
call fcn.00424686
push edi
jmp 0x44bbf0
push esi
call fcn.0046176a
mov esi, eax
pop ecx
lea eax, [esi + 0x19]
push eax
lea ecx, [ebp + 0x6c]
call fcn.00424699
cmp byte [ebp + 0x6b], bl
jl 0x44b9f6
cmp esi, 1
jne 0x44b942
mov edx, dword [ebp + 0x6c]
cmp word [edx], 0x2e
je 0x44b961
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 0x44b961
cmp word [edx + 2], 0x3a
jne 0x44b961
mov word [edx + 4], 0x5c
mov eax, dword [ebp + 0x6c]
mov word [eax + 6], bx
mov edx, dword [ebp + 0x6c]
mov esi, 0x47c2d0
lea edi, [ebp - 8]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
xor eax, eax
push 0xe
pop ecx
lea edi, [ebp - 2]
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 0x44b9b8
movsx eax, byte [ebp + 0x6b]
push dword [ebp + eax*8 + 0x3c]
push dword [ebp + eax*8 + 0x38]
lea eax, [ebp - 8]
push eax
call fcn.0043417d
add esp, 0xc
mov ecx, dword [ebp + 0x5c]
lea eax, [ebp - 8]
push eax
push dword [ebp + 0x64]
call fcn.00428e1b
lea ecx, [ebp + 0x60]
call fcn.00424686
lea ecx, [ebp + 0x64]
call fcn.00424686
lea ecx, [ebp + 0x6c]
call fcn.00424686
push 0x48b5d4
call dword [sym.imp.KERNEL32.DLL_LeaveCriticalSection]
xor eax, eax
cmp esi, ebx
sete al
jmp 0x44bbf8
push str..C:
lea ecx, [ebp + 0x54]
call fcn.0042a183
mov eax, dword [ebp + 0x6c]
mov ax, word [eax]
mov esi, dword [ebp + 0x54]
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 str..PhysicalDrive
mov dword [ebp + 0x50], ebx
call fcn.004257a3
add esp, 0xc
test al, al
je 0x44bab4
lea eax, [ebp + 0x6c]
push eax
lea ecx, [ebp + 0x54]
call fcn.0042a1e5
push ebx
push 0x20000000
push 3
push ebx
push 3
push 0xc0000000
push dword [ebp + 0x54]
lea ecx, [ebp + 0x78]
mov dword [ebp + 0x78], ebx
call fcn.00403993
mov eax, dword [ebp + 0x64]
cmp word [eax], bx
je 0x44ba79
push 1
push ebx
push dword [ebp + 0x78]
call fcn.0042f28b
add esp, 0xc
mov dword [ebp + 0x50], eax
mov eax, dword [ebp + 0x60]
cmp word [eax], bx
je 0x44ba8f
push dword [ebp + 0x78]
push ebx
call fcn.0042c6e0
pop ecx
pop ecx
mov dword [ebp + 0x58], eax
push dword [ebp + 0x50]
lea eax, [ebp - 0x48]
push 0x47620c
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
lea ecx, [ebp + 0x78]
lea esi, [ebp - 0x48]
call fcn.00402905
jmp 0x44bb85
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 0x44badd
push dword [ebp + 0x6c]
call dword [sym.imp.KERNEL32.DLL_GetDriveTypeW]
mov edi, eax
jmp 0x44bae0
mov edi, dword [ebp + 0x50]
mov eax, dword [ebp + 0x60]
cmp word [eax], bx
jne 0x44bafc
cmp byte [ebp + 0x6a], bl
jne 0x44bb08
cmp edi, 2
je 0x44bafc
cmp edi, 3
je 0x44bafc
cmp edi, 5
jne 0x44bb08
push ebx
push esi
call fcn.0042c6e0
pop ecx
pop ecx
mov dword [ebp + 0x58], eax
or ecx, 0xffffffff
cmp byte [ebp + 0x6a], bl
jne 0x44bb13
mov ecx, dword [ebp + 0x58]
mov eax, edi
sub eax, ebx
je 0x44bb80
dec eax
je 0x44bb79
dec eax
je 0x44bb66
dec eax
je 0x44bb53
dec eax
je 0x44bb4c
dec eax
je 0x44bb39
dec eax
je 0x44bb32
mov esi, str.FUNCTION_ERROR
jmp 0x44bb85
mov esi, str.DRIVE_RAMDISK
jmp 0x44bb85
cmp ecx, 7
jne 0x44bb45
mov esi, str.DRIVE_CDROMUSB
jmp 0x44bb85
mov esi, str.DRIVE_CDROM
jmp 0x44bb85
mov esi, str.DRIVE_REMOTE
jmp 0x44bb85
cmp ecx, 7
jne 0x44bb5f
mov esi, str.DRIVE_USBDISK
jmp 0x44bb85
mov esi, str.DRIVE_FIXED
jmp 0x44bb85
cmp ecx, 7
jne 0x44bb72
mov esi, str.DRIVE_USBFLASH
jmp 0x44bb85
mov esi, str.DRIVE_REMOVABLE
jmp 0x44bb85
mov esi, str.DRIVE_NO_ROOT_DIR
jmp 0x44bb85
mov esi, str.DRIVE_UNKNOWN
mov eax, dword [ebp + 0x64]
cmp word [eax], bx
je 0x44bb97
mov ecx, dword [ebp + 0x5c]
push esi
push eax
call fcn.00428e1b
mov eax, dword [ebp + 0x60]
cmp word [eax], bx
je 0x44bbc3
push dword [ebp + 0x58]
lea eax, [ebp - 0x48]
push 0x47620c
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
mov ecx, dword [ebp + 0x5c]
add esp, 0xc
lea eax, [ebp - 0x48]
push eax
push dword [ebp + 0x60]
call fcn.00428e1b
cmp word [esi], bx
jne 0x44bbcb
xor ebx, ebx
inc ebx
lea ecx, [ebp + 0x54]
call fcn.00424686
lea ecx, [ebp + 0x60]
call fcn.00424686
lea ecx, [ebp + 0x64]
call fcn.00424686
lea ecx, [ebp + 0x6c]
call fcn.00424686
push 0x48b5d4
call dword [sym.imp.KERNEL32.DLL_LeaveCriticalSection]
mov eax, ebx
pop edi
pop esi
pop ebx
add ebp, 0x70
leave
ret 8