Function at 0x100404ec
Capabilities:
Get disk information

Disassembly:
mov eax, 0x1005f53a
call fcn.1005d8a0
sub esp, 0x44
cmp byte [ebp + 0x20], 0
push ebx
push esi
push edi
mov ebx, ecx
mov dword [ebp - 0x10], esp
mov dword [ebp - 0x1c], ebx
je 0x100405be
mov dword [ebp - 0x18], 0x2a50
cmp dword [ebp - 0x18], 0x2c87
jle 0x10040563
push 0x250e
push 0
push 0
call dword [sym.imp.KERNEL32.dll_QueryDosDeviceW]
xor esi, esi
xor edi, edi
xor ebx, ebx
lea eax, [edi + esi]
mov ecx, 0x100788d8
or eax, ebx
cdq
push edx
push eax
call fcn.10001e5c
inc ebx
cmp ebx, 0x7cc2
jl 0x10040533
inc edi
cmp edi, 0x20ef
jl 0x10040531
inc esi
cmp esi, 0x1578
jl 0x1004052f
mov ebx, dword [ebp - 0x1c]
xor esi, esi
cmp dword [ebx], esi
jbe 0x10040583
mov ecx, dword [ebp + 0x18]
push 1
push 0x43f
push dword [ebp + 0x14]
call fcn.1004044a
add esp, 0xc
inc esi
cmp esi, dword [ebx]
jb 0x10040569
and dword [ebp - 4], 0
cmp dword [ebp - 0x18], 0x2867
jge 0x1004059f
mov edx, str.iixsjj_jkabxac_exeo_olp
mov ecx, 0x100788d8
call fcn.10003d65
jmp 0x100407b6
mov dword [ebp - 0x1c], 0x1436
cmp dword [ebp - 0x1c], 0x740
jge 0x10040796
lea eax, [ebp - 0x20]
xor ebx, ebx
push eax
push ecx
lea ecx, [ebp - 0x40]
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x40], ebx
mov dword [ebp - 0x3c], ebx
mov dword [ebp - 0x38], ebx
call fcn.10040c88
lea eax, [ebp - 0x40]
mov dword [ebp - 4], 2
push eax
push ecx
lea ecx, [ebp - 0x4c]
mov dword [ebp - 0x4c], ebx
mov dword [ebp - 0x48], ebx
mov dword [ebp - 0x44], ebx
call fcn.10040cbb
mov byte [ebp - 4], 4
cmp dword [ebp - 0x40], ebx
je 0x10040625
push dword [ebp - 0x40]
call fcn.10047259
pop ecx
mov dword [ebp - 0x40], ebx
mov dword [ebp - 0x3c], ebx
mov dword [ebp - 0x38], ebx
mov edi, dword [ebp - 0x4c]
mov dword [ebp - 0x18], 5
mov esi, ebx
mov eax, dword [edi]
add eax, esi
push eax
push 0x10066bb8
call fcn.10047342
add esi, 4
pop ecx
pop ecx
cmp esi, 0x14
jl 0x10040631
push 0x10066d58
call fcn.10047342
add edi, 0xc
dec dword [ebp - 0x18]
pop ecx
jne 0x1004062f
lea eax, [ebp - 0x24]
mov dword [ebp - 0x24], ebx
push eax
push ecx
lea ecx, [ebp - 0x34]
mov dword [ebp - 0x34], ebx
mov dword [ebp - 0x30], ebx
mov dword [ebp - 0x2c], ebx
call fcn.10040b5c
mov edx, dword [ebp - 0x34]
mov eax, ebx
mov dword [edx + eax*4], eax
inc eax
cmp eax, 5
jl 0x1004067b
mov dword [ebp - 0x1c], ebx
mov ecx, dword [edx + 0xc]
mov esi, dword [ebp - 0x4c]
imul eax, ecx, 0xc
mov edi, dword [edx + 0x10]
mov byte [ebp - 0x11], 0
mov ebx, dword [eax + esi]
imul eax, dword [edx + 8], 0xc
mov eax, dword [eax + esi]
mov dword [ebp - 0x18], eax
imul eax, dword [edx + 4], 0xc
mov edx, dword [edx]
mov esi, dword [eax + esi]
imul eax, edi, 0xc
mov dword [ebp - 0x28], esi
mov esi, dword [ebp - 0x4c]
mov eax, dword [eax + esi]
mov esi, dword [ebp - 0x34]
mov ecx, dword [eax + ecx*4]
add ecx, dword [ebx + edi*4]
mov eax, dword [esi + 0xc]
mov edi, dword [ebp - 0x18]
add ecx, dword [edi + eax*4]
mov edi, esi
mov eax, dword [edi + 8]
add ecx, dword [ebx + eax*4]
mov ebx, dword [ebp - 0x4c]
imul eax, edx, 0xc
mov eax, dword [eax + ebx]
mov ebx, esi
mov esi, dword [ebp - 0x28]
mov edi, dword [ebx + 4]
mov eax, dword [eax + edi*4]
lea eax, [eax + ecx*2]
add eax, dword [esi + edx*4]
mov edx, ebx
mov ebx, dword [ebp - 0x30]
mov ecx, dword [edx + 8]
add eax, dword [esi + ecx*4]
mov ecx, dword [ebp - 0x18]
add eax, dword [ecx + edi*4]
mov edi, dword [ebp - 0x1c]
cmp eax, edi
cmovg edi, eax
mov dword [ebp - 0x1c], edi
cmp edx, ebx
je 0x10040779
lea ecx, [ebx - 4]
cmp edx, ecx
je 0x10040779
jmp 0x1004071a
cmp ecx, edx
je 0x10040763
mov esi, ecx
sub ecx, 4
mov eax, dword [ecx]
cmp eax, dword [esi]
jge 0x10040716
mov edi, ebx
mov dword [ebp - 0x28], eax
lea edi, [edi - 4]
cmp eax, dword [edi]
jge 0x1004072a
mov eax, dword [edi]
mov dword [ecx], eax
mov eax, dword [ebp - 0x28]
mov dword [edi], eax
mov edi, ebx
cmp esi, ebx
je 0x10040687
sub edi, 4
cmp esi, edi
je 0x10040687
mov ecx, dword [esi]
mov eax, dword [edi]
mov dword [esi], eax
add esi, 4
mov dword [edi], ecx
cmp esi, edi
jne 0x10040744
jmp 0x10040687
sub ebx, 4
cmp edx, ebx
je 0x10040779
mov ecx, dword [edx]
mov eax, dword [ebx]
mov dword [edx], eax
add edx, 4
mov dword [ebx], ecx
cmp edx, ebx
jne 0x10040763
push edi
push str._ld_n
call fcn.10047084
pop ecx
pop ecx
lea ecx, [ebp - 0x34]
call fcn.10002048
lea ecx, [ebp - 0x4c]
call fcn.10040d35
mov edx, dword [ebp + 0x10]
push 3
pop edi
mov dword [edx], 0
cmp dword [edx], edi
jge 0x100407b6
mov esi, dword [ebp + 0x1c]
mov ecx, dword [edx]
mov eax, dword [esi]
mov dword [eax + ecx*4], edi
inc dword [edx]
cmp dword [edx], edi
jl 0x100407a9
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret