Function at 0x47f720
Capabilities:
Resume thread

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5a216a
mov eax, dword fs:[0]
push eax
sub esp, 0xf44
mov eax, dword [0x608554]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0xf20], ecx
mov edi, dword [ebp + 8]
push ecx
push str.PrinterDriverInstall::RegisterWSDPrinter
lea ecx, [ebp - 0xf00]
mov dword [ebp - 0xf08], edi
call fcn.0040a480
mov dword [ebp - 4], 0
mov ecx, dword [0x608f30]
cmp ecx, 0x608f30
je 0x47f7b4
test byte [ecx + 0x1c], 1
je 0x47f7b4
cmp dword [0x608f68], 8
mov eax, 0x608f54
mov edx, 0x5d03b8
cmovae eax, dword [0x608f54]
push eax
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x2d
call fcn.00401840
add esp, 0xc
push 0x208
lea eax, [ebp - 0x218]
push 0
push eax
call fcn.00571c00
add esp, 0xc
mov dword [ebp - 0xf38], 0
mov dword [ebp - 0xf34], 0
call fcn.00403dd0
mov dword [ebp - 0xf38], eax
push 0x410
lea eax, [ebp - 0xe28]
mov byte [ebp - 4], 1
push 0
push eax
call fcn.00571c00
add esp, 0xc
mov dword [ebp - 0xf44], 0x208
xor eax, eax
mov dword [ebp - 0xe30], 0
lea ecx, [ebp - 0xe40]
mov dword [ebp - 0xe2c], 7
mov word [ebp - 0xe40], ax
push eax
push 0x5c6930
call fcn.004035d0
mov byte [ebp - 4], 2
mov dword [ebp - 0xf3c], 0
call fcn.0052ee40
cmp dword [eax + 0x158], 8
lea edx, [eax + 0x144]
jb 0x47f85f
mov edx, dword [edx]
mov ecx, edx
mov dword [ebp - 0xe48], 0
xor eax, eax
mov dword [ebp - 0xe44], 7
mov word [ebp - 0xe58], ax
lea esi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x47f881
sub ecx, esi
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0xe58]
call fcn.004035d0
lea ecx, [ebp - 0xf40]
mov byte [ebp - 4], 3
call fcn.00430700
mov byte [ebp - 4], 4
test edi, edi
jne 0x47f8be
mov edi, 0x80010001
jmp 0x48085b
lea eax, [ebp - 0xf44]
push eax
lea eax, [ebp - 0xe28]
push eax
call dword [sym.imp.WINSPOOL.DRV_Ordinal_203]
lea eax, [ebp - 0x218]
push eax
push edi
lea eax, [ebp - 0xe58]
push eax
call fcn.00431760
mov dword [ebp - 0xf04], eax
test eax, eax
jne 0x47f995
mov ecx, dword [0x6184f0]
push 0x208
push eax
lea eax, [ebp - 0x420]
mov ecx, dword [ecx + 8]
push eax
mov esi, dword [ecx + 0x3d4]
mov dword [ebp - 0xf10], esi
call fcn.00571c00
lea eax, [edi + 8]
add esp, 0xc
mov dword [ebp - 0xf30], eax
xor eax, eax
cmp eax, esi
sbb esi, esi
neg esi
dec esi
push 1
push esi
lea eax, [ebp - 0x420]
push eax
lea eax, [ebp - 0x218]
push eax
call fcn.0052ee40
mov ecx, eax
call fcn.00534cc0
push eax
push dword [ebp - 0xf30]
mov ecx, 0x618568
call fcn.00448fb0
cmp dword [ebp - 0xf10], 0
mov edi, eax
je 0x47f987
lea eax, [ebp - 0x218]
push 0x5c6930
push eax
call fcn.00574f99
add esp, 8
test eax, eax
jne 0x47f987
inc esi
cmp esi, 2
jl 0x47f930
test edi, edi
jne 0x480777
mov edi, dword [ebp - 0xf08]
push 0x64
lea eax, [ebp - 0xebc]
push 0
push eax
call fcn.00571c00
lea eax, [edi + 8]
add esp, 0xc
cmp dword [ebp - 0xe44], 8
mov dword [ebp - 0xf30], eax
mov dword [ebp - 0xec4], eax
lea eax, [ebp - 0xe58]
cmovae eax, dword [ebp - 0xe58]
mov dword [ebp - 0xec0], eax
mov eax, dword [edi + 0x3c8c]
mov dword [ebp - 0xec8], eax
xor eax, eax
cmp dword [ebp - 0xf04], eax
sete al
push eax
call fcn.0049c250
push eax
lea eax, [ebp - 0xec8]
push eax
lea eax, [ebp - 0x218]
push eax
call fcn.00530160
mov edi, eax
neg edi
sbb edi, edi
and edi, 0x8001003c
mov dword [ebp - 0xf18], edi
test eax, eax
jne 0x480775
xorps xmm0, xmm0
mov dword [ebp - 0xe5c], eax
movups xmmword [ebp - 0xe74], xmm0
movq qword [ebp - 0xe64], xmm0
call fcn.00550b4e
mov ecx, eax
test ecx, ecx
je 0x4809c8
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0xf0c], eax
mov byte [ebp - 4], 5
call fcn.00550b4e
mov ecx, eax
test ecx, ecx
je 0x4809d2
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
lea edi, [eax + 0x10]
mov dword [ebp - 0xf1c], edi
mov byte [ebp - 4], 6
call fcn.00550b4e
mov ecx, eax
test ecx, ecx
je 0x4809dc
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
lea esi, [eax + 0x10]
mov dword [ebp - 0xf14], esi
mov byte [ebp - 4], 7
lea eax, [ebp - 0xf38]
mov ecx, dword [0x6184f0]
push eax
mov ecx, dword [ecx + 0x28]
call fcn.004f18c0
mov ecx, dword [0x6184f0]
mov eax, dword [ecx + 8]
cmp dword [eax + 0x3a4], 0
je 0x47faf7
push dword [ebp + 0xc]
mov ecx, dword [ecx + 0x28]
push dword [ebp - 0xf30]
call fcn.004e9de0
mov ecx, dword [0x6184f0]
mov eax, dword [ebp - 0xf08]
push 1
push dword [ebp - 0xf30]
mov ecx, dword [ecx + 0x28]
add eax, 0x418
push eax
call fcn.004ea010
push 0x800
lea eax, [ebp - 0xa18]
push 0
push eax
call fcn.00571c00
mov ecx, dword [0x6184f0]
lea eax, [ebp - 0xa18]
add esp, 0xc
mov ecx, dword [ecx + 0x1c]
push eax
push str.INSTALLATION_SELECT
call fcn.004f65f0
lea eax, [ebp - 0xa18]
push eax
call fcn.00577bb7
add esp, 4
test eax, eax
jne 0x47fb7a
call fcn.0049bed0
test eax, eax
jne 0x47fb7a
mov esi, dword [ebp - 0xf08]
lea eax, [ebp - 0xf0c]
mov ecx, dword [0x6184f8]
add esi, 0x828
push eax
push esi
call fcn.004b5ee0
mov ecx, dword [0x6184f8]
lea eax, [ebp - 0xf14]
push eax
push esi
call fcn.004b5ff0
jmp 0x47fcc6
mov ecx, dword [ebp - 0xf08]
add ecx, 0x828
jne 0x47fb8c
xor edx, edx
jmp 0x47fbaa
mov edx, ecx
lea eax, [edx + 2]
mov dword [ebp - 0xf10], eax
mov ax, word [edx]
add edx, 2
test ax, ax
jne 0x47fb97
sub edx, dword [ebp - 0xf10]
sar edx, 1
push edx
push ecx
lea ecx, [ebp - 0xf0c]
call fcn.00403bb0
push str.WSD_
lea ecx, [ebp - 0xf0c]
call fcn.00484370
mov edx, dword [eax]
lea eax, [edx - 0x10]
mov dword [ebp - 0xf04], eax
mov eax, dword [ebp - 0xf0c]
lea ecx, [eax - 0x10]
mov dword [ebp - 0xf24], ecx
cmp dword [ebp - 0xf04], ecx
je 0x47fc56
cmp dword [ecx + 0xc], 0
lea eax, [ecx + 0xc]
mov dword [ebp - 0xf10], eax
jl 0x47fc41
mov eax, dword [edx - 0x10]
cmp eax, dword [ecx]
jne 0x47fc41
mov ecx, dword [ebp - 0xf04]
call fcn.00403af0
mov edx, dword [ebp - 0xf10]
or ecx, 0xffffffff
mov dword [ebp - 0xf04], eax
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x47fc36
mov eax, dword [ebp - 0xf24]
push eax
mov ecx, dword [eax]
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0xf04]
add eax, 0x10
mov dword [ebp - 0xf0c], eax
jmp 0x47fc56
push dword [edx - 0xc]
lea ecx, [ebp - 0xf0c]
push edx
call fcn.00403bb0
mov eax, dword [ebp - 0xf0c]
lea edx, [eax - 0x10]
lea ecx, [esi - 0x10]
mov dword [ebp - 0xf24], edx
mov dword [ebp - 0xf10], ecx
cmp edx, ecx
je 0x47fccc
cmp dword [ecx + 0xc], 0
lea esi, [ecx + 0xc]
jl 0x47fcb7
mov edx, dword [edx]
cmp edx, dword [ecx]
jne 0x47fcb7
mov ecx, dword [ebp - 0xf24]
call fcn.00403af0
mov dword [ebp - 0xf24], eax
or ecx, 0xffffffff
lock xadd dword [esi], ecx
dec ecx
test ecx, ecx
jg 0x47fcac
mov esi, dword [ebp - 0xf10]
push esi
mov ecx, dword [esi]
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0xf24]
lea esi, [eax + 0x10]
mov dword [ebp - 0xf14], esi
jmp 0x47fccc
push dword [eax - 0xc]
lea ecx, [ebp - 0xf14]
push eax
call fcn.00403bb0
mov esi, dword [ebp - 0xf14]
mov eax, dword [ebp - 0xf08]
push esi
add eax, 0x828
push 0x208
push eax
call fcn.005746e6
add esp, 0xc
push 0
push 4
push 0
push 0
push dword [ebp - 0xf08]
push 0x47e0a0
call fcn.0055c3f2
mov dword [ebp - 0xf04], eax
test eax, eax
je 0x47fd98
push dword [eax + 0x2c]
mov dword [eax + 0x28], 0
call dword [sym.imp.KERNEL32.dll_ResumeThread]
mov eax, dword [ebp - 0xf04]
push 0
push dword [eax + 0x2c]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0x102
jne 0x47fd8b
mov edi, dword [ebp - 0xf04]
nop word [eax + eax]
push 1
push 0
push 0
push 0
lea eax, [ebp - 0xe74]
push eax
call dword [sym.imp.USER32.dll_PeekMessageW]
test eax, eax
je 0x47fd73
lea eax, [ebp - 0xe74]
push eax
call dword [sym.imp.USER32.dll_TranslateMessage]
lea eax, [ebp - 0xe74]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageW]
push 0
push dword [edi + 0x2c]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0x102
je 0x47fd40
mov edi, dword [ebp - 0xf1c]
mov ecx, dword [ebp - 0xf04]
push 1
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0xf08]
add ecx, 0x828
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x47fda7
sub ecx, edx
sar ecx, 1
jne 0x47fdd1
call fcn.0052ee40
push str.Windows_x64
lea ecx, [eax + 0x144]
call fcn.004049b0
test al, al
je 0x47fdf4
cmp dword [edi - 0xc], 0
jne 0x47fe59
call fcn.0052ee40
push str.Windows_x64
lea ecx, [eax + 0x144]
call fcn.004049b0
test al, al
je 0x47fe59
push dword [ebp - 0xf0c]
lea ecx, [ebp - 0xf40]
call fcn.00435f70
test eax, eax
jne 0x47fe59
mov ecx, dword [0x608f30]
cmp ecx, 0x608f30
je 0x47fe4f
test byte [ecx + 0x1c], 4
je 0x47fe4f
cmp dword [0x608f68], 8
mov eax, 0x608f54
push dword [ebp - 0xf0c]
cmovae eax, dword [0x608f54]
mov edx, 0x5d03b8
push eax
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x2e
call fcn.00405920
add esp, 0x10
mov dword [ebp - 0xf18], 0x8001003c
mov byte [ebp - 4], 6
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x47fe75
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
or esi, 0xffffffff
mov byte [ebp - 4], 5
add edi, 0xfffffff0
mov eax, esi
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x47fe93
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 4
mov eax, esi
mov edx, dword [ebp - 0xf0c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x47feb4
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edi, dword [ebp - 0xf18]
test edi, edi
jne 0x480777
call fcn.00550b4e
mov ecx, eax
test ecx, ecx
je 0x4809e6
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0xf0c], eax
mov eax, 0x5c6930
mov byte [ebp - 4], 8
lea ecx, [ebp - 0xf0c]
test eax, 0xffff0000
jne 0x47ff02
movzx eax, ax
push eax
call fcn.00403020
jmp 0x47ff0e
push 0
push 0x5c6930
call fcn.00403bb0
mov byte [ebp - 4], 9
xor esi, esi
push 0x64
call dword [sym.imp.KERNEL32.dll_Sleep]
lea eax, [ebp - 0xe40]
push eax
lea eax, [ebp - 0xf0c]
push eax
push dword [ebp - 0xf30]
lea eax, [ebp - 0xf38]
sub esp, 8
mov ecx, esp
mov dword [ebp - 0xf1c], ecx
push ecx
push eax
call fcn.0044c3d0
call fcn.004f31c0
mov edi, eax
test edi, edi
je 0x4801b0
cmp edi, 0x8001001b
je 0x47ff6d
inc esi
cmp esi, 0xbb8
jl 0x47ff14
jmp 0x48010e
mov eax, dword [0x6184f0]
mov eax, dword [eax + 8]
cmp dword [eax + 0x7f8], 2
jne 0x48011a
push ecx
lea eax, [ebp - 0xf38]
push eax
lea ecx, [ebp - 0xf28]
call fcn.0044c3d0
push ecx
push str.CBaseInfoPrinterEx::GetPrinterAddedByWSDForGenericPlus
lea ecx, [ebp - 0xe90]
mov byte [ebp - 4], 0xa
call fcn.0040a480
mov byte [ebp - 4], 0xb
mov ecx, dword [0x608f30]
cmp ecx, 0x608f30
je 0x47ffee
test byte [ecx + 0x1c], 1
je 0x47ffee
cmp dword [0x608f68], 8
mov eax, 0x608f54
mov edx, 0x5daec4
cmovae eax, dword [0x608f54]
push eax
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0xa3
call fcn.00401840
add esp, 0xc
mov eax, dword [0x6184f0]
mov edi, 0x8001001b
mov esi, dword [eax + 8]
mov ecx, esi
call fcn.004d7090
mov eax, dword [esi + 0x33c]
push 0x800
mov dword [ebp - 0xf04], eax
lea eax, [ebp - 0xa18]
push 0
push eax
call fcn.00571c00
xor esi, esi
add esp, 0xc
cmp dword [ebp - 0xf04], esi
jle 0x48008c
nop
mov ecx, dword [0x6184f0]
lea eax, [ebp - 0xa18]
push esi
push 0x400
push eax
mov ecx, dword [ecx + 8]
call fcn.004d9bf0
lea eax, [ebp - 0xe40]
push eax
lea eax, [ebp - 0xf0c]
push eax
lea eax, [ebp - 0xa18]
push eax
sub esp, 8
lea eax, [ebp - 0xf28]
mov ecx, esp
mov dword [ebp - 0xf1c], ecx
push ecx
push eax
call fcn.0044c3d0
call fcn.004f31c0
mov edi, eax
test edi, edi
je 0x48008c
inc esi
cmp esi, dword [ebp - 0xf04]
jl 0x480030
mov byte [ebp - 0xe8c], 1
mov ecx, dword [0x608f30]
cmp ecx, 0x608f30
je 0x4800d4
test byte [ecx + 0x1c], 1
je 0x4800d4
cmp dword [0x608f68], 8
mov eax, 0x608f54
push edi
cmovae eax, dword [0x608f54]
mov edx, 0x5daec4
push eax
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0xa4
call fcn.004018a0
add esp, 0x10
lea ecx, [ebp - 0xe90]
call fcn.0040a570
mov byte [ebp - 4], 9
lea ecx, [ebp - 0xf28]
mov eax, dword [ebp - 0xf28]
push eax
push dword [eax]
lea eax, [ebp - 0xf1c]
push eax
call fcn.00403990
push 0x40
push dword [ebp - 0xf28]
call fcn.0056deb6
add esp, 8
cmp edi, 0x8001001b
je 0x48011a
test edi, edi
jmp 0x48015e
cmp dword [ebp - 0xe2c], 8
lea eax, [ebp - 0xe40]
cmovae eax, dword [ebp - 0xe40]
push eax
mov eax, dword [ebp - 0xf08]
add eax, 0x418
push eax
push 0x1422
push dword [0x6184fc]
call fcn.00502d80
xor ecx, ecx
add esp, 0x10
cmp eax, 7
sete cl
mov dword [ebp - 0xf3c], ecx
test ecx, ecx
je 0x4801b0
mov ecx, dword [0x608f30]
cmp ecx, 0x608f30
je 0x4801a0
test byte [ecx + 0x1c], 4
je 0x4801a0
cmp dword [0x608f68], 8
mov eax, 0x608f54
mov edx, 0x5d03b8
cmovae eax, dword [0x608f54]
push eax
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x35
call fcn.00401840
add esp, 0xc
mov esi, dword [ebp - 0xf0c]
mov edi, 0x8001003c
jmp 0x480759
mov ecx, dword [0x608f30]
mov esi, dword [ebp - 0xf0c]
cmp ecx, 0x608f30
je 0x4801f7
test byte [ecx + 0x1c], 4
je 0x4801f7
cmp dword [0x608f68], 8
mov eax, 0x608f54
push esi
cmovae eax, dword [0x608f54]
mov edx, 0x5d03b8
push eax
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x2f
call fcn.00405920
add esp, 0x10
mov eax, dword [0x6184f0]
mov eax, dword [eax + 8]
cmp dword [eax + 0x3a8], 0
je 0x480214
mov ecx, dword [ebp - 0xf20]
push esi
call fcn.00483440
mov dword [ebp - 0xf18], 0
mov dword [ebp - 0xf14], 0
mov dword [ebp - 0xf2c], 0
mov dword [ebp - 0xf28], 0
mov dword [ebp - 0xf24], 0
mov byte [ebp - 4], 0xc
mov dword [ebp - 0xf50], 0
mov dword [ebp - 0xf4c], 0
mov dword [ebp - 0xf48], 0xf000c
mov dword [ebp - 0xf10], 0
push 0x64
call dword [sym.imp.KERNEL32.dll_Sleep]
lea eax, [ebp - 0xf50]
push eax
lea eax, [ebp - 0xf14]
push eax
push esi
call dword [sym.imp.WINSPOOL.DRV_OpenPrinterW]
mov dword [ebp - 0xf04], eax
test eax, eax
jne 0x4802b8
mov eax, dword [ebp - 0xf10]
inc eax
mov dword [ebp - 0xf10], eax
cmp eax, 0x12c
jl 0x480272
call dword [sym.imp.KERNEL32.dll_GetLastError]
jmp 0x48050e
lea eax, [ebp - 0xf18]
push eax
push 0
push 0
push 2
push dword [ebp - 0xf14]
call dword [sym.imp.WINSPOOL.DRV_GetPrinterW]
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x7a
jne 0x4804fd
mov eax, dword [ebp - 0xf18]
test eax, eax
je 0x4804fd
lea ecx, [ebp - 0xf2c]
push ecx
push eax
call fcn.00406090
lea eax, [ebp - 0xf18]
push eax
push dword [ebp - 0xf18]
push dword [ebp - 0xf2c]
push 2
push dword [ebp - 0xf14]
call dword [sym.imp.WINSPOOL.DRV_GetPrinterW]
mov dword [ebp - 0xf04], eax
test eax, eax
jne 0x48037b
mov eax, dword [sym.imp.KERNEL32.dll_GetLastError]
call eax
mov ecx, dword [0x608f30]
cmp ecx, 0x608f30
je 0x48050e
test byte [ecx + 0x1c], 4
je 0x48050e
cmp dword [0x608f68], 8
mov eax, 0x608f54
push esi
cmovae eax, dword [0x608f54]
mov edx, 0x5d03b8
push eax
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x30
call fcn.00405920
add esp, 0x10
jmp 0x48050e
push 0x800
lea eax, [ebp - 0xa18]
push 0
push eax
call fcn.00571c00
mov ecx, dword [0x6184f0]
lea eax, [ebp - 0xa18]
add esp, 0xc
mov ecx, dword [ecx + 0x1c]
push eax
push 0x5c7af8
call fcn.004f65f0
push 0x5c7da0
lea eax, [ebp - 0xa18]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpW]
test eax, eax
je 0x48050e
mov ecx, dword [ebp - 0xf08]
mov edx, dword [ebp - 0xf2c]
mov dword [ebp - 0xf10], edx
lea eax, [ecx + 0x418]
add ecx, 0xc38
mov dword [edx + 4], eax
lea eax, [ecx + 2]
mov dword [ebp - 0xf20], eax
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4803f0
sub ecx, dword [ebp - 0xf20]
sar ecx, 1
je 0x480417
mov eax, dword [ebp - 0xf08]
or dword [edx + 0x34], 8
add eax, 0xc38
mov dword [edx + 8], eax
push 0
push edx
push 2
push dword [ebp - 0xf14]
call dword [sym.imp.WINSPOOL.DRV_SetPrinterW]
mov dword [ebp - 0xf04], eax
test eax, eax
jne 0x4804e7
mov eax, dword [sym.imp.KERNEL32.dll_GetLastError]
call eax
mov ecx, eax
mov dword [ebp - 0xf20], ecx
mov edx, dword [0x608f30]
cmp edx, 0x608f30
je 0x4804d9
test byte [edx + 0x1c], 4
je 0x48049e
mov eax, dword [ebp - 0xf10]
mov ecx, 0x608f54
cmp dword [0x608f68], 8
cmovae ecx, dword [0x608f54]
push dword [eax + 4]
push ecx
push dword [edx + 0x14]
mov ecx, 0x31
push dword [edx + 0x10]
mov edx, 0x5d03b8
call fcn.00405920
mov edx, dword [0x608f30]
add esp, 0x10
mov ecx, dword [ebp - 0xf20]
cmp edx, 0x608f30
je 0x4804d9
test byte [edx + 0x1c], 4
je 0x4804d9
cmp dword [0x608f68], 8
mov eax, 0x608f54
push ecx
cmovae eax, dword [0x608f54]
mov ecx, 0x32
push eax
push dword [edx + 0x14]
push dword [edx + 0x10]
mov edx, 0x5d03b8
call fcn.004018a0
add esp, 0x10
lea eax, [ebp - 0xe28]
push eax
call fcn.00534240
jmp 0x480528
cmp dword [ebp + 0x10], 0
je 0x4804d9
mov eax, dword [ebp - 0xf10]
push dword [eax + 4]
call fcn.00534240
jmp 0x480528
mov eax, dword [sym.imp.KERNEL32.dll_GetLastError]
call eax
mov dword [ebp - 0xf04], 0
mov eax, dword [ebp - 0xf08]
push esi
add eax, 0x418
push 0x208
push eax
call fcn.005746e6
add esp, 0xc
mov eax, dword [ebp - 0xf14]
test eax, eax
je 0x480543
push eax
call dword [sym.imp.WINSPOOL.DRV_ClosePrinter]
mov dword [ebp - 0xf14], 0
cmp dword [ebp - 0xf04], 0
je 0x4805e4
mov ecx, dword [0x6184f0]
mov ecx, dword [ecx + 0x30]
call fcn.004de4a0
test eax, eax
je 0x48066b
mov ecx, dword [0x6184f0]
mov edx, dword [ebp - 0xf08]
mov eax, dword [ecx + 8]
mov ecx, dword [ecx + 0x30]
cmp dword [eax + 0x7e8], 0
lea eax, [edx + 0x418]
push eax
lea eax, [edx + 8]
push eax
je 0x480593
call fcn.004dfd10
jmp 0x480598
call fcn.004df980
mov edi, eax
test edi, edi
jns 0x48066b
mov ecx, dword [0x608f30]
cmp ecx, 0x608f30
je 0x480625
test byte [ecx + 0x1c], 4
je 0x4805ea
cmp dword [0x608f68], 8
mov eax, 0x608f54
push edi
cmovae eax, dword [0x608f54]
mov edx, 0x5d03b8
push esi
push eax
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x33
call fcn.004300c0
add esp, 0x14
mov ecx, dword [0x608f30]
cmp ecx, 0x608f30
je 0x480625
test byte [ecx + 0x1c], 4
je 0x480625
cmp dword [0x608f68], 8
mov eax, 0x608f54
push esi
cmovae eax, dword [0x608f54]
mov edx, 0x5d03b8
push eax
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x34
call fcn.00405920
add esp, 0x10
mov edi, 0x8001003c
mov byte [ebp - 4], 9
mov ecx, dword [ebp - 0xf2c]
test ecx, ecx
je 0x480759
mov edx, dword [ebp - 0xf24]
mov eax, ecx
sub edx, ecx
cmp edx, 0x1000
jb 0x48074f
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4809f0
jmp 0x48074f
mov eax, dword [0x6184f0]
mov eax, dword [eax + 8]
cmp dword [eax + 0x7f8], 2
jne 0x480748
cmp edi, 0x8001001b
je 0x480748
mov edx, dword [ebp - 0xf08]
add edx, 0x3ce8
mov dword [ebp - 0xe60], 0
mov ecx, edx
mov dword [ebp - 0xe5c], 7
xor eax, eax
mov word [ebp - 0xe70], ax
lea edi, [ecx + 2]
nop word [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4806c0
sub ecx, edi
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0xe70]
call fcn.004035d0
mov ecx, dword [ebp - 0xf08]
lea eax, [ebp - 0xe70]
push eax
mov byte [ebp - 4], 0xd
push dword [ecx + 0x3ce4]
lea eax, [ecx + 0x418]
mov ecx, 0x61861c
push eax
call fcn.00460010
mov byte [ebp - 4], 0xc
mov edx, dword [ebp - 0xe5c]
cmp edx, 8
jb 0x480748
mov ecx, dword [ebp - 0xe70]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x48073e
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4809f5
push edx
push ecx
call fcn.0056deb6
add esp, 8
xor edi, edi
jmp 0x48062a
push edx
push ecx
call fcn.0056deb6
add esp, 8
mov byte [ebp - 4], 4
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x480775
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
test edi, edi
jns 0x480813
cmp dword [ebp - 0xf3c], 0
jne 0x480813
mov ecx, dword [0x6184f0]
mov esi, dword [ebp - 0xf08]
add esi, 0x418
mov eax, dword [ecx + 8]
cmp dword [eax + 0x3a4], 0
je 0x4807b9
mov ecx, dword [ecx + 0x28]
push 0
push dword [ebp - 0xf30]
push esi
call fcn.004ea010
push esi
push 0x22
push dword [0x6184fc]
call fcn.00502d80
add esp, 0xc
cmp eax, 6
jne 0x4808a2
mov ecx, dword [0x608f30]
cmp ecx, 0x608f30
je 0x480819
test byte [ecx + 0x1c], 4
je 0x480819
cmp dword [0x608f68], 8
mov eax, 0x608f54
mov edx, 0x5d03b8
cmovae eax, dword [0x608f54]
push eax
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x36
call fcn.00401840
add esp, 0xc
mov ecx, dword [0x608f30]
mov byte [ebp - 0xefc], 1
cmp ecx, 0x608f30
je 0x48085b
test byte [ecx + 0x1c], 1
je 0x48085b
cmp dword [0x608f68], 8
mov eax, 0x608f54
push edi
cmovae eax, dword [0x608f54]
mov edx, 0x5d03b8
push eax
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x38
call fcn.004018a0
add esp, 0x10
lea ecx, [ebp - 0xf40]
call fcn.004307d0
mov edx, dword [ebp - 0xe44]
cmp edx, 8
jb 0x4808f9
mov ecx, dword [ebp - 0xe58]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4808ef
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4809fa
jmp 0x4808ef
mov ecx, dword [0x608f30]
cmp ecx, 0x608f30
je 0x4808e8
test byte [ecx + 0x1c], 4
je 0x4808e8
cmp dword [0x608f68], 8
mov eax, 0x608f54
mov edx, 0x5d03b8
cmovae eax, dword [0x608f54]
push eax
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x37
call fcn.00401840
mov ecx, dword [0x608f30]
add esp, 0xc
xor edi, edi
jmp 0x480819
push edx
push ecx
call fcn.0056deb6
add esp, 8
mov edx, dword [ebp - 0xe2c]
xor eax, eax
mov dword [ebp - 0xe48], 0
mov dword [ebp - 0xe44], 7
mov word [ebp - 0xe58], ax
cmp edx, 8
jb 0x480956
mov ecx, dword [ebp - 0xe40]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x48094c
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4809ff
push edx
push ecx
call fcn.0056deb6
add esp, 8
xor eax, eax
mov dword [ebp - 0xe30], 0
mov word [ebp - 0xe40], ax
lea ecx, [ebp - 0xf38]
mov eax, dword [ebp - 0xf38]
push eax
mov dword [ebp - 0xe2c], 7
push dword [eax]
lea eax, [ebp - 0xf20]
push eax
call fcn.00403990
push 0x40
push dword [ebp - 0xf38]
call fcn.0056deb6
add esp, 8
lea ecx, [ebp - 0xf00]
call fcn.0040a570
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0056d977
mov esp, ebp
pop ebp
ret 0xc
push 0x80004005
call fcn.004013a0
push 0x80004005
call fcn.004013a0
push 0x80004005
call fcn.004013a0
push 0x80004005
call fcn.004013a0
call fcn.00574908
call fcn.00574908
call fcn.00574908
call fcn.00574908
int3