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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x448f94
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
push ecx
mov eax, 0x8ca8
call fcn.0042dd50
mov ax, word [0x44cc60]
push ebx
push ebp
push esi
push edi
push 0x104
lea edx, [esp + 0x3c]
mov esi, ecx
mov cl, byte [0x44cc62]
push edx
push 0
mov dword [esp + 0x34], 0
mov word [esp + 0x38], ax
mov byte [esp + 0x3a], cl
mov word [esp + 0x2c], 9
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea eax, [esp + 0x38]
push 0x5c
push eax
call fcn.0042f860
mov ebx, dword [sym.imp.KERNEL32.dll_lstrcpyA]
add esp, 8
push 0x44bfb0
push eax
call ebx
mov ebp, dword [sym.imp.KERNEL32.dll_lstrcatA]
push 0x44b63c
lea ecx, [esp + 0x3c]
push ecx
call ebp
mov edx, dword [0x466df8]
push edx
lea eax, [esp + 0x3c]
push eax
call ebp
mov ecx, esi
call fcn.004175a0
xor eax, eax
mov ecx, 0x41
lea edi, [esp + 0x1a0]
rep stosd dword es:[edi], eax
mov eax, dword [esi + 0x140]
push eax
lea ecx, [esp + 0x1a4]
push ecx
call ebx
push 0x44b63c
lea edx, [esp + 0x1a4]
push edx
call ebp
mov eax, dword [0x466df8]
push eax
lea ecx, [esp + 0x1a4]
push ecx
call ebp
push 0
lea edx, [esp + 0x1a4]
push edx
lea eax, [esp + 0x40]
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileA]
cmp eax, 1
je 0x4182e9
push 0x1e
push 0
push 0x466dcc
call fcn.00427ac0
add esp, 0xc
xor eax, eax
mov ecx, dword [esp + 0x8cbc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
mov edi, dword [sym.imp.KERNEL32.dll_GetLastError]
call edi
lea ecx, [esp + 0x1a0]
push ecx
lea edx, [esp + 0x3c]
push edx
call ebx
push 0x80
lea eax, [esp + 0x3c]
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
call edi
xor eax, eax
mov ecx, 0x1fff
lea edi, [esp + 0xcb8]
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x38]
push ecx
push 0x7fff
lea edx, [esp + 0xcc0]
stosw word es:[edi], ax
push edx
push str.Uninstall_Drivers
stosb byte es:[edi], al
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionA]
call fcn.0043cb83
push eax
push 0x7fff
lea eax, [esp + 0xcc0]
push eax
lea ecx, [esp + 0x20]
call fcn.00401420
push 9
push 0
lea ecx, [esp + 0x1c]
mov dword [esp + 0x8ccc], 0
call fcn.004036d0
push 9
push 0x3b
lea ecx, [esp + 0x1c]
call fcn.004036d0
mov edi, dword [esp + 0x14]
mov eax, dword [edi - 0xc]
test eax, eax
jge 0x418393
or eax, 0xffffffff
jmp 0x4183ac
lea ecx, [esp + 0x2c]
push ecx
push edi
call fcn.0042f637
add esp, 8
test eax, eax
jne 0x4183aa
or eax, 0xffffffff
jmp 0x4183ac
sub eax, edi
push eax
lea edx, [esp + 0x20]
push edx
lea ecx, [esp + 0x1c]
call fcn.00403670
lea ecx, [esi + 0xa4]
push eax
mov byte [esp + 0x8cc8], 1
call fcn.00401e30
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
mov byte [esp + 0x8cc4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4183f5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [edi - 0xc]
test eax, eax
jge 0x418401
or eax, 0xffffffff
jmp 0x41841a
lea eax, [esp + 0x2c]
push eax
push edi
call fcn.0042f637
add esp, 8
test eax, eax
jne 0x418418
or eax, 0xffffffff
jmp 0x41841a
sub eax, edi
push 0
push eax
lea ecx, [esp + 0x1c]
call fcn.00416ff0
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x28]
mov edi, edi
test eax, eax
mov ecx, dword [edi - 0xc]
jl 0x41845e
cmp eax, ecx
jg 0x41845e
lea ecx, [esp + 0x20]
add eax, edi
push ecx
push eax
call fcn.0042f637
add esp, 8
test eax, eax
je 0x41845e
sub eax, edi
test eax, eax
jle 0x41845e
inc dword [esi + 0x118]
inc eax
jmp 0x418430
xor eax, eax
mov ecx, 0x1fff
lea edi, [esp + 0xcb8]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea edx, [esp + 0x38]
push edx
stosb byte es:[edi], al
push 0x7fff
lea eax, [esp + 0xcc0]
push eax
push str.Uninstall_Old_Drivers
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionA]
call fcn.0043cb83
push eax
push 0x7fff
lea ecx, [esp + 0xcc0]
push ecx
lea ecx, [esp + 0x24]
call fcn.00401420
push 9
push 0
lea ecx, [esp + 0x20]
mov byte [esp + 0x8ccc], 2
call fcn.004036d0
push 9
push 0x3b
lea ecx, [esp + 0x20]
call fcn.004036d0
mov ebp, dword [esp + 0x18]
mov eax, dword [ebp - 0xc]
test eax, eax
jge 0x4184dc
or eax, 0xffffffff
jmp 0x4184f5
lea edx, [esp + 0x2c]
push edx
push ebp
call fcn.0042f637
add esp, 8
test eax, eax
jne 0x4184f3
or eax, 0xffffffff
jmp 0x4184f5
sub eax, ebp
push eax
lea eax, [esp + 0x20]
push eax
lea ecx, [esp + 0x20]
call fcn.00403670
lea ecx, [esi + 0xa8]
push eax
mov byte [esp + 0x8cc8], 3
call fcn.00401e30
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
mov byte [esp + 0x8cc4], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x41853e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [ebp - 0xc]
xor edi, edi
test eax, eax
jge 0x41854c
or eax, 0xffffffff
jmp 0x418565
lea eax, [esp + 0x2c]
push eax
push ebp
call fcn.0042f637
add esp, 8
test eax, eax
jne 0x418563
or eax, 0xffffffff
jmp 0x418565
sub eax, ebp
push 0
push eax
lea ecx, [esp + 0x20]
call fcn.00416ff0
mov ebx, dword [esp + 0x18]
test edi, edi
mov eax, dword [ebx - 0xc]
jl 0x4185a5
cmp edi, eax
jg 0x4185a5
lea ecx, [esp + 0x20]
push ecx
add edi, ebx
push edi
call fcn.0042f637
add esp, 8
test eax, eax
je 0x4185a5
sub eax, ebx
mov edi, eax
test edi, edi
jle 0x4185a5
inc dword [esi + 0x11c]
inc edi
jmp 0x418575
mov eax, dword [esi + 0x158]
mov ebp, dword [eax - 4]
lea edi, [esi + 0x158]
sub eax, 0x10
mov eax, dword [eax + 8]
mov ecx, 1
sub ecx, ebp
sub eax, 0x800
or eax, ecx
jge 0x4185d6
push 0x800
mov ecx, edi
call fcn.00401490
mov eax, dword [edi]
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea edx, [esp + 0x38]
push edx
push 0x800
push eax
push str.item_not_found__
push str.MessageDebugUI
push str.Profiles
call ebx
mov ecx, dword [edi]
test ecx, ecx
jne 0x418604
xor eax, eax
jmp 0x41861f
mov eax, ecx
lea ebp, [eax + 1]
lea esp, [esp]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x418610
sub eax, ebp
js 0x41970a
cmp eax, dword [ecx - 8]
jg 0x41970a
lea edx, [esp + 0x38]
push edx
push 0x1388
mov dword [ecx - 0xc], eax
mov ecx, dword [edi]
push str.MessageDebugInterval
push str.Profiles
mov byte [eax + ecx], 0
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
mov dword [esi + 0x15c], eax
mov eax, dword [esi + 0xac]
mov edx, dword [eax - 4]
lea edi, [esi + 0xac]
sub eax, 0x10
mov eax, dword [eax + 8]
mov ecx, 1
sub ecx, edx
sub eax, 0x800
or eax, ecx
mov dword [esp + 0x1c], edi
jge 0x418686
push 0x800
mov ecx, edi
call fcn.00401490
mov eax, dword [edi]
lea ecx, [esp + 0x38]
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 [edi]
push str.item_not_found__
push eax
call fcn.0042f5a3
add esp, 8
test eax, eax
jne 0x418773
push str.PRT_2KXP
push str.Borderline_Driver_Versions
push 0x1f
push eax
add esi, 0x144
push esi
call fcn.00427ac0
mov ecx, dword [edi]
add esp, 0x14
test ecx, ecx
jne 0x4186e2
xor eax, eax
jmp 0x4186f6
mov eax, ecx
lea esi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x4186e7
sub eax, esi
js 0x41970a
cmp eax, dword [ecx - 8]
jg 0x41970a
mov dword [ecx - 0xc], eax
mov edx, dword [edi]
mov byte [eax + edx], 0
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
mov byte [esp + 0x8cc4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x41872e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
mov dword [esp + 0x8cc4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4192d5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
xor eax, eax
mov ecx, dword [esp + 0x8cbc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [edi]
test ecx, ecx
jne 0x41877d
xor eax, eax
jmp 0x418791
mov eax, ecx
lea edi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x418782
sub eax, edi
js 0x41970a
cmp eax, dword [ecx - 8]
jg 0x41970a
mov dword [ecx - 0xc], eax
mov ecx, dword [esp + 0x1c]
mov edx, dword [ecx]
mov byte [eax + edx], 0
mov eax, dword [esi + 0xb0]
mov ebp, dword [eax - 4]
lea ebx, [esi + 0xb0]
sub eax, 0x10
mov eax, dword [eax + 8]
mov ecx, 1
sub ecx, ebp
sub eax, 0x800
or eax, ecx
jge 0x4187d8
push 0x800
mov ecx, ebx
call fcn.00401490
mov eax, dword [ebx]
mov ebp, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea ecx, [esp + 0x38]
push ecx
push 0x800
push eax
push str.item_not_found__
push str.FAX_2KXP
push str.Borderline_Driver_Versions
call ebp
mov eax, dword [ebx]
push str.item_not_found__
push eax
call fcn.0042f5a3
add esp, 8
test eax, eax
jne 0x418862
push str.FAX_2KXP
push str.Borderline_Driver_Versions
push 0x1f
push eax
add esi, 0x144
push esi
call fcn.00427ac0
mov ecx, dword [ebx]
add esp, 0x14
test ecx, ecx
jne 0x418836
xor eax, eax
jmp 0x41884f
mov eax, ecx
lea esi, [eax + 1]
jmp 0x418840
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x418840
sub eax, esi
js 0x41970a
cmp eax, dword [ecx - 8]
jg 0x41970a
mov dword [ecx - 0xc], eax
mov edx, dword [ebx]
jmp 0x418704
mov ecx, dword [ebx]
test ecx, ecx
jne 0x41886c
xor eax, eax
jmp 0x418880
mov eax, ecx
lea edi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x418871
sub eax, edi
js 0x41970a
cmp eax, dword [ecx - 8]
jg 0x41970a
mov dword [ecx - 0xc], eax
mov ecx, dword [ebx]
lea edx, [esp + 0x38]
push edx
push 0x800
mov byte [eax + ecx], 0
lea edi, [esi + 0xb4]
push 0x800
mov ecx, edi
call fcn.004017b0
push eax
push str.item_not_found__
push str.OLD_VER
push str.Borderline_Driver_Versions
call ebp
mov eax, dword [edi]
push str.item_not_found__
push eax
call fcn.0042f5a3
add esp, 8
test eax, eax
jne 0x418942
push str.OLD_VER
push str.Borderline_Driver_Versions
push 0x1f
push eax
add esi, 0x144
push esi
call fcn.00427ac0
mov ecx, dword [edi]
add esp, 0x14
test ecx, ecx
jne 0x4188fa
xor eax, eax
jmp 0x41890f
mov eax, ecx
lea esi, [eax + 1]
nop
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x418900
sub eax, esi
js 0x41970a
cmp eax, dword [ecx - 8]
jg 0x41970a
mov dword [ecx - 0xc], eax
mov ecx, dword [edi]
mov byte [eax + ecx], 0
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
mov byte [esp + 0x8cc4], 0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jmp 0x418724
mov ecx, dword [edi]
test ecx, ecx
jne 0x41894c
xor eax, eax
jmp 0x418966
mov eax, ecx
lea ebp, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x418951
sub eax, ebp
js 0x41970a
mov ebp, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
cmp eax, dword [ecx - 8]
jg 0x41970a
mov dword [ecx - 0xc], eax
mov ecx, dword [edi]
lea edx, [esp + 0x38]
push edx
push 0x800
mov byte [eax + ecx], 0
lea edi, [esi + 0xb8]
push 0x800
mov ecx, edi
call fcn.004017b0
push eax
push str.item_not_found__
push 0x44cbac
push 0x44cbac
call ebp
mov eax, dword [edi]
push str.item_not_found__
push eax
call fcn.0042f5a3
add esp, 8
test eax, eax
jne 0x4189e4
push 0x44cbac
push 0x44cbac
push 0x1f
push eax
add esi, 0x144
push esi
call fcn.00427ac0
add esp, 0x14
push 0xffffffffffffffff
mov ecx, edi
call fcn.0040bce0
jmp 0x4192c3
push 0xffffffffffffffff
mov ecx, edi
call fcn.0040bce0
push edi
lea ecx, [esp + 0x28]
call fcn.00401710
push 0x44c424
push edi
mov byte [esp + 0x8ccc], 4
call fcn.00405a60
add esp, 8
test al, al
je 0x418a1f
push str.PCL5e
lea ecx, [esp + 0x28]
call fcn.004022c0
mov eax, dword [esi + 0x11c]
add eax, dword [esi + 0x118]
xor edi, edi
test eax, eax
jle 0x418a5f
lea ebp, [esi + 0xbc]
jmp 0x418a40
push 0x44cba8
mov ecx, ebp
call fcn.00402300
mov ecx, dword [esi + 0x11c]
mov edx, dword [esi + 0x118]
inc edi
add ecx, edx
cmp edi, ecx
jl 0x418a40
mov edx, dword [esi + 0xbc]
mov eax, dword [edx - 0xc]
lea edi, [esi + 0xbc]
push 0
dec eax
push eax
mov ecx, edi
call fcn.00416ff0
lea ecx, [esi + 0xc0]
push edi
call fcn.00401e30
mov ecx, dword [esp + 0x14]
lea eax, [esp + 0x20]
push eax
push ecx
call fcn.0042e8d8
mov edi, eax
add esp, 8
test edi, edi
je 0x418b17
lea ecx, [ecx]
push str._FAX_
push edi
call fcn.0042f890
add esp, 8
test eax, eax
lea ebp, [esi + 0xc4]
jne 0x418ad0
mov edx, dword [esp + 0x1c]
mov edx, dword [edx]
test edx, edx
je 0x418ae9
mov eax, edx
lea edi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x418ac7
jmp 0x418ae7
mov edx, dword [ebx]
test edx, edx
jne 0x418ada
xor eax, eax
jmp 0x418ae9
mov eax, edx
lea edi, [eax + 1]
nop
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x418ae0
sub eax, edi
push eax
mov ecx, ebp
push edx
call fcn.00401b10
lea eax, [esp + 0x20]
push eax
push 0
call fcn.0042e8d8
mov edi, eax
add esp, 8
test edi, edi
je 0x418b17
push 1
push 0x44b628
mov ecx, ebp
call fcn.00401b10
jmp 0x418aa0
mov edx, dword [esp + 0x18]
lea ecx, [esp + 0x20]
push ecx
push edx
call fcn.0042e8d8
mov edi, eax
add esp, 8
test edi, edi
je 0x418baf
push str._FAX_
push edi
call fcn.0042f890
add esp, 8
test eax, eax
lea ebp, [esi + 0xc4]
jne 0x418b69
mov eax, dword [esp + 0x1c]
mov edx, dword [eax]
test edx, edx
jne 0x418b59
xor eax, eax
jmp 0x418b81
mov eax, edx
lea edi, [eax + 1]
mov edi, edi
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x418b60
jmp 0x418b7f
mov edx, dword [ebx]
test edx, edx
jne 0x418b73
xor eax, eax
jmp 0x418b81
mov eax, edx
lea edi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x418b78
sub eax, edi
push eax
mov ecx, ebp
push edx
call fcn.00401b10
lea ecx, [esp + 0x20]
push ecx
push 0
call fcn.0042e8d8
mov edi, eax
add esp, 8
test edi, edi
je 0x418baf
push 1
push 0x44b628
mov ecx, ebp
call fcn.00401b10
jmp 0x418b33
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
xor eax, eax
lea edx, [esp + 0x38]
push edx
push 0x800
mov ecx, 0x200
lea edi, [esp + 0x2b0]
rep stosd dword es:[edi], eax
lea eax, [esp + 0x2b0]
push eax
push str.item_not_found__
push str.KEY_PRINTER
push str.Registrys
call ebx
lea eax, [esp + 0x2a8]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x418bf2
sub eax, edx
push eax
lea ecx, [esp + 0x2ac]
push str.item_not_found__
push ecx
call fcn.0042fa90
add esp, 0xc
test eax, eax
jne 0x418c60
push str.KEY_PRINTER
push str.Registrys
push 0x1f
push eax
add esi, 0x144
push esi
call fcn.00427ac0
mov eax, dword [esp + 0x38]
add eax, 0xfffffff0
add esp, 0x14
mov byte [esp + 0x8cc4], 2
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x418708
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
jmp 0x418708
lea eax, [esp + 0x2a8]
push eax
lea ecx, [esi + 0xd8]
call fcn.004022c0
xor eax, eax
mov ecx, 0x200
lea edi, [esp + 0x2a8]
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x38]
push ecx
push 0x800
lea edx, [esp + 0x2b0]
push edx
push str.item_not_found__
push str.KEY_PRINTER2
push str.Registrys
call ebx
lea eax, [esp + 0x2a8]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x418cb0
sub eax, edx
push eax
lea eax, [esp + 0x2ac]
push str.item_not_found__
push eax
call fcn.0042fa90
add esp, 0xc
test eax, eax
jne 0x418cf5
push str.KEY_PRINTER2
push str.Registrys
push 0x1f
push 0
add esi, 0x144
push esi
call fcn.00427ac0
add esp, 0x14
jmp 0x4192ba
lea ecx, [esp + 0x2a8]
push ecx
lea ecx, [esi + 0xdc]
call fcn.004022c0
xor eax, eax
lea edx, [esp + 0x38]
push edx
push 0x800
mov ecx, 0x200
lea edi, [esp + 0x2b0]
rep stosd dword es:[edi], eax
lea eax, [esp + 0x2b0]
push eax
push str.item_not_found__
push str.KEY_BEFORE
push str.Registrys
call ebx
lea eax, [esp + 0x2a8]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x418d45
sub eax, edx
push eax
lea ecx, [esp + 0x2ac]
push str.item_not_found__
push ecx
call fcn.0042fa90
add esp, 0xc
test eax, eax
jne 0x418d72
push str.KEY_BEFORE
jmp 0x418cd8
lea edx, [esp + 0x2a8]
push edx
lea ecx, [esi + 0xe0]
call fcn.004022c0
xor eax, eax
mov ecx, 0x200
lea edi, [esp + 0x2a8]
rep stosd dword es:[edi], eax
lea eax, [esp + 0x38]
push eax
push 0x800
lea ecx, [esp + 0x2b0]
push ecx
push str.item_not_found__
push str.KEY_BEFORE2
push str.Registrys
call ebx
lea eax, [esp + 0x2a8]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x418dc2
sub eax, edx
push eax
lea edx, [esp + 0x2ac]
push str.item_not_found__
push edx
call fcn.0042fa90
add esp, 0xc
test eax, eax
jne 0x418def
push str.KEY_BEFORE2
jmp 0x418cd8
lea eax, [esp + 0x2a8]
push eax
lea ecx, [esi + 0xe4]
call fcn.004022c0
xor eax, eax
mov ecx, 0x200
lea edi, [esp + 0x2a8]
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x38]
push ecx
push 0x800
lea edx, [esp + 0x2b0]
push edx
push str.item_not_found__
push str.KEY_BEFORE3
push str.Registrys
call ebx
lea eax, [esp + 0x2a8]
lea edx, [eax + 1]
nop
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x418e40
sub eax, edx
push eax
lea eax, [esp + 0x2ac]
push str.item_not_found__
push eax
call fcn.0042fa90
add esp, 0xc
test eax, eax
jne 0x418e6d
push str.KEY_BEFORE3
jmp 0x418cd8
lea ecx, [esp + 0x2a8]
push ecx
lea ecx, [esi + 0xe8]
call fcn.004022c0
xor eax, eax
lea edx, [esp + 0x38]
push edx
push 0x800
mov ecx, 0x200
lea edi, [esp + 0x2b0]
rep stosd dword es:[edi], eax
lea eax, [esp + 0x2b0]
push eax
push str.item_not_found__
push str.KEY_PDRVCAP
push str.Registrys
call ebx
lea eax, [esp + 0x2a8]
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x418ec0
sub eax, edx
push eax
lea ecx, [esp + 0x2ac]
push str.item_not_found__
push ecx
call fcn.0042fa90
add esp, 0xc
test eax, eax
jne 0x418eed
push str.KEY_PDRVCAP
jmp 0x418cd8
lea edx, [esp + 0x2a8]
push edx
lea ecx, [esi + 0xec]
call fcn.004022c0
xor eax, eax
mov ecx, 0x200
lea edi, [esp + 0x2a8]
rep stosd dword es:[edi], eax
lea eax, [esp + 0x38]
push eax
push 0x800
lea ecx, [esp + 0x2b0]
push ecx
push str.item_not_found__
push str.KEY_PDRVCAP2
push str.Registrys
call ebx
lea eax, [esp + 0x2a8]
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x418f40
sub eax, edx
push eax
lea edx, [esp + 0x2ac]
push str.item_not_found__
push edx
call fcn.0042fa90
add esp, 0xc
test eax, eax
jne 0x418f6d
push str.KEY_PDRVCAP2
jmp 0x418cd8
lea eax, [esp + 0x2a8]
push eax
lea ecx, [esi + 0xf0]
call fcn.004022c0
xor eax, eax
mov ecx, 0x1fff
lea edi, [esp + 0xcb8]
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x38]
push ecx
push 0x7fff
lea edx, [esp + 0xcc0]
stosw word es:[edi], ax
push edx
push str.Registrys_Key
stosb byte es:[edi], al
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionA]
mov edi, eax
push 0x7fff
lea eax, [esp + 0xcbc]
push eax
lea ecx, [esp + 0x38]
call fcn.00416fd0
test edi, edi
mov bl, 5
mov byte [esp + 0x8cc4], bl
lea ecx, [esp + 0x30]
je 0x418ff1
push 9
push 0
call fcn.004036d0
push 9
push 0x3b
lea ecx, [esp + 0x38]
call fcn.004036d0
jmp 0x418ffb
push str.Non_Printer_t_t
call fcn.004022c0
mov edi, dword [esp + 0x30]
mov eax, dword [edi - 0xc]
test eax, eax
jge 0x41900b
or eax, 0xffffffff
jmp 0x419024
lea ecx, [esp + 0x2c]
push ecx
push edi
call fcn.0042f637
add esp, 8
test eax, eax
jne 0x419022
or eax, 0xffffffff
jmp 0x419024
sub eax, edi
push eax
lea edx, [esp + 0x20]
push edx
lea ecx, [esp + 0x38]
call fcn.00403670
push eax
lea ecx, [esi + 0xf4]
mov byte [esp + 0x8cc8], 6
call fcn.00402280
lea ecx, [esp + 0x1c]
mov byte [esp + 0x8cc4], bl
call fcn.00401400
mov ebp, dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionA]
xor eax, eax
mov ecx, 0x1fff
lea edi, [esp + 0xcb8]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [esp + 0x38]
push eax
push 0x7fff
lea ecx, [esp + 0xcc0]
push ecx
push str.VDC_Modules
call ebp
push 0x7fff
lea edx, [esp + 0xcbc]
push edx
lea ecx, [esp + 0x24]
call fcn.00416fd0
push 9
mov bl, 7
push 0
lea ecx, [esp + 0x24]
mov byte [esp + 0x8ccc], bl
call fcn.004036d0
push 9
push 0x3b
lea ecx, [esp + 0x24]
call fcn.004036d0
mov edi, dword [esp + 0x1c]
mov eax, dword [edi - 0xc]
test eax, eax
jge 0x4190d2
or eax, 0xffffffff
jmp 0x4190eb
lea eax, [esp + 0x2c]
push eax
push edi
call fcn.0042f637
add esp, 8
test eax, eax
jne 0x4190e9
or eax, 0xffffffff
jmp 0x4190eb
sub eax, edi
push eax
lea ecx, [esp + 0x2c]
push ecx
lea ecx, [esp + 0x24]
call fcn.00403670
push eax
lea ecx, [esi + 0xc8]
mov byte [esp + 0x8cc8], 8
call fcn.00402280
lea ecx, [esp + 0x28]
mov byte [esp + 0x8cc4], bl
call fcn.00401400
xor eax, eax
mov ecx, 0x1fff
lea edi, [esp + 0xcb8]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea edx, [esp + 0x38]
push edx
stosb byte es:[edi], al
push 0x7fff
lea eax, [esp + 0xcc0]
push eax
push str.DIAS_Modules
call ebp
push 0x7fff
lea ecx, [esp + 0xcbc]
push ecx
lea ecx, [esp + 0x30]
call fcn.00416fd0
push 9
push 0
lea ecx, [esp + 0x30]
mov byte [esp + 0x8ccc], 9
call fcn.004036d0
push 9
push 0x3b
lea ecx, [esp + 0x30]
call fcn.004036d0
mov edi, dword [esp + 0x28]
mov eax, dword [edi - 0xc]
test eax, eax
jge 0x419192
or eax, 0xffffffff
jmp 0x4191ab
lea edx, [esp + 0x2c]
push edx
push edi
call fcn.0042f637
add esp, 8
test eax, eax
jne 0x4191a9
or eax, 0xffffffff
jmp 0x4191ab
sub eax, edi
push eax
lea eax, [esp + 0x38]
push eax
lea ecx, [esp + 0x30]
call fcn.00403670
push eax
lea ecx, [esi + 0xcc]
mov byte [esp + 0x8cc8], 0xa
call fcn.00402280
lea ecx, [esp + 0x34]
mov byte [esp + 0x8cc4], 9
call fcn.00401400
lea ecx, [esp + 0x38]
push ecx
push 0x800
lea edi, [esi + 0xd0]
push 0x800
mov ecx, edi
call fcn.004017b0
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.00405a60
add esp, 8
test al, al
je 0x41922c
push str.PDL_NAME
jmp 0x41927e
push 0xffffffffffffffff
mov ecx, edi
call fcn.0040bce0
lea edx, [esp + 0x38]
push edx
push 0x800
lea edi, [esi + 0xd4]
push 0x800
mov ecx, edi
call fcn.004017b0
push eax
push str.item_not_found__
push str.UninstallLevel
push str.Profiles
call ebx
push str.item_not_found__
push edi
call fcn.00405a60
add esp, 8
test al, al
je 0x4192ed
push str.UninstallLevel
push str.Profiles
push 0x1f
push 0
add esi, 0x144
push esi
call fcn.00427ac0
add esp, 0x14
push 0xffffffffffffffff
mov ecx, edi
call fcn.0040bce0
lea ecx, [esp + 0x28]
call fcn.00401400
lea ecx, [esp + 0x1c]
call fcn.00401400
lea ecx, [esp + 0x30]
call fcn.00401400
lea ecx, [esp + 0x24]
call fcn.00401400
lea ecx, [esp + 0x18]
call fcn.00401400
lea ecx, [esp + 0x14]
call fcn.00401400
xor eax, eax
mov ecx, dword [esp + 0x8cbc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
push 0xffffffffffffffff
mov ecx, edi
call fcn.0040bce0
lea eax, [esp + 0x38]
push eax
push 0x800
lea edi, [esi + 0xf8]
push 0x800
mov ecx, edi
call fcn.004017b0
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.00405a60
add esp, 8
test al, al
je 0x419342
push 0x44cadc
mov ecx, edi
call fcn.004022c0
push 0xffffffffffffffff
mov ecx, edi
call fcn.0040bce0
lea ecx, [esp + 0x38]
push ecx
push 0x800
lea edi, [esi + 0x100]
push 0x800
mov ecx, edi
call fcn.004017b0
push eax
push str.item_not_found__
push str.VDCService
push str.Profiles
call ebx
push str.item_not_found__
push edi
call fcn.00405a60
add esp, 8
test al, al
je 0x419397
push str.DEFAULT_STOP
mov ecx, edi
call fcn.004022c0
push 0xffffffffffffffff
mov ecx, edi
call fcn.0040bce0
lea edx, [esp + 0x38]
push edx
push 0x800
lea edi, [esi + 0x104]
push 0x800
mov ecx, edi
call fcn.004017b0
push eax
push str.item_not_found__
push str.NetWorkPrinter
push str.Profiles
call ebx
push str.item_not_found__
push edi
call fcn.00405a60
add esp, 8
test al, al
je 0x4193ec
push 0x44cadc
mov ecx, edi
call fcn.004022c0
push 0xffffffffffffffff
mov ecx, edi
call fcn.0040bce0
lea eax, [esp + 0x38]
push eax
push 0x800
lea edi, [esi + 0x108]
push 0x800
mov ecx, edi
call fcn.004017b0
push eax
push str.item_not_found__
push str.AUTHORITYCHECK
push str.Profiles
call ebx
push str.item_not_found__
push edi
call fcn.00405a60
add esp, 8
test al, al
je 0x419441
push 0x44cadc
mov ecx, edi
call fcn.004022c0
push 0xffffffffffffffff
mov ecx, edi
call fcn.0040bce0
lea ecx, [esp + 0x38]
push ecx
push 0x800
lea edi, [esi + 0x10c]
push 0x800
mov ecx, edi
call fcn.004017b0
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.00405a60
add esp, 8
test al, al
je 0x419496
push str.0.00
mov ecx, edi
call fcn.004022c0
push 0xffffffffffffffff
mov ecx, edi
call fcn.0040bce0
lea edx, [esp + 0x38]
push edx
push 0x800
lea edi, [esi + 0x110]
push 0x800
mov ecx, edi
call fcn.004017b0
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.00405a60
add esp, 8
test al, al
je 0x4194eb
push str.0.00
mov ecx, edi
call fcn.004022c0
push 0xffffffffffffffff
mov ecx, edi
call fcn.0040bce0
lea eax, [esp + 0x38]
push eax
push 0x800
lea edi, [esi + 0x114]
push 0x800
mov ecx, edi
call fcn.004017b0
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.00405a60
add esp, 8
test al, al
je 0x419540
push str.0.00
mov ecx, edi
call fcn.004022c0
push 0xffffffffffffffff
mov ecx, edi
call fcn.0040bce0
lea ecx, [esp + 0x38]
push ecx
push 0
push str.DrvNum
push str.GetDrvInfo
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
lea ecx, [esi + 0x1f8]
mov ebp, eax
call fcn.00409c60
test ebp, ebp
jle 0x419639
cmp ebp, 0x20
jle 0x41957f
mov ebp, 0x20
xor edi, edi
test ebp, ebp
jle 0x419639
mov ebx, dword [sym.imp.KERNEL32.dll_lstrcmpA]
nop
inc edi
push edi
push str.DrvFile_
push str._s_d
lea edx, [esp + 0xbbc]
push 0x104
push edx
call fcn.0042f54c
add esp, 0x14
lea eax, [esp + 0x38]
push eax
push 0x104
lea ecx, [esp + 0xab0]
push ecx
push 0x44b62a
lea edx, [esp + 0xbc0]
push edx
push str.GetDrvInfo
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push 0x44b62a
lea eax, [esp + 0xaac]
push eax
call ebx
test eax, eax
je 0x419631
lea ecx, [esp + 0xaa8]
push ecx
lea ecx, [esp + 0x148]
call fcn.004060e0
lea edx, [esp + 0x144]
push edx
lea ecx, [esi + 0x1f8]
mov byte [esp + 0x8cc8], 0xb
call fcn.00412f40
lea ecx, [esp + 0x144]
mov byte [esp + 0x8cc4], 9
call fcn.00405ca0
cmp edi, ebp
jl 0x419590
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea eax, [esp + 0x38]
push eax
push 0x20
lea ecx, [esp + 0x168]
push ecx
push 0x44c394
push str.CheckJobMonitor
push str.Profiles
call ebx
mov edi, dword [sym.imp.KERNEL32.dll_lstrcmpiA]
push 0x44cadc
lea edx, [esp + 0x164]
push edx
call edi
neg eax
sbb eax, eax
inc eax
mov dword [esi + 0x208], eax
lea eax, [esp + 0x38]
push eax
push 0x20
lea ecx, [esp + 0x188]
push ecx
push 0x44c394
push str.DelRestoreFile
push str.Profiles
call ebx
push 0x44cadc
lea edx, [esp + 0x184]
push edx
call edi
neg eax
sbb eax, eax
inc eax
lea ecx, [esp + 0x28]
mov dword [esi + 0x20c], eax
call fcn.00401400
lea ecx, [esp + 0x1c]
call fcn.00401400
lea ecx, [esp + 0x30]
call fcn.00401400
lea ecx, [esp + 0x24]
call fcn.00401400
lea ecx, [esp + 0x18]
call fcn.00401400
lea ecx, [esp + 0x14]
call fcn.00401400
mov ecx, dword [esp + 0x8cbc]
pop edi
mov eax, 1
mov dword fs:[0], ecx
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
push 0x80070057
call fcn.004010c0
int3