Function at 0x41fdd0
Capabilities:
Copy file
Read .ini file
Set file attributes

Disassembly:
push 0xffffffffffffffff
push 0x458b46
mov eax, dword fs:[0]
push eax
mov eax, 0x10ca0
call fcn.00441390
mov eax, dword [0x46be4c]
xor eax, esp
mov dword [esp + 0x10c9c], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x46be4c]
xor eax, esp
push eax
lea eax, [esp + 0x10cb4]
mov dword fs:[0], eax
mov ax, word [0x45e160]
push 0x103
xor edi, edi
mov esi, ecx
mov cl, byte [0x45e162]
lea edx, [esp + 0x65]
push edi
push edx
mov word [esp + 0x44], ax
mov byte [esp + 0x46], cl
mov word [esp + 0x38], 9
mov byte [esp + 0x6c], 0
call fcn.004413c0
add esp, 0xc
mov ecx, esi
call fcn.0041df90
push eax
lea eax, [esp + 0x64]
push 0x104
push eax
call fcn.004423ff
add esp, 0xc
mov ecx, esi
call fcn.0041eb10
push 0x104
lea ecx, [esp + 0x1a8]
push edi
push ecx
call fcn.004413c0
mov eax, dword [esi + 0x148]
mov ebx, dword [sym.imp.KERNEL32.dll_lstrcpyA]
add esp, 0xc
push eax
lea edx, [esp + 0x1a8]
push edx
call ebx
push str.uninst.ini
lea eax, [esp + 0x1a8]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatA]
push edi
lea ecx, [esp + 0x1a8]
push ecx
lea edx, [esp + 0x68]
push edx
call dword [sym.imp.KERNEL32.dll_CopyFileA]
cmp eax, 1
je 0x41fef8
push 0x30
push 3
push 0x1e
mov ecx, esi
call fcn.0041e1c0
xor eax, eax
mov ecx, dword [esp + 0x10cb4]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x10c9c]
xor ecx, esp
call fcn.0044027a
add esp, 0x10cac
ret
mov ebp, dword [sym.imp.KERNEL32.dll_GetLastError]
call ebp
lea eax, [esp + 0x1a4]
push eax
lea ecx, [esp + 0x64]
push ecx
call ebx
push 0x80
lea edx, [esp + 0x64]
push edx
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
call ebp
push 0x7fff
lea eax, [esp + 0xcb4]
push 0
push eax
call fcn.004413c0
add esp, 0xc
lea ecx, [esp + 0x60]
push ecx
push 0x7fff
lea edx, [esp + 0xcb8]
push edx
push str.Uninstall_Drivers
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionA]
call fcn.004317f7
push eax
push 0x7fff
lea eax, [esp + 0xcb8]
push eax
lea ecx, [esp + 0x28]
call fcn.00401500
push 9
push 0
lea ecx, [esp + 0x24]
mov dword [esp + 0x10cc4], 0
call fcn.00407410
push 9
push 0x3b
lea ecx, [esp + 0x24]
call fcn.00407410
mov ebp, dword [esp + 0x1c]
mov eax, dword [ebp - 0xc]
test eax, eax
jge 0x41ffa6
or eax, 0xffffffff
jmp 0x41ffbf
lea ecx, [esp + 0x38]
push ecx
push ebp
call fcn.00442d29
add esp, 8
test eax, eax
jne 0x41ffbd
or eax, 0xffffffff
jmp 0x41ffbf
sub eax, ebp
push eax
lea edx, [esp + 0x1c]
push edx
lea ecx, [esp + 0x24]
call fcn.00407350
lea ebx, [esi + 0xa8]
push eax
mov ecx, ebx
mov byte [esp + 0x10cc0], 1
call fcn.00402020
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
mov byte [esp + 0x10cbc], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42000c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [ebp - 0xc], 0
jge 0x420017
or eax, 0xffffffff
jmp 0x420030
lea ecx, [esp + 0x38]
push ecx
push ebp
call fcn.00442d29
add esp, 8
test eax, eax
jne 0x42002e
or eax, 0xffffffff
jmp 0x420030
sub eax, ebp
push 0
push eax
lea ecx, [esp + 0x24]
call fcn.0041dfd0
mov ebp, dword [esp + 0x1c]
test edi, edi
mov eax, dword [ebp - 0xc]
jl 0x420074
cmp edi, eax
jg 0x420074
lea edx, [esp + 0x2c]
push edx
lea eax, [edi + ebp]
push eax
call fcn.00442d29
add esp, 8
test eax, eax
je 0x420074
sub eax, ebp
mov edi, eax
test edi, edi
jle 0x420074
add dword [esi + 0x120], 1
add edi, 1
jmp 0x420040
mov eax, dword [ebx]
sub eax, 0x10
push eax
call fcn.004015c0
lea ebx, [eax + 0x10]
add esp, 4
mov dword [esp + 0x24], ebx
push 0x45c6da
lea ecx, [esp + 0x2c]
mov byte [esp + 0x10cc0], 2
call fcn.004027b0
push 0x45c6da
lea ecx, [esp + 0x24]
mov byte [esp + 0x10cc0], 3
call fcn.004027b0
mov byte [esp + 0x10cbc], 4
xor edi, edi
nop
test edi, edi
mov eax, dword [ebx - 0xc]
jl 0x42015c
cmp edi, eax
jge 0x42015c
lea ecx, [edi + ebx]
push 9
push ecx
call fcn.00442df6
add esp, 8
test eax, eax
je 0x42015c
sub eax, ebx
mov ebp, eax
js 0x42015c
cmp ebp, edi
jle 0x420154
mov edx, ebp
sub edx, edi
push edx
push edi
lea eax, [esp + 0x20]
push eax
lea ecx, [esp + 0x30]
call fcn.00401910
push eax
lea ecx, [esp + 0x24]
mov byte [esp + 0x10cc0], 6
call fcn.00402020
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
mov byte [esp + 0x10cbc], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42013d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esi + 0x16c]
lea ecx, [esi + 0x164]
lea edx, [esp + 0x20]
push edx
push eax
call fcn.00430be6
lea edi, [ebp + 1]
jmp 0x4200c0
push edi
lea ecx, [esp + 0x1c]
push ecx
lea ecx, [esp + 0x2c]
call fcn.00401ea0
push eax
lea ecx, [esp + 0x2c]
mov byte [esp + 0x10cc0], 5
call fcn.00402020
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
mov byte [esp + 0x10cbc], 4
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4201a5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esi + 0x16c]
lea ecx, [esi + 0x164]
lea edx, [esp + 0x28]
push edx
push eax
call fcn.00430be6
push 0x7fff
lea eax, [esp + 0xcb4]
push 0
push eax
call fcn.004413c0
add esp, 0xc
lea ecx, [esp + 0x60]
push ecx
push 0x7fff
lea edx, [esp + 0xcb8]
push edx
push str.Uninstall_Old_Drivers
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionA]
call fcn.004317f7
push eax
push 0x7fff
lea eax, [esp + 0xcb8]
push eax
lea ecx, [esp + 0x20]
call fcn.00401500
push 9
push 0
lea ecx, [esp + 0x1c]
mov byte [esp + 0x10cc4], 7
call fcn.00407410
push 9
push 0x3b
lea ecx, [esp + 0x1c]
call fcn.00407410
mov ebx, dword [esp + 0x14]
cmp dword [ebx - 0xc], 0
jge 0x42023d
or eax, 0xffffffff
jmp 0x420256
lea ecx, [esp + 0x38]
push ecx
push ebx
call fcn.00442d29
add esp, 8
test eax, eax
jne 0x420254
or eax, 0xffffffff
jmp 0x420256
sub eax, ebx
push eax
lea edx, [esp + 0x1c]
push edx
lea ecx, [esp + 0x1c]
call fcn.00407350
lea ecx, [esi + 0xac]
push eax
mov byte [esp + 0x10cc0], 8
call fcn.00402020
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
mov byte [esp + 0x10cbc], 7
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4202a1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor edi, edi
cmp dword [ebx - 0xc], edi
jl 0x4204df
lea ecx, [esp + 0x38]
push ecx
push ebx
call fcn.00442d29
add esp, 8
test eax, eax
je 0x4204df
mov ecx, dword [esp + 0x14]
sub eax, ecx
mov ebx, eax
js 0x4204df
mov ebp, dword [ecx - 0xc]
cmp ebx, ebp
jge 0x4204df
cmp dword [ecx - 4], 1
jle 0x4202f4
mov edx, ecx
mov eax, dword [edx - 0xc]
push eax
lea ecx, [esp + 0x18]
call fcn.00401350
mov ecx, dword [esp + 0x14]
test ebp, ebp
mov byte [ebx + ecx], 0
jl 0x4204df
cmp ebp, dword [ecx - 8]
jg 0x4204df
mov dword [ecx - 0xc], ebp
mov byte [ecx + ebp], 0
test edi, edi
mov eax, dword [ecx - 0xc]
jl 0x42034a
cmp edi, eax
jg 0x42034a
mov ebx, dword [esp + 0x14]
lea ecx, [esp + 0x2c]
push ecx
lea edx, [ebx + edi]
push edx
call fcn.00442d29
add esp, 8
test eax, eax
je 0x42034a
sub eax, ebx
mov edi, eax
test edi, edi
jle 0x42034a
add dword [esi + 0x124], 1
add edi, 1
mov ecx, ebx
jmp 0x420310
mov eax, dword [esi + 0xb0]
lea ebp, [esi + 0xb0]
sub eax, 0x10
mov ecx, 1
sub ecx, dword [eax + 0xc]
mov eax, dword [eax + 8]
sub eax, 0x800
or eax, ecx
mov dword [esp + 0x18], ebp
jge 0x42037d
push 0x800
mov ecx, ebp
call fcn.00401570
mov eax, dword [ebp]
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea ecx, [esp + 0x60]
push ecx
push 0x800
push eax
push str.item_not_found__
push str.PRT_2KXP
push str.Borderline_Driver_Versions
call ebx
mov eax, dword [ebp]
push str.item_not_found__
push eax
call fcn.00442f25
add esp, 8
test eax, eax
sete al
test al, al
je 0x4204e9
push 0x30
push 3
push str.PRT_2KXP
push str.Borderline_Driver_Versions
push 0x1f
mov ecx, esi
call fcn.0041e4c0
mov ecx, dword [ebp]
test ecx, ecx
jne 0x4203e2
xor eax, eax
jmp 0x4203f8
mov eax, ecx
lea esi, [eax + 1]
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x4203e7
sub eax, esi
js 0x4204df
cmp eax, dword [ecx - 8]
jg 0x4204df
mov dword [ecx - 0xc], eax
mov edx, dword [ebp]
mov byte [eax + edx], 0
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
mov byte [esp + 0x10cbc], 4
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x420433
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
mov byte [esp + 0x10cbc], 3
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42045b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
mov byte [esp + 0x10cbc], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x420483
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
mov byte [esp + 0x10cbc], 0
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4204ab
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
mov dword [esp + 0x10cbc], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x41fece
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x41fece
push 0x80070057
call fcn.00401090
mov ecx, dword [ebp]
test ecx, ecx
jne 0x4204f4
xor eax, eax
jmp 0x42050d
mov eax, ecx
lea edi, [eax + 1]
lea esp, [esp]
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x420500
sub eax, edi
js 0x4204df
cmp eax, dword [ecx - 8]
jg 0x4204df
mov dword [ecx - 0xc], eax
mov ecx, dword [ebp]
mov byte [eax + ecx], 0
mov eax, dword [esi + 0xb4]
lea ebp, [esi + 0xb4]
sub eax, 0x10
mov ecx, 1
sub ecx, dword [eax + 0xc]
mov eax, dword [eax + 8]
sub eax, 0x800
or eax, ecx
mov dword [esp + 0x34], ebp
jge 0x42054f
push 0x800
mov ecx, ebp
call fcn.00401570
mov eax, dword [ebp]
lea edx, [esp + 0x60]
push edx
push 0x800
push eax
push str.item_not_found__
push str.FAX_2KXP
push str.Borderline_Driver_Versions
call ebx
mov eax, dword [ebp]
push str.item_not_found__
push eax
call fcn.00442f25
add esp, 8
test eax, eax
sete al
test al, al
je 0x4205f5
push 0x30
push 3
push str.FAX_2KXP
push str.Borderline_Driver_Versions
push 0x1f
mov ecx, esi
call fcn.0041e4c0
mov ecx, dword [ebp]
test ecx, ecx
jne 0x4205aa
xor eax, eax
jmp 0x4205c1
mov eax, ecx
lea esi, [eax + 1]
nop
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x4205b0
sub eax, esi
js 0x4204df
cmp eax, dword [ecx - 8]
jg 0x4204df
mov dword [ecx - 0xc], eax
mov ecx, dword [ebp]
mov byte [eax + ecx], 0
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
mov byte [esp + 0x10cbc], 4
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jmp 0x420427
mov ecx, dword [ebp]
test ecx, ecx
jne 0x420600
xor eax, eax
jmp 0x420616
mov eax, ecx
lea edi, [eax + 1]
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x420605
sub eax, edi
js 0x4204df
cmp eax, dword [ecx - 8]
jg 0x4204df
mov dword [ecx - 0xc], eax
mov ecx, dword [ebp]
mov byte [eax + ecx], 0
mov eax, dword [esi + 0xb8]
lea edi, [esi + 0xb8]
sub eax, 0x10
mov ecx, 1
sub ecx, dword [eax + 0xc]
mov eax, dword [eax + 8]
sub eax, 0x800
or eax, ecx
jge 0x420658
push 0x800
mov ecx, edi
call fcn.00401570
mov eax, dword [edi]
lea edx, [esp + 0x60]
push edx
push 0x800
push eax
push str.item_not_found__
push str.OLD_VER
push str.Borderline_Driver_Versions
call ebx
mov eax, dword [edi]
push str.item_not_found__
push eax
call fcn.00442f25
add esp, 8
test eax, eax
sete al
test al, al
je 0x4206d9
push 0x30
push 3
push str.OLD_VER
push str.Borderline_Driver_Versions
push 0x1f
mov ecx, esi
call fcn.0041e4c0
mov ecx, dword [edi]
test ecx, ecx
jne 0x4206b0
xor eax, eax
jmp 0x4206c6
mov eax, ecx
lea esi, [eax + 1]
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x4206b5
sub eax, esi
js 0x4204df
cmp eax, dword [ecx - 8]
jg 0x4204df
mov dword [ecx - 0xc], eax
mov ecx, dword [edi]
jmp 0x4205d0
mov ecx, dword [edi]
test ecx, ecx
jne 0x4206e3
xor eax, eax
jmp 0x4206f9
mov eax, ecx
lea ebp, [eax + 1]
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x4206e8
sub eax, ebp
js 0x4204df
cmp eax, dword [ecx - 8]
jg 0x4204df
mov dword [ecx - 0xc], eax
mov ecx, dword [edi]
mov byte [eax + ecx], 0
mov eax, dword [esi + 0xbc]
lea edi, [esi + 0xbc]
sub eax, 0x10
mov ecx, 1
sub ecx, dword [eax + 0xc]
mov eax, dword [eax + 8]
sub eax, 0x800
or eax, ecx
jge 0x42073a
push 0x800
mov ecx, edi
call fcn.00401570
mov eax, dword [edi]
lea edx, [esp + 0x60]
push edx
push 0x800
push eax
push str.item_not_found__
push 0x45e0f4
push 0x45e0f4
call ebx
mov eax, dword [edi]
push str.item_not_found__
push eax
call fcn.00442f25
add esp, 8
test eax, eax
sete al
test al, al
je 0x4207bb
push 0x30
push 3
push 0x45e0f4
push 0x45e0f4
push 0x1f
mov ecx, esi
call fcn.0041e4c0
mov ecx, dword [edi]
test ecx, ecx
jne 0x420792
xor eax, eax
jmp 0x4207a8
mov eax, ecx
lea esi, [eax + 1]
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x420797
sub eax, esi
js 0x4204df
cmp eax, dword [ecx - 8]
jg 0x4204df
mov dword [ecx - 0xc], eax
mov ecx, dword [edi]
jmp 0x4205d0
mov ecx, dword [edi]
test ecx, ecx
jne 0x4207c5
xor eax, eax
jmp 0x4207e1
mov eax, ecx
lea ebp, [eax + 1]
lea ebx, [ebx]
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x4207d0
sub eax, ebp
js 0x4204df
cmp eax, dword [ecx - 8]
jg 0x4204df
mov dword [ecx - 0xc], eax
mov ecx, dword [edi]
mov byte [eax + ecx], 0
mov eax, dword [edi]
sub eax, 0x10
push eax
call fcn.004015c0
add eax, 0x10
mov dword [esp + 0x34], eax
mov edi, dword [edi]
push 0x45d79c
push edi
mov byte [esp + 0x10cc8], 9
call fcn.00442f25
add esp, 0xc
test eax, eax
sete al
test al, al
je 0x420834
push str.PCL5e
lea ecx, [esp + 0x34]
call fcn.00402540
mov eax, dword [esi + 0x3c4]
lea edi, [esi + 0x3c4]
sub eax, 0x10
mov ecx, 1
sub ecx, dword [eax + 0xc]
mov eax, dword [eax + 8]
sub eax, 0x800
or eax, ecx
jge 0x420863
push 0x800
mov ecx, edi
call fcn.00401570
mov eax, dword [edi]
lea edx, [esp + 0x60]
push edx
push 0x800
push eax
push 0x45c6da
push str.PDL_TYPE
push 0x45e0f4
call ebx
mov eax, dword [edi]
push str.LIPS4
push eax
call fcn.00442f25
add esp, 8
test eax, eax
setne al
test al, al
je 0x4208ee
push 0x45d79c
push edi
call fcn.004070c0
add esp, 8
test al, al
je 0x4208ee
push 0x45e0e4
push edi
call fcn.004070c0
add esp, 8
test al, al
je 0x4208ee
push 0x45dcd8
push edi
call fcn.004070c0
add esp, 8
test al, al
je 0x4208ee
push str.UFRII
push edi
call fcn.004070c0
add esp, 8
test al, al
je 0x4208ee
push 0x45c6da
mov ecx, edi
call fcn.00402540
mov edx, dword [edi]
test edx, edx
jne 0x4208f8
xor eax, eax
jmp 0x420911
mov eax, edx
lea edi, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x420900
sub eax, edi
js 0x4204df
cmp eax, dword [edx - 8]
jg 0x4204df
mov dword [edx - 0xc], eax
mov ecx, dword [esi + 0x3c4]
mov byte [eax + ecx], 0
mov edx, dword [esi + 0x124]
add edx, dword [esi + 0x120]
xor edi, edi
test edx, edx
jle 0x420961
lea ebp, [esi + 0xc0]
nop
push 2
push 0x45e0d8
mov ecx, ebp
call fcn.00401c50
mov eax, dword [esi + 0x124]
add eax, dword [esi + 0x120]
add edi, 1
cmp edi, eax
jl 0x420940
mov ecx, dword [esi + 0xc0]
mov eax, dword [ecx - 0xc]
lea edi, [esi + 0xc0]
push 0
add eax, 0xffffffff
push eax
mov ecx, edi
call fcn.0041dfd0
lea ecx, [esi + 0xc4]
push edi
call fcn.00402020
mov eax, dword [esp + 0x1c]
lea edx, [esp + 0x2c]
push edx
push eax
call fcn.00443ad4
mov edi, eax
add esp, 8
test edi, edi
je 0x420a2d
mov ebx, dword [esp + 0x34]
lea esp, [esp]
push 0x45d77c
push edi
call fcn.00442610
add esp, 8
test eax, eax
lea ebp, [esi + 0xc8]
jne 0x4209e2
mov ecx, dword [esp + 0x18]
mov edx, dword [ecx]
test edx, edx
je 0x4209fc
mov eax, edx
lea edi, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x4209d7
jmp 0x4209fa
mov edx, dword [ebx]
test edx, edx
jne 0x4209ec
xor eax, eax
jmp 0x4209fc
mov eax, edx
lea edi, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x4209f1
sub eax, edi
push eax
push edx
mov ecx, ebp
call fcn.00401c50
lea edx, [esp + 0x2c]
push edx
push 0
call fcn.00443ad4
mov edi, eax
add esp, 8
test edi, edi
je 0x420a2d
push 1
push 0x45c6d8
mov ecx, ebp
call fcn.00401c50
jmp 0x4209b0
mov ebx, dword [esp + 0x14]
lea eax, [esp + 0x2c]
push eax
push ebx
call fcn.00443ad4
mov edi, eax
add esp, 8
test edi, edi
je 0x420ad1
lea esp, [esp]
push 0x45d77c
push edi
call fcn.00442610
add esp, 8
test eax, eax
lea ebp, [esi + 0xc8]
jne 0x420a82
mov ecx, dword [esp + 0x18]
mov edx, dword [ecx]
test edx, edx
je 0x420aa0
mov eax, edx
lea edi, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x420a77
jmp 0x420a9e
mov edx, dword [esp + 0x34]
mov edx, dword [edx]
test edx, edx
jne 0x420a90
xor eax, eax
jmp 0x420aa0
mov eax, edx
lea edi, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x420a95
sub eax, edi
push eax
push edx
mov ecx, ebp
call fcn.00401c50
lea eax, [esp + 0x2c]
push eax
push 0
call fcn.00443ad4
mov edi, eax
add esp, 8
test edi, edi
je 0x420ad1
push 1
push 0x45c6d8
mov ecx, ebp
call fcn.00401c50
jmp 0x420a50
push 0x800
lea ecx, [esp + 0x2ac]
push 0
push ecx
call fcn.004413c0
mov ebp, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
add esp, 0xc
lea edx, [esp + 0x60]
push edx
push 0x800
lea eax, [esp + 0x2b0]
push eax
push str.item_not_found__
push str.KEY_PRINTER
push str.Registrys
call ebp
lea eax, [esp + 0x2a8]
lea edx, [eax + 1]
jmp 0x420b20
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x420b20
sub eax, edx
push eax
lea ecx, [esp + 0x2ac]
push str.item_not_found__
push ecx
call fcn.00443529
add esp, 0xc
test eax, eax
jne 0x420b8c
push 0x30
push 3
push str.KEY_PRINTER
push str.Registrys
push 0x1f
mov ecx, esi
call fcn.0041e4c0
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
mov byte [esp + 0x10cbc], 7
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x420b84
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [ebx - 0x10]
jmp 0x420412
lea eax, [esp + 0x2a8]
lea ecx, [esi + 0xe0]
lea edi, [eax + 1]
lea esp, [esp]
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x420ba0
sub eax, edi
push eax
lea edx, [esp + 0x2ac]
push edx
call fcn.00401bc0
push 0x800
lea eax, [esp + 0x2ac]
push 0
push eax
call fcn.004413c0
add esp, 0xc
lea ecx, [esp + 0x60]
push ecx
push 0x800
lea edx, [esp + 0x2b0]
push edx
push str.item_not_found__
push str.KEY_PRINTER2
push str.Registrys
call ebp
lea eax, [esp + 0x2a8]
lea ecx, [eax + 1]
lea ecx, [ecx]
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x420c00
sub eax, ecx
push eax
lea eax, [esp + 0x2ac]
push str.item_not_found__
push eax
call fcn.00443529
add esp, 0xc
test eax, eax
jne 0x420c5d
push 0x30
push 3
push str.KEY_PRINTER2
push str.Registrys
push 0x1f
mov ecx, esi
call fcn.0041e4c0
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
mov byte [esp + 0x10cbc], 7
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jmp 0x420b78
lea ecx, [esp + 0x2a8]
push ecx
lea ecx, [esi + 0xe4]
call fcn.00402540
push 0x800
lea edx, [esp + 0x2ac]
push 0
push edx
call fcn.004413c0
add esp, 0xc
lea eax, [esp + 0x60]
push eax
push 0x800
lea ecx, [esp + 0x2b0]
push ecx
push str.item_not_found__
push str.KEY_BEFORE
push str.Registrys
call ebp
lea eax, [esp + 0x2a8]
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x420cb4
sub eax, edx
push eax
lea edx, [esp + 0x2ac]
push str.item_not_found__
push edx
call fcn.00443529
add esp, 0xc
test eax, eax
jne 0x420ce7
push 0x30
push 3
push str.KEY_BEFORE
jmp 0x420c2e
lea ecx, [esp + 0x2a8]
push ecx
lea ecx, [esi + 0xe8]
call fcn.00402540
push 0x800
lea edx, [esp + 0x2ac]
push 0
push edx
call fcn.004413c0
add esp, 0xc
lea eax, [esp + 0x60]
push eax
push 0x800
lea ecx, [esp + 0x2b0]
push ecx
push str.item_not_found__
push str.KEY_BEFORE2
push str.Registrys
call ebp
lea eax, [esp + 0x2a8]
lea edx, [eax + 1]
mov edi, edi
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x420d40
sub eax, edx
push eax
lea edx, [esp + 0x2ac]
push str.item_not_found__
push edx
call fcn.00443529
add esp, 0xc
test eax, eax
jne 0x420db7
push 0x30
push 3
push str.KEY_BEFORE2
push str.Registrys
push 0x1f
mov ecx, esi
call fcn.0041e4c0
lea ecx, [esp + 0x30]
call fcn.00401660
lea ecx, [esp + 0x14]
call fcn.00401660
lea ecx, [esp + 0x20]
call fcn.00401660
lea ecx, [esp + 0x28]
call fcn.00401660
lea ecx, [esp + 0x24]
call fcn.00401660
lea ecx, [esp + 0x1c]
call fcn.00401660
jmp 0x41fece
lea eax, [esp + 0x2a8]
push eax
lea ecx, [esi + 0xec]
call fcn.00402540
push 0x800
lea ecx, [esp + 0x2ac]
push 0
push ecx
call fcn.004413c0
add esp, 0xc
lea edx, [esp + 0x60]
push edx
push 0x800
lea eax, [esp + 0x2b0]
push eax
push str.item_not_found__
push str.KEY_BEFORE3
push str.Registrys
call ebp
lea eax, [esp + 0x2a8]
lea edx, [eax + 1]
mov edi, edi
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x420e10
sub eax, edx
push eax
lea ecx, [esp + 0x2ac]
push str.item_not_found__
push ecx
call fcn.00443529
add esp, 0xc
test eax, eax
jne 0x420e43
push 0x30
push 3
push str.KEY_BEFORE3
jmp 0x420d6e
lea edx, [esp + 0x2a8]
push edx
lea ecx, [esi + 0xf0]
call fcn.00402540
push 0x800
lea eax, [esp + 0x2ac]
push 0
push eax
call fcn.004413c0
add esp, 0xc
lea ecx, [esp + 0x60]
push ecx
push 0x800
lea edx, [esp + 0x2b0]
push edx
push str.item_not_found__
push str.KEY_PDRVCAP
push str.Registrys
call ebp
lea eax, [esp + 0x2a8]
lea edx, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x420ea0
sub eax, edx
push eax
lea eax, [esp + 0x2ac]
push str.item_not_found__
push eax
call fcn.00443529
add esp, 0xc
test eax, eax
jne 0x420ed3
push 0x30
push 3
push str.KEY_PDRVCAP
jmp 0x420d6e
lea ecx, [esp + 0x2a8]
push ecx
lea ecx, [esi + 0xf4]
call fcn.00402540
push 0x800
lea edx, [esp + 0x2ac]
push 0
push edx
call fcn.004413c0
add esp, 0xc
lea eax, [esp + 0x60]
push eax
push 0x800
lea ecx, [esp + 0x2b0]
push ecx
push str.item_not_found__
push str.KEY_PDRVCAP2
push str.Registrys
call ebp
lea eax, [esp + 0x2a8]
lea edx, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x420f30
sub eax, edx
push eax
lea edx, [esp + 0x2ac]
push str.item_not_found__
push edx
call fcn.00443529
add esp, 0xc
test eax, eax
jne 0x420f63
push 0x30
push 3
push str.KEY_PDRVCAP2
jmp 0x420d6e
lea eax, [esp + 0x2a8]
push eax
lea ecx, [esi + 0xf8]
call fcn.00402540
push 0x7fff
lea ecx, [esp + 0xcb4]
push 0
push ecx
call fcn.004413c0
mov ebp, dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionA]
add esp, 0xc
lea edx, [esp + 0x60]
push edx
push 0x7fff
lea eax, [esp + 0xcb8]
push eax
push str.Registrys_Key
call ebp
push 0x7fff
lea ecx, [esp + 0xcb4]
push ecx
lea ecx, [esp + 0x44]
mov edi, eax
call fcn.0041dfb0
test edi, edi
mov byte [esp + 0x10cbc], 0xa
lea ecx, [esp + 0x3c]
je 0x420fec
push 9
push 0
call fcn.00407410
push 9
push 0x3b
lea ecx, [esp + 0x44]
call fcn.00407410
jmp 0x420ff6
push str.Non_Printer_t_t
call fcn.00402540
mov edi, dword [esp + 0x3c]
cmp dword [edi - 0xc], 0
jge 0x421005
or eax, 0xffffffff
jmp 0x42101e
lea edx, [esp + 0x38]
push edx
push edi
call fcn.00442d29
add esp, 8
test eax, eax
jne 0x42101c
or eax, 0xffffffff
jmp 0x42101e
sub eax, edi
push eax
lea eax, [esp + 0x1c]
push eax
lea ecx, [esp + 0x44]
call fcn.00407350
push eax
lea ecx, [esi + 0xfc]
mov byte [esp + 0x10cc0], 0xb
call fcn.00402500
lea ecx, [esp + 0x18]
mov byte [esp + 0x10cbc], 0xa
call fcn.00401660
push 0x7fff
lea ecx, [esp + 0xcb4]
push 0
push ecx
call fcn.004413c0
add esp, 0xc
lea edx, [esp + 0x60]
push edx
push 0x7fff
lea eax, [esp + 0xcb8]
push eax
push str.VDC_Modules
call ebp
push 0x7fff
lea ecx, [esp + 0xcb4]
push ecx
lea ecx, [esp + 0x3c]
call fcn.0041dfb0
push 9
mov bl, 0xc
push 0
lea ecx, [esp + 0x3c]
mov byte [esp + 0x10cc4], bl
call fcn.00407410
push 9
push 0x3b
lea ecx, [esp + 0x3c]
call fcn.00407410
mov edi, dword [esp + 0x34]
cmp dword [edi - 0xc], 0
jge 0x4210ca
or eax, 0xffffffff
jmp 0x4210e3
lea edx, [esp + 0x38]
push edx
push edi
call fcn.00442d29
add esp, 8
test eax, eax
jne 0x4210e1
or eax, 0xffffffff
jmp 0x4210e3
sub eax, edi
push eax
lea eax, [esp + 0x1c]
push eax
lea ecx, [esp + 0x3c]
call fcn.00407350
push eax
lea ecx, [esi + 0xcc]
mov byte [esp + 0x10cc0], 0xd
call fcn.00402500
lea ecx, [esp + 0x18]
mov byte [esp + 0x10cbc], bl
call fcn.00401660
push 0x7fff
lea ecx, [esp + 0xcb4]
push 0
push ecx
call fcn.004413c0
add esp, 0xc
lea edx, [esp + 0x60]
push edx
push 0x7fff
lea eax, [esp + 0xcb8]
push eax
push str.DIAS_Modules
call ebp
push 0x7fff
lea ecx, [esp + 0xcb4]
push ecx
lea ecx, [esp + 0x48]
call fcn.0041dfb0
push 9
mov bl, 0xe
push 0
lea ecx, [esp + 0x48]
mov byte [esp + 0x10cc4], bl
call fcn.00407410
push 9
push 0x3b
lea ecx, [esp + 0x48]
call fcn.00407410
mov edi, dword [esp + 0x40]
cmp dword [edi - 0xc], 0
jge 0x42118e
or eax, 0xffffffff
jmp 0x4211a7
lea edx, [esp + 0x38]
push edx
push edi
call fcn.00442d29
add esp, 8
test eax, eax
jne 0x4211a5
or eax, 0xffffffff
jmp 0x4211a7
sub eax, edi
push eax
lea eax, [esp + 0x1c]
push eax
lea ecx, [esp + 0x48]
call fcn.00407350
push eax
lea ecx, [esi + 0xd0]
mov byte [esp + 0x10cc0], 0xf
call fcn.00402500
lea ecx, [esp + 0x18]
mov byte [esp + 0x10cbc], bl
call fcn.00401660
lea ecx, [esp + 0x60]
push ecx
push 0x800
lea edi, [esi + 0xd4]
push 0x800
mov ecx, edi
call fcn.004016c0
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push eax
push str.item_not_found__
push str.PDL_NAME
push str.Profiles
call ebx
push str.item_not_found__
push edi
call fcn.00407090
add esp, 8
test al, al
je 0x421260
push 0x30
push 3
push str.PDL_NAME
push str.Profiles
push 0x1f
mov ecx, esi
call fcn.0041e4c0
push 0xffffffffffffffff
mov ecx, edi
call fcn.0040e990
lea ecx, [esp + 0x40]
call fcn.00401660
lea ecx, [esp + 0x34]
call fcn.00401660
lea ecx, [esp + 0x3c]
call fcn.00401660
jmp 0x420d7c
push 0xffffffffffffffff
mov ecx, edi
call fcn.0040e990
lea ecx, [esp + 0x18]
call fcn.00401630
lea eax, [esi + 0x3c4]
push 0x45d79c
push eax
mov byte [esp + 0x10cc4], 0x10
call fcn.00407090
add esp, 8
test al, al
lea ecx, [esp + 0x18]
je 0x4212a2
push str.item_not_found__
call fcn.00402540
jmp 0x4212a8
push edi
call fcn.00402020
lea edx, [esp + 0x60]
push edx
push 0x800
lea edi, [esi + 0xd8]
push 0x800
mov ecx, edi
call fcn.004016c0
push eax
mov eax, dword [esp + 0x24]
push eax
push str.PDL_NAME2
push str.Profiles
call ebx
push str.item_not_found__
push edi
call fcn.00407090
add esp, 8
test al, al
je 0x421316
push 0x30
push 3
push str.PDL_NAME2
push str.Profiles
push 0x1f
mov ecx, esi
call fcn.0041e4c0
push 0xffffffffffffffff
mov ecx, edi
call fcn.0040e990
lea ecx, [esp + 0x18]
call fcn.00401660
jmp 0x421240
push 0xffffffffffffffff
mov ecx, edi
call fcn.0040e990
lea ecx, [esp + 0x60]
push ecx
push 0x800
lea edi, [esi + 0xdc]
push 0x800
mov ecx, edi
call fcn.004016c0
push eax
push str.item_not_found__
push str.UninstallLevel
push str.Profiles
call ebx
push str.item_not_found__
push edi
call fcn.00407090
add esp, 8
test al, al
jne 0x421870
push 0x45e014
push edi
call fcn.004070c0
add esp, 8
test al, al
je 0x42139d
push 0x45dcac
push edi
call fcn.004070c0
add esp, 8
test al, al
je 0x42139d
push 0x45e010
push edi
call fcn.004070c0
add esp, 8
test al, al
jne 0x421870
push 0xffffffffffffffff
mov ecx, edi
call fcn.0040e990
lea edx, [esp + 0x60]
push edx
push 0x800
lea edi, [esi + 0x100]
push 0x800
mov ecx, edi
call fcn.004016c0
push eax
push str.item_not_found__
push str.PST_DEL
push str.Profiles
call ebx
push str.item_not_found__
push edi
call fcn.00407090
add esp, 8
test al, al
je 0x4213f2
push 0x45e004
mov ecx, edi
call fcn.00402540
push 0xffffffffffffffff
mov ecx, edi
call fcn.0040e990
lea eax, [esp + 0x60]
push eax
push 0x800
lea edi, [esi + 0x108]
push 0x800
mov ecx, edi
call fcn.004016c0
push eax
push str.item_not_found__
push str.VDCService
push str.Profiles
call ebx
push str.item_not_found__
push edi
call fcn.00407090
add esp, 8
test al, al
je 0x421447
push str.DEFAULT_STOP
mov ecx, edi
call fcn.00402540
push 0xffffffffffffffff
mov ecx, edi
call fcn.0040e990
lea ecx, [esp + 0x60]
push ecx
push 0x800
lea edi, [esi + 0x10c]
push 0x800
mov ecx, edi
call fcn.004016c0
push eax
push str.item_not_found__
push str.NetWorkPrinter
push str.Profiles
call ebx
push str.item_not_found__
push edi
call fcn.00407090
add esp, 8
test al, al
je 0x42149c
push 0x45e004
mov ecx, edi
call fcn.00402540
push 0xffffffffffffffff
mov ecx, edi
call fcn.0040e990
lea edx, [esp + 0x60]
push edx
push 0x800
lea edi, [esi + 0x110]
push 0x800
mov ecx, edi
call fcn.004016c0
push eax
push str.item_not_found__
push str.AUTHORITYCHECK
push str.Profiles
call ebx
push str.item_not_found__
push edi
call fcn.00407090
add esp, 8
test al, al
je 0x4214f1
push 0x45e004
mov ecx, edi
call fcn.00402540
push 0xffffffffffffffff
mov ecx, edi
call fcn.0040e990
lea eax, [esp + 0x60]
push eax
push 0x800
lea edi, [esi + 0x114]
push 0x800
mov ecx, edi
call fcn.004016c0
push eax
push str.item_not_found__
push str.CCD3_VER_9xMe
push str.Borderline_CCD3_Driver_Versions
call ebx
push str.item_not_found__
push edi
call fcn.00407090
add esp, 8
test al, al
je 0x421546
push str.0.00
mov ecx, edi
call fcn.00402540
push 0xffffffffffffffff
mov ecx, edi
call fcn.0040e990
lea ecx, [esp + 0x60]
push ecx
push 0x800
lea edi, [esi + 0x118]
push 0x800
mov ecx, edi
call fcn.004016c0
push eax
push str.item_not_found__
push str.CCD3_VER_NT40
push str.Borderline_CCD3_Driver_Versions
call ebx
push str.item_not_found__
push edi
call fcn.00407090
add esp, 8
test al, al
je 0x42159b
push str.0.00
mov ecx, edi
call fcn.00402540
push 0xffffffffffffffff
mov ecx, edi
call fcn.0040e990
lea edx, [esp + 0x60]
push edx
push 0x800
lea edi, [esi + 0x11c]
push 0x800
mov ecx, edi
call fcn.004016c0
push eax
push str.item_not_found__
push str.CCD3_VER_2KXP
push str.Borderline_CCD3_Driver_Versions
call ebx
push str.item_not_found__
push edi
call fcn.00407090
add esp, 8
test al, al
je 0x4215f0
push str.0.00
mov ecx, edi
call fcn.00402540
push 0xffffffffffffffff
mov ecx, edi
call fcn.0040e990
lea eax, [esp + 0x60]
push eax
push 0
push str.DrvNum
push str.GetDrvInfo
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
lea ecx, [esi + 0x3c8]
mov ebp, eax
call fcn.00417eb0
test ebp, ebp
jle 0x4216e2
cmp ebp, 0x20
jle 0x42162f
mov ebp, 0x20
xor edi, edi
test ebp, ebp
jle 0x4216e2
mov ebx, dword [sym.imp.KERNEL32.dll_lstrcmpA]
nop
add edi, 1
push edi
push str.DrvFile_
push str._s_d
lea ecx, [esp + 0xbb8]
push 0x104
push ecx
call fcn.004437cf
add esp, 0x14
lea edx, [esp + 0x60]
push edx
push 0x104
lea eax, [esp + 0xab0]
push eax
push 0x45c6da
lea ecx, [esp + 0xbbc]
push ecx
push str.GetDrvInfo
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push 0x45c6da
lea edx, [esp + 0xaac]
push edx
call ebx
test eax, eax
je 0x4216da
lea eax, [esp + 0xaa8]
push eax
lea ecx, [esp + 0x48]
call fcn.00408c30
lea ecx, [esp + 0x44]
push ecx
lea ecx, [esi + 0x3c8]
mov byte [esp + 0x10cc0], 0x11
call fcn.0041a4d0
lea ecx, [esp + 0x44]
mov byte [esp + 0x10cbc], 0x10
call fcn.004073d0
cmp edi, ebp
jl 0x421640
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea edx, [esp + 0x60]
push edx
push 0x20
lea eax, [esp + 0x16c]
push eax
push 0x45d710
push str.CheckJobMonitor
push str.Profiles
call ebx
mov edi, dword [sym.imp.KERNEL32.dll_lstrcmpiA]
push 0x45e004
lea ecx, [esp + 0x168]
push ecx
call edi
neg eax
sbb eax, eax
add eax, 1
lea edx, [esp + 0x60]
push edx
push 0x20
mov dword [esi + 0x3d8], eax
lea eax, [esp + 0x18c]
push eax
push 0x45d710
push str.DelRestoreFile
push str.Profiles
call ebx
push 0x45e004
lea ecx, [esp + 0x188]
push ecx
call edi
neg eax
sbb eax, eax
add eax, 1
mov dword [esi + 0x3dc], eax
call fcn.004048c0
cmp eax, 0xa
jne 0x42180c
push 0x7ffe
lea edx, [esp + 0x8cb5]
push 0
push edx
mov byte [esp + 0x8cbc], 0
call fcn.004413c0
add esp, 0xc
lea eax, [esp + 0x60]
push eax
push 0x7fff
lea ecx, [esp + 0x8cb8]
push ecx
push str.DriverStoreInfo
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionA]
test eax, eax
jbe 0x4217ef
cmp byte [esp + 0x8cb0], 0
lea edi, [esp + 0x8cb0]
je 0x4217ef
mov ebx, dword [sym.imp.KERNEL32.dll_lstrlenA]
jmp 0x4217d0
cmp byte [edi], 0x3b
je 0x4217e1
push edi
lea ecx, [esi + 0x198]
call fcn.0040ca80
push edi
call ebx
cmp byte [edi + eax + 1], 0
lea edi, [edi + eax + 1]
jne 0x4217d0
lea edx, [esp + 0x60]
push edx
push 0xa
push str.WaitDeleteDriverPacakge
push str.UninstallDriverStore
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
mov dword [esi + 0x1ac], eax
lea ecx, [esp + 0x18]
call fcn.00401660
lea ecx, [esp + 0x40]
call fcn.00401660
lea ecx, [esp + 0x34]
call fcn.00401660
lea ecx, [esp + 0x3c]
call fcn.00401660
lea ecx, [esp + 0x30]
call fcn.00401660
lea ecx, [esp + 0x14]
call fcn.00401660
lea ecx, [esp + 0x20]
call fcn.00401660
lea ecx, [esp + 0x28]
call fcn.00401660
lea ecx, [esp + 0x24]
call fcn.00401660
lea ecx, [esp + 0x1c]
call fcn.00401660
mov eax, 1
jmp 0x41fed0
push 0x30
push 3
push str.UninstallLevel
jmp 0x4212f1