Function at 0x405c0d
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x128
mov eax, dword [0x423410]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x128], eax
mov eax, dword [ebp + 0x10]
push ebx
mov dword [ebp - 0x11c], eax
mov eax, dword [0x4240e4]
xor ebx, ebx
push esi
mov esi, dword [ebp + 8]
mov dword [ebp - 0x110], ebx
mov dword [ebp - 0x114], 1
test eax, eax
jne 0x405c5f
call fcn.00405b54
test eax, eax
je 0x405eab
push edi
cmp esi, ebx
je 0x405d55
cmp byte [esi], bl
je 0x405d55
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov edi, eax
mov dword [ebp - 0x110], edi
cmp edi, 0x104
jbe 0x405c8e
xor eax, eax
jmp 0x405eaa
lea eax, [ebp - 0x10c]
xor edx, edx
sub esi, eax
lea eax, [ebp + edx - 0x10c]
mov cl, byte [esi + eax]
cmp cl, 0x2f
jne 0x405cac
mov byte [eax], 0x5c
jmp 0x405cae
mov byte [eax], cl
inc edx
cmp edx, edi
jbe 0x405c98
cmp byte [ebp - 0x10c], 0x5c
jne 0x405d2b
cmp byte [ebp - 0x10b], 0x5c
jne 0x405d2b
push 2
pop eax
xor ecx, ecx
cmp edi, eax
jbe 0x405d55
cmp byte [ebp + eax - 0x10c], 0x5c
jne 0x405ce2
inc ecx
cmp ecx, 2
je 0x405ce9
inc eax
cmp eax, edi
jb 0x405cd2
jmp 0x405cf7
inc eax
mov byte [ebp + eax - 0x10c], bl
mov dword [ebp - 0x110], eax
cmp ecx, 1
jne 0x405d55
mov eax, dword [ebp - 0x110]
lea eax, [ebp + eax - 0x10c]
cmp byte [eax], 0x5c
je 0x405d55
mov cl, byte [ebp - 0x10c]
mov byte [eax], cl
mov eax, dword [ebp - 0x110]
inc dword [ebp - 0x110]
mov byte [ebp + eax - 0x10b], bl
jmp 0x405d55
cmp byte [ebp - 0x10b], 0x3a
jne 0x405d49
mov word [ebp - 0x10a], 0x5c
mov dword [ebp - 0x110], 3
jmp 0x405d55
mov byte [ebp - 0x10c], bl
mov dword [ebp - 0x110], ebx
mov edi, dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov esi, 0x424f60
push esi
call edi
cmp dword [0x424e40], ebx
je 0x405d85
lea eax, [ebp - 0x10c]
push eax
push 0x424e58
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
je 0x405e6a
push esi
mov dword [ebp - 0x124], ebx
mov dword [ebp - 0x118], ebx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push ebx
push ebx
lea eax, [ebp - 0x120]
push eax
movsx eax, byte [ebp - 0x10c]
push ebx
push ebx
neg eax
push ebx
sbb eax, eax
lea ecx, [ebp - 0x10c]
push ebx
and eax, ecx
push eax
call dword [sym.imp.KERNEL32.dll_GetVolumeInformationA]
mov dword [ebp - 0x114], eax
cmp eax, ebx
je 0x405e1a
test byte [ebp - 0x120], 8
je 0x405e1a
mov eax, dword [ebp - 0x11c]
cmp dword [eax + 4], ebx
je 0x405e1a
movsx eax, byte [ebp - 0x10c]
neg eax
sbb eax, eax
lea ecx, [ebp - 0x10c]
and eax, ecx
push eax
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
cmp eax, 4
jne 0x405e1a
push dword [ebp - 0x128]
lea ebx, [ebp - 0x124]
mov dword [ebp - 0x118], 1
call fcn.004059b9
pop ecx
xor ebx, ebx
push esi
call edi
cmp dword [ebp - 0x114], ebx
je 0x405e97
mov eax, dword [ebp - 0x110]
inc eax
push eax
lea eax, [ebp - 0x10c]
push eax
push 0x424e58
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
mov eax, dword [ebp - 0x120]
mov dword [0x424e48], eax
mov eax, dword [ebp - 0x118]
mov dword [0x424e4c], eax
mov eax, dword [ebp - 0x124]
mov dword [0x424e50], eax
mov dword [0x424e40], 1
mov eax, dword [ebp - 0x11c]
mov ecx, dword [eax + 4]
push 0x120
mov dword [0x424e44], ecx
mov ecx, dword [eax + 0x14]
push 0x424e40
push eax
mov dword [0x424e54], ecx
call fcn.0040a7a0
add esp, 0xc
jmp 0x405e9d
mov dword [0x424e40], ebx
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [ebp - 0x114]
pop edi
mov ecx, dword [ebp - 4]
pop esi
xor ecx, ebp
pop ebx
call fcn.0040da8f
leave
ret