Function at 0x439800
Capabilities:
Get disk information

Disassembly:
push 0xffffffffffffffff
push 0x4875b8
mov eax, dword fs:[0]
push eax
sub esp, 0x14
push ebp
push esi
push edi
mov eax, dword [0x4b47a8]
xor eax, esp
push eax
lea eax, [esp + 0x24]
mov dword fs:[0], eax
call fcn.0044d630
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x439840
push 0x80004005
call fcn.00401db0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x1c], eax
mov dword [esp + 0x2c], 0
call fcn.0044d630
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x439872
push 0x80004005
call fcn.00401db0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x10], eax
push 0
mov byte [esp + 0x30], 1
mov ebp, dword [sym.imp.KERNEL32.dll_GetLogicalDriveStringsA]
push 0
call ebp
mov edi, eax
lea ecx, [edi + 1]
push ecx
call fcn.00446d76
add esp, 4
mov esi, eax
push esi
push edi
mov dword [esp + 0x20], esi
call ebp
mov eax, esi
lea ecx, [eax + 1]
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x4398b0
sub eax, ecx
mov ebp, eax
call fcn.0044d630
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x4398d7
push 0x80004005
call fcn.00401db0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea edi, [eax + 0x10]
mov dword [esp + 0x14], edi
test ebp, ebp
mov byte [esp + 0x2c], 2
jbe 0x4399a5
test esi, esi
jne 0x4398fc
xor eax, eax
jmp 0x43990c
mov eax, esi
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x439901
sub eax, edx
push eax
push esi
lea ecx, [esp + 0x1c]
call fcn.004068a0
mov edi, dword [esp + 0x14]
cmp dword [edi - 0xc], 0
jl 0x439a35
mov cl, byte [edi]
mov byte [esp + 0x20], cl
mov edx, dword [esp + 0x20]
push edx
call fcn.00414c30
add esp, 4
test eax, eax
je 0x439950
lea esi, [esi + ebp + 1]
mov eax, esi
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x439945
jmp 0x439999
cmp dword [edi - 0xc], 0
jl 0x439a35
movsx eax, byte [edi]
push eax
lea ecx, [esp + 0x14]
push str._c:computer.._
push ecx
call fcn.004067e0
mov edx, dword [esp + 0x1c]
push 0
push edx
call fcn.0046b81d
add esp, 0x14
cmp eax, 0xffffffff
jne 0x439a3f
lea esi, [esi + ebp + 1]
mov eax, esi
lea edx, [eax + 1]
mov edi, edi
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x439990
sub eax, edx
mov ebp, eax
test ebp, ebp
ja 0x4398f4
mov ecx, dword [esp + 0x18]
push ecx
call fcn.00446d7b
lea eax, [edi - 0x10]
add esp, 4
mov byte [esp + 0x2c], 1
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4399d3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x2c], 0
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4399f8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x2c], 0xffffffff
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x439a20
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov ecx, dword [esp + 0x24]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
add esp, 0x20
ret
push 0x80070057
call fcn.00401db0
mov eax, dword [esp + 0x18]
push eax
call fcn.00446d7b
lea eax, [edi - 0x10]
add esp, 4
mov byte [esp + 0x2c], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x439a6d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x2c], 0
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x439a92
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x2c], 0xffffffff
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x439aba
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 1
mov ecx, dword [esp + 0x24]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
add esp, 0x20
ret