Function at 0x42b3f0
Capabilities:
Check for time delay via gettickcount
Check if file exists
Get storage device properties

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5ec484
mov eax, dword fs:[0]
push eax
sub esp, 0x4ec
mov eax, dword [0x677010]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x28c], edx
mov dword [ebp - 0x2a8], ecx
mov edi, dword [ebp + 8]
lea ecx, [ebp - 0x17c]
mov dword [ebp - 0x29c], edi
mov dword [ebp - 0x294], 0
call fcn.00407a4a
mov dword [ebp - 4], 0
lea ecx, [ebp - 0x17c]
push str.GetPhysicalDeviceInfo
mov byte [ebp - 0x180], 0
call fcn.00414ef0
mov dword [ebp - 4], 1
call fcn.0041db40
cmp dword [eax + 4], 4
jl 0x42b483
push ecx
lea ecx, [ebp - 0x180]
call fcn.00412cf0
mov edx, dword [edi + 4]
lea eax, [edi + 4]
mov esi, dword [edx - 0x10]
lea ecx, [edx - 0x10]
mov dword [ebp - 0x2ac], eax
or eax, 0xffffffff
cmp dword [ecx + 4], 0
mov dword [ebp - 0x2b4], 0
je 0x42b559
cmp dword [ecx + 0xc], 0
jge 0x42b4d6
cmp dword [edx - 8], 0
jge 0x42b4c2
push 0x80070057
call fcn.004022e2
mov dword [edx - 0xc], 0
xor ecx, ecx
mov eax, dword [edi + 4]
mov word [eax], cx
jmp 0x42b556
lea edx, [ecx + 0xc]
lock xadd dword [edx], eax
dec eax
test eax, eax
jg 0x42b537
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov edi, dword [eax + 4]
mov dword [ebp - 0x288], edi
mov edi, dword [ebp - 0x29c]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x42b52f
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov edi, dword [eax + 4]
mov dword [ebp - 0x288], edi
mov edi, dword [ebp - 0x29c]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x42b525
push 0
push dword [edx + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
jmp 0x42b537
mov ecx, edx
call dword [ebp - 0x288]
jmp 0x42b537
mov ecx, edx
call dword [ebp - 0x288]
mov eax, dword [esi]
mov edx, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x42b54c
lock inc dword [esi + 0x14]
lea eax, [esi + 8]
jmp 0x42b550
mov ecx, esi
call edx
add eax, 0x10
mov dword [edi + 4], eax
or eax, 0xffffffff
mov edx, dword [edi]
cmp dword [edx - 0xc], 0
lea ecx, [edx - 0x10]
mov esi, dword [ecx]
je 0x42b624
cmp dword [ecx + 0xc], 0
lea edi, [ecx + 0xc]
mov dword [ebp - 0x288], edi
mov edi, dword [ebp - 0x29c]
jge 0x42b5a2
cmp dword [edx - 8], 0
jge 0x42b58f
push 0x80070057
call fcn.004022e2
mov dword [edx - 0xc], 0
xor ecx, ecx
mov eax, dword [edi]
mov word [eax], cx
jmp 0x42b624
mov edx, dword [ebp - 0x288]
lock xadd dword [edx], eax
dec eax
test eax, eax
jg 0x42b606
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov edi, dword [eax + 4]
mov dword [ebp - 0x288], edi
mov edi, dword [ebp - 0x29c]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x42b5fe
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov edi, dword [eax + 4]
mov dword [ebp - 0x288], edi
mov edi, dword [ebp - 0x29c]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x42b5f4
push 0
push dword [edx + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
jmp 0x42b606
mov ecx, edx
call dword [ebp - 0x288]
jmp 0x42b606
mov ecx, edx
call dword [ebp - 0x288]
mov eax, dword [esi]
mov edx, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x42b61b
lock inc dword [esi + 0x14]
lea eax, [esi + 8]
jmp 0x42b61f
mov ecx, esi
call edx
add eax, 0x10
mov dword [edi], eax
mov eax, dword [ebp - 0x28c]
push 0
push 0
push 3
push 0
push 3
push 0
push dword [ebp - 0x2a8]
mov word [edi + 0x14], 0
mov byte [edi + 0x16], 0
mov dword [edi + 0x10], eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0x2a0], eax
cmp eax, 0xffffffff
jne 0x42bc47
call fcn.0041db40
cmp dword [eax + 4], 3
jl 0x42bc3b
call fcn.0041db40
sub esp, 8
lea ecx, [ebp - 0x398]
mov esi, eax
mov dword [ebp - 0x2a8], esi
call fcn.00415be0
lea ecx, [ebp - 0x134]
mov byte [ebp - 4], 2
call fcn.00407a4a
push str.TRACE
lea ecx, [ebp - 0x134]
mov byte [ebp - 4], 3
call fcn.00414ef0
lea ecx, [ebp - 0x94]
call fcn.00407a4a
xor eax, eax
mov byte [ebp - 4], 4
mov dword [ebp - 0x288], eax
cmp dword [esi + 0xc], eax
jle 0x42b75c
nop dword [eax + eax]
cmp eax, 0xa
jge 0x42b75c
mov edx, dword [ebp - 0x80]
mov eax, edx
mov ecx, dword [ebp - 0x84]
sub eax, ecx
cmp eax, 2
jb 0x42b725
cmp edx, 8
lea esi, [ebp - 0x94]
push 4
cmovae esi, dword [ebp - 0x94]
lea edi, [ecx + 2]
push 0x63e4c4
mov dword [ebp - 0x84], edi
lea eax, [esi + ecx*2]
push eax
call fcn.005bfc60
add esp, 0xc
xor eax, eax
mov word [esi + edi*2], ax
mov esi, dword [ebp - 0x2a8]
jmp 0x42b746
push 2
push 0x63e4c4
mov byte [ebp - 0x2a0], 0
lea ecx, [ebp - 0x94]
push dword [ebp - 0x2a0]
push 2
call fcn.0041ea00
mov eax, dword [ebp - 0x288]
inc eax
mov dword [ebp - 0x288], eax
cmp eax, dword [esi + 0xc]
jl 0x42b6d0
lea ecx, [ebp - 0x14c]
call fcn.00407a4a
lea ecx, [ebp - 0x10c]
mov byte [ebp - 4], 5
call fcn.00407a4a
mov byte [ebp - 4], 6
call fcn.005c8926
lea eax, [ebp - 0x28]
push 0xb
push eax
call fcn.005c8a22
add esp, 8
lea eax, [ebp - 0x28]
lea ecx, [ebp - 0x14c]
push eax
call fcn.00414ef0
sub esp, 8
lea ecx, [ebp - 0x230]
call fcn.00415be0
mov byte [ebp - 4], 7
cmp dword [esi + 0x10], 0
jne 0x42b7cc
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push 0
lea ecx, [ebp - 0x220]
mov dword [esi + 0x10], eax
call fcn.004101b0
jmp 0x42b7fc
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [esi + 0x10]
lea ecx, [ebp - 0x220]
movd xmm0, eax
cvtdq2pd xmm1, xmm0
shr eax, 0x1f
addsd xmm1, qword [eax*8 + 0x644390]
divsd xmm1, qword [0x644330]
call fcn.0041e250
lea eax, [ebp - 0x7c]
push eax
lea ecx, [ebp - 0x218]
call fcn.00416830
mov dword [ebp - 0x294], 1
mov byte [ebp - 4], 8
mov eax, dword [ebp - 0xf8]
cmp eax, 8
jb 0x42b872
mov ecx, dword [ebp - 0x10c]
inc eax
cmp eax, 0x7fffffff
ja 0x42b96a
add eax, eax
cmp eax, 0x1000
jb 0x42b869
test cl, 0x1f
jne 0x42b96a
mov eax, dword [ecx - 4]
cmp eax, ecx
jae 0x42b96a
sub ecx, eax
cmp ecx, 4
jb 0x42b96a
cmp ecx, 0x23
ja 0x42b96a
mov ecx, eax
push ecx
call fcn.00476ee1
add esp, 4
movups xmm0, xmmword [ebp - 0x7c]
xor eax, eax
mov dword [ebp - 0xfc], 0
mov word [ebp - 0x10c], ax
lea ecx, [ebp - 0x7c]
movups xmmword [ebp - 0x10c], xmm0
mov dword [ebp - 0xf8], 7
movq xmm0, qword [ebp - 0x6c]
movq qword [ebp - 0xfc], xmm0
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x68], 7
mov word [ebp - 0x7c], ax
mov byte [ebp - 4], 7
call fcn.004075ab
lea ecx, [ebp - 0x230]
mov byte [ebp - 4], 6
call fcn.00415840
cmp dword [ebp - 0x80], 8
lea eax, [ebp - 0x94]
push 0x2040
cmovae eax, dword [ebp - 0x94]
mov dword [ebp - 0x288], eax
lea eax, [ebp - 0x2d8]
push eax
call fcn.005be8d1
mov ecx, dword [ebp - 0x388]
lea edx, [ebp - 0x388]
push dword [eax + 4]
mov ecx, dword [ecx + 4]
mov eax, dword [eax]
add ecx, edx
push ecx
call eax
mov eax, dword [ebp - 0x13c]
mov byte [ebp - 4], 9
lea edx, [ebp - 0x14c]
cmp dword [ebp - 0x138], 8
lea ecx, [ebp - 0x388]
push eax
cmovae edx, dword [ebp - 0x14c]
mov byte [ebp - 4], 6
call fcn.004137f0
mov esi, eax
lea eax, [ebp - 0x2c8]
push 0x10
push eax
call fcn.005be8d1
add esp, 0x1c
mov edx, 0x63e114
mov ecx, esi
mov edi, eax
call fcn.00413320
mov esi, eax
test esi, esi
jne 0x42b96f
xor ecx, ecx
jmp 0x42b976
call fcn.005c3f14
mov eax, dword [esi]
mov ecx, dword [eax + 4]
add ecx, esi
push dword [edi + 4]
mov eax, dword [edi]
push ecx
call eax
push 0
lea eax, [ebp - 0x11c]
push 6
push eax
call fcn.005be8ff
mov edx, eax
mov ecx, esi
call fcn.0041e9d0
mov esi, eax
mov eax, 0x30
push 0
push 3
mov ecx, dword [esi]
mov ecx, dword [ecx + 4]
mov word [ecx + esi + 0x40], ax
lea eax, [ebp - 0x38]
push eax
call fcn.005be8e5
mov edx, eax
mov ecx, esi
call fcn.0041e9d0
mov ecx, dword [ebp - 0xfc]
mov byte [ebp - 4], 0xa
lea edx, [ebp - 0x10c]
cmp dword [ebp - 0xf8], 8
push ecx
cmovae edx, dword [ebp - 0x10c]
mov ecx, eax
mov byte [ebp - 4], 6
call fcn.004137f0
push 0
mov edi, eax
lea eax, [ebp - 0x2e8]
push 5
push eax
call fcn.005be8ff
mov edx, 0x63e114
mov ecx, edi
mov esi, eax
call fcn.00413320
mov edx, esi
mov ecx, eax
call fcn.0041e9d0
mov esi, eax
mov eax, 0x20
push 0x40
mov ecx, dword [esi]
mov ecx, dword [ecx + 4]
mov word [ecx + esi + 0x40], ax
lea eax, [ebp - 0x2b0]
push eax
call fcn.005be8d1
mov ecx, dword [esi]
push dword [eax + 4]
mov ecx, dword [ecx + 4]
mov eax, dword [eax]
add ecx, esi
push ecx
call eax
mov eax, dword [ebp - 0x124]
add esp, 0x40
mov byte [ebp - 4], 0xb
lea edx, [ebp - 0x134]
cmp dword [ebp - 0x120], 8
mov ecx, esi
push eax
cmovae edx, dword [ebp - 0x134]
mov byte [ebp - 4], 6
call fcn.004137f0
add esp, 4
mov edx, 0x63e504
mov ecx, eax
call fcn.00413320
mov edx, dword [ebp - 0x288]
mov ecx, eax
call fcn.00413320
mov eax, dword fs:[0x2c]
mov ecx, dword [eax]
mov eax, dword [0x6835d0]
cmp eax, dword [ecx + 4]
jle 0x42bad4
push 0x6835d0
call fcn.005bcd79
add esp, 4
cmp dword [0x6835d0], 0xffffffff
jne 0x42bad4
mov ecx, 0x6835d4
call fcn.00407a4a
push 0x5ff870
call fcn.005bc9d9
push 0x6835d0
call fcn.005bcd3a
add esp, 8
lea eax, [ebp - 0x7c]
push eax
lea ecx, [ebp - 0x380]
call fcn.00416830
mov dword [ebp - 0x294], 3
mov byte [ebp - 4], 0xc
mov eax, dword [0x6835e8]
cmp eax, 8
jb 0x42bb49
mov ecx, dword [0x6835d4]
inc eax
cmp eax, 0x7fffffff
ja 0x42b96a
add eax, eax
cmp eax, 0x1000
jb 0x42bb40
test cl, 0x1f
jne 0x42b96a
mov eax, dword [ecx - 4]
cmp eax, ecx
jae 0x42b96a
sub ecx, eax
cmp ecx, 4
jb 0x42b96a
cmp ecx, 0x23
ja 0x42b96a
mov ecx, eax
push ecx
call fcn.00476ee1
add esp, 4
movups xmm0, xmmword [ebp - 0x7c]
xor eax, eax
lea ecx, [ebp - 0x7c]
mov word [ebp - 0x7c], ax
movups xmmword [0x6835d4], xmm0
movq xmm0, qword [ebp - 0x6c]
movq qword [0x6835e4], xmm0
mov dword [ebp - 0x6c], 0
mov dword [ebp - 0x68], 7
mov byte [ebp - 4], 6
call fcn.004075ab
lea ecx, [ebp - 0x10c]
mov byte [ebp - 4], 5
call fcn.004075ab
lea ecx, [ebp - 0x14c]
mov byte [ebp - 4], 4
call fcn.004075ab
lea ecx, [ebp - 0x94]
mov byte [ebp - 4], 3
call fcn.004075ab
lea ecx, [ebp - 0x134]
mov byte [ebp - 4], 2
call fcn.004075ab
lea ecx, [ebp - 0x398]
mov byte [ebp - 4], 1
call fcn.00415840
call fcn.0041db40
mov ecx, dword [0x6835e4]
mov byte [ebp - 4], 0xd
mov edx, 0x6835d4
cmp dword [0x6835e8], 8
push ecx
cmovae edx, dword [0x6835d4]
mov ecx, eax
mov byte [ebp - 4], 1
call fcn.004137f0
add esp, 4
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push dword [ebp - 0x28c]
mov edx, str.Failed_to_open_drive:
mov ecx, esi
call fcn.00413320
mov ecx, eax
call fcn.00421080
mov edx, str._with_error:
mov ecx, eax
call fcn.00413320
mov ecx, eax
call fcn.00415d70
push eax
call fcn.00414850
add esp, 4
mov byte [ebp - 0x2b4], 0
jmp 0x42d1c7
mov esi, dword [sym.imp.KERNEL32.dll_VirtualAlloc]
push 4
push 0x1000
push 0x21
push 0
call esi
push 4
push 0x1000
push 0x211
push 0
mov dword [ebp - 0x288], eax
call esi
mov ecx, dword [ebp - 0x288]
mov esi, eax
mov eax, dword [sym.imp.KERNEL32.dll_VirtualFree]
mov dword [ebp - 0x2a8], esi
test ecx, ecx
je 0x42d1ad
test esi, esi
je 0x42d19e
mov eax, dword [ebp - 0x28c]
xorps xmm0, xmm0
movups xmmword [ecx], xmm0
push 0x211
movups xmmword [ecx + 0x10], xmm0
mov byte [ecx + 0x20], 0
mov byte [ecx + 0xc], al
and al, 1
or al, 0xfa
mov dword [ecx], 0x200
shl al, 4
push 0
push esi
mov word [ecx + 5], 0x101
mov byte [ecx + 9], al
mov byte [ecx + 0xa], 0xec
call fcn.005c0a60
add esp, 0xc
mov dword [esi], 0x211
call fcn.0041db40
movsd xmm0, qword [0x644330]
movsd qword [ebp - 0x2d8], xmm0
cmp dword [eax + 4], 3
jl 0x42c28a
call fcn.0041db40
sub esp, 8
lea ecx, [ebp - 0x448]
mov esi, eax
mov dword [ebp - 0x2cc], esi
call fcn.00415be0
lea ecx, [ebp - 0xac]
mov byte [ebp - 4], 0xe
call fcn.00407a4a
push str.TRACE
lea ecx, [ebp - 0xac]
mov byte [ebp - 4], 0xf
call fcn.00414ef0
lea ecx, [ebp - 0x94]
call fcn.00407a4a
xor eax, eax
mov byte [ebp - 4], 0x10
mov dword [ebp - 0x2b4], eax
cmp dword [esi + 0xc], eax
jle 0x42bde3
cmp eax, 0xa
jge 0x42bde3
mov edx, dword [ebp - 0x80]
mov eax, edx
mov ecx, dword [ebp - 0x84]
sub eax, ecx
cmp eax, 2
jb 0x42bdac
cmp edx, 8
lea esi, [ebp - 0x94]
push 4
cmovae esi, dword [ebp - 0x94]
lea edi, [ecx + 2]
push 0x63e4c4
mov dword [ebp - 0x84], edi
lea eax, [esi + ecx*2]
push eax
call fcn.005bfc60
add esp, 0xc
xor eax, eax
mov word [esi + edi*2], ax
mov esi, dword [ebp - 0x2cc]
jmp 0x42bdcd
push 2
push 0x63e4c4
mov byte [ebp - 0x290], 0
lea ecx, [ebp - 0x94]
push dword [ebp - 0x290]
push 2
call fcn.0041ea00
mov eax, dword [ebp - 0x2b4]
inc eax
mov dword [ebp - 0x2b4], eax
cmp eax, dword [esi + 0xc]
jl 0x42bd57
lea ecx, [ebp - 0xc4]
call fcn.00407a4a
lea ecx, [ebp - 0xf4]
mov byte [ebp - 4], 0x11
call fcn.00407a4a
mov byte [ebp - 4], 0x12
call fcn.005c8926
lea eax, [ebp - 0x28]
push 0xb
push eax
call fcn.005c8a22
add esp, 8
lea eax, [ebp - 0x28]
lea ecx, [ebp - 0xc4]
push eax
call fcn.00414ef0
sub esp, 8
lea ecx, [ebp - 0x230]
call fcn.00415be0
mov byte [ebp - 4], 0x13
cmp dword [esi + 0x10], 0
mov eax, dword [sym.imp.KERNEL32.dll_GetTickCount]
jne 0x42be54
call eax
push 0
lea ecx, [ebp - 0x220]
mov dword [esi + 0x10], eax
call fcn.004101b0
jmp 0x42be80
call eax
sub eax, dword [esi + 0x10]
lea ecx, [ebp - 0x220]
movd xmm0, eax
cvtdq2pd xmm1, xmm0
shr eax, 0x1f
addsd xmm1, qword [eax*8 + 0x644390]
divsd xmm1, qword [ebp - 0x2d8]
call fcn.0041e250
lea eax, [ebp - 0x7c]
push eax
lea ecx, [ebp - 0x218]
call fcn.00416830
mov dword [ebp - 0x294], 4
mov byte [ebp - 4], 0x14
mov eax, dword [ebp - 0xe0]
cmp eax, 8
jb 0x42bef6
mov ecx, dword [ebp - 0xf4]
inc eax
cmp eax, 0x7fffffff
ja 0x42b96a
add eax, eax
cmp eax, 0x1000
jb 0x42beed
test cl, 0x1f
jne 0x42b96a
mov eax, dword [ecx - 4]
cmp eax, ecx
jae 0x42b96a
sub ecx, eax
cmp ecx, 4
jb 0x42b96a
cmp ecx, 0x23
ja 0x42b96a
mov ecx, eax
push ecx
call fcn.00476ee1
add esp, 4
movups xmm0, xmmword [ebp - 0x7c]
xor eax, eax
mov dword [ebp - 0xe4], 0
mov word [ebp - 0xf4], ax
lea ecx, [ebp - 0x7c]
movups xmmword [ebp - 0xf4], xmm0
mov dword [ebp - 0xe0], 7
movq xmm0, qword [ebp - 0x6c]
movq qword [ebp - 0xe4], xmm0
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x68], 7
mov word [ebp - 0x7c], ax
mov byte [ebp - 4], 0x13
call fcn.004075ab
lea ecx, [ebp - 0x230]
mov byte [ebp - 4], 0x12
call fcn.00415840
cmp dword [ebp - 0x80], 8
lea eax, [ebp - 0x94]
push 0x2040
cmovae eax, dword [ebp - 0x94]
mov dword [ebp - 0x290], eax
lea eax, [ebp - 0x2d0]
push eax
call fcn.005be8d1
mov ecx, dword [ebp - 0x438]
lea edx, [ebp - 0x438]
push dword [eax + 4]
mov ecx, dword [ecx + 4]
mov eax, dword [eax]
add ecx, edx
push ecx
call eax
mov eax, dword [ebp - 0xb4]
mov byte [ebp - 4], 0x15
lea edx, [ebp - 0xc4]
cmp dword [ebp - 0xb0], 8
lea ecx, [ebp - 0x438]
push eax
cmovae edx, dword [ebp - 0xc4]
mov byte [ebp - 4], 0x12
call fcn.004137f0
mov esi, eax
lea eax, [ebp - 0x2b8]
push 0x10
push eax
call fcn.005be8d1
add esp, 0x1c
mov edx, 0x63e114
mov ecx, esi
mov edi, eax
call fcn.00413320
mov esi, eax
test esi, esi
jne 0x42bfee
xor ecx, ecx
jmp 0x42bff5
mov eax, dword [esi]
mov ecx, dword [eax + 4]
add ecx, esi
push dword [edi + 4]
mov eax, dword [edi]
push ecx
call eax
push 0
lea eax, [ebp - 0x38]
push 6
push eax
call fcn.005be8ff
mov edx, eax
mov ecx, esi
call fcn.0041e9d0
mov esi, eax
mov eax, 0x30
push 0
push 3
mov ecx, dword [esi]
mov ecx, dword [ecx + 4]
mov word [ecx + esi + 0x40], ax
lea eax, [ebp - 0x12c]
push eax
call fcn.005be8e5
mov edx, eax
mov ecx, esi
call fcn.0041e9d0
mov ecx, dword [ebp - 0xe4]
mov byte [ebp - 4], 0x16
lea edx, [ebp - 0xf4]
cmp dword [ebp - 0xe0], 8
push ecx
cmovae edx, dword [ebp - 0xf4]
mov ecx, eax
mov byte [ebp - 4], 0x12
call fcn.004137f0
push 0
mov edi, eax
lea eax, [ebp - 0x144]
push 5
push eax
call fcn.005be8ff
mov edx, 0x63e114
mov ecx, edi
mov esi, eax
call fcn.00413320
mov edx, esi
mov ecx, eax
call fcn.0041e9d0
mov esi, eax
mov eax, 0x20
push 0x40
mov ecx, dword [esi]
mov ecx, dword [ecx + 4]
mov word [ecx + esi + 0x40], ax
lea eax, [ebp - 0x2e0]
push eax
call fcn.005be8d1
mov ecx, dword [esi]
push dword [eax + 4]
mov ecx, dword [ecx + 4]
mov eax, dword [eax]
add ecx, esi
push ecx
call eax
mov eax, dword [ebp - 0x9c]
add esp, 0x40
mov byte [ebp - 4], 0x17
lea edx, [ebp - 0xac]
cmp dword [ebp - 0x98], 8
mov ecx, esi
push eax
cmovae edx, dword [ebp - 0xac]
mov byte [ebp - 4], 0x12
call fcn.004137f0
add esp, 4
mov edx, 0x63e504
mov ecx, eax
call fcn.00413320
mov edx, dword [ebp - 0x290]
mov ecx, eax
call fcn.00413320
mov eax, dword fs:[0x2c]
mov ecx, dword [eax]
mov eax, dword [0x6835d0]
cmp eax, dword [ecx + 4]
jle 0x42c153
push 0x6835d0
call fcn.005bcd79
add esp, 4
cmp dword [0x6835d0], 0xffffffff
jne 0x42c153
mov ecx, 0x6835d4
call fcn.00407a4a
push 0x5ff870
call fcn.005bc9d9
push 0x6835d0
call fcn.005bcd3a
add esp, 8
lea eax, [ebp - 0x7c]
push eax
lea ecx, [ebp - 0x430]
call fcn.00416830
mov dword [ebp - 0x294], 0xc
mov byte [ebp - 4], 0x18
mov eax, dword [0x6835e8]
cmp eax, 8
jb 0x42c1c8
mov ecx, dword [0x6835d4]
inc eax
cmp eax, 0x7fffffff
ja 0x42b96a
add eax, eax
cmp eax, 0x1000
jb 0x42c1bf
test cl, 0x1f
jne 0x42b96a
mov eax, dword [ecx - 4]
cmp eax, ecx
jae 0x42b96a
sub ecx, eax
cmp ecx, 4
jb 0x42b96a
cmp ecx, 0x23
ja 0x42b96a
mov ecx, eax
push ecx
call fcn.00476ee1
add esp, 4
movups xmm0, xmmword [ebp - 0x7c]
xor eax, eax
lea ecx, [ebp - 0x7c]
mov word [ebp - 0x7c], ax
movups xmmword [0x6835d4], xmm0
movq xmm0, qword [ebp - 0x6c]
movq qword [0x6835e4], xmm0
mov dword [ebp - 0x6c], 0
mov dword [ebp - 0x68], 7
mov byte [ebp - 4], 0x12
call fcn.004075ab
lea ecx, [ebp - 0xf4]
mov byte [ebp - 4], 0x11
call fcn.004075ab
lea ecx, [ebp - 0xc4]
mov byte [ebp - 4], 0x10
call fcn.004075ab
lea ecx, [ebp - 0x94]
mov byte [ebp - 4], 0xf
call fcn.004075ab
lea ecx, [ebp - 0xac]
mov byte [ebp - 4], 0xe
call fcn.004075ab
lea ecx, [ebp - 0x448]
mov byte [ebp - 4], 1
call fcn.00415840
push dword [ebp - 0x28c]
call fcn.0041db40
mov edx, 0x6835d4
mov ecx, eax
call fcn.00413a60
mov edx, str.Looking_for_Drive:
mov ecx, eax
call fcn.00413320
mov ecx, eax
call fcn.00421080
push eax
call fcn.00414850
mov esi, dword [ebp - 0x2a8]
add esp, 4
mov edi, dword [ebp - 0x29c]
push 0
lea eax, [ebp - 0x298]
push eax
mov eax, dword [ebp - 0x288]
push 0x210
push esi
push 0x20
push eax
push 0x7c088
push dword [ebp - 0x2a0]
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x42cba5
call fcn.0041db40
cmp dword [eax + 4], 3
jl 0x42c85e
call fcn.0041db40
sub esp, 8
lea ecx, [ebp - 0x4f8]
mov esi, eax
mov dword [ebp - 0x290], esi
call fcn.00415be0
lea ecx, [ebp - 0x164]
mov byte [ebp - 4], 0x19
call fcn.00407a4a
push str.TRACE
lea ecx, [ebp - 0x164]
mov byte [ebp - 4], 0x1a
call fcn.00414ef0
lea ecx, [ebp - 0x7c]
call fcn.00407a4a
xor eax, eax
mov byte [ebp - 4], 0x1b
mov dword [ebp - 0x2b4], eax
cmp dword [esi + 0xc], eax
jle 0x42c396
cmp eax, 0xa
jge 0x42c396
mov edx, dword [ebp - 0x68]
mov eax, edx
mov ecx, dword [ebp - 0x6c]
sub eax, ecx
cmp eax, 2
jb 0x42c366
cmp edx, 8
lea esi, [ebp - 0x7c]
push 4
cmovae esi, dword [ebp - 0x7c]
lea edi, [ecx + 2]
push 0x63e4c4
mov dword [ebp - 0x6c], edi
lea eax, [esi + ecx*2]
push eax
call fcn.005bfc60
add esp, 0xc
xor eax, eax
mov word [esi + edi*2], ax
mov esi, dword [ebp - 0x290]
jmp 0x42c384
push 2
push 0x63e4c4
mov byte [ebp - 0x2cc], 0
lea ecx, [ebp - 0x7c]
push dword [ebp - 0x2cc]
push 2
call fcn.0041ea00
mov eax, dword [ebp - 0x2b4]
inc eax
mov dword [ebp - 0x2b4], eax
cmp eax, dword [esi + 0xc]
jl 0x42c321
lea ecx, [ebp - 0xc4]
call fcn.00407a4a
lea ecx, [ebp - 0xdc]
mov byte [ebp - 4], 0x1c
call fcn.00407a4a
mov byte [ebp - 4], 0x1d
call fcn.005c8926
lea eax, [ebp - 0x94]
push 0xb
push eax
call fcn.005c8a22
add esp, 8
lea eax, [ebp - 0x94]
lea ecx, [ebp - 0xc4]
push eax
call fcn.00414ef0
sub esp, 8
lea ecx, [ebp - 0x230]
call fcn.00415be0
mov byte [ebp - 4], 0x1e
cmp dword [esi + 0x10], 0
jne 0x42c40c
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push 0
lea ecx, [ebp - 0x220]
mov dword [esi + 0x10], eax
call fcn.004101b0
jmp 0x42c43c
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [esi + 0x10]
lea ecx, [ebp - 0x220]
movd xmm0, eax
cvtdq2pd xmm1, xmm0
shr eax, 0x1f
addsd xmm1, qword [eax*8 + 0x644390]
divsd xmm1, qword [ebp - 0x2d8]
call fcn.0041e250
lea eax, [ebp - 0xac]
push eax
lea ecx, [ebp - 0x218]
call fcn.00416830
or dword [ebp - 0x294], 0x10
mov byte [ebp - 4], 0x1f
mov eax, dword [ebp - 0xc8]
cmp eax, 8
jb 0x42c4b2
mov ecx, dword [ebp - 0xdc]
inc eax
cmp eax, 0x7fffffff
ja 0x42b96a
add eax, eax
cmp eax, 0x1000
jb 0x42c4a9
test cl, 0x1f
jne 0x42b96a
mov eax, dword [ecx - 4]
cmp eax, ecx
jae 0x42b96a
sub ecx, eax
cmp ecx, 4
jb 0x42b96a
cmp ecx, 0x23
ja 0x42b96a
mov ecx, eax
push ecx
call fcn.00476ee1
add esp, 4
movups xmm0, xmmword [ebp - 0xac]
xor eax, eax
mov dword [ebp - 0xcc], 0
mov word [ebp - 0xdc], ax
lea ecx, [ebp - 0xac]
movups xmmword [ebp - 0xdc], xmm0
mov dword [ebp - 0xc8], 7
movq xmm0, qword [ebp - 0x9c]
movq qword [ebp - 0xcc], xmm0
mov dword [ebp - 0x9c], eax
mov dword [ebp - 0x98], 7
mov word [ebp - 0xac], ax
mov byte [ebp - 4], 0x1e
call fcn.004075ab
lea ecx, [ebp - 0x230]
mov byte [ebp - 4], 0x1d
call fcn.00415840
cmp dword [ebp - 0x68], 8
lea eax, [ebp - 0x7c]
push 0x2040
cmovae eax, dword [ebp - 0x7c]
mov dword [ebp - 0x290], eax
lea eax, [ebp - 0x2e0]
push eax
call fcn.005be8d1
mov ecx, dword [ebp - 0x4e8]
lea edx, [ebp - 0x4e8]
push dword [eax + 4]
mov ecx, dword [ecx + 4]
mov eax, dword [eax]
add ecx, edx
push ecx
call eax
mov eax, dword [ebp - 0xb4]
mov byte [ebp - 4], 0x20
lea edx, [ebp - 0xc4]
cmp dword [ebp - 0xb0], 8
lea ecx, [ebp - 0x4e8]
push eax
cmovae edx, dword [ebp - 0xc4]
mov byte [ebp - 4], 0x1d
call fcn.004137f0
mov esi, eax
lea eax, [ebp - 0x2d8]
push 0x10
push eax
call fcn.005be8d1
add esp, 0x1c
mov edx, 0x63e114
mov ecx, esi
mov edi, eax
call fcn.00413320
mov esi, eax
test esi, esi
jne 0x42c5b6
xor ecx, ecx
jmp 0x42c5bd
mov eax, dword [esi]
mov ecx, dword [eax + 4]
add ecx, esi
push dword [edi + 4]
mov eax, dword [edi]
push ecx
call eax
push 0
lea eax, [ebp - 0x144]
push 6
push eax
call fcn.005be8ff
mov edx, eax
mov ecx, esi
call fcn.0041e9d0
mov esi, eax
mov eax, 0x30
push 0
push 3
mov ecx, dword [esi]
mov ecx, dword [ecx + 4]
mov word [ecx + esi + 0x40], ax
lea eax, [ebp - 0x12c]
push eax
call fcn.005be8e5
mov edx, eax
mov ecx, esi
call fcn.0041e9d0
mov ecx, dword [ebp - 0xcc]
mov byte [ebp - 4], 0x21
lea edx, [ebp - 0xdc]
cmp dword [ebp - 0xc8], 8
push ecx
cmovae edx, dword [ebp - 0xdc]
mov ecx, eax
mov byte [ebp - 4], 0x1d
call fcn.004137f0
push 0
mov edi, eax
lea eax, [ebp - 0x2c0]
push 5
push eax
call fcn.005be8ff
mov edx, 0x63e114
mov ecx, edi
mov esi, eax
call fcn.00413320
mov edx, esi
mov ecx, eax
call fcn.0041e9d0
mov esi, eax
mov eax, 0x20
push 0x40
mov ecx, dword [esi]
mov ecx, dword [ecx + 4]
mov word [ecx + esi + 0x40], ax
lea eax, [ebp - 0x2d0]
push eax
call fcn.005be8d1
mov ecx, dword [esi]
push dword [eax + 4]
mov ecx, dword [ecx + 4]
mov eax, dword [eax]
add ecx, esi
push ecx
call eax
mov eax, dword [ebp - 0x154]
add esp, 0x40
mov byte [ebp - 4], 0x22
lea edx, [ebp - 0x164]
cmp dword [ebp - 0x150], 8
mov ecx, esi
push eax
cmovae edx, dword [ebp - 0x164]
mov byte [ebp - 4], 0x1d
call fcn.004137f0
add esp, 4
mov edx, 0x63e504
mov ecx, eax
call fcn.00413320
mov edx, dword [ebp - 0x290]
mov ecx, eax
call fcn.00413320
mov eax, dword fs:[0x2c]
mov ecx, dword [eax]
mov eax, dword [0x6835d0]
cmp eax, dword [ecx + 4]
jle 0x42c71e
push 0x6835d0
call fcn.005bcd79
add esp, 4
cmp dword [0x6835d0], 0xffffffff
jne 0x42c71e
mov ecx, 0x6835d4
call fcn.00407a4a
push 0x5ff870
call fcn.005bc9d9
push 0x6835d0
call fcn.005bcd3a
add esp, 8
lea eax, [ebp - 0xac]
push eax
lea ecx, [ebp - 0x4e0]
call fcn.00416830
or dword [ebp - 0x294], 0x20
mov byte [ebp - 4], 0x23
mov eax, dword [0x6835e8]
cmp eax, 8
jb 0x42c793
mov ecx, dword [0x6835d4]
inc eax
cmp eax, 0x7fffffff
ja 0x42b96a
add eax, eax
cmp eax, 0x1000
jb 0x42c78a
test cl, 0x1f
jne 0x42b96a
mov eax, dword [ecx - 4]
cmp eax, ecx
jae 0x42b96a
sub ecx, eax
cmp ecx, 4
jb 0x42b96a
cmp ecx, 0x23
ja 0x42b96a
mov ecx, eax
push ecx
call fcn.00476ee1
add esp, 4
movups xmm0, xmmword [ebp - 0xac]
xor eax, eax
lea ecx, [ebp - 0xac]
mov word [ebp - 0xac], ax
movups xmmword [0x6835d4], xmm0
movq xmm0, qword [ebp - 0x9c]
movq qword [0x6835e4], xmm0
mov dword [ebp - 0x9c], 0
mov dword [ebp - 0x98], 7
mov byte [ebp - 4], 0x1d
call fcn.004075ab
lea ecx, [ebp - 0xdc]
mov byte [ebp - 4], 0x1c
call fcn.004075ab
lea ecx, [ebp - 0xc4]
mov byte [ebp - 4], 0x1b
call fcn.004075ab
lea ecx, [ebp - 0x7c]
mov byte [ebp - 4], 0x1a
call fcn.004075ab
lea ecx, [ebp - 0x164]
mov byte [ebp - 4], 0x19
call fcn.004075ab
lea ecx, [ebp - 0x4f8]
mov byte [ebp - 4], 1
call fcn.00415840
push dword [ebp - 0x28c]
call fcn.0041db40
mov edx, 0x6835d4
mov ecx, eax
call fcn.00413a60
mov edx, str.Got_Drive:
mov ecx, eax
call fcn.00413320
mov ecx, eax
call fcn.00421080
push eax
call fcn.00414850
mov esi, dword [ebp - 0x2a8]
add esp, 4
lea edx, [esi + 0x46]
mov edi, 0x14
lea ecx, [ebp - 0x64]
nop dword [eax]
movzx eax, byte [edx + 1]
lea ecx, [ecx + 2]
mov byte [ecx - 2], al
lea edx, [edx + 2]
movzx eax, byte [edx - 2]
mov byte [ecx - 1], al
sub edi, 1
jne 0x42c870
mov byte [ecx], 0
cmp byte [ebp - 0x64], 0x20
jne 0x42c8b8
lea ecx, [ebp - 0x64]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x42c898
sub ecx, edx
lea eax, [ebp - 0x63]
push ecx
push eax
lea eax, [ebp - 0x64]
push eax
call fcn.005bfc60
add esp, 0xc
cmp byte [ebp - 0x64], 0x20
je 0x42c892
lea ecx, [ebp - 0x64]
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x42c8c0
sub ecx, edx
je 0x42c8e1
nop dword [eax + eax]
cmp byte [ebp + ecx - 0x65], 0x20
jne 0x42c8e1
sub ecx, 1
mov byte [ebp + ecx - 0x64], 0
jne 0x42c8d0
movzx eax, byte [esi + 0x3f]
lea ecx, [ebp - 0x2b]
mov byte [ebp - 0x34], al
movzx eax, byte [esi + 0x3e]
mov byte [ebp - 0x33], al
movzx eax, byte [esi + 0x41]
mov byte [ebp - 0x32], al
movzx eax, byte [esi + 0x40]
mov byte [ebp - 0x31], al
movzx eax, byte [esi + 0x43]
mov byte [ebp - 0x30], al
movzx eax, byte [esi + 0x42]
mov byte [ebp - 0x2f], al
movzx eax, byte [esi + 0x45]
mov byte [ebp - 0x2e], al
movzx eax, byte [esi + 0x44]
mov byte [ebp - 0x2d], al
movzx eax, byte [esi + 0x47]
mov byte [ebp - 0x2c], al
movzx eax, byte [esi + 0x46]
mov byte [ecx], al
movzx eax, byte [esi + 0x49]
mov byte [ecx + 1], al
movzx eax, byte [esi + 0x48]
mov byte [ecx + 2], al
movzx eax, byte [esi + 0x4b]
mov byte [ecx + 3], al
movzx eax, byte [esi + 0x4a]
mov byte [ecx + 4], al
movzx eax, byte [esi + 0x4d]
mov byte [ecx + 5], al
movzx eax, byte [esi + 0x4c]
mov byte [ecx + 6], al
mov byte [ecx + 7], 0
cmp byte [ebp - 0x34], 0x20
jne 0x42c986
nop dword [eax]
lea ecx, [ebp - 0x34]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x42c966
sub ecx, edx
lea eax, [ebp - 0x33]
push ecx
push eax
lea eax, [ebp - 0x34]
push eax
call fcn.005bfc60
add esp, 0xc
cmp byte [ebp - 0x34], 0x20
je 0x42c960
lea ecx, [ebp - 0x34]
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x42c990
sub ecx, edx
je 0x42c9b1
nop dword [eax + eax]
cmp byte [ebp + ecx - 0x35], 0x20
jne 0x42c9b1
sub ecx, 1
mov byte [ebp + ecx - 0x34], 0
jne 0x42c9a0
movzx eax, byte [esi + 0x24]
mov byte [ebp - 0x27], al
movzx eax, byte [esi + 0x27]
mov byte [ebp - 0x26], al
movzx eax, byte [esi + 0x26]
mov byte [ebp - 0x25], al
movzx eax, byte [esi + 0x29]
mov byte [ebp - 0x24], al
movzx eax, byte [esi + 0x28]
mov byte [ebp - 0x23], al
movzx eax, byte [esi + 0x2b]
mov byte [ebp - 0x22], al
movzx eax, byte [esi + 0x2a]
mov byte [ebp - 0x21], al
movzx eax, byte [esi + 0x2d]
mov byte [ebp - 0x20], al
movzx eax, byte [esi + 0x2c]
mov byte [ebp - 0x1f], al
movzx eax, byte [esi + 0x2f]
mov cl, byte [esi + 0x25]
mov byte [ebp - 0x1e], al
movzx eax, byte [esi + 0x2e]
mov byte [ebp - 0x1d], al
movzx eax, byte [esi + 0x31]
mov byte [ebp - 0x1c], al
movzx eax, byte [esi + 0x30]
mov byte [ebp - 0x1b], al
movzx eax, byte [esi + 0x33]
mov byte [ebp - 0x1a], al
movzx eax, byte [esi + 0x32]
mov byte [ebp - 0x19], al
movzx eax, byte [esi + 0x35]
mov byte [ebp - 0x18], al
movzx eax, byte [esi + 0x34]
mov byte [ebp - 0x17], al
movzx eax, byte [esi + 0x37]
mov byte [ebp - 0x16], al
movzx eax, byte [esi + 0x36]
mov byte [ebp - 0x28], cl
mov byte [ebp - 0x15], al
mov byte [ebp - 0x14], 0
cmp cl, 0x20
jne 0x42ca70
lea ecx, [ebp - 0x28]
lea edx, [ecx + 1]
nop dword [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x42ca50
sub ecx, edx
lea eax, [ebp - 0x27]
push ecx
push eax
lea eax, [ebp - 0x28]
push eax
call fcn.005bfc60
add esp, 0xc
cmp byte [ebp - 0x28], 0x20
je 0x42ca45
lea ecx, [ebp - 0x28]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x42ca76
sub ecx, edx
je 0x42ca92
cmp byte [ebp + ecx - 0x29], 0x20
jne 0x42ca92
sub ecx, 1
mov byte [ebp + ecx - 0x28], 0
jne 0x42ca81
mov edi, dword [ebp - 0x29c]
lea ecx, [ebp - 0x284]
mov eax, dword [ebp - 0x28c]
mov dword [edi + 0x10], eax
lea eax, [ebp - 0x34]
push eax
call fcn.00410730
mov byte [ebp - 4], 0x24
lea ecx, [edi + 4]
push dword [eax]
call fcn.0040d500
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x280]
mov eax, dword [ebp - 0x284]
cmp eax, ecx
je 0x42cadb
push eax
call fcn.005c6b78
add esp, 4
lea eax, [ebp - 0x64]
push eax
lea ecx, [ebp - 0x284]
call fcn.00410730
mov byte [ebp - 4], 0x25
mov ecx, edi
push dword [eax]
call fcn.0040d500
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x280]
mov eax, dword [ebp - 0x284]
cmp eax, ecx
je 0x42cb14
push eax
call fcn.005c6b78
add esp, 4
call fcn.0041db40
cmp dword [eax + 4], 3
jl 0x42cb5e
push 3
call fcn.0041db40
mov ecx, eax
call fcn.0041dca0
mov esi, eax
call fcn.0041db40
mov edx, esi
mov ecx, eax
call fcn.00413a60
mov edx, str.firmwareVersion:
mov ecx, eax
call fcn.00413320
mov edx, dword [edi + 4]
mov esi, eax
mov ecx, esi
call fcn.00413320
push esi
call fcn.00414850
add esp, 4
call fcn.0041db40
cmp dword [eax + 4], 3
jl 0x42cbf3
push 3
call fcn.0041db40
mov ecx, eax
call fcn.0041dca0
mov esi, eax
call fcn.0041db40
mov edx, esi
mov ecx, eax
call fcn.00413a60
mov edx, str.model:
mov ecx, eax
call fcn.00413320
mov edx, dword [edi]
mov esi, eax
mov ecx, esi
call fcn.00413320
push esi
jmp 0x42cbeb
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
call fcn.0041db40
cmp dword [eax + 4], 2
jl 0x42cbf3
push esi
push 2
call fcn.0041db40
mov ecx, eax
call fcn.0041dca0
mov esi, eax
call fcn.0041db40
mov edx, esi
mov ecx, eax
call fcn.00413a60
mov edx, str.Error_with_DeviceIoControl:
mov ecx, eax
call fcn.00413320
mov ecx, eax
call fcn.00415d70
push eax
call fcn.00414850
add esp, 4
push 4
push 0x1000
push 0x410
push 0
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
push 0
mov esi, eax
mov dword [ebp - 0x298], 0
lea eax, [ebp - 0x298]
push eax
push 0x410
push esi
push 0
push 0
push 0x2d0c04
push dword [ebp - 0x2a0]
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x42cc44
cmp dword [esi], 7
jne 0x42cc44
mov byte [edi + 0x15], 1
push 0
lea eax, [ebp - 0x298]
mov dword [ebp - 0x118], 0
push eax
push 8
lea eax, [ebp - 0x2c8]
mov dword [ebp - 0x114], 0
push eax
push 0xc
lea eax, [ebp - 0x118]
mov dword [ebp - 0x2c8], 8
push eax
push 0x2d1400
push dword [ebp - 0x2a0]
mov dword [ebp - 0x2c4], 8
mov esi, 0x28
mov dword [ebp - 0x298], 0
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
cmovne esi, dword [ebp - 0x2c4]
push esi
call fcn.00476ee6
push esi
push 0
push eax
mov dword [ebp - 0x2b4], eax
call fcn.005c0a60
mov eax, dword [ebp - 0x2b4]
add esp, 0x10
push 0
mov dword [eax + 4], esi
mov dword [eax], 0x28
lea eax, [ebp - 0x298]
push eax
push esi
mov esi, dword [ebp - 0x2b4]
lea eax, [ebp - 0x118]
push esi
push 0xc
push eax
push 0x2d1400
push dword [ebp - 0x2a0]
mov dword [ebp - 0x298], 0
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x42cdf0
mov al, byte [esi + 0x1c]
mov byte [edi + 0xc], al
mov eax, dword [esi + 0xc]
test eax, eax
je 0x42cd62
add eax, esi
lea ecx, [ebp - 0x284]
push eax
call fcn.00410730
mov byte [ebp - 4], 0x26
lea ecx, [edi + 8]
push dword [eax]
call fcn.0040d500
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x280]
mov eax, dword [ebp - 0x284]
cmp eax, ecx
je 0x42cd5a
push eax
call fcn.005c6b78
add esp, 4
lea ecx, [edi + 8]
call fcn.00415f70
mov eax, dword [esi + 0x10]
test eax, eax
je 0x42cda8
add eax, esi
lea ecx, [ebp - 0x284]
push eax
call fcn.00410730
mov byte [ebp - 4], 0x27
mov ecx, edi
push dword [eax]
call fcn.0040d500
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x280]
mov eax, dword [ebp - 0x284]
cmp eax, ecx
je 0x42cda1
push eax
call fcn.005c6b78
add esp, 4
mov ecx, edi
call fcn.00415f70
mov eax, dword [esi + 0x14]
test eax, eax
je 0x42cdf0
add eax, esi
lea ecx, [ebp - 0x284]
push eax
call fcn.00410730
mov byte [ebp - 4], 0x28
lea ecx, [edi + 4]
push dword [eax]
call fcn.0040d500
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x280]
mov eax, dword [ebp - 0x284]
cmp eax, ecx
je 0x42cde8
push eax
call fcn.005c6b78
add esp, 4
lea ecx, [edi + 4]
call fcn.00415f70
push edi
lea ecx, [ebp - 0x2a4]
call fcn.00411050
lea ecx, [ebp - 0x2a4]
mov byte [ebp - 4], 0x29
call fcn.00410490
mov eax, dword [ebp - 0x2a4]
cmp dword [eax - 0xc], 0
jl 0x42ce37
push str.INTEL
push eax
call fcn.005c01d4
add esp, 8
test eax, eax
je 0x42ce37
sub eax, dword [ebp - 0x2a4]
sar eax, 1
js 0x42ce37
mov byte [edi + 0x14], 1
lea eax, [edi + 8]
push eax
lea ecx, [ebp - 0x2a4]
mov dword [ebp - 0x290], eax
call fcn.00410610
lea ecx, [ebp - 0x2a4]
call fcn.00410490
mov eax, dword [ebp - 0x2a4]
cmp dword [eax - 0xc], 0
jl 0x42ce83
push str.INTEL
push eax
call fcn.005c01d4
add esp, 8
test eax, eax
je 0x42ce83
sub eax, dword [ebp - 0x2a4]
sar eax, 1
js 0x42ce83
mov byte [edi + 0x14], 1
call fcn.0041db40
cmp dword [eax + 4], 3
jl 0x42cecc
mov edi, dword [edi]
push 3
call fcn.0041db40
mov ecx, eax
call fcn.0041dca0
mov esi, eax
call fcn.0041db40
mov edx, esi
mov ecx, eax
call fcn.00413a60
mov edx, str.Model:
mov ecx, eax
call fcn.00413320
mov edx, edi
mov ecx, eax
call fcn.00413320
push eax
call fcn.00414850
add esp, 4
call fcn.0041db40
cmp dword [eax + 4], 3
jl 0x42cf1b
mov eax, dword [ebp - 0x2ac]
push 3
mov edi, dword [eax]
call fcn.0041db40
mov ecx, eax
call fcn.0041dca0
mov esi, eax
call fcn.0041db40
mov edx, esi
mov ecx, eax
call fcn.00413a60
mov edx, str.Firmware:
mov ecx, eax
call fcn.00413320
mov edx, edi
mov ecx, eax
call fcn.00413320
push eax
call fcn.00414850
add esp, 4
call fcn.0041db40
cmp dword [eax + 4], 3
jl 0x42cf6a
mov edi, dword [ebp - 0x290]
push 3
mov edi, dword [edi]
call fcn.0041db40
mov ecx, eax
call fcn.0041dca0
mov esi, eax
call fcn.0041db40
mov edx, esi
mov ecx, eax
call fcn.00413a60
mov edx, str.Vendor:
mov ecx, eax
call fcn.00413320
mov edx, edi
mov ecx, eax
call fcn.00413320
push eax
call fcn.00414850
add esp, 4
push 0
lea eax, [ebp - 0x298]
mov dword [ebp - 0x118], 1
push eax
push 8
lea eax, [ebp - 0x2c8]
mov dword [ebp - 0x114], 0
push eax
push 0xc
lea eax, [ebp - 0x118]
mov dword [ebp - 0x298], 0
push eax
push 0x2d1400
push dword [ebp - 0x2a0]
mov esi, 0x20
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
cmovne esi, dword [ebp - 0x2c4]
push esi
call fcn.00476ee6
push esi
mov edi, eax
push 0
push edi
call fcn.005c0a60
add esp, 0x10
mov dword [edi], 0x20
lea eax, [ebp - 0x298]
mov dword [edi + 4], esi
mov dword [ebp - 0x298], 0
push 0
push eax
push esi
push edi
push 0xc
lea eax, [ebp - 0x118]
push eax
push 0x2d1400
push dword [ebp - 0x2a0]
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
mov esi, dword [ebp - 0x29c]
test eax, eax
je 0x42d01e
mov al, byte [edi + 0x18]
mov byte [esi + 0xc], al
push edi
call fcn.00476ee1
mov eax, dword [esi + 8]
lea edi, [esi + 8]
add esp, 4
cmp dword [eax - 0xc], 0
jle 0x42d112
push 0x20
push eax
call fcn.005c078c
add esp, 8
test eax, eax
je 0x42d112
sub eax, dword [edi]
sar eax, 1
js 0x42d112
push edi
lea ecx, [ebp - 0x28c]
call fcn.00411050
mov byte [ebp - 4], 0x2a
lea ecx, [ebp - 0x28c]
mov eax, dword [esi]
push dword [eax - 0xc]
push eax
call fcn.00404a5c
sub esp, 8
lea ecx, [ebp - 0x28c]
call fcn.0042d2f0
mov dword [ebp - 0x290], eax
test eax, eax
jle 0x42d103
push eax
lea eax, [ebp - 0x2ac]
push eax
lea ecx, [ebp - 0x28c]
call fcn.0042d240
push eax
mov ecx, edi
mov byte [ebp - 4], 0x2b
call fcn.00410610
lea ecx, [ebp - 0x2ac]
mov byte [ebp - 4], 0x2a
call fcn.0040d260
mov ecx, dword [ebp - 0x290]
inc ecx
mov byte [ebp - 4], 0x2c
mov eax, dword [ebp - 0x28c]
mov eax, dword [eax - 0xc]
sub eax, ecx
push eax
push ecx
lea eax, [ebp - 0x2ac]
push eax
lea ecx, [ebp - 0x28c]
call fcn.00410390
or dword [ebp - 0x294], 0x40
mov ecx, esi
push eax
call fcn.00410610
lea ecx, [ebp - 0x2ac]
mov byte [ebp - 4], 0x2a
call fcn.0040d260
lea ecx, [ebp - 0x28c]
mov byte [ebp - 4], 0x29
call fcn.0040d260
mov eax, dword [esi]
cmp dword [eax - 0xc], 3
jl 0x42d165
push esi
lea ecx, [ebp - 0x28c]
call fcn.00411050
mov byte [ebp - 4], 0x2d
mov eax, dword [ebp - 0x28c]
cmp dword [eax - 0xc], 0
jl 0x42d156
push 0x63f128
push eax
call fcn.005c01d4
add esp, 8
test eax, eax
je 0x42d156
sub eax, dword [ebp - 0x28c]
sar eax, 1
js 0x42d156
mov byte [esi + 0x16], 1
lea ecx, [ebp - 0x28c]
mov byte [ebp - 4], 0x29
call fcn.0040d260
mov eax, dword [ebp - 0x2b4]
push eax
call fcn.00476ee1
add esp, 4
mov dword [ebp - 0x2b4], 1
lea ecx, [ebp - 0x2a4]
mov byte [ebp - 4], 1
call fcn.0040d260
mov esi, dword [ebp - 0x2a8]
mov ecx, dword [ebp - 0x288]
mov eax, dword [sym.imp.KERNEL32.dll_VirtualFree]
push 0x8000
push 0
push ecx
call eax
mov eax, dword [sym.imp.KERNEL32.dll_VirtualFree]
test esi, esi
je 0x42d1bb
push 0x8000
push 0
push esi
call eax
push dword [ebp - 0x2a0]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea ecx, [ebp - 0x180]
mov dword [ebp - 4], 0xffffffff
call fcn.00414900
mov al, byte [ebp - 0x2b4]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.005bc745
mov esp, ebp
pop ebp
ret