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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5878e3
mov eax, dword fs:[0]
push eax
mov eax, 0x21b94
call fcn.0055d880
mov eax, dword [0x5eb770]
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
push 0xfffe
xor esi, esi
lea eax, [ebp - 0x21b00]
mov ebx, ecx
push esi
push eax
mov dword [ebp - 0x21b44], ebx
call fcn.0055ca80
push 0x1000
lea ecx, [ebp - 0x14e8]
push esi
push ecx
call fcn.0055ca80
mov edx, dword [0x5bc084]
mov ax, word [0x5bc088]
push 0x206
mov dword [ebp - 0x18], edx
lea edx, [ebp - 0x21e]
xor ecx, ecx
push esi
push edx
mov word [ebp - 0x14], ax
mov dword [ebp - 0x21b6c], 9
mov word [ebp - 0x220], cx
call fcn.0055ca80
lea eax, [ebx + 0x69c]
push eax
lea ecx, [ebp - 0x220]
push 0x104
push ecx
call fcn.005579b2
push 0x208
lea edx, [ebp - 0x4e8]
push esi
push edx
call fcn.0055ca80
add esp, 0x3c
call fcn.00461e32
xor ecx, ecx
cmp eax, esi
setne cl
cmp ecx, esi
jne 0x42d0ef
push 0x80004005
call fcn.004025a0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x21b58], eax
mov edi, ebx
mov dword [ebp - 4], esi
call fcn.00430660
mov eax, dword [ebx + 0x154]
mov edi, dword [sym.imp.KERNEL32.dll_lstrcpyW]
push eax
lea ecx, [ebp - 0x4e8]
push ecx
call edi
push str.uninst.ini
lea edx, [ebp - 0x4e8]
push edx
call dword [sym.imp.KERNEL32.dll_lstrcatW]
push 0
lea eax, [ebp - 0x4e8]
push eax
lea ecx, [ebp - 0x220]
push ecx
call dword [sym.imp.KERNEL32.dll_CopyFileW]
cmp eax, 1
je 0x42d18d
push 0x30
push 3
push ebx
mov ecx, 0x1e
call fcn.0042fa90
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x21b58]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x42d186
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
jmp 0x42f9ae
mov ebx, dword [sym.imp.KERNEL32.dll_GetLastError]
call ebx
lea ecx, [ebp - 0x4e8]
push ecx
lea edx, [ebp - 0x220]
push edx
call edi
push 0x80
lea eax, [ebp - 0x220]
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
call ebx
lea ecx, [ebp - 0x220]
push ecx
push 0x7fff
lea edx, [ebp - 0x21b00]
push edx
push str.Uninstall_Drivers
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionW]
call fcn.00461e32
push eax
push 0x7fff
lea eax, [ebp - 0x21b00]
push eax
lea ecx, [ebp - 0x21b40]
call fcn.0040a5d0
push 9
push 0
lea ebx, [ebp - 0x21b40]
mov byte [ebp - 4], 1
call fcn.0040edb0
push 9
push 0x3b
call fcn.0040edb0
mov ecx, dword [ebp - 0x21b40]
mov eax, dword [ecx - 0xc]
mov edi, ecx
test eax, eax
jns 0x42d224
or eax, 0xffffffff
jmp 0x42d23e
lea edx, [ebp - 0x18]
push edx
push edi
call fcn.00556fbe
add esp, 8
test eax, eax
jne 0x42d23a
or eax, 0xffffffff
jmp 0x42d23e
sub eax, edi
sar eax, 1
push eax
lea eax, [ebp - 0x21b5c]
push eax
lea ecx, [ebp - 0x21b40]
call fcn.0040a240
mov byte [ebp - 4], 2
mov ecx, dword [ebp - 0x21b44]
add ecx, 0xb8
push eax
call fcn.00404890
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x21b5c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42d28d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [edi - 0xc], 0
jl 0x42d9f0
lea ecx, [ebp - 0x18]
push ecx
push edi
call fcn.00556fbe
add esp, 8
test eax, eax
je 0x42d9f0
sub eax, edi
sar eax, 1
mov dword [ebp - 0x21b48], eax
js 0x42d9f0
mov ebx, dword [edi - 0xc]
cmp eax, ebx
jge 0x42d9f0
cmp dword [edi - 4], 1
jle 0x42d2df
push ebx
lea ecx, [ebp - 0x21b40]
call fcn.00403ba0
mov edi, dword [ebp - 0x21b40]
mov ecx, dword [ebp - 0x21b48]
xor eax, eax
mov word [edi + ecx*2], ax
test ebx, ebx
js 0x42d9f0
cmp ebx, dword [edi - 8]
jg 0x42d9f0
xor edx, edx
mov dword [edi - 0xc], ebx
mov word [edi + ebx*2], dx
mov eax, dword [edi - 0xc]
test esi, esi
js 0x42d340
cmp esi, eax
jg 0x42d340
lea eax, [ebp - 0x21b6c]
push eax
lea ecx, [edi + esi*2]
push ecx
call fcn.00556fbe
add esp, 8
test eax, eax
je 0x42d340
sub eax, edi
sar eax, 1
mov esi, eax
test esi, esi
jle 0x42d340
mov eax, dword [ebp - 0x21b44]
inc dword [eax + 0x128]
inc esi
jmp 0x42d305
mov eax, dword [ebp - 0x21b44]
mov eax, dword [eax + 0xb8]
sub eax, 0x10
push eax
call fcn.00404900
lea esi, [eax + 0x10]
add esp, 4
mov dword [ebp - 0x21b54], esi
push 0x5b69a4
lea ecx, [ebp - 0x21b50]
mov byte [ebp - 4], 3
call fcn.00403340
push 0x5b69a4
lea ecx, [ebp - 0x21b4c]
mov byte [ebp - 4], 4
call fcn.00403340
mov byte [ebp - 4], 5
xor ebx, ebx
nop
mov eax, dword [esi - 0xc]
test ebx, ebx
js 0x42d4a3
cmp ebx, eax
jge 0x42d4a3
lea edx, [esi + ebx*2]
push 9
push edx
call fcn.005571b9
add esp, 8
test eax, eax
je 0x42d4a3
sub eax, esi
sar eax, 1
mov edi, eax
mov dword [ebp - 0x21b5c], edi
js 0x42d4a3
cmp edi, ebx
jle 0x42d49b
sub eax, ebx
push eax
push ebx
lea ecx, [ebp - 0x21b48]
push ecx
lea ecx, [ebp - 0x21b54]
call fcn.0040a110
mov byte [ebp - 4], 7
mov ecx, dword [eax]
mov ebx, dword [ebp - 0x21b4c]
lea eax, [ecx - 0x10]
add ebx, 0xfffffff0
cmp eax, ebx
je 0x42d456
cmp dword [ebx + 0xc], 0
lea esi, [ebx + 0xc]
jl 0x42d440
mov edx, dword [eax]
cmp edx, dword [ebx]
jne 0x42d440
push eax
call fcn.00404900
mov edi, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [esi], eax
dec eax
test eax, eax
jg 0x42d42f
mov ecx, dword [ebx]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push ebx
call eax
add edi, 0x10
mov dword [ebp - 0x21b4c], edi
mov edi, dword [ebp - 0x21b5c]
jmp 0x42d450
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [ebp - 0x21b4c]
call fcn.004039c0
mov esi, dword [ebp - 0x21b54]
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x21b48]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42d47c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0x21b44]
mov eax, dword [ecx + 0x17c]
add ecx, 0x174
lea edx, [ebp - 0x21b4c]
push edx
push eax
call fcn.0046c900
lea ebx, [edi + 1]
jmp 0x42d390
push ebx
lea ecx, [ebp - 0x21b5c]
push ecx
lea ecx, [ebp - 0x21b54]
call fcn.0040a0e0
mov byte [ebp - 4], 6
mov ecx, dword [eax]
mov esi, dword [ebp - 0x21b50]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
cmp eax, esi
je 0x42d517
cmp dword [esi + 0xc], 0
lea ebx, [esi + 0xc]
jl 0x42d507
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x42d507
push eax
call fcn.00404900
mov edi, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [ebx], eax
dec eax
test eax, eax
jg 0x42d4fc
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add edi, 0x10
mov dword [ebp - 0x21b50], edi
jmp 0x42d517
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [ebp - 0x21b50]
call fcn.004039c0
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x21b5c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42d53d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0x21b44]
mov eax, dword [ecx + 0x17c]
add ecx, 0x174
lea edx, [ebp - 0x21b50]
push edx
push eax
call fcn.0046c900
mov esi, 0x7fff
push esi
lea eax, [ebp - 0x21b00]
push 0
push eax
call fcn.0055ca80
add esp, 0xc
lea ecx, [ebp - 0x220]
push ecx
push esi
lea edx, [ebp - 0x21b00]
push edx
push str.Uninstall_Old_Drivers
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionW]
call fcn.00461e32
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x42d5a7
push 0x80004005
call fcn.004025a0
mov edx, dword [eax]
push 2
mov ecx, eax
mov eax, dword [edx]
push esi
call eax
test eax, eax
jne 0x42d5bb
call fcn.00403b90
add eax, 0x10
mov dword [ebp - 0x21b3c], eax
cmp dword [eax - 8], esi
jl 0x42d9f0
push 0xfffe
lea edx, [ebp - 0x21b00]
push edx
xor ecx, ecx
push 0xfffe
mov dword [eax - 0xc], esi
push eax
mov word [eax + 0xfffe], cx
call fcn.0055701e
add esp, 0x10
push 9
push 0
lea ebx, [ebp - 0x21b3c]
mov byte [ebp - 4], 8
call fcn.0040edb0
push 9
push 0x3b
call fcn.0040edb0
mov edi, dword [ebp - 0x21b3c]
cmp dword [edi - 0xc], 0
jge 0x42d620
or eax, 0xffffffff
jmp 0x42d63a
lea eax, [ebp - 0x18]
push eax
push edi
call fcn.00556fbe
add esp, 8
test eax, eax
jne 0x42d636
or eax, 0xffffffff
jmp 0x42d63a
sub eax, edi
sar eax, 1
push eax
lea ecx, [ebp - 0x21b48]
push ecx
lea ecx, [ebp - 0x21b3c]
call fcn.0040a240
mov byte [ebp - 4], 9
mov ebx, dword [ebp - 0x21b44]
mov ecx, dword [eax]
mov esi, dword [ebx + 0xbc]
lea eax, [ecx - 0x10]
sub esi, 0x10
cmp eax, esi
je 0x42d6c4
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x42d6ae
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x42d6ae
push eax
call fcn.00404900
mov dword [ebp - 0x21b5c], eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x42d69d
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
mov ecx, dword [ebp - 0x21b5c]
add ecx, 0x10
mov dword [ebx + 0xbc], ecx
jmp 0x42d6be
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [ebx + 0xbc]
call fcn.004039c0
mov edi, dword [ebp - 0x21b3c]
mov byte [ebp - 4], 8
mov eax, dword [ebp - 0x21b48]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x42d6ea
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor esi, esi
cmp dword [edi - 0xc], esi
jl 0x42d9f0
lea ecx, [ebp - 0x18]
push ecx
push edi
call fcn.00556fbe
add esp, 8
test eax, eax
je 0x42d9f0
mov ecx, dword [ebp - 0x21b3c]
sub eax, ecx
sar eax, 1
mov edi, eax
js 0x42d9f0
mov ebx, dword [ecx - 0xc]
cmp edi, ebx
jge 0x42d9f0
cmp dword [ecx - 4], 1
jle 0x42d744
mov edx, ecx
mov eax, dword [edx - 0xc]
push eax
lea ecx, [ebp - 0x21b3c]
call fcn.00403ba0
mov ecx, dword [ebp - 0x21b3c]
xor edx, edx
mov word [ecx + edi*2], dx
test ebx, ebx
js 0x42d9f0
cmp ebx, dword [ecx - 8]
jg 0x42d9f0
xor eax, eax
mov dword [ecx - 0xc], ebx
mov word [ecx + ebx*2], ax
mov eax, dword [ecx - 0xc]
test esi, esi
js 0x42d7a7
cmp esi, eax
jg 0x42d7a7
mov edi, dword [ebp - 0x21b3c]
lea ecx, [ebp - 0x21b6c]
push ecx
lea edx, [edi + esi*2]
push edx
call fcn.00556fbe
add esp, 8
test eax, eax
je 0x42d7a7
sub eax, edi
sar eax, 1
mov esi, eax
test esi, esi
jle 0x42d7a7
mov eax, dword [ebp - 0x21b44]
inc dword [eax + 0x12c]
inc esi
mov ecx, edi
jmp 0x42d764
mov edi, dword [ebp - 0x21b44]
mov eax, dword [edi + 0x158]
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
sub eax, 0x800
or eax, ecx
jge 0x42d7d7
push 0x800
lea ecx, [edi + 0x158]
call fcn.00403a70
mov eax, dword [edi + 0x158]
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea ecx, [ebp - 0x220]
push ecx
push 0x800
push eax
push str.item_not_found__
push str.ShowMsgDlg
push str.Debug_Info
call ebx
mov eax, dword [edi + 0x158]
mov ecx, dword [eax - 8]
test eax, eax
je 0x42d820
push ecx
push eax
call fcn.00558a2b
add esp, 8
test eax, eax
js 0x42d9f0
mov ecx, dword [edi + 0x158]
cmp eax, dword [ecx - 8]
jg 0x42d9f0
mov dword [ecx - 0xc], eax
mov edx, dword [edi + 0x158]
xor ecx, ecx
mov word [edx + eax*2], cx
mov eax, dword [edi + 0xc0]
lea esi, [edi + 0xc0]
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
sub eax, 0x800
or eax, ecx
mov dword [ebp - 0x21b48], esi
jge 0x42d870
push 0x800
mov ecx, esi
call fcn.00403a70
mov eax, dword [esi]
lea edx, [ebp - 0x220]
push edx
push 0x800
push eax
push str.item_not_found__
push str.PRT_2KXP
push str.Borderline_Driver_Versions
call ebx
mov eax, dword [esi]
mov ecx, str.item_not_found__
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x42d8bd
test dx, dx
je 0x42d8b9
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x42d8bd
add eax, 4
add ecx, 4
test dx, dx
jne 0x42d897
xor eax, eax
jmp 0x42d8c2
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
sete al
test al, al
je 0x42d9fa
push str.PRT_2KXP
push str.Borderline_Driver_Versions
push edi
call fcn.0042fbf0
mov eax, dword [esi]
mov ecx, dword [eax - 8]
test eax, eax
je 0x42d8fa
push ecx
push eax
call fcn.00558a2b
add esp, 8
test eax, eax
js 0x42d9f0
mov ecx, dword [esi]
cmp eax, dword [ecx - 8]
jg 0x42d9f0
mov dword [ecx - 0xc], eax
mov ecx, dword [esi]
xor edx, edx
mov word [ecx + eax*2], dx
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x21b3c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42d936
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x21b4c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42d95c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x21b50]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42d982
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x21b54]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42d9a8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x21b40]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42d9ce
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x21b58]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jmp 0x42d17a
push 0x80070057
call fcn.004025a0
mov eax, dword [esi]
mov ecx, dword [eax - 8]
test eax, eax
je 0x42da11
push ecx
push eax
call fcn.00558a2b
add esp, 8
test eax, eax
js 0x42d9f0
mov ecx, dword [esi]
cmp eax, dword [ecx - 8]
jg 0x42d9f0
mov dword [ecx - 0xc], eax
mov ecx, dword [esi]
xor edx, edx
mov word [ecx + eax*2], dx
mov eax, dword [edi + 0xc4]
lea esi, [edi + 0xc4]
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
sub eax, 0x800
or eax, ecx
mov dword [ebp - 0x21b68], esi
jge 0x42da55
push 0x800
mov ecx, esi
call fcn.00403a70
mov eax, dword [esi]
lea ecx, [ebp - 0x220]
push ecx
push 0x800
push eax
push str.item_not_found__
push str.FAX_2KXP
push str.Borderline_Driver_Versions
call ebx
mov eax, dword [esi]
mov ecx, str.item_not_found__
lea esp, [esp]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x42daa6
test dx, dx
je 0x42daa2
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x42daa6
add eax, 4
add ecx, 4
test dx, dx
jne 0x42da80
xor eax, eax
jmp 0x42daab
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
sete al
test al, al
je 0x42dbdd
push str.FAX_2KXP
push str.Borderline_Driver_Versions
push edi
call fcn.0042fbf0
mov eax, dword [esi]
mov ecx, dword [eax - 8]
test eax, eax
je 0x42dae3
push ecx
push eax
call fcn.00558a2b
add esp, 8
test eax, eax
js 0x42d9f0
mov ecx, dword [esi]
cmp eax, dword [ecx - 8]
jg 0x42d9f0
mov dword [ecx - 0xc], eax
mov edx, dword [esi]
xor ecx, ecx
mov word [edx + eax*2], cx
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x21b3c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x42db1f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x21b4c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42db45
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x21b50]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42db6b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x21b54]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42db91
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x21b40]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42d9ce
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x21b58]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jmp 0x42d17a
mov eax, dword [esi]
mov ecx, dword [eax - 8]
test eax, eax
je 0x42dbf8
push ecx
push eax
call fcn.00558a2b
add esp, 8
test eax, eax
js 0x42d9f0
mov ecx, dword [esi]
cmp eax, dword [ecx - 8]
jg 0x42d9f0
mov dword [ecx - 0xc], eax
mov ecx, dword [esi]
xor edx, edx
mov word [ecx + eax*2], dx
mov eax, dword [edi + 0xc8]
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
sub eax, 0x800
or eax, ecx
jge 0x42dc38
push 0x800
lea ecx, [edi + 0xc8]
call fcn.00403a70
mov eax, dword [edi + 0xc8]
lea ecx, [ebp - 0x220]
push ecx
push 0x800
push eax
push str.item_not_found__
push str.OLD_VER
push str.Borderline_Driver_Versions
call ebx
mov eax, dword [edi + 0xc8]
mov ecx, str.item_not_found__
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x42dc8d
test dx, dx
je 0x42dc89
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x42dc8d
add eax, 4
add ecx, 4
test dx, dx
jne 0x42dc67
xor eax, eax
jmp 0x42dc92
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
sete al
test al, al
je 0x42ddd0
push str.OLD_VER
push str.Borderline_Driver_Versions
push edi
call fcn.0042fbf0
mov eax, dword [edi + 0xc8]
mov ecx, dword [eax - 8]
test eax, eax
je 0x42dcce
push ecx
push eax
call fcn.00558a2b
add esp, 8
test eax, eax
js 0x42d9f0
mov ecx, dword [edi + 0xc8]
cmp eax, dword [ecx - 8]
jg 0x42d9f0
mov dword [ecx - 0xc], eax
mov edx, dword [edi + 0xc8]
xor ecx, ecx
mov word [edx + eax*2], cx
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x21b3c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x42dd12
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x21b4c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42dd38
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x21b50]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42dd5e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x21b54]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42dd84
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x21b40]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42d9ce
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x21b58]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jmp 0x42d17a
mov eax, dword [edi + 0xc8]
mov ecx, dword [eax - 8]
test eax, eax
je 0x42ddef
push ecx
push eax
call fcn.00558a2b
add esp, 8
test eax, eax
js 0x42d9f0
mov ecx, dword [edi + 0xc8]
cmp eax, dword [ecx - 8]
jg 0x42d9f0
mov dword [ecx - 0xc], eax
mov ecx, dword [edi + 0xc8]
xor edx, edx
mov word [ecx + eax*2], dx
mov eax, dword [edi + 0xcc]
lea esi, [edi + 0xcc]
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
sub eax, 0x800
or eax, ecx
jge 0x42de39
push 0x800
mov ecx, esi
call fcn.00403a70
mov eax, dword [esi]
lea ecx, [ebp - 0x220]
push ecx
push 0x800
push eax
push str.item_not_found__
push 0x5bc194
push 0x5bc194
call ebx
push str.item_not_found__
push esi
call fcn.00404f40
add esp, 8
test al, al
je 0x42df94
push 0x5bc194
push 0x5bc194
push edi
call fcn.0042fbf0
mov eax, dword [esi]
mov ecx, dword [eax - 8]
test eax, eax
je 0x42de9a
push ecx
push eax
call fcn.00558a2b
add esp, 8
test eax, eax
js 0x42d9f0
mov ecx, dword [esi]
cmp eax, dword [ecx - 8]
jg 0x42d9f0
mov dword [ecx - 0xc], eax
mov edx, dword [esi]
xor ecx, ecx
mov word [edx + eax*2], cx
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x21b3c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x42ded6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x21b4c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42defc
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x21b50]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42df22
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x21b54]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42df48
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x21b40]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42d9ce
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x21b58]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jmp 0x42d17a
mov eax, dword [esi]
mov ecx, dword [eax - 8]
test eax, eax
je 0x42dfaf
push ecx
push eax
call fcn.00558a2b
add esp, 8
test eax, eax
js 0x42d9f0
mov ecx, dword [esi]
cmp eax, dword [ecx - 8]
jg 0x42d9f0
mov dword [ecx - 0xc], eax
mov ecx, dword [esi]
xor edx, edx
mov word [ecx + eax*2], dx
mov eax, dword [esi]
sub eax, 0x10
push eax
call fcn.00404900
add eax, 0x10
mov dword [ebp - 0x21b60], eax
push 0x5baa6c
push esi
mov byte [ebp - 4], 0xa
call fcn.00404f40
add esp, 0xc
test al, al
je 0x42dfff
push str.PCL5e
lea ecx, [ebp - 0x21b60]
call fcn.00403400
mov eax, dword [edi + 0x5d8]
lea esi, [edi + 0x5d8]
mov ecx, 1
sub ecx, dword [eax - 4]
mov eax, dword [eax - 8]
sub eax, 0x800
or eax, ecx
mov dword [ebp - 0x21b5c], esi
jge 0x42e031
push 0x800
mov ecx, esi
call fcn.00403a70
mov eax, dword [esi]
lea ecx, [ebp - 0x220]
push ecx
push 0x800
push eax
push 0x5b69a4
push str.PDL_TYPE
push 0x5bc194
call ebx
push str.LIPS4
push esi
call fcn.0040a460
add esp, 8
test al, al
je 0x42e0c9
push 0x5baa6c
push esi
call fcn.0040a460
add esp, 8
test al, al
je 0x42e0c9
push 0x5bc1bc
push esi
call fcn.0040a460
add esp, 8
test al, al
je 0x42e0c9
push 0x5b9f70
push esi
call fcn.0040a460
add esp, 8
test al, al
je 0x42e0c9
push str.UFRII
push esi
call fcn.0040a460
add esp, 8
test al, al
je 0x42e0c9
push str.CAPT
push esi
call fcn.0040a460
add esp, 8
test al, al
je 0x42e0c9
push 0x5b69a4
mov ecx, esi
call fcn.00403400
mov eax, dword [esi]
mov ecx, dword [eax - 8]
test eax, eax
je 0x42e0e4
push ecx
push eax
call fcn.00558a2b
add esp, 8
test eax, eax
js 0x42d9f0
mov ecx, dword [esi]
cmp eax, dword [ecx - 8]
jg 0x42d9f0
mov dword [ecx - 0xc], eax
mov edx, dword [esi]
xor ecx, ecx
mov word [edx + eax*2], cx
mov edx, dword [edi + 0x12c]
add edx, dword [edi + 0x128]
xor esi, esi
test edx, edx
jle 0x42e133
lea esp, [esp]
push 2
push 0x5bc1d0
lea ecx, [edi + 0xd0]
call fcn.0040fb30
mov eax, dword [edi + 0x12c]
add eax, dword [edi + 0x128]
inc esi
cmp esi, eax
jl 0x42e110
mov esi, dword [ebp - 0x21b44]
mov ecx, dword [esi + 0xd0]
mov edi, dword [ecx - 0xc]
dec edi
js 0x42d9f0
mov eax, ecx
mov ebx, dword [eax - 0xc]
cmp edi, ebx
jge 0x42d9f0
cmp dword [eax - 4], 1
jle 0x42e168
push ebx
lea ecx, [esi + 0xd0]
call fcn.00403ba0
mov eax, dword [esi + 0xd0]
xor ecx, ecx
mov word [eax + edi*2], cx
test ebx, ebx
js 0x42d9f0
mov eax, dword [esi + 0xd0]
cmp ebx, dword [eax - 8]
jg 0x42d9f0
mov dword [eax - 0xc], ebx
mov edx, dword [esi + 0xd0]
xor eax, eax
mov word [edx + ebx*2], ax
lea ecx, [ebp - 0x21b7c]
push ecx
lea edx, [ebp - 0x21b6c]
mov dword [ebp - 0x21b7c], eax
mov eax, dword [ebp - 0x21b40]
push edx
push eax
call fcn.00558baa
mov edi, dword [ebp - 0x21b44]
mov esi, eax
add esp, 0xc
test esi, esi
je 0x42e26b
lea ecx, [ecx]
push str._FAX_
push esi
call fcn.00556fbe
add esp, 8
lea ebx, [edi + 0xd4]
test eax, eax
jne 0x42e20d
mov ecx, dword [ebp - 0x21b48]
mov edx, dword [ecx]
test edx, edx
je 0x42e231
mov eax, edx
lea esi, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x42e200
jmp 0x42e22d
mov edx, dword [ebp - 0x21b68]
mov edx, dword [edx]
test edx, edx
jne 0x42e21d
xor eax, eax
jmp 0x42e231
mov eax, edx
lea esi, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x42e222
sub eax, esi
sar eax, 1
push eax
push edx
mov ecx, ebx
call fcn.0040fb30
lea eax, [ebp - 0x21b7c]
push eax
lea ecx, [ebp - 0x21b6c]
push ecx
push 0
call fcn.00558baa
mov esi, eax
add esp, 0xc
test esi, esi
je 0x42e26b
push 1
push 0x5b80a4
mov ecx, ebx
call fcn.0040fb30
jmp 0x42e1d0
mov ecx, dword [ebp - 0x21b3c]
lea edx, [ebp - 0x21b7c]
push edx
lea eax, [ebp - 0x21b6c]
push eax
push ecx
call fcn.00558baa
mov esi, eax
add esp, 0xc
test esi, esi
je 0x42e32b
push str._FAX_
push esi
call fcn.00556fbe
add esp, 8
lea ebx, [edi + 0xd4]
test eax, eax
jne 0x42e2cd
mov edx, dword [ebp - 0x21b48]
mov edx, dword [edx]
test edx, edx
je 0x42e2f1
mov eax, edx
lea esi, [eax + 2]
jmp 0x42e2c0
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x42e2c0
jmp 0x42e2ed
mov eax, dword [ebp - 0x21b68]
mov edx, dword [eax]
test edx, edx
jne 0x42e2dd
xor eax, eax
jmp 0x42e2f1
mov eax, edx
lea esi, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x42e2e2
sub eax, esi
sar eax, 1
push eax
push edx
mov ecx, ebx
call fcn.0040fb30
lea ecx, [ebp - 0x21b7c]
push ecx
lea edx, [ebp - 0x21b6c]
push edx
push 0
call fcn.00558baa
mov esi, eax
add esp, 0xc
test esi, esi
je 0x42e32b
push 1
push 0x5b80a4
mov ecx, ebx
call fcn.0040fb30
jmp 0x42e292
push 0x800
lea eax, [ebp - 0x14e8]
push 0
push eax
call fcn.0055ca80
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
add esp, 0xc
lea ecx, [ebp - 0x220]
push ecx
push 0x800
lea edx, [ebp - 0x14e8]
push edx
push str.item_not_found__
push str.KEY_PRINTER
push str.Registrys
call esi
lea eax, [ebp - 0x14e8]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x42e374
sub eax, edx
sar eax, 1
push eax
lea eax, [ebp - 0x14e8]
push str.item_not_found__
push eax
call fcn.0055943e
add esp, 0xc
test eax, eax
jne 0x42e4ba
push str.KEY_PRINTER
push str.Registrys
push edi
call fcn.0042fbf0
mov byte [ebp - 4], 8
mov eax, dword [ebp - 0x21b60]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42e3d6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x21b3c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42e3fc
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x21b4c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42e422
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x21b50]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42e448
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x21b54]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42e46e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x21b40]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42d9ce
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x21b58]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jmp 0x42d17a
lea eax, [ebp - 0x14e8]
lea ecx, [edi + 0xec]
lea ebx, [eax + 2]
lea esp, [esp]
mov dx, word [eax]
add eax, 2
test dx, dx
jne 0x42e4d0
sub eax, ebx
sar eax, 1
push eax
lea edx, [ebp - 0x14e8]
push edx
call fcn.004039c0
push 0x800
lea eax, [ebp - 0x14e8]
push 0
push eax
call fcn.0055ca80
add esp, 0xc
lea ecx, [ebp - 0x220]
push ecx
push 0x800
lea edx, [ebp - 0x14e8]
push edx
push str.item_not_found__
push str.KEY_PRINTER2
push str.Registrys
call esi
lea eax, [ebp - 0x14e8]
lea edx, [eax + 2]
nop
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x42e530
sub eax, edx
sar eax, 1
push eax
lea eax, [ebp - 0x14e8]
push str.item_not_found__
push eax
call fcn.0055943e
add esp, 0xc
test eax, eax
jne 0x42e676
push str.KEY_PRINTER2
push str.Registrys
push edi
call fcn.0042fbf0
mov byte [ebp - 4], 8
mov eax, dword [ebp - 0x21b60]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42e592
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x21b3c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42e5b8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x21b4c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42e5de
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x21b50]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42e604
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x21b54]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42e62a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x21b40]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42d9ce
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x21b58]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jmp 0x42d17a
lea eax, [ebp - 0x14e8]
lea ecx, [edi + 0xf0]
lea ebx, [eax + 2]
mov dx, word [eax]
add eax, 2
test dx, dx
jne 0x42e685
sub eax, ebx
sar eax, 1
push eax
lea edx, [ebp - 0x14e8]
push edx
call fcn.004039c0
push 0x800
lea eax, [ebp - 0x14e8]
push 0
push eax
call fcn.0055ca80
add esp, 0xc
lea ecx, [ebp - 0x220]
push ecx
push 0x800
lea edx, [ebp - 0x14e8]
push edx
push str.item_not_found__
push str.KEY_BEFORE
push str.Registrys
call esi
lea eax, [ebp - 0x14e8]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x42e6e4
sub eax, edx
sar eax, 1
push eax
lea eax, [ebp - 0x14e8]
push str.item_not_found__
push eax
call fcn.0055943e
add esp, 0xc
test eax, eax
jne 0x42e82a
push str.KEY_BEFORE
push str.Registrys
push edi
call fcn.0042fbf0
mov byte [ebp - 4], 8
mov eax, dword [ebp - 0x21b60]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42e746
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x21b3c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42e76c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x21b4c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42e792
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x21b50]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42e7b8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x21b54]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42e7de
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x21b40]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42d9ce
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x21b58]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jmp 0x42d17a
lea ecx, [ebp - 0x14e8]
push ecx
lea ecx, [edi + 0xf4]
call fcn.00403400
push 0x800
lea edx, [ebp - 0x14e8]
push 0
push edx
call fcn.0055ca80
add esp, 0xc
lea eax, [ebp - 0x220]
push eax
push 0x800
lea ecx, [ebp - 0x14e8]
push ecx
push str.item_not_found__
push str.KEY_BEFORE2
push str.Registrys
call esi
lea eax, [ebp - 0x14e8]
lea edx, [eax + 2]
nop
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x42e880
sub eax, edx
sar eax, 1
push eax
lea edx, [ebp - 0x14e8]
push str.item_not_found__
push edx
call fcn.0055943e
add esp, 0xc
test eax, eax
jne 0x42e90c
push str.KEY_BEFORE2
push str.Registrys
push edi
call fcn.0042fbf0
lea ecx, [ebp - 0x21b60]
call fcn.004037a0
lea ecx, [ebp - 0x21b3c]
call fcn.004037a0
lea ecx, [ebp - 0x21b4c]
call fcn.004037a0
lea ecx, [ebp - 0x21b50]
call fcn.004037a0
lea ecx, [ebp - 0x21b54]
call fcn.004037a0
lea ecx, [ebp - 0x21b40]
call fcn.004037a0
lea ecx, [ebp - 0x21b58]
call fcn.004037a0
xor eax, eax
jmp 0x42f9ae
lea eax, [ebp - 0x14e8]
push eax
lea ecx, [edi + 0xf8]
call fcn.00403400
push 0x800
lea ecx, [ebp - 0x14e8]
push 0
push ecx
call fcn.0055ca80
add esp, 0xc
lea edx, [ebp - 0x220]
push edx
push 0x800
lea eax, [ebp - 0x14e8]
push eax
push str.item_not_found__
push str.KEY_BEFORE3
push str.Registrys
call esi
lea eax, [ebp - 0x14e8]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x42e961
sub eax, edx
sar eax, 1
push eax
lea ecx, [ebp - 0x14e8]
push str.item_not_found__
push ecx
call fcn.0055943e
add esp, 0xc
test eax, eax
jne 0x42e993
push str.KEY_BEFORE3
jmp 0x42e8ad
lea edx, [ebp - 0x14e8]
push edx
lea ecx, [edi + 0xfc]
call fcn.00403400
push 0x800
lea eax, [ebp - 0x14e8]
push 0
push eax
call fcn.0055ca80
add esp, 0xc
lea ecx, [ebp - 0x220]
push ecx
push 0x800
lea edx, [ebp - 0x14e8]
push edx
push str.item_not_found__
push str.KEY_PDRVCAP
push str.Registrys
call esi
lea eax, [ebp - 0x14e8]
lea edx, [eax + 2]
jmp 0x42e9f0
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x42e9f0
sub eax, edx
sar eax, 1
push eax
lea eax, [ebp - 0x14e8]
push str.item_not_found__
push eax
call fcn.0055943e
add esp, 0xc
test eax, eax
jne 0x42ea22
push str.KEY_PDRVCAP
jmp 0x42e8ad
lea ecx, [ebp - 0x14e8]
push ecx
lea ecx, [edi + 0x100]
call fcn.00403400
push 0x800
lea edx, [ebp - 0x14e8]
push 0
push edx
call fcn.0055ca80
add esp, 0xc
lea eax, [ebp - 0x220]
push eax
push 0x800
lea ecx, [ebp - 0x14e8]
push ecx
push str.item_not_found__
push str.KEY_PDRVCAP2
push str.Registrys
call esi
lea eax, [ebp - 0x14e8]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x42ea77
sub eax, edx
sar eax, 1
push eax
lea edx, [ebp - 0x14e8]
push str.item_not_found__
push edx
call fcn.0055943e
add esp, 0xc
test eax, eax
jne 0x42eaa9
push str.KEY_PDRVCAP2
jmp 0x42e8ad
lea eax, [ebp - 0x14e8]
push eax
lea ecx, [edi + 0x104]
call fcn.00403400
push 0x7fff
lea ecx, [ebp - 0x21b00]
push 0
push ecx
call fcn.0055ca80
add esp, 0xc
lea edx, [ebp - 0x220]
push edx
push 0x7fff
lea eax, [ebp - 0x21b00]
push eax
push str.Registrys_Key
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionW]
mov esi, eax
call fcn.00461e32
push eax
push 0x7fff
lea ecx, [ebp - 0x21b00]
push ecx
lea ecx, [ebp - 0x21b64]
call fcn.0040a5d0
mov byte [ebp - 4], 0xb
test esi, esi
je 0x42eb30
push 9
push 0
lea ebx, [ebp - 0x21b64]
call fcn.0040edb0
push 9
push 0x3b
call fcn.0040edb0
jmp 0x42eb40
push str.Non_Printer_t_t
lea ecx, [ebp - 0x21b64]
call fcn.00403400
mov esi, dword [ebp - 0x21b64]
cmp dword [esi - 0xc], 0
jge 0x42eb51
or eax, 0xffffffff
jmp 0x42eb6b
lea edx, [ebp - 0x18]
push edx
push esi
call fcn.00556fbe
add esp, 8
test eax, eax
jne 0x42eb67
or eax, 0xffffffff
jmp 0x42eb6b
sub eax, esi
sar eax, 1
push eax
lea eax, [ebp - 0x21b48]
push eax
lea ecx, [ebp - 0x21b64]
call fcn.0040a240
lea ecx, [edi + 0x108]
push eax
mov byte [ebp - 4], 0xc
call fcn.00404890
lea ecx, [ebp - 0x21b48]
mov byte [ebp - 4], 0xb
call fcn.004037a0
push 0x7fff
lea ecx, [ebp - 0x21b00]
push 0
push ecx
call fcn.0055ca80
add esp, 0xc
lea edx, [ebp - 0x220]
push edx
push 0x7fff
lea eax, [ebp - 0x21b00]
push eax
push str.VDC_Modules
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionW]
call fcn.00461e32
push eax
push 0x7fff
lea ecx, [ebp - 0x21b00]
push ecx
lea ecx, [ebp - 0x21b74]
call fcn.0040a5d0
push 9
push 0
lea ebx, [ebp - 0x21b74]
mov byte [ebp - 4], 0xd
call fcn.0040edb0
push 9
push 0x3b
call fcn.0040edb0
mov esi, dword [ebp - 0x21b74]
cmp dword [esi - 0xc], 0
jge 0x42ec1b
or eax, 0xffffffff
jmp 0x42ec35
lea edx, [ebp - 0x18]
push edx
push esi
call fcn.00556fbe
add esp, 8
test eax, eax
jne 0x42ec31
or eax, 0xffffffff
jmp 0x42ec35
sub eax, esi
sar eax, 1
push eax
lea eax, [ebp - 0x21b48]
push eax
lea ecx, [ebp - 0x21b74]
call fcn.0040a240
lea ecx, [edi + 0xd8]
push eax
mov byte [ebp - 4], 0xe
call fcn.00404890
lea ecx, [ebp - 0x21b48]
mov byte [ebp - 4], 0xd
call fcn.004037a0
push 0x7fff
lea ecx, [ebp - 0x21b00]
push 0
push ecx
call fcn.0055ca80
add esp, 0xc
lea edx, [ebp - 0x220]
push edx
push 0x7fff
lea eax, [ebp - 0x21b00]
push eax
push str.DIAS_Modules
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionW]
call fcn.00461e32
push eax
push 0x7fff
lea ecx, [ebp - 0x21b00]
push ecx
lea ecx, [ebp - 0x21b70]
call fcn.0040a5d0
push 9
push 0
lea ebx, [ebp - 0x21b70]
mov byte [ebp - 4], 0xf
call fcn.0040edb0
push 9
push 0x3b
call fcn.0040edb0
mov esi, dword [ebp - 0x21b70]
cmp dword [esi - 0xc], 0
jge 0x42ece5
or eax, 0xffffffff
jmp 0x42ecff
lea edx, [ebp - 0x18]
push edx
push esi
call fcn.00556fbe
add esp, 8
test eax, eax
jne 0x42ecfb
or eax, 0xffffffff
jmp 0x42ecff
sub eax, esi
sar eax, 1
push eax
lea eax, [ebp - 0x21b48]
push eax
lea ecx, [ebp - 0x21b70]
call fcn.0040a240
lea ecx, [edi + 0xdc]
push eax
mov byte [ebp - 4], 0x10
call fcn.00404890
lea ecx, [ebp - 0x21b48]
mov byte [ebp - 4], 0xf
call fcn.004037a0
lea ecx, [ebp - 0x220]
push ecx
push 0x800
lea esi, [edi + 0xe0]
push 0x800
mov ecx, esi
call fcn.00403550
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
push eax
push str.item_not_found__
push str.PDL_NAME
push str.Profiles
call ebx
push str.item_not_found__
push esi
call fcn.00404f40
add esp, 8
test al, al
je 0x42ede0
push str.PDL_NAME
push str.Profiles
push edi
call fcn.0042fbf0
mov eax, dword [esi]
mov ecx, dword [eax - 8]
test eax, eax
je 0x42eda4
push ecx
push eax
call fcn.00558a2b
add esp, 8
test eax, eax
js 0x42d9f0
mov ecx, dword [esi]
cmp eax, dword [ecx - 8]
jg 0x42d9f0
mov dword [ecx - 0xc], eax
mov edx, dword [esi]
xor ecx, ecx
mov word [edx + eax*2], cx
lea ecx, [ebp - 0x21b70]
call fcn.004037a0
lea ecx, [ebp - 0x21b74]
call fcn.004037a0
lea ecx, [ebp - 0x21b64]
call fcn.004037a0
jmp 0x42e8b8
mov eax, dword [esi]
mov ecx, dword [eax - 8]
test eax, eax
je 0x42edfb
push ecx
push eax
call fcn.00558a2b
add esp, 8
test eax, eax
js 0x42d9f0
mov ecx, dword [esi]
cmp eax, dword [ecx - 8]
jg 0x42d9f0
mov dword [ecx - 0xc], eax
mov edx, dword [esi]
xor ecx, ecx
mov word [edx + eax*2], cx
lea ecx, [ebp - 0x21b68]
call fcn.00404860
mov byte [ebp - 4], 0x11
mov edx, dword [ebp - 0x21b5c]
push 0x5baa6c
push edx
call fcn.00404f40
add esp, 8
lea ecx, [ebp - 0x21b68]
test al, al
je 0x42ee4a
push str.item_not_found__
call fcn.00403400
jmp 0x42ee50
push esi
call fcn.00404890
lea eax, [ebp - 0x220]
push eax
push 0x800
lea esi, [edi + 0xe4]
push 0x800
mov ecx, esi
call fcn.00403550
mov ecx, dword [ebp - 0x21b68]
push eax
push ecx
push str.PDL_NAME2
push str.Profiles
call ebx
push str.item_not_found__
push esi
call fcn.00404f40
add esp, 8
test al, al
je 0x42eee5
push str.PDL_NAME2
push str.Profiles
push edi
call fcn.0042fbf0
mov eax, dword [esi]
mov ecx, dword [eax - 8]
test eax, eax
je 0x42eebf
push ecx
push eax
call fcn.00558a2b
add esp, 8
test eax, eax
js 0x42d9f0
mov ecx, dword [esi]
cmp eax, dword [ecx - 8]
jg 0x42d9f0
mov dword [ecx - 0xc], eax
mov edx, dword [esi]
xor ecx, ecx
mov word [edx + eax*2], cx
lea ecx, [ebp - 0x21b68]
call fcn.004037a0
jmp 0x42edba
mov eax, dword [esi]
mov ecx, dword [eax - 8]
test eax, eax
je 0x42ef00
push ecx
push eax
call fcn.00558a2b
add esp, 8
test eax, eax
js 0x42d9f0
mov ecx, dword [esi]
cmp eax, dword [ecx - 8]
jg 0x42d9f0
mov dword [ecx - 0xc], eax
mov edx, dword [esi]
xor ecx, ecx
mov word [edx + eax*2], cx
lea edx, [ebp - 0x220]
push edx
push 0xffffffffffffffff
push str.UninstallLevel
push str.Profiles
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
mov dword [edi + 0xe8], eax
test eax, eax
je 0x42ef63
cmp eax, 1
je 0x42ef63
cmp eax, 2
je 0x42ef63
push str.UninstallLevel
push str.Profiles
push edi
call fcn.0042fbf0
lea ecx, [ebp - 0x21b68]
call fcn.004037a0
jmp 0x42edba
mov eax, dword [edi + 0x130]
mov eax, dword [eax + 0x11c]
test eax, eax
je 0x42ef7d
cmp eax, 1
je 0x42ef7d
cmp eax, 2
jne 0x42ef83
mov dword [edi + 0xe8], eax
lea ecx, [ebp - 0x220]
push ecx
push 0x800
lea esi, [edi + 0x10c]
push 0x800
mov ecx, esi
call fcn.00403550
push eax
push str.item_not_found__
push str.PST_DEL
push str.Profiles
call ebx
push str.item_not_found__
push esi
call fcn.00404f40
add esp, 8
test al, al
je 0x42efd1
push 0x5bbf14
mov ecx, esi
call fcn.00403400
mov eax, dword [esi]
mov ecx, dword [eax - 8]
test eax, eax
je 0x42efec
push ecx
push eax
call fcn.00558a2b
add esp, 8
test eax, eax
js 0x42d9f0
mov ecx, dword [esi]
cmp eax, dword [ecx - 8]
jg 0x42d9f0
mov dword [ecx - 0xc], eax
mov edx, dword [esi]
xor ecx, ecx
mov word [edx + eax*2], cx
lea edx, [ebp - 0x220]
push edx
push 0x800
lea esi, [edi + 0x114]
push 0x800
mov ecx, esi
call fcn.00403550
push eax
push str.item_not_found__
push str.VDCService
push str.Profiles
call ebx
push str.item_not_found__
push esi
call fcn.00404f40
add esp, 8
test al, al
je 0x42f050
push str.DEFAULT_STOP
mov ecx, esi
call fcn.00403400
mov eax, dword [esi]
mov ecx, dword [eax - 8]
test eax, eax
je 0x42f06b
push ecx
push eax
call fcn.00558a2b
add esp, 8
test eax, eax
js 0x42d9f0
mov ecx, dword [esi]
cmp eax, dword [ecx - 8]
jg 0x42d9f0
mov dword [ecx - 0xc], eax
mov ecx, dword [esi]
xor edx, edx
mov word [ecx + eax*2], dx
lea eax, [ebp - 0x220]
push eax
push 0x800
lea esi, [edi + 0x118]
push 0x800
mov ecx, esi
call fcn.00403550
push eax
push str.item_not_found__
push str.NetWorkPrinter
push str.Profiles
call ebx
push str.item_not_found__
push esi
call fcn.00404f40
add esp, 8
test al, al
je 0x42f0cf
push 0x5bbf14
mov ecx, esi
call fcn.00403400
mov eax, dword [esi]
mov ecx, dword [eax - 8]
test eax, eax
je 0x42f0ea
push ecx
push eax
call fcn.00558a2b
add esp, 8
test eax, eax
js 0x42d9f0
mov ecx, dword [esi]
cmp eax, dword [ecx - 8]
jg 0x42d9f0
mov dword [ecx - 0xc], eax
mov ecx, dword [esi]
xor edx, edx
mov word [ecx + eax*2], dx
lea eax, [ebp - 0x220]
push eax
push 0x800
lea esi, [edi + 0x11c]
push 0x800
mov ecx, esi
call fcn.00403550
push eax
push str.item_not_found__
push str.AUTHORITYCHECK
push str.Profiles
call ebx
push str.item_not_found__
push esi
call fcn.00404f40
add esp, 8
test al, al
je 0x42f14e
push 0x5bbf14
mov ecx, esi
call fcn.00403400
mov eax, dword [esi]
mov ecx, dword [eax - 8]
test eax, eax
je 0x42f169
push ecx
push eax
call fcn.00558a2b
add esp, 8
test eax, eax
js 0x42d9f0
mov ecx, dword [esi]
cmp eax, dword [ecx - 8]
jg 0x42d9f0
mov dword [ecx - 0xc], eax
mov ecx, dword [esi]
xor edx, edx
mov word [ecx + eax*2], dx
lea eax, [ebp - 0x220]
push eax
push 0x800
lea esi, [edi + 0x120]
push 0x800
mov ecx, esi
call fcn.00403550
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 esi
call fcn.00404f40
add esp, 8
test al, al
je 0x42f1cd
push str.0.00
mov ecx, esi
call fcn.00403400
push 0xffffffffffffffff
mov ecx, esi
call fcn.004108b0
lea ecx, [ebp - 0x220]
push ecx
push 0
push str.DrvNum
push str.GetDrvInfo
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
mov esi, dword [ebp - 0x21b44]
add esi, 0x67c
mov edi, eax
mov dword [ebp - 0x21b48], eax
mov dword [ebp - 0x21b78], esi
call fcn.004069d0
test edi, edi
jle 0x42f2d3
cmp edi, 0x20
jle 0x42f226
mov edi, 0x20
mov dword [ebp - 0x21b48], edi
xor ebx, ebx
test edi, edi
jle 0x42f2d3
inc ebx
push ebx
push str.DrvFile_
lea edx, [ebp - 0x1b00]
push str._s_d
push edx
mov edx, 0x104
call fcn.00431280
add esp, 0x10
lea eax, [ebp - 0x220]
push eax
push 0x104
lea ecx, [ebp - 0x18f8]
push ecx
push 0x5b69a4
lea edx, [ebp - 0x1b00]
push edx
push str.GetDrvInfo
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
push 0x5b69a4
lea eax, [ebp - 0x18f8]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpW]
test eax, eax
je 0x42f2cb
lea eax, [ebp - 0x18f8]
lea ecx, [ebp - 0x21b1c]
call fcn.00401a40
mov edi, dword [ebp - 0x21b78]
lea ecx, [ebp - 0x21b1c]
mov byte [ebp - 4], 0x12
call fcn.0040b0b0
lea esi, [ebp - 0x21b1c]
mov byte [ebp - 4], 0x11
call fcn.004024e0
mov edi, dword [ebp - 0x21b48]
cmp ebx, edi
jl 0x42f230
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea ecx, [ebp - 0x220]
push ecx
push 0x20
lea edx, [ebp - 0x2e0]
push edx
push 0x5bbf70
push str.CheckJobMonitor
push str.Profiles
call esi
mov ebx, dword [sym.imp.KERNEL32.dll_lstrcmpiW]
push 0x5bbf14
lea eax, [ebp - 0x2e0]
push eax
call ebx
mov edi, dword [ebp - 0x21b44]
lea ecx, [ebp - 0x220]
push ecx
push 0x20
lea edx, [ebp - 0x2a0]
push edx
neg eax
push 0x5bbf70
sbb eax, eax
push str.DelRestoreFile
inc eax
push str.Profiles
mov dword [edi + 0x68c], eax
call esi
push 0x5bbf14
lea eax, [ebp - 0x2a0]
push eax
call ebx
neg eax
sbb eax, eax
inc eax
mov dword [edi + 0x690], eax
call fcn.004588b0
test dword [eax + 0x14], 0x800
je 0x42f404
xor ecx, ecx
push 0xfffc
push ecx
lea edx, [ebp - 0x11afe]
push edx
mov word [ebp - 0x11b00], cx
call fcn.0055ca80
add esp, 0xc
lea eax, [ebp - 0x220]
push eax
push 0x7fff
lea ecx, [ebp - 0x11b00]
push ecx
push str.DriverStoreInfo
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionW]
test eax, eax
je 0x42f3e5
cmp word [ebp - 0x11b00], 0
lea ebx, [ebp - 0x11b00]
je 0x42f3e5
jmp 0x42f3c0
cmp word [ebx], 0x3b
je 0x42f3d2
push ebx
lea ecx, [edi + 0x1a4]
call fcn.004078d0
push ebx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
cmp word [ebx + eax*2 + 2], 0
lea ebx, [ebx + eax*2 + 2]
jne 0x42f3c0
lea edx, [ebp - 0x220]
push edx
push 0xa
push str.WaitDeleteDriverPacakge
push str.UninstallDriverStore
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
mov dword [edi + 0x1b8], eax
push 0x206
xor ebx, ebx
lea ecx, [ebp - 0x16ee]
xor eax, eax
push ebx
push ecx
mov word [ebp - 0x16f0], ax
call fcn.0055ca80
add esp, 0xc
lea edx, [ebp - 0x220]
push edx
push 0x7fff
lea eax, [ebp - 0x21b00]
push eax
push 0x5b69a4
push ebx
push str.DeleteMonitor
mov dword [ebp - 0x21b44], ebx
mov dword [ebp - 0x21b48], ebx
mov dword [ebp - 0x21b80], ebx
call esi
cmp eax, ebx
jbe 0x42f5dc
xor ecx, ecx
cmp eax, ebx
jbe 0x42f486
cmp word [ebp + ecx*2 - 0x21b00], bx
jne 0x42f481
inc dword [ebp - 0x21b48]
mov edx, 9
mov word [ebp + ecx*2 - 0x21b00], dx
inc ecx
cmp ecx, eax
jb 0x42f464
mov ebx, dword [ebp - 0x21b48]
inc ebx
xor ecx, ecx
mov eax, ebx
mov edx, 8
mul edx
seto cl
neg ecx
or ecx, eax
xor eax, eax
add ecx, 4
setb al
neg eax
or eax, ecx
push eax
call fcn.00461caa
add esp, 4
test eax, eax
je 0x42f4de
push 0x42b260
push 0x42f9d0
push ebx
mov dword [eax], ebx
add eax, 4
push 8
push eax
mov dword [ebp - 0x21b78], eax
call fcn.00557154
mov eax, dword [ebp - 0x21b78]
jmp 0x42f4e0
xor eax, eax
lea ecx, [ebp - 0x21b80]
push ecx
lea edx, [ebp - 0x21b6c]
mov dword [edi + 0x124], eax
push edx
lea eax, [ebp - 0x21b00]
push eax
call fcn.00558baa
mov ebx, eax
add esp, 0xc
test ebx, ebx
je 0x42f5aa
lea ecx, [ecx]
push ebx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
cmp eax, 0x64
jg 0x42f588
lea ecx, [ebp - 0x220]
push ecx
push 0x208
lea edx, [ebp - 0x16f0]
push edx
push 0x5b69a4
push ebx
push str.DeleteMonitor
call esi
dec eax
cmp eax, 0x63
ja 0x42f588
mov eax, dword [ebp - 0x21b44]
mov ecx, dword [edi + 0x124]
add eax, eax
add eax, eax
add eax, eax
push ebx
add ecx, eax
call fcn.00403400
mov ecx, dword [edi + 0x124]
lea eax, [ebp - 0x16f0]
push eax
mov eax, dword [ebp - 0x21b44]
add eax, eax
add eax, eax
add eax, eax
lea ecx, [eax + ecx + 4]
call fcn.00403400
inc dword [ebp - 0x21b44]
lea edx, [ebp - 0x21b80]
push edx
lea eax, [ebp - 0x21b6c]
push eax
push 0
call fcn.00558baa
mov ebx, eax
add esp, 0xc
test ebx, ebx
jne 0x42f510
mov ebx, dword [ebp - 0x21b44]
mov ecx, dword [edi + 0x124]
add ebx, ebx
add ebx, ebx
add ebx, ebx
push 0x5b69a4
add ecx, ebx
call fcn.00403400
mov ecx, dword [edi + 0x124]
push 0x5b69a4
lea ecx, [ebx + ecx + 4]
call fcn.00403400
xor edx, edx
push 0x3e
push edx
lea eax, [ebp - 0x25e]
push eax
mov word [ebp - 0x260], dx
call fcn.0055ca80
add esp, 0xc
lea ecx, [ebp - 0x220]
push ecx
push 0x20
lea edx, [ebp - 0x260]
push edx
push 0x5bc54c
push 0x5bc550
push str.Profiles
call esi
lea eax, [ebp - 0x260]
push 0x5bc568
push eax
call fcn.00556d01
add esp, 8
neg eax
lea ecx, [ebp - 0x220]
push ecx
sbb eax, eax
push 0x800
inc eax
push 0x800
lea ecx, [edi + 0x8c4]
mov dword [edi + 0x634], eax
call fcn.00403550
push eax
push str.item_not_found__
push 0x5bc56c
push str.MFNP
call esi
push 0xffffffffffffffff
lea ecx, [edi + 0x8c4]
call fcn.004108b0
lea edx, [ebp - 0x220]
push edx
push 0x800
push 0x800
lea ecx, [edi + 0x8c8]
call fcn.00403550
push eax
push str.item_not_found__
push 0x5bc588
push str.MFNP
call esi
push 0xffffffffffffffff
lea ecx, [edi + 0x8c8]
call fcn.004108b0
mov eax, dword [ebp - 0x21b5c]
push str.CAPT
push eax
call fcn.00404f40
add esp, 8
test al, al
je 0x42f7c4
lea ecx, [ebp - 0x220]
push ecx
push 0x800
lea ebx, [edi + 0x65c]
push 0x800
mov ecx, ebx
call fcn.00403550
push eax
push 0x5b69a4
push str.CAPTModuleName
push str.CAPTInfo
call esi
push 0xffffffffffffffff
mov ecx, ebx
call fcn.004108b0
lea edx, [ebp - 0x220]
push edx
push 0x800
lea ecx, [edi + 0x660]
push 0x800
call fcn.00403550
push eax
push 0x5b69a4
push str.VirtualChannel
push str.CAPTInfo
call esi
push 0xffffffffffffffff
lea ecx, [edi + 0x660]
call fcn.004108b0
lea eax, [ebp - 0x220]
push eax
push 0x800
lea ecx, [edi + 0x664]
push 0x800
call fcn.00403550
push eax
push 0x5b69a4
push str.ModuleNamePreFix
push str.CAPTInfo
call esi
push 0xffffffffffffffff
lea ecx, [edi + 0x664]
call fcn.004108b0
push 0x5b69a4
push ebx
call fcn.0040a460
add esp, 8
test al, al
je 0x42f7c4
lea eax, [edi + 0x660]
push 0x5b69a4
push eax
call fcn.0040a460
add esp, 8
test al, al
je 0x42f7c4
lea eax, [edi + 0x664]
push 0x5b69a4
push eax
call fcn.0040a460
add esp, 8
test al, al
je 0x42f7c4
mov dword [edi + 0x668], 1
lea ecx, [edi + 0x8cc]
push ecx
push str.CategoryRegName
lea edx, [ebp - 0x21ba0]
push edx
call fcn.00429fd0
lea eax, [edi + 0x8d0]
push eax
push str.SupportCategory
lea ecx, [ebp - 0x21b90]
push ecx
mov byte [ebp - 4], 0x13
call fcn.00429fd0
lea ecx, [ebp - 0x21b44]
call fcn.00404860
mov byte [ebp - 4], 0x15
mov dword [ebp - 0x21b5c], 0
lea esi, [ebp - 0x21b9c]
mov edx, dword [esi]
mov eax, dword [esi - 4]
mov ebx, dword [esi + 8]
lea ecx, [ebp - 0x220]
push ecx
push 0x800
push 0x800
lea ecx, [ebp - 0x21b44]
mov dword [ebp - 0x21b78], edx
mov dword [ebp - 0x21b48], eax
call fcn.00403550
mov edx, dword [ebp - 0x21b78]
push eax
mov eax, dword [ebp - 0x21b48]
push ebx
push edx
push eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
mov ebx, dword [ebp - 0x21b44]
mov eax, dword [ebx - 8]
push eax
push ebx
call fcn.00558a2b
add esp, 8
test eax, eax
js 0x42d9f0
cmp eax, dword [ebx - 8]
jg 0x42d9f0
xor ecx, ecx
mov dword [ebx - 0xc], eax
lea edx, [ebp - 0x21b44]
mov word [ebx + eax*2], cx
mov ecx, dword [esi + 4]
push edx
call fcn.00404890
mov eax, dword [ebp - 0x21b5c]
inc eax
add esi, 0x10
mov dword [ebp - 0x21b5c], eax
cmp eax, 2
jb 0x42f817
mov eax, str.ProductNamesForPAErrorMessage
lea ecx, [ebp - 0x21b38]
call fcn.00401a40
lea eax, [ebp - 0x220]
lea ecx, [ebp - 0x21b1c]
mov byte [ebp - 4], 0x16
call fcn.00401a40
lea eax, [ebp - 0x21b38]
lea ecx, [edi + 0x66c]
push eax
lea edx, [ebp - 0x21b1c]
mov byte [ebp - 4], 0x17
call fcn.00457f90
add esp, 4
lea esi, [ebp - 0x21b1c]
call fcn.004024e0
lea esi, [ebp - 0x21b38]
call fcn.004024e0
lea ecx, [ebp - 0x21b44]
call fcn.004037a0
push 0x42fa20
push 2
push 0x10
lea ecx, [ebp - 0x21ba0]
push ecx
mov byte [ebp - 4], 0x11
call fcn.005570f1
lea ecx, [ebp - 0x21b68]
call fcn.004037a0
lea ecx, [ebp - 0x21b70]
call fcn.004037a0
lea ecx, [ebp - 0x21b74]
call fcn.004037a0
lea ecx, [ebp - 0x21b64]
call fcn.004037a0
lea ecx, [ebp - 0x21b60]
call fcn.004037a0
lea ecx, [ebp - 0x21b3c]
call fcn.004037a0
lea ecx, [ebp - 0x21b4c]
call fcn.004037a0
lea ecx, [ebp - 0x21b50]
call fcn.004037a0
lea ecx, [ebp - 0x21b54]
call fcn.004037a0
lea ecx, [ebp - 0x21b40]
call fcn.004037a0
lea ecx, [ebp - 0x21b58]
call fcn.004037a0
mov eax, 1
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.0055649d
mov esp, ebp
pop ebp
ret