Function at 0x4033d0
Capabilities:
Get disk information
Get disk size
Get file attributes
Get file system object information

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
push 0xffffffffffffffff
push 0x44a76b
mov eax, dword fs:[0]
push eax
sub esp, 0x3e8
mov eax, dword [0x45d740]
xor eax, esp
mov dword [esp + 0x3b0], eax
push ebx
push esi
push edi
mov eax, dword [0x45d740]
xor eax, esp
push eax
lea eax, [esp + 0x3f8]
mov dword fs:[0], eax
mov esi, dword [sym.imp.USER32.dll_SendMessageA]
push 0
mov edi, ecx
mov eax, dword [edi + 0x86c]
push 0
push 0x1009
push eax
mov dword [esp + 0x50], edi
call esi
mov edi, edi
mov ecx, dword [edi + 0x86c]
push 0
push 0
push 0x101c
push ecx
call esi
test eax, eax
jne 0x403430
push 0xffffffffffffffff
push 0xc8
push eax
push 0x452200
lea esi, [edi + 0x84c]
push eax
mov ecx, esi
call fcn.00410932
push 0xffffffffffffffff
push 0x64
push 0
push 0x452208
push 1
mov ecx, esi
call fcn.00410932
push 0xffffffffffffffff
push 0x64
push 0
push 0x452210
push 2
mov ecx, esi
call fcn.00410932
push 0xffffffffffffffff
push 0x73
push 0
push 0x452218
push 3
mov ecx, esi
call fcn.00410932
lea edx, [esp + 0x2bc]
push edx
push 0x100
call dword [sym.imp.KERNEL32.dll_GetLogicalDriveStringsA]
xor eax, eax
cmp byte [esp + 0x2bc], al
lea ebx, [esp + 0x2bc]
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x34], eax
je 0x403765
lea ebx, [ebx]
push 0x104
push eax
lea eax, [esp + 0x1bc]
push eax
call fcn.00435f30
push 0x452224
push ebx
call fcn.004322c0
add esp, 0x14
test eax, eax
jne 0x40351e
push 0x104
lea ecx, [esp + 0x1b8]
push ecx
push eax
push eax
push eax
push eax
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetVolumeInformationA]
lea edx, [esp + 0x1b4]
push edx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push 0x452224
push ebx
call fcn.004322c0
add esp, 8
test eax, eax
jne 0x403578
push eax
lea eax, [esp + 0x50]
push eax
lea ecx, [esp + 0x4c]
push ecx
push ebx
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceExA]
test eax, eax
je 0x403578
mov eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x48]
shrd eax, edx, 0x14
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x44]
shrd eax, ecx, 0x14
shr edx, 0x14
shr ecx, 0x14
jmp 0x40357e
xor eax, eax
mov dword [esp + 0x38], eax
push 0x452224
push ebx
mov dword [esp + 0x44], eax
call fcn.004322c0
add esp, 8
test eax, eax
jne 0x40359b
push ebx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
movsx edx, byte [ebx]
push ebx
mov dword [esp + 0x34], edx
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
add eax, 0xfffffffe
cmp eax, 4
ja case.0x4035b1.3
jmp dword [eax*4 + 0x4037d0]
mov eax, dword [esp + 0x30]
cmp eax, 0x41
je 0x4035d1
cmp eax, 0x42
je 0x4035d1
mov eax, dword [edi + 0x6a0]
add eax, 3
jmp 0x4035f8
mov eax, dword [edi + 0x6a0]
add eax, 1
jmp 0x4035f8
mov eax, dword [edi + 0x6a0]
jmp 0x4035f8
mov eax, dword [edi + 0x6a0]
add eax, 4
jmp 0x4035f8
mov eax, dword [edi + 0x6a0]
add eax, 2
push 0
push eax
mov eax, dword [esp + 0x3c]
push 0
push 0
push ebx
push eax
push 3
mov ecx, esi
call fcn.00410985
push 1
push 0
push 0
push 0
push 0
push 4
mov edi, eax
push 0
push edi
mov ecx, esi
call fcn.004109d1
lea ecx, [esp + 0x1b4]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
test eax, eax
jne 0x40365d
push 0x410
push 0x160
lea edx, [esp + 0x5c]
push edx
push 0x80
push ebx
call dword [sym.imp.SHELL32.dll_SHGetFileInfoA]
lea eax, [esp + 0x164]
push eax
jmp 0x403665
lea ecx, [esp + 0x1b4]
push ecx
push 1
push edi
mov ecx, esi
call fcn.004107d4
call fcn.00412fcd
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x4037c4
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x30], eax
fild dword [esp + 0x38]
mov ecx, dword [esp + 0x38]
test ecx, ecx
mov dword [esp + 0x400], 0
jge 0x4036b0
fadd dword [0x453210]
fmul qword [0x453208]
sub esp, 8
lea edx, [esp + 0x38]
fstp qword [esp]
push str._10.1f_GB
push edx
call fcn.0040b0d0
mov eax, dword [esp + 0x40]
add esp, 0x10
push eax
push 2
push edi
mov ecx, esi
call fcn.004107d4
fild dword [esp + 0x3c]
mov ecx, dword [esp + 0x3c]
test ecx, ecx
jge 0x4036ef
fadd dword [0x453210]
fmul qword [0x453208]
sub esp, 8
lea edx, [esp + 0x38]
fstp qword [esp]
push str._10.1f_GB
push edx
call fcn.0040b0d0
mov eax, dword [esp + 0x40]
add esp, 0x10
push eax
push 3
push edi
mov ecx, esi
call fcn.004107d4
mov dword [esp + 0x400], 0xffffffff
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403747
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
add dword [esp + 0x34], 1
push ebx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov edi, dword [esp + 0x40]
lea ebx, [ebx + eax + 1]
xor eax, eax
cmp byte [ebx], al
jne 0x4034e0
push eax
lea esi, [edi + 0x6b0]
push 0x451c5c
mov ecx, esi
call fcn.00402100
mov ecx, dword [edi + 0x7c4]
push 0
push 0
push 0x14b
push ecx
call dword [sym.imp.USER32.dll_SendMessageA]
mov edx, dword [esi]
push edx
push 0x452234
mov esi, edi
call fcn.00405940
add esp, 8
mov ecx, dword [esp + 0x3f8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x3b0]
xor ecx, esp
call fcn.00431676
mov esp, ebp
pop ebp
ret
push 0x80004005
call fcn.00402350
mov edi, edi
mov eax, 0xef004035
xor eax, 903610432
inc eax
add ah, ah
xor eax, 0x35c60040
inc eax
add ah, cl
int3