Function at 0x42f4f9
Capabilities:
Get disk information

Disassembly:
push ebp
lea ebp, [esp - 0x70]
sub esp, 0x208
push ebx
push esi
mov eax, 0x48b1dc
push edi
push eax
mov dword [ebp - 0x2c], eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov esi, dword [ebp + 0x78]
cmp word [esi], 0x2a
push 2
sete byte [ebp + 0x6c]
xor ebx, ebx
cmp byte [ebp + 0x6c], bl
pop edi
je 0x42f530
add esi, edi
mov dword [ebp + 0x78], esi
push edi
push esi
push 0x47ac30
call fcn.004257a3
push edi
push esi
push 0x47ac2c
mov byte [ebp + 0x3b], al
call fcn.004257a3
push 3
push esi
push 0x47ac28
mov byte [ebp + 0x6d], al
call fcn.004257a3
push edi
push esi
push 0x47ac24
mov byte [ebp + 0x13], al
call fcn.004257a3
mov byte [ebp + 0x3a], al
lea eax, [ebp + 0x78]
push eax
call fcn.00403977
add esp, 0x34
push 5
lea ecx, [ebp + 0x64]
call fcn.0042465d
push 0x14
lea ecx, [ebp + 0x44]
call fcn.0042465d
lea ecx, [ebp + 4]
call fcn.0042460b
or dword [ebp + 0x40], 0xffffffff
push 6
push dword [ebp + 0x78]
mov dword [ebp + 0x18], ebx
push str._SKIP
mov byte [ebp + 0xf], 0
mov dword [ebp + 0x34], ebx
mov dword [ebp + 0x58], ebx
mov dword [ebp + 0x3c], 0x3e8
mov byte [ebp + 0x63], 0
mov dword [ebp + 0x5c], ebx
mov byte [ebp + 0x6e], 0
mov byte [ebp + 0x6f], 0
mov byte [ebp + 0x57], 0x43
mov byte [ebp + 0x6b], 0
mov byte [ebp + 0x39], 0
call fcn.004257a3
add esp, 0xc
test al, al
je 0x42f60d
add dword [ebp + 0x78], 0xc
lea ecx, [ebp + 0x78]
call fcn.00429ef2
lea eax, [ebp + 8]
push eax
mov eax, ecx
push eax
mov dword [ebp + 8], 0x42
call fcn.0042e410
mov al, byte [ebp + 8]
pop ecx
pop ecx
lea ecx, [ebp + 0x78]
mov byte [ebp + 0x39], al
call fcn.00429ef2
push edi
push dword [ebp + 0x78]
push 0x47ac18
call fcn.00425759
add esp, 0xc
test al, al
je 0x42f632
add dword [ebp + 0x78], 4
lea ecx, [ebp + 0x78]
call fcn.00429ef2
mov byte [ebp + 0x63], 1
mov ecx, dword [ebp + 0x78]
jmp 0x42f674
cmp ax, 0x2a
jne 0x42f643
mov byte [ebp + 0xf], 1
jmp 0x42f66f
cmp ax, 0x26
jne 0x42f64f
or dword [ebp + 0x34], 8
jmp 0x42f66f
cmp ax, 0x2d
jne 0x42f67c
xor eax, eax
mov ax, word [ecx + 2]
push eax
call fcn.0040e5a7
add esp, 4
test al, al
jne 0x42f67c
mov dword [ebp + 0x58], 1
add ecx, edi
mov dword [ebp + 0x78], ecx
mov ax, word [ecx]
cmp ax, bx
jne 0x42f637
lea ecx, [ebp + 0x78]
call fcn.00429ef2
mov eax, dword [ebp + 0x78]
cmp word [eax], bx
push 0x2c
pop esi
jne 0x42f69c
or dword [ebp + 0x5c], 0xffffffff
or dword [ebp + 0x40], 0xffffffff
jmp 0x42f863
push esi
lea eax, [ebp + 4]
push eax
lea eax, [ebp + 0x78]
push eax
call fcn.0042df66
mov eax, dword [ebp + 0x78]
add esp, 0xc
cmp word [eax], si
jne 0x42f6c9
add dword [ebp + 0x78], edi
push esi
lea eax, [ebp + 0x64]
push eax
lea eax, [ebp + 0x78]
push eax
call fcn.0042df66
add esp, 0xc
mov eax, dword [ebp + 0x78]
cmp word [eax], si
jne 0x42f6e5
add dword [ebp + 0x78], edi
push esi
lea eax, [ebp + 0x18]
push eax
lea eax, [ebp + 0x78]
push eax
call fcn.0042e1ad
add esp, 0xc
mov eax, dword [ebp + 0x78]
cmp word [eax], 0x2c
mov edi, 0xffdf
jne 0x42f72e
lea ecx, [ebp + 0x18]
call fcn.0042460b
mov eax, dword [ebp + 0x78]
add eax, 2
lea ecx, [ebp + 0x78]
mov dword [ebp + 0x78], eax
call fcn.00429ef2
mov eax, dword [ebp + 0x78]
movzx eax, word [eax]
and eax, edi
cmp ax, 0x41
jb 0x42f726
cmp ax, 0x5a
ja 0x42f726
mov byte [ebp + 0x57], al
mov byte [ebp + 0x6b], al
lea ecx, [ebp + 0x18]
call fcn.00424686
mov ecx, dword [ebp + 4]
xor esi, esi
mov si, word [ecx]
mov dword [ebp + 0x78], ecx
mov edx, esi
push esi
and edx, edi
call fcn.0040e5a7
add esp, 4
test al, al
jne 0x42f7a7
cmp si, 0x2d
jne 0x42f763
xor eax, eax
mov ax, word [ecx + 2]
push eax
call fcn.0040e5a7
add esp, 4
test al, al
jne 0x42f7a7
cmp dx, 0x46
jne 0x42f76f
mov byte [ebp + 0x6e], 0xc
jmp 0x42f79f
cmp dx, 0x55
je 0x42f79b
cmp dx, 0x52
je 0x42f79b
cmp si, 0x3a
je 0x42f7de
cmp si, 0x23
je 0x42f7de
cmp dword [ebp + 0x58], ebx
jne 0x42f7de
cmp si, bx
je 0x42f7de
mov esi, 0x80070057
jmp 0x43022d
mov byte [ebp + 0x6e], 0xb
add ecx, 2
mov dword [ebp + 0x78], ecx
jmp 0x42f7de
lea eax, [ebp + 0x40]
push eax
lea eax, [ebp + 0x18]
push eax
mov dword [ebp + 0x18], ecx
call fcn.0042e410
pop ecx
pop ecx
jmp 0x42f7d1
cmp si, 0x3a
je 0x42f7d6
cmp si, 0x23
je 0x42f7d6
add dword [ebp + 0x78], 2
mov eax, dword [ebp + 0x78]
mov si, word [eax]
cmp si, bx
jne 0x42f7bb
lea ecx, [ebp + 0x78]
call fcn.00429ef2
mov eax, dword [ebp + 0x78]
cmp word [eax], bx
jne 0x42f7f5
mov eax, dword [ebp + 0x64]
cmp word [eax], bx
je 0x42f7f5
mov dword [ebp + 0x58], 1
lea ecx, [ebp + 0x78]
call fcn.00429ef2
mov eax, dword [ebp + 0x78]
mov ax, word [eax]
cmp ax, 0x3a
je 0x42f813
cmp ax, 0x23
jne 0x42f863
mov byte [ebp + 0x6f], 1
cmp byte [ebp + 0x6e], 0
jne 0x42f81e
cmp dword [ebp + 0x40], ebx
jge 0x42f822
mov byte [ebp + 0x6f], 0
add dword [ebp + 0x78], 2
lea ecx, [ebp + 0x78]
call fcn.00429ef2
mov eax, dword [ebp + 0x78]
cmp word [eax], 0x2d
jne 0x42f851
movzx eax, word [eax + 2]
push eax
call fcn.0040e5a7
add esp, 4
test al, al
jne 0x42f851
mov dword [ebp + 0x58], 1
jmp 0x42f863
push 0x2c
lea eax, [ebp + 0x5c]
push eax
lea eax, [ebp + 0x78]
push eax
call fcn.0042e1ad
add esp, 0xc
cmp byte [ebp + 0x6f], 0
mov dword [ebp + 0x2c], 0xfffffff8
je 0x42f895
mov eax, dword [ebp + 0x5c]
cmp eax, ebx
jg 0x42f87f
xor esi, esi
inc esi
jmp 0x43022d
cmp eax, 4
jg 0x42f887
dec eax
jmp 0x42f88e
lea eax, [eax*4 - 0x10]
mov esi, eax
mov dword [ebp + 0x5c], esi
jmp 0x42f898
mov esi, dword [ebp + 0x5c]
push dword [ebp + 0x64]
call fcn.0046176a
pop ecx
add eax, 5
push eax
lea ecx, [ebp + 0x64]
call fcn.00424699
mov eax, dword [ebp + 0x64]
mov cx, word [eax]
cmp cx, 0x61
jb 0x42f8c7
cmp cx, 0x7a
ja 0x42f8c7
add word [eax], 0xffe0
mov eax, dword [ebp + 0x64]
cmp byte [ebp + 0x6e], 0
jne 0x42f90d
cmp dword [ebp + 0x58], ebx
jne 0x42f90d
mov cx, word [eax]
cmp cx, 0x100
jae 0x42f90d
cmp cx, 0x41
jb 0x42f8e8
cmp cx, 0x5a
jbe 0x42f90d
cmp dword [ebp + 0x40], ebx
mov word [eax], bx
jl 0x42f8f8
cmp esi, 1
jl 0x42f8f8
mov dword [ebp + 0x2c], esi
cmp byte [ebp + 0x6f], 0
je 0x42f90a
cmp dword [ebp + 0x40], ebx
jl 0x42f90a
cmp esi, ebx
jl 0x42f90a
mov dword [ebp + 0x2c], esi
mov eax, dword [ebp + 0x64]
mov ax, word [eax]
push 0x64
lea ecx, [ebp + 0x44]
mov dword [ebp + 0x30], ebx
mov word [ebp + 0x14], ax
call fcn.00424699
call dword [sym.imp.KERNEL32.dll_GetLogicalDrives]
cmp byte [ebp + 0x3a], 0
mov dword [ebp - 4], eax
mov al, byte [ebp + 0x6b]
jne 0x42f935
mov al, 0x43
movsx ax, al
mov word [ebp - 0xc], ax
mov dword [ebp + 0x18], 1
cmp byte [ebp + 0x6f], 0
jne 0x42f95f
cmp byte [ebp + 0x63], 0
je 0x42f95f
cmp dword [ebp + 0x40], ebx
jl 0x42f95f
mov eax, dword [ebp + 0x5c]
cmp eax, ebx
jle 0x42f95f
mov dword [ebp + 0x2c], eax
cmp byte [ebp + 0x6c], 0
jne 0x42f9a5
cmp byte [ebp + 0x6e], 0
jne 0x42f9a5
cmp dword [ebp + 0x2c], ebx
jge 0x42f9a5
cmp byte [ebp + 0x6f], 0
jne 0x42f9a5
mov eax, dword [ebp + 0x64]
cmp word [eax], bx
jne 0x42f989
cmp dword [ebp + 0x5c], ebx
je 0x42f9a5
cmp dword [ebp + 0x5c], 0xffffffff
je 0x42f9a5
cmp dword [ebp + 0x58], ebx
je 0x43015d
cmp dword [ebp + 0x40], ebx
jl 0x430158
cmp dword [ebp + 0x5c], 1
jl 0x430158
push 0x100000
lea ecx, [ebp + 0x48]
call fcn.00424576
push 0x27
xor eax, eax
pop ecx
mov word [ebp - 0xd0], bx
lea edi, [ebp - 0xce]
stosd dword es:[edi], eax
push ebx
push dword [ebp + 0x48]
lea edi, [ebp - 0xca]
rep stosd dword es:[edi], eax
lea eax, [ebp - 0xd0]
push eax
call fcn.0042efef
mov eax, dword [ebp + 0x14]
add esp, 0xc
mov word [ebp + 0x4c], ax
mov word [ebp + 0x4e], 0x3a
mov word [ebp + 0x50], bx
mov word [ebp + 0x20], ax
mov word [ebp + 0x22], 0x3a
mov word [ebp + 0x24], 0x5c
mov word [ebp + 0x26], bx
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x10], ebx
jmp 0x43009a
mov eax, dword [ebp - 0x10]
cmp ax, 0x10
jge 0x4300bc
mov dword [ebp + 0x1c], eax
mov eax, dword [ebp + 0x40]
cmp eax, ebx
jl 0x42fa31
mov dword [ebp + 0x1c], eax
mov dword [ebp - 0x10], 0x3e8
movsx eax, word [ebp + 0x1c]
push eax
lea eax, [ebp - 0x198]
push str..PhysicalDrive_d
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
push ebx
push 0x20000000
push 3
push ebx
push 3
push 0x80000000
lea eax, [ebp - 0x198]
push eax
lea ecx, [ebp + 0x78]
mov dword [ebp + 0x78], ebx
call fcn.00403993
mov esi, dword [ebp + 0x78]
cmp esi, ebx
je 0x42fade
cmp byte [ebp + 0x6e], 0
je 0x42fa8f
push ebx
push dword [ebp + 0x48]
push esi
call fcn.0042f28b
movsx ecx, byte [ebp + 0x6e]
add esp, 0xc
cmp eax, ecx
jne 0x42fade
lea eax, [ebp - 8]
push eax
push dword [ebp + 0x48]
mov dword [ebp - 8], ebx
push esi
call fcn.00427525
mov edi, eax
add esp, 0xc
cmp edi, ebx
mov dword [ebp - 0x28], edi
je 0x42fade
push esi
push ebx
call fcn.0042c6e0
cmp eax, 7
mov esi, dword [ebp - 8]
pop ecx
pop ecx
je 0x42faeb
cmp esi, 4
jne 0x42faeb
mov al, byte [ebp + 0x39]
cmp al, byte [edi + 0x20]
jne 0x42faeb
cmp byte [edi + 0x40], 0
jne 0x42faeb
cmp byte [edi + 0x60], 0
jne 0x42faeb
cmp byte [edi + 0x80], 0
jne 0x42faeb
lea ecx, [ebp + 0x78]
call fcn.00402905
jmp 0x430097
dec dword [ebp + 0x3c]
cmp dword [ebp + 0x3c], ebx
mov dword [ebp], ebx
mov dword [ebp + 0x28], ebx
jle 0x43008d
jmp 0x42fb05
mov esi, dword [ebp - 8]
mov edi, dword [ebp - 0x28]
cmp dword [ebp + 0x28], esi
mov ebx, dword [ebp + 0x5c]
jge 0x43008d
mov eax, dword [ebp + 0x28]
lea ecx, [ebp - 0x2c]
mov dword [ebp - 0x1c], eax
call fcn.00424406
cmp byte [ebp + 0x6f], 0
je 0x42fb3f
xor edx, edx
cmp ebx, edx
jl 0x42fb41
cmp ebx, esi
lea eax, [esi + 0x3e8]
mov dword [ebp + 0x28], eax
mov dword [ebp - 0x1c], ebx
jge 0x43008d
xor edx, edx
mov eax, dword [ebp - 0x1c]
shl eax, 5
cmp byte [ebp + 0x6c], 0
lea eax, [eax + edi + 8]
movzx ecx, byte [eax + 0x18]
movsx edi, word [eax + 0x14]
mov dword [ebp - 0x14], ecx
mov dword [ebp + 8], edi
je 0x42fb89
cmp ebx, edx
jl 0x42fb89
cmp edi, ebx
jne 0x43007d
test cl, 0x10
jne 0x4300ff
cmp ecx, 0x84
je 0x4300ff
lea eax, [esi + 0x3e8]
mov dword [ebp + 0x28], eax
cmp ecx, edx
je 0x43007d
cmp ecx, 5
je 0x43007d
cmp ecx, 0xf
je 0x43007d
cmp ecx, 0x85
je 0x43007d
inc dword [ebp - 0x18]
cmp byte [ebp + 0x6f], 0
jne 0x42fbc7
cmp dword [ebp + 0x2c], 1
jl 0x42fbc7
cmp dword [ebp + 0x2c], edi
jne 0x43007d
cmp dword [ebp + 0x2c], edx
jl 0x42fbd5
add esi, 0x3e8
mov dword [ebp + 0x28], esi
cmp byte [ebp + 0x6f], 0
je 0x42fd5b
xor bl, bl
xor esi, esi
movsx eax, si
lea eax, [eax + eax*2]
shl eax, 1
mov cx, word [ebp + eax - 0xce]
cmp cx, word [ebp + 0x1c]
jne 0x42fc69
movsx ecx, word [ebp + eax - 0xd0]
cmp ecx, edi
jne 0x42fc69
cmp dword [ebp + 0x58], 0
mov bl, 1
je 0x42fc7e
cmp byte [ebp + 0xf], 0
mov ax, word [ebp + eax - 0xcc]
mov word [ebp + 0x4c], ax
mov word [ebp + 0x20], ax
je 0x42fc37
lea eax, [ebp + 0x20]
push eax
call dword [0x48b128]
test eax, eax
jne 0x42fc37
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, dword [ebp + 0x44]
mov ax, word [ecx]
neg ax
sbb eax, eax
and eax, ecx
push eax
lea eax, [ebp + 0x4c]
push eax
mov eax, dword [ebp + 0x34]
or eax, 2
push eax
call dword [sym.imp.KERNEL32.dll_DefineDosDeviceW]
test eax, eax
je 0x42fc60
and dword [ebp + 0x30], 0
jmp 0x42fc69
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp + 0x30], eax
inc esi
cmp si, 0x1a
jl 0x42fbe3
cmp dword [ebp + 0x58], 0
jne 0x42fd43
cmp byte [ebp + 0x6c], 0
je 0x42fc9b
test byte [ebp - 0x14], 0x10
jne 0x43007d
cmp dword [ebp - 0x14], 0x84
je 0x43007d
xor esi, esi
test bl, bl
je 0x42fcb5
cmp word [ebp + 0x14], si
je 0x42fd43
cmp byte [ebp + 0x63], 0
jne 0x42fd43
movsx eax, di
push eax
movsx eax, word [ebp + 0x1c]
push eax
push str.DeviceHarddisk_dPartition_d
push dword [ebp + 0x44]
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x10
cmp word [ebp + 0x4c], si
jne 0x42fcf3
xor eax, eax
mov al, byte [ebp + 0x57]
sub al, 0x41
push eax
lea eax, [ebp - 4]
push 0xc
push eax
call fcn.0042740b
add esp, 0xc
mov word [ebp + 0x20], ax
mov word [ebp + 0x4c], ax
cmp word [ebp + 0x4c], 0x41
jb 0x430116
cmp word [ebp + 0x4c], 0x5a
ja 0x430116
cmp word [ebp + 0x20], si
je 0x42fd3a
push dword [ebp + 0xf]
lea eax, [ebp + 0x20]
push dword [ebp + 0x34]
push eax
lea eax, [ebp + 0x4c]
push eax
push dword [ebp + 0x44]
call fcn.00427304
add esp, 0x14
test eax, eax
je 0x42fd31
mov dword [ebp + 0x30], esi
jmp 0x42fd3a
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp + 0x30], eax
cmp dword [ebp + 0x5c], esi
jl 0x43007d
lea ecx, [ebp + 0x78]
call fcn.00402905
lea ecx, [ebp + 0x48]
call fcn.00424686
mov esi, dword [ebp + 0x30]
jmp 0x43022d
cmp dword [ebp + 0x58], edx
jne 0x42fd72
cmp dword [ebp + 0x2c], edx
jge 0x42fd72
cmp ebx, edx
jle 0x42fd74
cmp dword [ebp - 0x18], ebx
jge 0x4300a8
cmp ebx, edx
jl 0x42fda1
cmp dword [ebp + 0x58], edx
je 0x42fd7f
cmp ebx, edi
je 0x42fda1
cmp dword [ebp + 0x2c], edx
jge 0x42fda1
cmp ebx, edx
jne 0x43007d
test cl, 0x10
jne 0x43007d
cmp ecx, 0x84
je 0x43007d
xor bl, bl
xor esi, esi
xor edi, edi
movsx eax, di
lea eax, [eax + eax*2]
shl eax, 1
mov cx, word [ebp + eax - 0xce]
cmp cx, word [ebp + 0x1c]
jne 0x42fe33
movsx ecx, word [ebp + eax - 0xd0]
cmp ecx, dword [ebp + 8]
jne 0x42fe33
cmp dword [ebp + 0x58], 0
mov si, word [ebp + eax - 0xcc]
mov bl, 1
je 0x42fe48
mov eax, dword [ebp - 8]
add eax, 0x3e8
cmp byte [ebp + 0xf], 0
mov dword [ebp + 0x28], eax
mov ax, si
mov word [ebp + 0x4c], ax
mov word [ebp + 0x20], ax
je 0x42fe0a
lea eax, [ebp + 0x20]
push eax
call dword [0x48b128]
test eax, eax
jne 0x42fe0a
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, dword [ebp + 0x44]
mov ax, word [ecx]
neg ax
sbb eax, eax
and eax, ecx
push eax
lea eax, [ebp + 0x4c]
push eax
mov eax, dword [ebp + 0x34]
or eax, 2
push eax
call dword [sym.imp.KERNEL32.dll_DefineDosDeviceW]
test eax, eax
jne 0x42fe33
call dword [sym.imp.KERNEL32.dll_GetLastError]
inc edi
cmp di, 0x1a
jl 0x42fda7
cmp dword [ebp + 0x58], 0
jne 0x43007d
cmp byte [ebp + 0x6c], 0
je 0x42fe65
test byte [ebp - 0x14], 0x10
jne 0x43007d
cmp dword [ebp - 0x14], 0x84
je 0x43007d
cmp byte [ebp + 0x3b], 0
jne 0x42fe7b
cmp byte [ebp + 0x6d], 0
jne 0x42fe7b
cmp byte [ebp + 0x3a], 0
je 0x42ffdb
mov ecx, dword [ebp - 0xc]
inc dword [ebp]
xor eax, eax
add ecx, 0xffffffbf
inc eax
shl eax, cl
cmp byte [ebp + 0x13], 0
je 0x42feaa
cmp byte [ebp + 0x6d], 0
je 0x42febc
cmp dword [ebp - 0x1c], 4
jle 0x42febc
inc dword [ebp]
cmp byte [ebp + 0x6d], 1
je 0x43007d
jmp 0x42febc
cmp byte [ebp + 0x6d], 1
jne 0x42febc
mov ecx, dword [ebp - 8]
add ecx, 0x3e8
mov dword [ebp + 0x28], ecx
cmp byte [ebp + 0x6d], 2
jne 0x42fed1
test si, si
je 0x42fed1
cmp dword [ebp], 1
je 0x43007d
mov ecx, dword [ebp - 0xc]
mov dword [ebp + 0x14], ecx
mov word [ebp + 0x20], cx
mov word [ebp + 0x4c], cx
inc ecx
cmp si, word [ebp + 0x14]
mov dword [ebp - 0xc], ecx
je 0x43007d
mov ecx, dword [ebp - 4]
test ecx, eax
je 0x42ff5b
mov edi, dword [ebp + 0x14]
lea eax, [ebp + 0x20]
push eax
mov word [ebp + 0x20], di
mov word [ebp + 0x4c], di
call dword [0x48b128]
test eax, eax
jne 0x42ff13
call dword [sym.imp.KERNEL32.dll_GetLastError]
push 0
lea eax, [ebp + 0x4c]
push eax
mov eax, dword [ebp + 0x34]
or eax, 2
push eax
call dword [sym.imp.KERNEL32.dll_DefineDosDeviceW]
test eax, eax
jne 0x42ff30
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov cx, word [ebp + 0x1c]
lea eax, [edi - 0x41]
movsx eax, ax
lea eax, [eax + eax*2]
shl eax, 1
mov word [ebp + eax - 0xce], cx
mov cx, word [ebp + 8]
mov word [ebp + eax - 0xd0], cx
mov word [ebp + eax - 0xcc], di
test si, si
je 0x42ffd9
lea eax, [ebp + 0x20]
push eax
mov word [ebp + 0x20], si
mov word [ebp + 0x4c], si
call dword [0x48b128]
test eax, eax
jne 0x42ff7c
call dword [sym.imp.KERNEL32.dll_GetLastError]
push 0
lea eax, [ebp + 0x4c]
push eax
mov eax, dword [ebp + 0x34]
or eax, 2
push eax
call dword [sym.imp.KERNEL32.dll_DefineDosDeviceW]
test eax, eax
jne 0x42ff99
call dword [sym.imp.KERNEL32.dll_GetLastError]
xor eax, eax
inc eax
lea ecx, [esi - 0x41]
shl eax, cl
not eax
and dword [ebp - 4], eax
lea eax, [esi - 0x41]
movsx eax, ax
lea eax, [eax + eax*2]
shl eax, 1
and word [ebp + eax - 0xcc], 0
mov word [ebp + eax - 0xd0], 0xfff1
mov word [ebp + eax - 0xce], 0xfff1
mov eax, dword [ebp + 0x14]
mov word [ebp + 0x20], ax
mov word [ebp + 0x4c], ax
xor bl, bl
test bl, bl
je 0x42fff4
cmp word [ebp + 0x14], 0
je 0x43007d
cmp byte [ebp + 0x63], 0
jne 0x43007d
movsx eax, word [ebp + 8]
push eax
movsx eax, word [ebp + 0x1c]
push eax
push str.DeviceHarddisk_dPartition_d
push dword [ebp + 0x44]
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x10
cmp word [ebp + 0x14], 0
jne 0x430034
xor eax, eax
mov al, byte [ebp + 0x57]
sub al, 0x41
push eax
lea eax, [ebp - 4]
push 0xc
push eax
call fcn.0042740b
add esp, 0xc
mov word [ebp + 0x20], ax
mov word [ebp + 0x4c], ax
cmp word [ebp + 0x4c], 0x41
jb 0x430116
cmp word [ebp + 0x4c], 0x5a
ja 0x430116
cmp word [ebp + 0x20], 0
je 0x43007d
push dword [ebp + 0xf]
lea eax, [ebp + 0x20]
push dword [ebp + 0x34]
push eax
lea eax, [ebp + 0x4c]
push eax
push dword [ebp + 0x44]
call fcn.00427304
add esp, 0x14
test eax, eax
je 0x430074
and dword [ebp + 0x30], 0
jmp 0x43007d
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp + 0x30], eax
inc dword [ebp + 0x28]
dec dword [ebp + 0x3c]
cmp dword [ebp + 0x3c], 0
jg 0x42faff
lea ecx, [ebp + 0x78]
call fcn.00402905
xor ebx, ebx
inc dword [ebp - 0x10]
dec dword [ebp + 0x3c]
cmp dword [ebp + 0x3c], ebx
jg 0x42fa10
jmp 0x4300bc
movsx eax, word [ebp + 0x1c]
lea ecx, [ebp + 0x78]
mov dword [ebp + 0x40], eax
mov dword [ebp + 0x5c], edi
call fcn.00402905
xor ebx, ebx
inc dword [ebp + 0x18]
cmp byte [ebp + 0x6d], 1
jne 0x4300cf
mov byte [ebp + 0x6d], 2
mov byte [ebp + 0x6e], 0
jmp 0x4300f2
cmp byte [ebp + 0x3b], 0
jne 0x4300db
cmp byte [ebp + 0x6d], 0
je 0x43012b
cmp byte [ebp + 0x6b], 0
je 0x43012b
movsx ax, byte [ebp + 0x6b]
mov word [ebp - 0xc], ax
mov byte [ebp + 0x6b], 0
mov byte [ebp + 0x6e], 0xb
lea ecx, [ebp + 0x48]
call fcn.00424686
jmp 0x42f944
lea ecx, [ebp + 0x78]
call fcn.00402905
lea ecx, [ebp + 0x48]
call fcn.00424686
xor esi, esi
jmp 0x43022d
lea ecx, [ebp + 0x78]
call fcn.00402905
lea ecx, [ebp + 0x48]
call fcn.00424686
jmp 0x42f791
cmp dword [ebp + 0x5c], ebx
jle 0x43028f
cmp dword [ebp + 0x2c], ebx
jge 0x43028f
cmp dword [ebp + 0x58], ebx
jne 0x43028f
cmp byte [ebp + 0x6f], 0
jne 0x43028f
lea ecx, [ebp + 0x48]
call fcn.00424686
cmp dword [ebp + 0x58], ebx
jne 0x43016f
cmp dword [ebp + 0x40], ebx
jl 0x42f877
cmp dword [ebp + 0x5c], ebx
jle 0x42f877
cmp dword [ebp + 0x40], ebx
jl 0x430197
cmp dword [ebp + 0x5c], ebx
jle 0x430197
movsx eax, word [ebp + 0x5c]
mov esi, dword [ebp + 0x44]
push eax
movsx eax, word [ebp + 0x40]
push eax
push str.DeviceHarddisk_dPartition_d
push esi
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x10
jmp 0x43019a
mov esi, dword [ebp + 0x44]
mov eax, dword [ebp + 0x64]
mov word [eax + 2], 0x3a
mov eax, dword [ebp + 0x64]
mov cx, word [eax]
cmp cx, 0x2c
jne 0x4301b6
mov word [eax], 0xff0c
jmp 0x4301db
cmp cx, 0x3b
jne 0x4301c3
mov word [eax], 0xff1b
jmp 0x4301db
cmp cx, 0x3a
jne 0x4301d0
mov word [eax], 0xff1a
jmp 0x4301db
cmp cx, 0x3d
jne 0x4301de
mov word [eax], 0xff1d
mov eax, dword [ebp + 0x64]
mov word [eax + 4], 0x5c
mov eax, dword [ebp + 0x64]
mov word [eax + 6], bx
mov eax, dword [ebp + 0x64]
mov cx, word [eax]
mov word [ebp - 0x24], cx
mov word [ebp - 0x22], 0x3a
mov word [ebp - 0x20], bx
cmp word [esi], bx
je 0x430254
cmp dword [ebp + 0x58], ebx
jne 0x430254
push dword [ebp + 0xf]
push dword [ebp + 0x34]
push eax
lea eax, [ebp - 0x24]
push eax
push esi
call fcn.00427304
add esp, 0x14
test eax, eax
jne 0x43010f
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
lea ecx, [ebp + 4]
call fcn.00424686
lea ecx, [ebp + 0x44]
call fcn.00424686
lea ecx, [ebp + 0x64]
call fcn.00424686
push 0x48b1dc
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, esi
jmp 0x4302bd
cmp byte [ebp + 0xf], 0
je 0x43026b
push eax
call dword [0x48b128]
test eax, eax
jne 0x43026b
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ax, word [esi]
neg ax
sbb eax, eax
and eax, esi
push eax
lea eax, [ebp - 0x24]
push eax
mov eax, dword [ebp + 0x34]
or eax, 2
push eax
call dword [sym.imp.KERNEL32.dll_DefineDosDeviceW]
test eax, eax
je 0x430225
xor eax, eax
jmp 0x43022b
lea ecx, [ebp + 0x48]
call fcn.00424686
lea ecx, [ebp + 4]
call fcn.00424686
lea ecx, [ebp + 0x44]
call fcn.00424686
lea ecx, [ebp + 0x64]
call fcn.00424686
push 0x48b1dc
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [ebp + 0x30]
pop edi
pop esi
pop ebx
add ebp, 0x70
leave
ret 8