Function at 0x4443d0
Capabilities:
Delete file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5b7b4a
mov eax, dword fs:[0]
push eax
sub esp, 0x43c
mov eax, dword [0x6319d0]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 0xc]
mov ebx, dword [ebp + 8]
mov dword [ebp - 0x444], ecx
mov ecx, dword [ebp + 0x14]
mov dword [ebp - 0x440], ebx
mov dword [ebp - 0x420], eax
mov dword [ebp - 0x424], ecx
call fcn.0046d4f0
test eax, eax
je 0x4444a4
push 0
push str.CINIFile::GetDeviceSpecificInstallInfo_n
push 0x66ffb0
call fcn.00599ee3
mov eax, dword [0x5ccf7c]
mov edx, dword [str.ENTRY:]
mov dword [0x66feb4], eax
mov eax, 0x66ffb0
add esp, 0xc
mov dword [0x66feb0], edx
mov ecx, eax
lea esp, [esp]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x444460
mov edi, 0x66feb0
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x444471
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call fcn.0046d6a0
mov ecx, eax
call fcn.0046d500
push 0x66feb0
call fcn.0046d6a0
mov ecx, eax
call fcn.0046d9d0
call fcn.0046d4f0
test eax, eax
je 0x4444dc
mov ecx, dword [ebp - 0x420]
mov edx, dword [ecx]
mov eax, dword [ebx]
push edx
push eax
push str.csINIFileName___s__csDeviceID___s_n
push 0x66fdb0
call fcn.00599ee3
add esp, 0x10
push 0x66fdb0
call fcn.0046d6a0
mov ecx, eax
call fcn.0046d9d0
xor esi, esi
mov dword [ebp - 0x448], esi
call fcn.004a8620
xor ecx, ecx
cmp eax, esi
setne cl
cmp ecx, esi
jne 0x4444fe
push 0x80004005
call fcn.00401b60
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x438], eax
mov dword [ebp - 4], esi
call fcn.004a8620
xor ecx, ecx
cmp eax, esi
setne cl
cmp ecx, esi
jne 0x44452d
push 0x80004005
call fcn.00401b60
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x43c], eax
mov byte [ebp - 4], 1
call fcn.004a8620
xor ecx, ecx
cmp eax, esi
setne cl
cmp ecx, esi
jne 0x44455d
push 0x80004005
call fcn.00401b60
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x434], eax
mov byte [ebp - 4], 2
call fcn.004a8620
xor ecx, ecx
cmp eax, esi
setne cl
cmp ecx, esi
jne 0x44458d
push 0x80004005
call fcn.00401b60
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea ebx, [eax + 0x10]
mov dword [ebp - 0x418], ebx
mov ecx, dword [ebp + 0x10]
mov eax, dword [ebp - 0x444]
mov dword [eax + 0x4cf8], ecx
add eax, 0x4bf0
push eax
lea ecx, [ebp - 0x428]
mov byte [ebp - 4], 3
xor esi, esi
call fcn.00403380
mov edx, dword [ebp - 0x428]
push 0x5c
push edx
mov byte [ebp - 4], 4
call fcn.0059aa24
add esp, 8
test eax, eax
jne 0x4445e3
or eax, 0xffffffff
jmp 0x4445e9
sub eax, dword [ebp - 0x428]
push eax
lea eax, [ebp - 0x41c]
push eax
lea ecx, [ebp - 0x428]
call fcn.004024f0
push eax
lea ecx, [ebp - 0x428]
mov byte [ebp - 4], 5
call fcn.00402af0
mov eax, dword [ebp - 0x41c]
add eax, 0xfffffff0
mov byte [ebp - 4], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x444632
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, dword [ebp - 0x420]
jmp 0x444640
push esi
push str.DEVICE
lea ecx, [ebp - 0x438]
push str._s_d
push ecx
call fcn.00408cb0
mov edx, dword [ebp - 0x440]
mov eax, dword [edx]
mov edx, dword [ebp - 0x438]
add esp, 0x10
lea ecx, [ebp - 0x114]
push ecx
mov ecx, dword [ebp - 0x444]
push str.DEVICEID
push edx
push eax
inc esi
call fcn.0045b740
test eax, eax
je 0x44528d
lea eax, [ebp - 0x114]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x444693
sub eax, edx
push eax
lea eax, [ebp - 0x114]
push eax
lea ecx, [ebp - 0x418]
call fcn.004026b0
mov ebx, dword [ebp - 0x418]
mov eax, dword [ebx - 0xc]
test eax, eax
je 0x444640
mov ecx, dword [edi]
test ecx, ecx
je 0x4446db
test eax, eax
js 0x4446db
push ecx
push ebx
call fcn.0059a963
add esp, 8
test eax, eax
je 0x4446db
sub eax, ebx
cmp eax, 0xffffffff
jne 0x444704
mov eax, dword [edi]
cmp dword [eax - 0xc], 0
jl 0x444640
push ebx
push eax
call fcn.0059a963
add esp, 8
test eax, eax
je 0x444640
sub eax, dword [edi]
cmp eax, 0xffffffff
je 0x444640
mov ebx, dword [ebp - 0x424]
mov ecx, dword [ebp - 0x420]
mov ecx, dword [ecx]
mov esi, dword [ebx + 4]
lea edi, [ebx + 4]
lea eax, [ecx - 0x10]
sub esi, 0x10
cmp eax, esi
je 0x444775
cmp dword [esi + 0xc], 0
lea ebx, [esi + 0xc]
jl 0x444763
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x444763
push eax
call fcn.004022e0
mov dword [ebp - 0x41c], eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [ebx], eax
dec eax
test eax, eax
jg 0x444756
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
mov ecx, dword [ebp - 0x41c]
add ecx, 0x10
mov dword [edi], ecx
jmp 0x44476f
mov eax, dword [ecx - 0xc]
push eax
push ecx
mov ecx, edi
call fcn.004026b0
mov ebx, dword [ebp - 0x424]
mov esi, dword [ebp - 0x444]
lea edx, [ebp - 0x43c]
push edx
push 0x5d44e4
push str.DRIVER
mov ecx, esi
mov dword [ebp - 0x448], 1
call fcn.00443530
mov edx, dword [ebp - 0x438]
mov edi, dword [ebp - 0x440]
mov eax, dword [edi]
lea ecx, [ebp - 0x114]
push ecx
push str.INSTALL_PATH
push edx
push eax
mov ecx, esi
call fcn.0045b740
test eax, eax
je 0x444804
lea eax, [ebp - 0x114]
push eax
lea ecx, [ebp - 0x420]
call fcn.00403380
push eax
lea ecx, [ebp - 0x428]
push ecx
lea edx, [ebp - 0x41c]
push edx
mov byte [ebp - 4], 6
call fcn.00402910
add esp, 0xc
lea ecx, [ebx + 0x1c]
push eax
mov byte [ebp - 4], 7
call fcn.00402af0
mov byte [ebp - 4], 6
jmp 0x444867
mov edx, dword [ebp - 0x43c]
mov eax, dword [edi]
lea ecx, [ebp - 0x114]
push ecx
push str.INSTALL_PATH
push edx
push eax
mov ecx, esi
call fcn.0045b740
test eax, eax
je 0x4448af
lea eax, [ebp - 0x114]
push eax
lea ecx, [ebp - 0x420]
call fcn.00403380
push eax
lea ecx, [ebp - 0x428]
push ecx
lea edx, [ebp - 0x41c]
push edx
mov byte [ebp - 4], 8
call fcn.00402910
add esp, 0xc
lea ecx, [ebx + 0x1c]
push eax
mov byte [ebp - 4], 9
call fcn.00402af0
mov byte [ebp - 4], 8
mov eax, dword [ebp - 0x41c]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x444889
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x420]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
mov byte [ebp - 4], 4
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4448af
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
call fcn.0046d4f0
test eax, eax
je 0x4448df
mov ecx, dword [ebx + 0x1c]
push ecx
push str.pDeviceINIInstallData__csDeviceInstallPath___s_n
push 0x66fcb0
call fcn.00599ee3
add esp, 0xc
push 0x66fcb0
call fcn.0046d6a0
mov ecx, eax
call fcn.0046d9d0
mov ecx, dword [ebp - 0x43c]
mov eax, dword [edi]
lea edx, [ebp - 0x114]
push edx
push str.NW_SETUP
push ecx
push eax
mov ecx, esi
call fcn.0045b740
test eax, eax
je 0x44498a
lea edx, [ebp - 0x114]
push edx
lea ecx, [ebp - 0x420]
call fcn.00403380
push eax
lea eax, [ebp - 0x428]
push eax
lea ecx, [ebp - 0x41c]
push ecx
mov byte [ebp - 4], 0xa
call fcn.00402910
add esp, 0xc
lea ecx, [ebx + 0x20]
push eax
mov byte [ebp - 4], 0xb
call fcn.00402af0
mov eax, dword [ebp - 0x41c]
add eax, 0xfffffff0
mov byte [ebp - 4], 0xa
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x444964
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x420]
add eax, 0xfffffff0
mov byte [ebp - 4], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x44498a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
call fcn.0046d4f0
test eax, eax
je 0x4449ba
mov ecx, dword [ebx + 0x20]
push ecx
push str.pDeviceINIInstallData__csNWInstallSetupExe___s_n
push 0x66fbb0
call fcn.00599ee3
add esp, 0xc
push 0x66fbb0
call fcn.0046d6a0
mov ecx, eax
call fcn.0046d9d0
mov ecx, dword [ebp - 0x43c]
mov eax, dword [edi]
lea edx, [ebp - 0x114]
push edx
push str.OCP_SETUP
push ecx
push eax
mov ecx, esi
call fcn.0045b740
test eax, eax
je 0x444a65
lea edx, [ebp - 0x114]
push edx
lea ecx, [ebp - 0x420]
call fcn.00403380
push eax
lea eax, [ebp - 0x428]
push eax
lea ecx, [ebp - 0x41c]
push ecx
mov byte [ebp - 4], 0xc
call fcn.00402910
add esp, 0xc
lea ecx, [ebx + 0x24]
push eax
mov byte [ebp - 4], 0xd
call fcn.00402af0
mov eax, dword [ebp - 0x41c]
add eax, 0xfffffff0
mov byte [ebp - 4], 0xc
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x444a3f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x420]
add eax, 0xfffffff0
mov byte [ebp - 4], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x444a65
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
call fcn.0046d4f0
test eax, eax
je 0x444a95
mov ecx, dword [ebx + 0x24]
push ecx
push str.pDeviceINIInstallData__csOCPInstallSetupExe___s_n
push 0x66fab0
call fcn.00599ee3
add esp, 0xc
push 0x66fab0
call fcn.0046d6a0
mov ecx, eax
call fcn.0046d9d0
mov ecx, dword [ebp - 0x43c]
mov eax, dword [edi]
lea edx, [ebp - 0x114]
push edx
push str.FRIENDLY_NAME
push ecx
push eax
mov ecx, esi
call fcn.0045b740
test eax, eax
je 0x444afb
lea edx, [ebp - 0x114]
push edx
lea ecx, [ebp - 0x41c]
call fcn.00403380
lea ecx, [ebx + 8]
push eax
mov byte [ebp - 4], 0xe
call fcn.00402af0
mov eax, dword [ebp - 0x41c]
add eax, 0xfffffff0
mov byte [ebp - 4], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x444afb
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
call fcn.0046d4f0
test eax, eax
je 0x444b2b
mov ecx, dword [ebx + 8]
push ecx
push str.pDeviceINIInstallData__csInstallFriendlyName___s_n
push 0x66f9b0
call fcn.00599ee3
add esp, 0xc
push 0x66f9b0
call fcn.0046d6a0
mov ecx, eax
call fcn.0046d9d0
lea edx, [ebp - 0x434]
push edx
push 0x5cd318
push str.CABFILE
mov ecx, esi
call fcn.00443530
mov edx, dword [ebp - 0x434]
mov ebx, dword [ebp - 0x438]
mov eax, dword [edi]
lea ecx, [ebp - 0x114]
push ecx
push edx
push ebx
push eax
mov ecx, esi
call fcn.0045b740
test eax, eax
jne 0x444b85
mov eax, dword [edi]
lea ecx, [ebp - 0x114]
push ecx
push str.CABFILE
push ebx
push eax
mov ecx, esi
call fcn.0045b740
test eax, eax
je 0x444eb7
lea eax, [ebp - 0x114]
lea edx, [eax + 1]
mov edi, edi
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x444b90
sub eax, edx
push eax
lea edx, [ebp - 0x114]
push edx
lea ecx, [ebp - 0x418]
call fcn.004026b0
mov eax, dword [ebp - 0x418]
cmp dword [eax - 0xc], 0
jl 0x444eb7
mov ecx, eax
push 0x5d26e0
push ecx
call fcn.0059a963
add esp, 8
test eax, eax
je 0x444eb7
sub eax, dword [ebp - 0x418]
mov edi, eax
cmp edi, 0xffffffff
je 0x444eb7
push edi
lea edx, [ebp - 0x41c]
push edx
lea ecx, [ebp - 0x418]
call fcn.004024f0
mov esi, dword [ebp - 0x424]
add esi, 0xc
push eax
mov ecx, esi
mov byte [ebp - 4], 0xf
call fcn.00402af0
mov eax, dword [ebp - 0x41c]
add eax, 0xfffffff0
mov byte [ebp - 4], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x444c33
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, esi
call fcn.00408a80
mov ecx, esi
call fcn.00408a00
push 0x5cd28c
lea ecx, [ebp - 0x42c]
call fcn.00403380
push eax
lea ecx, [ebp - 0x428]
push ecx
lea edx, [ebp - 0x420]
push edx
mov byte [ebp - 4], 0x10
call fcn.00402910
push esi
push eax
lea eax, [ebp - 0x41c]
mov bl, 0x11
push eax
mov byte [ebp - 4], bl
call fcn.00402910
add esp, 0x18
push eax
mov ecx, esi
mov byte [ebp - 4], 0x12
call fcn.00402af0
mov eax, dword [ebp - 0x41c]
add eax, 0xfffffff0
mov byte [ebp - 4], bl
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x444cb0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x420]
add eax, 0xfffffff0
mov byte [ebp - 4], 0x10
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x444cd6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x42c]
add eax, 0xfffffff0
mov byte [ebp - 4], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x444cfc
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 1
push reloc.OLEAUT32.dll_SysReAllocString
push str.SoftwareMicrosoftWindowsCurrentVersion
lea ecx, [ebp - 0x414]
mov dword [ebp - 0x21c], 0
call fcn.0047c120
lea ecx, [ebp - 0x42c]
push ecx
lea edx, [ebp - 0x218]
push edx
push str.ProgramFilesDir
lea eax, [ebp - 0x410]
push eax
lea ecx, [ebp - 0x414]
mov dword [ebp - 0x42c], 0x104
call fcn.0047b3d0
mov ecx, dword [ebp - 0x418]
mov eax, dword [ecx - 0xc]
sub eax, edi
dec eax
push eax
lea edx, [ebp - 0x42c]
push edx
lea ecx, [ebp - 0x418]
call fcn.00407840
push eax
lea ecx, [ebp - 0x418]
mov byte [ebp - 4], 0x13
call fcn.00402af0
mov eax, dword [ebp - 0x42c]
add eax, 0xfffffff0
mov byte [ebp - 4], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x444da1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0x418]
call fcn.00408a80
lea ecx, [ebp - 0x418]
call fcn.00408a00
push 0x5cd28c
lea ecx, [ebp - 0x430]
call fcn.00403380
mov esi, eax
lea ecx, [ebp - 0x218]
push ecx
lea ecx, [ebp - 0x420]
mov byte [ebp - 4], 0x14
call fcn.00403380
lea edx, [ebp - 0x418]
push edx
push eax
lea eax, [ebp - 0x41c]
push eax
mov byte [ebp - 4], 0x15
call fcn.00402910
push esi
push eax
lea ecx, [ebp - 0x42c]
mov bl, 0x16
push ecx
mov byte [ebp - 4], bl
call fcn.00402910
add esp, 0x18
mov ecx, dword [ebp - 0x424]
add ecx, 0x10
push eax
mov byte [ebp - 4], 0x17
call fcn.00402af0
mov eax, dword [ebp - 0x42c]
add eax, 0xfffffff0
mov byte [ebp - 4], bl
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x444e45
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x41c]
add eax, 0xfffffff0
mov byte [ebp - 4], 0x15
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x444e6b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x420]
add eax, 0xfffffff0
mov byte [ebp - 4], 0x14
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x444e91
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x430]
add eax, 0xfffffff0
mov byte [ebp - 4], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x444eb7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
call fcn.0046d4f0
test eax, eax
je 0x444eed
mov ecx, dword [ebp - 0x424]
mov edx, dword [ecx + 0xc]
push edx
push str.pDeviceINIInstallData__csCabFileName___s_n
push 0x66f8b0
call fcn.00599ee3
add esp, 0xc
push 0x66f8b0
call fcn.0046d6a0
mov ecx, eax
call fcn.0046d9d0
call fcn.0046d4f0
test eax, eax
je 0x444f23
mov eax, dword [ebp - 0x424]
mov ecx, dword [eax + 0x10]
push ecx
push str.pDeviceINIInstallData__csCabFileDestPath___s_n
push 0x66f7b0
call fcn.00599ee3
add esp, 0xc
push 0x66f7b0
call fcn.0046d6a0
mov ecx, eax
call fcn.0046d9d0
mov esi, dword [ebp - 0x444]
lea edx, [ebp - 0x434]
push edx
push 0x5cd318
push str.HOMOLFILE
mov ecx, esi
call fcn.00443530
mov edx, dword [ebp - 0x434]
mov ebx, dword [ebp - 0x440]
mov edi, dword [ebp - 0x438]
mov eax, dword [ebx]
lea ecx, [ebp - 0x114]
push ecx
push edx
push edi
push eax
mov ecx, esi
call fcn.0045b740
test eax, eax
jne 0x444f89
mov eax, dword [ebx]
lea ecx, [ebp - 0x114]
push ecx
push str.HOMOLFILE
push edi
push eax
mov ecx, esi
call fcn.0045b740
test eax, eax
je 0x4450d1
lea eax, [ebp - 0x114]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x444f92
sub eax, edx
push eax
lea edx, [ebp - 0x114]
push edx
lea ecx, [ebp - 0x418]
call fcn.004026b0
mov ebx, dword [ebp - 0x418]
cmp dword [ebx - 0xc], 0
jl 0x4450bc
push 0x5d26e0
push ebx
call fcn.0059a963
add esp, 8
test eax, eax
je 0x4450bc
sub eax, ebx
mov edi, eax
cmp edi, 0xffffffff
je 0x4450bc
push edi
lea eax, [ebp - 0x430]
push eax
lea ecx, [ebp - 0x418]
call fcn.004024f0
mov esi, dword [ebp - 0x424]
add esi, 0x14
push eax
mov ecx, esi
mov byte [ebp - 4], 0x18
call fcn.00402af0
mov eax, dword [ebp - 0x430]
add eax, 0xfffffff0
mov byte [ebp - 4], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x44502f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, esi
call fcn.00408a80
mov ecx, esi
call fcn.00408a00
mov eax, dword [ebx - 0xc]
sub eax, edi
dec eax
push eax
lea ecx, [ebp - 0x430]
push ecx
lea ecx, [ebp - 0x418]
call fcn.00407840
push eax
lea ecx, [ebp - 0x418]
mov byte [ebp - 4], 0x19
call fcn.00402af0
mov eax, dword [ebp - 0x430]
add eax, 0xfffffff0
mov byte [ebp - 4], 4
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x44508c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0x418]
call fcn.00408a80
lea ecx, [ebp - 0x418]
call fcn.00408a00
mov ecx, dword [ebp - 0x418]
push ecx
call fcn.0059ab03
mov edx, dword [ebp - 0x424]
add esp, 4
mov dword [edx + 0x18], eax
jmp 0x4450d1
mov ecx, dword [ebp - 0x424]
lea eax, [ebp - 0x114]
push eax
add ecx, 0x14
call fcn.00402ba0
call fcn.0046d4f0
mov edi, dword [ebp - 0x424]
test eax, eax
je 0x445107
mov ecx, dword [edi + 0x14]
push ecx
push str.pDeviceINIInstallData__csHomolFileName___s_n
push 0x66f6b0
call fcn.00599ee3
add esp, 0xc
push 0x66f6b0
call fcn.0046d6a0
mov ecx, eax
call fcn.0046d9d0
mov esi, dword [ebp - 0x444]
lea edx, [ebp - 0x434]
push edx
push 0x5d44e4
push str.INSTALL_PATH
mov ecx, esi
call fcn.00443530
mov edx, dword [ebp - 0x434]
mov eax, dword [ebp - 0x440]
mov ebx, dword [ebp - 0x438]
mov eax, dword [eax]
lea ecx, [ebp - 0x114]
push ecx
push edx
push ebx
push eax
mov ecx, esi
call fcn.0045b740
test eax, eax
je 0x445182
lea eax, [ebp - 0x114]
push eax
lea ecx, [ebp - 0x42c]
call fcn.00403380
push eax
lea ecx, [ebp - 0x428]
push ecx
lea edx, [ebp - 0x430]
mov bl, 0x1a
push edx
mov byte [ebp - 4], bl
call fcn.00402910
add esp, 0xc
mov byte [ebp - 4], 0x1b
jmp 0x4451f3
lea ecx, [ebp - 0x434]
push ecx
push 0x5cd318
push str.INSTALL_PATH
mov ecx, esi
call fcn.00443530
mov edx, dword [ebp - 0x440]
mov eax, dword [edx]
mov edx, dword [ebp - 0x434]
lea ecx, [ebp - 0x114]
push ecx
push edx
push ebx
push eax
mov ecx, esi
call fcn.0045b740
test eax, eax
je 0x445247
lea eax, [ebp - 0x114]
push eax
lea ecx, [ebp - 0x42c]
call fcn.00403380
push eax
lea ecx, [ebp - 0x428]
push ecx
lea edx, [ebp - 0x430]
mov bl, 0x1c
push edx
mov byte [ebp - 4], bl
call fcn.00402910
add esp, 0xc
mov byte [ebp - 4], 0x1d
push eax
lea ecx, [edi + 0x1c]
call fcn.00402af0
mov eax, dword [ebp - 0x430]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
mov byte [ebp - 4], bl
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x445221
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x42c]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
mov byte [ebp - 4], 4
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x445247
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
call fcn.0046d4f0
test eax, eax
je 0x445277
mov ecx, dword [edi + 0x1c]
push ecx
push str.pDeviceINIInstallData__csDeviceInstallPath___s_n
push 0x66f5b0
call fcn.00599ee3
add esp, 0xc
push 0x66f5b0
call fcn.0046d6a0
mov ecx, eax
call fcn.0046d9d0
push edi
mov ecx, esi
call fcn.00442910
push edi
mov ecx, esi
call fcn.00441730
mov ebx, dword [ebp - 0x418]
mov edx, dword [ebp - 0x440]
mov eax, dword [edx]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
call fcn.0046d4f0
test eax, eax
je 0x445324
mov eax, dword [ebp - 0x448]
push eax
push str.CINIFile::GetDeviceSpecificInstallInfo_:_bRetVal___d_n
push 0x66f4b0
call fcn.00599ee3
mov ecx, dword [str.EXIT:]
mov edx, dword [0x5ccefc]
mov eax, 0x66f4b0
mov dword [0x66f3b0], ecx
add esp, 0xc
mov dword [0x66f3b4], edx
mov ecx, eax
lea ecx, [ecx]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x4452e0
mov edi, 0x66f3b0
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x4452f1
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
push 0x66f3b0
rep movsb byte es:[edi], byte [esi]
call fcn.0046d6a0
mov ecx, eax
call fcn.0046d9d0
call fcn.0046d6a0
mov ecx, eax
call fcn.0046d510
mov eax, dword [ebp - 0x428]
add eax, 0xfffffff0
mov byte [ebp - 4], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x44534a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [ebx - 0x10]
mov byte [ebp - 4], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x44536a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x434]
add eax, 0xfffffff0
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x445390
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x43c]
add eax, 0xfffffff0
mov byte [ebp - 4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4453b6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x438]
add eax, 0xfffffff0
mov dword [ebp - 4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4453df
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x448]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00599ed4
mov esp, ebp
pop ebp
ret 0x10