Function at 0x100021c0
Capabilities:
Get disk information

Disassembly:
sub esp, 0x418
mov eax, dword [0x100140c0]
xor eax, esp
mov dword [esp + 0x414], eax
push esi
mov esi, dword [esp + 0x420]
push edi
push 0x104
lea eax, [esp + 0x114]
push 0
push eax
mov edi, ecx
mov dword [esp + 0x14], 0
call fcn.10004530
push 0x104
lea ecx, [esp + 0x328]
push 0
push ecx
call fcn.10004530
push 0x104
lea edx, [esp + 0x28]
push 0
push edx
call fcn.10004530
push 0x104
lea eax, [esp + 0x23c]
push 0
push eax
call fcn.10004530
lea ecx, [esp + 0x38]
push ecx
push str.LPT_d
push esi
mov dword [edi + 0x20], 1
call fcn.1000498d
add esp, 0x3c
cmp eax, 1
je 0x1000225d
mov eax, 0x20000010
jmp 0x1000259b
mov edx, dword [esp + 8]
add edx, 0xffffffff
cmp edx, 2
ja 0x10002253
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_CreateFileA]
push ebp
mov ebp, dword [sym.imp.KERNEL32.dll_QueryDosDeviceA]
xor esi, esi
lea esp, [esp]
push 0x104
lea eax, [esp + 0x11c]
push 0
push eax
call fcn.10004530
push 0x104
lea ecx, [esp + 0x24]
push 0
push ecx
call fcn.10004530
mov eax, dword [esp + 0x28]
add esp, 0x18
sub eax, 1
je 0x10002411
sub eax, 1
je 0x1000236c
sub eax, 1
jne 0x100024bb
test esi, esi
jne 0x10002328
mov edx, dword [str.epparp3.4]
mov eax, dword [0x100102b8]
mov cx, word [0x100102bc]
mov dword [esp + 0x118], edx
mov edx, dword [str.DeviceParallel2.4]
mov dword [esp + 0x11c], eax
mov eax, dword [0x100102a4]
mov word [esp + 0x120], cx
mov ecx, dword [0x100102a8]
mov dword [esp + 0x14], edx
mov edx, dword [0x100102ac]
mov dword [esp + 0x18], eax
mov eax, dword [0x100102b0]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x20], edx
mov dword [esp + 0x24], eax
jmp 0x100024bb
mov ecx, dword [str.epparp3]
mov edx, dword [0x1001029c]
mov eax, dword [str.DeviceParallel2]
mov dword [esp + 0x118], ecx
mov ecx, dword [0x10010288]
mov dword [esp + 0x11c], edx
mov edx, dword [0x1001028c]
mov dword [esp + 0x14], eax
mov eax, dword [0x10010290]
mov dword [esp + 0x18], ecx
mov cx, word [0x10010294]
jmp 0x100024ae
test esi, esi
jne 0x100023cd
mov edx, dword [str.epparp2.4]
mov eax, dword [0x1001027c]
mov cx, word [0x10010280]
mov dword [esp + 0x118], edx
mov edx, dword [str.DeviceParallel1.4]
mov dword [esp + 0x11c], eax
mov eax, dword [0x10010268]
mov word [esp + 0x120], cx
mov ecx, dword [0x1001026c]
mov dword [esp + 0x14], edx
mov edx, dword [0x10010270]
mov dword [esp + 0x18], eax
mov eax, dword [0x10010274]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x20], edx
mov dword [esp + 0x24], eax
jmp 0x100024bb
mov ecx, dword [str.epparp2]
mov edx, dword [0x10010260]
mov eax, dword [str.DeviceParallel1]
mov dword [esp + 0x118], ecx
mov ecx, dword [0x1001024c]
mov dword [esp + 0x11c], edx
mov edx, dword [0x10010250]
mov dword [esp + 0x14], eax
mov eax, dword [0x10010254]
mov dword [esp + 0x18], ecx
mov cx, word [0x10010258]
jmp 0x100024ae
test esi, esi
jne 0x1000246f
mov edx, dword [str.epparp1.4]
mov eax, dword [0x10010240]
mov cx, word [0x10010244]
mov dword [esp + 0x118], edx
mov edx, dword [str.DeviceParallel0.4]
mov dword [esp + 0x11c], eax
mov eax, dword [0x1001022c]
mov word [esp + 0x120], cx
mov ecx, dword [0x10010230]
mov dword [esp + 0x14], edx
mov edx, dword [0x10010234]
mov dword [esp + 0x18], eax
mov eax, dword [0x10010238]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x20], edx
mov dword [esp + 0x24], eax
jmp 0x100024bb
mov ecx, dword [str.epparp1]
mov edx, dword [0x10010224]
mov eax, dword [str.DeviceParallel0]
mov dword [esp + 0x118], ecx
mov ecx, dword [0x10010210]
mov dword [esp + 0x11c], edx
mov edx, dword [0x10010214]
mov dword [esp + 0x14], eax
mov eax, dword [0x10010218]
mov dword [esp + 0x18], ecx
mov cx, word [0x1001021c]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x20], eax
mov word [esp + 0x24], cx
push 0x104
lea edx, [esp + 0x220]
push 0
push edx
call fcn.10004530
add esp, 0xc
push 0x104
lea eax, [esp + 0x220]
push eax
lea ecx, [esp + 0x120]
push ecx
call ebp
lea ecx, [esp + 0x14]
lea eax, [esp + 0x21c]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x10002514
test dl, dl
je 0x10002510
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x10002514
add eax, 2
add ecx, 2
test dl, dl
jne 0x100024f4
xor eax, eax
jmp 0x10002519
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x10002536
lea edx, [esp + 0x14]
push edx
lea eax, [esp + 0x11c]
push eax
push 1
call dword [sym.imp.KERNEL32.dll_DefineDosDeviceA]
test eax, eax
je 0x10002594
push 0x104
lea ecx, [esp + 0x324]
push 0
push ecx
call fcn.10004530
lea edx, [esp + 0x124]
push edx
lea eax, [esp + 0x330]
push str.._s
push eax
call fcn.100049ac
add esp, 0x18
push 0
push 0
push 3
push 0
push 3
push 0xc0000000
lea ecx, [esp + 0x338]
push ecx
call ebx
cmp eax, 0xffffffff
mov dword [edi + 0x24], eax
jne 0x100025b4
add esi, 1
cmp esi, 2
jl 0x10002280
mov eax, 0x20000101
pop ebp
pop ebx
mov ecx, dword [esp + 0x41c]
pop edi
pop esi
xor ecx, esp
call fcn.100045aa
add esp, 0x418
ret 4
mov eax, 1
jmp 0x10002599