Function at 0x588280
Capabilities:
Accept command line arguments
Check if file exists
Delete directory
Delete file
Query environment variable
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5d3998
mov eax, dword fs:[0]
push eax
sub esp, 0x82c
mov eax, dword [0x638fe4]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x77c], ecx
call fcn.00418413
mov ecx, eax
test ecx, ecx
jne 0x5882c9
push 0x80004005
call fcn.00402650
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x5882de
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
jmp 0x5882e0
call edx
add eax, 0x10
mov dword [ebp - 0x7a8], eax
mov dword [ebp - 4], 0
call fcn.00418413
mov ecx, eax
test ecx, ecx
jne 0x588305
push 0x80004005
call fcn.00402650
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x58831a
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
jmp 0x58831c
call edx
add eax, 0x10
mov dword [ebp - 0x770], eax
mov byte [ebp - 4], 1
call fcn.00418413
mov ecx, eax
test ecx, ecx
jne 0x58833e
push 0x80004005
call fcn.00402650
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x588353
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
jmp 0x588355
call edx
add eax, 0x10
mov dword [ebp - 0x7cc], eax
mov byte [ebp - 4], 2
call fcn.00418413
mov ecx, eax
test ecx, ecx
jne 0x588377
push 0x80004005
call fcn.00402650
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x58838c
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
jmp 0x58838e
call edx
add eax, 0x10
mov dword [ebp - 0x798], eax
mov byte [ebp - 4], 3
call fcn.00418413
mov ecx, eax
test ecx, ecx
jne 0x5883b0
push 0x80004005
call fcn.00402650
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x5883c5
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
jmp 0x5883c7
call edx
add eax, 0x10
mov dword [ebp - 0x7c8], eax
mov byte [ebp - 4], 4
call fcn.00418413
mov ecx, eax
test ecx, ecx
jne 0x5883e9
push 0x80004005
call fcn.00402650
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x5883fe
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
jmp 0x588400
call edx
add eax, 0x10
mov dword [ebp - 0x7c4], eax
mov byte [ebp - 4], 5
call fcn.00418413
mov ecx, eax
test ecx, ecx
jne 0x588422
push 0x80004005
call fcn.00402650
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x588437
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
jmp 0x588439
call edx
add eax, 0x10
mov dword [ebp - 0x7c0], eax
mov byte [ebp - 4], 6
call fcn.00418413
mov ecx, eax
test ecx, ecx
jne 0x58845b
push 0x80004005
call fcn.00402650
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x588470
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
jmp 0x588472
call edx
add eax, 0x10
mov dword [ebp - 0x7bc], eax
mov byte [ebp - 4], 7
call fcn.00418413
mov ecx, eax
test ecx, ecx
jne 0x588494
push 0x80004005
call fcn.00402650
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x5884a9
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
jmp 0x5884ab
call edx
lea ebx, [eax + 0x10]
mov dword [ebp - 0x780], ebx
mov byte [ebp - 4], 8
call fcn.00418413
mov ecx, eax
test ecx, ecx
jne 0x5884cd
push 0x80004005
call fcn.00402650
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x5884e2
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
jmp 0x5884e4
call edx
lea edi, [eax + 0x10]
mov dword [ebp - 0x78c], edi
mov byte [ebp - 4], 9
call fcn.00418413
mov ecx, eax
test ecx, ecx
jne 0x588506
push 0x80004005
call fcn.00402650
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x58851b
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
jmp 0x58851d
call edx
add eax, 0x10
mov dword [ebp - 0x788], eax
mov byte [ebp - 4], 0xa
call fcn.00418413
mov ecx, eax
test ecx, ecx
jne 0x58853f
push 0x80004005
call fcn.00402650
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x588554
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
jmp 0x588556
call edx
add eax, 0x10
mov dword [ebp - 0x7b8], eax
mov byte [ebp - 4], 0xb
call fcn.00418413
mov ecx, eax
test ecx, ecx
jne 0x588578
push 0x80004005
call fcn.00402650
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x58858d
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
jmp 0x58858f
call edx
add eax, 0x10
mov dword [ebp - 0x7b4], eax
mov byte [ebp - 4], 0xc
call fcn.00418413
mov ecx, eax
test ecx, ecx
jne 0x5885b1
push 0x80004005
call fcn.00402650
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x5885c6
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
jmp 0x5885c8
call edx
add eax, 0x10
mov dword [ebp - 0x7a4], eax
mov byte [ebp - 4], 0xd
call fcn.00418413
mov ecx, eax
test ecx, ecx
jne 0x5885ea
push 0x80004005
call fcn.00402650
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x5885ff
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
jmp 0x588601
call edx
add eax, 0x10
mov dword [ebp - 0x7b0], eax
mov byte [ebp - 4], 0xe
call fcn.00418413
mov ecx, eax
test ecx, ecx
jne 0x588623
push 0x80004005
call fcn.00402650
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x588638
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
jmp 0x58863a
call edx
lea esi, [eax + 0x10]
mov dword [ebp - 0x7e8], esi
mov dword [ebp - 0x7d8], 0
mov dword [ebp - 0x7d4], 0
mov dword [ebp - 0x7d0], 0
push 0x20
lea ecx, [ebp - 0x7d8]
mov byte [ebp - 4], 0x10
call fcn.00408d40
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
lea ecx, [ebp - 0x80c]
mov dword [ebp - 0x80c], 0
push ecx
push eax
call dword [sym.imp.SHELL32.dll_CommandLineToArgvW]
xor ecx, ecx
mov edx, eax
mov dword [ebp - 0x768], edx
mov dword [ebp - 0x79c], ecx
cmp dword [ebp - 0x80c], ecx
jle 0x588f19
mov esi, dword [ebp - 0x788]
push dword [edx + ecx*4]
lea ecx, [ebp - 0x76c]
call fcn.00403280
mov byte [ebp - 4], 0x11
mov eax, dword [ebp - 0x76c]
mov ebx, dword [eax - 0xc]
test ebx, ebx
jne 0x588722
lea ecx, [eax - 0x10]
mov byte [ebp - 4], 0x10
or eax, 0xffffffff
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x588eed
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov ebx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x588719
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov ebx, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x588719
mov ebx, dword [sym.imp.KERNEL32.dll_HeapFree]
push 0
push dword [edx + 4]
call ebx
jmp 0x588eed
mov ecx, edx
call ebx
jmp 0x588eed
js 0x588f30
movzx edx, word [eax]
cmp edx, 0x2d
je 0x588783
test ebx, ebx
js 0x588f30
cmp edx, 0x2f
je 0x588783
lea ecx, [eax - 0x10]
mov byte [ebp - 4], 0x10
or eax, 0xffffffff
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x588eed
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov ebx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x588719
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov ebx, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x588719
push 0
push dword [edx + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
jmp 0x588eed
mov ecx, 1
mov dword [ebp - 0x778], ecx
cmp ebx, ecx
jge 0x58879e
mov ecx, ebx
mov dword [ebp - 0x778], ecx
test ecx, ecx
jle 0x588802
sub ebx, ecx
cmp dword [eax - 4], 1
jle 0x5887c0
push dword [eax - 0xc]
lea ecx, [ebp - 0x76c]
call fcn.00402d90
mov eax, dword [ebp - 0x76c]
mov ecx, dword [ebp - 0x778]
lea edx, [ebx*2 + 2]
push edx
lea ecx, [eax + ecx*2]
push ecx
push edx
push eax
call fcn.00403900
add esp, 0x10
test ebx, ebx
js 0x588f30
mov eax, dword [ebp - 0x76c]
cmp ebx, dword [eax - 8]
jg 0x588f30
mov dword [eax - 0xc], ebx
xor ecx, ecx
mov eax, dword [ebp - 0x76c]
mov word [eax + ebx*2], cx
mov eax, dword [ebp - 0x76c]
cmp dword [eax - 0xc], 0
jl 0x588f30
push str.StiDevice:
push eax
call fcn.00546eba
mov ecx, eax
add esp, 8
mov eax, dword [ebp - 0x76c]
test ecx, ecx
je 0x588997
sub ecx, eax
sar ecx, 1
jne 0x588997
push str.StiDevice:
lea ecx, [ebp - 0x794]
call fcn.00403280
mov ecx, dword [ebp - 0x76c]
or ebx, 0xffffffff
mov eax, dword [eax]
mov ecx, dword [ecx - 0xc]
sub ecx, dword [eax - 0xc]
mov eax, ebx
mov dword [ebp - 0x778], ecx
mov ecx, dword [ebp - 0x794]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x5888c5
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov esi, dword [eax + 4]
mov dword [ebp - 0x774], esi
mov esi, dword [ebp - 0x788]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x5888bd
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov edi, dword [eax + 4]
mov dword [ebp - 0x774], edi
mov edi, dword [ebp - 0x78c]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x5888b3
push 0
push dword [edx + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
jmp 0x5888c5
mov ecx, edx
call dword [ebp - 0x774]
jmp 0x5888c5
mov ecx, edx
call dword [ebp - 0x774]
push dword [ebp - 0x778]
lea eax, [ebp - 0x790]
push eax
lea ecx, [ebp - 0x76c]
call fcn.00408960
mov byte [ebp - 4], 0x12
lea ecx, [edi - 0x10]
mov eax, dword [eax]
mov dword [ebp - 0x778], eax
mov dword [ebp - 0x774], ecx
lea edx, [eax - 0x10]
cmp edx, ecx
je 0x588941
cmp dword [ecx + 0xc], 0
jl 0x58892c
mov eax, dword [edx]
cmp eax, dword [ecx]
jne 0x588926
push edx
call fcn.004035b0
mov ecx, dword [ebp - 0x774]
add esp, 4
mov edi, eax
call fcn.00402670
add edi, 0x10
mov dword [ebp - 0x78c], edi
jmp 0x588941
mov eax, dword [ebp - 0x778]
push dword [eax - 0xc]
lea ecx, [ebp - 0x78c]
push eax
call fcn.00403620
mov edi, dword [ebp - 0x78c]
mov byte [ebp - 4], 0x11
mov eax, ebx
mov ecx, dword [ebp - 0x790]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg case.0x588e06.101
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov ebx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x58898e
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov ebx, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x58898e
mov ebx, dword [sym.imp.KERNEL32.dll_HeapFree]
push 0
push dword [edx + 4]
call ebx
jmp 0x588e82
mov ecx, edx
call ebx
jmp case.0x588e06.101
cmp dword [eax - 0xc], 0
jl 0x588f30
push str.StiEvent:
push eax
call fcn.00546eba
mov ecx, eax
add esp, 8
mov eax, dword [ebp - 0x76c]
test ecx, ecx
je 0x588b2b
sub ecx, eax
sar ecx, 1
jne 0x588b2b
push str.StiEvent:
lea ecx, [ebp - 0x7ac]
call fcn.00403280
mov ecx, dword [ebp - 0x76c]
or ebx, 0xffffffff
mov eax, dword [eax]
mov ecx, dword [ecx - 0xc]
sub ecx, dword [eax - 0xc]
mov eax, ebx
mov dword [ebp - 0x778], ecx
mov ecx, dword [ebp - 0x7ac]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x588a5a
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov edi, dword [eax + 4]
mov dword [ebp - 0x774], edi
mov edi, dword [ebp - 0x78c]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x588a52
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov edi, dword [eax + 4]
mov dword [ebp - 0x774], edi
mov edi, dword [ebp - 0x78c]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x588a48
push 0
push dword [edx + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
jmp 0x588a5a
mov ecx, edx
call dword [ebp - 0x774]
jmp 0x588a5a
mov ecx, edx
call dword [ebp - 0x774]
push dword [ebp - 0x778]
lea eax, [ebp - 0x784]
push eax
lea ecx, [ebp - 0x76c]
call fcn.00408960
mov byte [ebp - 4], 0x13
lea ecx, [esi - 0x10]
mov eax, dword [eax]
mov dword [ebp - 0x778], eax
mov dword [ebp - 0x774], ecx
lea edx, [eax - 0x10]
cmp edx, ecx
je 0x588ad6
cmp dword [ecx + 0xc], 0
jl 0x588ac1
mov eax, dword [edx]
cmp eax, dword [ecx]
jne 0x588abb
push edx
call fcn.004035b0
mov ecx, dword [ebp - 0x774]
add esp, 4
mov esi, eax
call fcn.00402670
lea eax, [esi + 0x10]
mov dword [ebp - 0x788], eax
jmp 0x588ad0
mov eax, dword [ebp - 0x778]
push dword [eax - 0xc]
lea ecx, [ebp - 0x788]
push eax
call fcn.00403620
mov esi, dword [ebp - 0x788]
mov byte [ebp - 4], 0x11
mov eax, ebx
mov ecx, dword [ebp - 0x784]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg case.0x588e06.101
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov ebx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x58898e
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov ebx, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x58898e
mov ebx, dword [sym.imp.KERNEL32.dll_HeapFree]
push 0
push dword [edx + 4]
call ebx
jmp 0x588e82
cmp dword [eax - 0xc], 0
jl 0x588f30
push str.NetDevice:
push eax
call fcn.00546eba
mov ecx, eax
add esp, 8
mov eax, dword [ebp - 0x76c]
test ecx, ecx
je 0x588bb1
sub ecx, eax
sar ecx, 1
jne 0x588bb1
push str.NetDevice:
lea ecx, [ebp - 0x824]
call fcn.00403280
mov ecx, dword [ebp - 0x76c]
mov eax, dword [eax]
mov ebx, dword [ecx - 0xc]
lea ecx, [ebp - 0x824]
sub ebx, dword [eax - 0xc]
call fcn.00402b90
push ebx
lea eax, [ebp - 0x828]
push eax
lea ecx, [ebp - 0x76c]
call fcn.00408960
push eax
lea ecx, [ebp - 0x7b8]
mov byte [ebp - 4], 0x14
call fcn.00403220
lea ecx, [ebp - 0x828]
call fcn.00402b90
jmp case.0x588e06.101
cmp dword [eax - 0xc], 0
jl 0x588f30
push str.NetEvent:
push eax
call fcn.00546eba
mov ecx, eax
add esp, 8
mov eax, dword [ebp - 0x76c]
test ecx, ecx
je 0x588c37
sub ecx, eax
sar ecx, 1
jne 0x588c37
push str.NetEvent:
lea ecx, [ebp - 0x82c]
call fcn.00403280
mov ecx, dword [ebp - 0x76c]
mov eax, dword [eax]
mov ebx, dword [ecx - 0xc]
lea ecx, [ebp - 0x82c]
sub ebx, dword [eax - 0xc]
call fcn.00402b90
push ebx
lea eax, [ebp - 0x830]
push eax
lea ecx, [ebp - 0x76c]
call fcn.00408960
push eax
lea ecx, [ebp - 0x7b4]
mov byte [ebp - 4], 0x15
call fcn.00403220
lea ecx, [ebp - 0x830]
call fcn.00402b90
jmp case.0x588e06.101
cmp dword [eax - 0xc], 0
jl 0x588f30
push str.NetDSName:
push eax
call fcn.00546eba
mov ecx, eax
add esp, 8
mov eax, dword [ebp - 0x76c]
test ecx, ecx
je 0x588cbd
sub ecx, eax
sar ecx, 1
jne 0x588cbd
push str.NetDSName:
lea ecx, [ebp - 0x834]
call fcn.00403280
mov ecx, dword [ebp - 0x76c]
mov eax, dword [eax]
mov ebx, dword [ecx - 0xc]
lea ecx, [ebp - 0x834]
sub ebx, dword [eax - 0xc]
call fcn.00402b90
push ebx
lea eax, [ebp - 0x81c]
push eax
lea ecx, [ebp - 0x76c]
call fcn.00408960
push eax
lea ecx, [ebp - 0x7a4]
mov byte [ebp - 4], 0x16
call fcn.00403220
lea ecx, [ebp - 0x81c]
call fcn.00402b90
jmp case.0x588e06.101
cmp dword [eax - 0xc], 0
jl 0x588f30
push str.NetAddress:
push eax
call fcn.00546eba
mov ecx, eax
add esp, 8
mov eax, dword [ebp - 0x76c]
test ecx, ecx
je 0x588d43
sub ecx, eax
sar ecx, 1
jne 0x588d43
push str.NetAddress:
lea ecx, [ebp - 0x820]
call fcn.00403280
mov ecx, dword [ebp - 0x76c]
mov eax, dword [eax]
mov ebx, dword [ecx - 0xc]
lea ecx, [ebp - 0x820]
sub ebx, dword [eax - 0xc]
call fcn.00402b90
push ebx
lea eax, [ebp - 0x838]
push eax
lea ecx, [ebp - 0x76c]
call fcn.00408960
push eax
lea ecx, [ebp - 0x7b0]
mov byte [ebp - 4], 0x17
call fcn.00403220
lea ecx, [ebp - 0x838]
call fcn.00402b90
jmp case.0x588e06.101
cmp dword [eax - 0xc], 0
jl 0x588f30
push str.NetINTData:
push eax
call fcn.00546eba
mov ecx, eax
add esp, 8
mov eax, dword [ebp - 0x76c]
test ecx, ecx
je 0x588dc3
sub ecx, eax
sar ecx, 1
jne 0x588dc3
push str.NetINTData:
lea ecx, [ebp - 0x808]
call fcn.00403280
mov ecx, dword [ebp - 0x76c]
mov eax, dword [eax]
mov ebx, dword [ecx - 0xc]
lea ecx, [ebp - 0x808]
sub ebx, dword [eax - 0xc]
call fcn.00402b90
push ebx
lea eax, [ebp - 0x14]
push eax
lea ecx, [ebp - 0x76c]
call fcn.00408960
push eax
lea ecx, [ebp - 0x7e8]
mov byte [ebp - 4], 0x18
call fcn.00403220
lea ecx, [ebp - 0x14]
call fcn.00402b90
jmp case.0x588e06.101
cmp dword [eax - 0xc], 0
jl 0x588f30
movzx ebx, word [eax]
lea ecx, [ebp - 0x76c]
push 1
push 0
call fcn.00408b40
push ecx
lea ecx, [ebp - 0x76c]
call fcn.00408a00
push ebx
call fcn.0054cce1
movzx eax, ax
add esp, 4
add eax, 0xffffff9c
cmp eax, 0x16
ja case.0x588e06.101
movzx eax, byte [eax + 0x58ad08]
jmp dword [eax*4 + 0x58ace0]
lea ecx, [ebp - 0x7a8]
jmp 0x588e70
lea ecx, [ebp - 0x770]
jmp 0x588e70
xor edx, edx
lea ecx, [ebp - 0x76c]
call fcn.005b0a70
push dword [ebp - 0x76c]
call dword [sym.imp.SHLWAPI.dll_PathIsDirectoryW]
test eax, eax
je case.0x588e06.101
lea ecx, [ebp - 0x7cc]
jmp 0x588e70
lea ecx, [ebp - 0x798]
jmp 0x588e70
lea ecx, [ebp - 0x7c8]
jmp 0x588e70
lea ecx, [ebp - 0x7c4]
jmp 0x588e70
lea ecx, [ebp - 0x7c0]
jmp 0x588e70
lea ecx, [ebp - 0x7bc]
jmp 0x588e70
lea ecx, [ebp - 0x780]
lea eax, [ebp - 0x76c]
push eax
call fcn.00403220
mov ebx, dword [sym.imp.KERNEL32.dll_HeapFree]
mov byte [ebp - 4], 0x10
or eax, 0xffffffff
mov ecx, dword [ebp - 0x76c]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x588eed
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov edi, dword [eax + 4]
mov dword [ebp - 0x774], edi
mov edi, dword [ebp - 0x78c]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x588ee5
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov esi, dword [eax + 4]
mov dword [ebp - 0x774], esi
mov esi, dword [ebp - 0x788]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x588edb
push 0
push dword [edx + 4]
call ebx
jmp 0x588eed
mov ecx, edx
call dword [ebp - 0x774]
jmp 0x588eed
mov ecx, edx
call dword [ebp - 0x774]
mov ecx, dword [ebp - 0x79c]
inc ecx
mov dword [ebp - 0x79c], ecx
cmp ecx, dword [ebp - 0x80c]
jge 0x588f0d
mov edx, dword [ebp - 0x768]
jmp 0x5886b2
mov esi, dword [ebp - 0x7e8]
mov ebx, dword [ebp - 0x780]
mov eax, dword [ebx - 0xc]
mov dword [ebp - 0x768], eax
test eax, eax
je 0x5899fb
mov edi, eax
test edi, edi
jns 0x588f3a
push 0x80070057
call fcn.00402650
mov eax, dword [ebx - 8]
mov ecx, 1
sub ecx, dword [ebx - 4]
sub eax, edi
or eax, ecx
jge 0x588f5d
push edi
lea ecx, [ebp - 0x780]
call fcn.00402cf0
mov ebx, dword [ebp - 0x780]
lea eax, [edi + 1]
push eax
push ebx
call fcn.0054e051
add esp, 8
cmp edi, dword [ebx - 8]
jg 0x588f30
xor eax, eax
mov dword [ebx - 0xc], edi
mov word [ebx + edi*2], ax
mov ecx, str.uninstall
mov eax, ebx
nop
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x588fa6
test dx, dx
je 0x588fa2
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x588fa6
add eax, 4
add ecx, 4
test dx, dx
jne 0x588f80
xor eax, eax
jmp 0x588fab
sbb eax, eax
or eax, 1
test eax, eax
jne 0x5892d5
mov eax, dword [ebp - 0x7a8]
mov ecx, dword [eax - 0xc]
test ecx, ecx
je 0x588fed
mov edx, dword [0x643be0]
test edx, edx
je 0x588fed
inc ecx
push ecx
push eax
xor eax, eax
cmp dword [ebp - 0x77c], 0x9fbf1
push 0x20001
setne al
dec eax
and eax, 4
push dword [eax + 0x644028]
call edx
mov ecx, dword [0x643bfc]
mov edi, dword [ebp - 0x770]
test ecx, ecx
je 0x58901b
xor eax, eax
cmp dword [ebp - 0x77c], 0x9fbf1
push 0
setne al
dec eax
and eax, 4
push edi
push dword [eax + 0x644028]
call ecx
cmp dword [edi - 0xc], 0
jne 0x589299
call fcn.00418413
mov ecx, eax
test ecx, ecx
jne 0x58903a
push 0x80004005
call fcn.00402650
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x58904f
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
jmp 0x589051
call edx
lea edi, [eax + 0x10]
mov dword [ebp - 0x790], edi
mov byte [ebp - 4], 0x19
mov ecx, 1
mov eax, dword [edi - 8]
sub ecx, dword [edi - 4]
sub eax, 0x104
or eax, ecx
jge 0x589088
push 0x104
lea ecx, [ebp - 0x790]
call fcn.00402cf0
mov edi, dword [ebp - 0x790]
push 0x104
push edi
push str._APPDATA_CanonIJ_Scan_Utility
call dword [sym.imp.KERNEL32.dll_ExpandEnvironmentStringsW]
push dword [edi - 8]
push edi
call fcn.0054c667
add esp, 8
test eax, eax
js 0x588f30
cmp eax, dword [edi - 8]
jg 0x588f30
mov dword [edi - 0xc], eax
xor ecx, ecx
push edi
mov word [edi + eax*2], cx
lea eax, [ebp - 0x224]
push 0x105
push eax
call fcn.0054cb78
mov eax, dword [edi - 0xc]
add esp, 0xc
lea eax, [eax*2 + 2]
cmp eax, 0x20a
jae 0x5892d0
xor ecx, ecx
mov dword [ebp - 0x240], 3
mov word [ebp + eax - 0x224], cx
xor eax, eax
mov dword [ebp - 0x234], eax
mov dword [ebp - 0x230], eax
mov dword [ebp - 0x22c], eax
mov word [ebp - 0x228], ax
mov dword [ebp - 0x244], eax
lea eax, [ebp - 0x224]
mov dword [ebp - 0x23c], eax
mov eax, 0x414
mov word [ebp - 0x234], ax
lea eax, [ebp - 0x244]
push eax
mov dword [ebp - 0x238], ecx
call dword [sym.imp.SHELL32.dll_SHFileOperationW]
call fcn.00418413
mov ecx, eax
test ecx, ecx
jne 0x58915e
push 0x80004005
call fcn.00402650
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x589173
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
jmp 0x589175
call edx
lea ebx, [eax + 0x10]
mov dword [ebp - 0x778], ebx
mov byte [ebp - 4], 0x1a
mov ecx, 1
mov eax, dword [ebx - 8]
sub ecx, dword [ebx - 4]
sub eax, 0x104
or eax, ecx
jge 0x5891ac
push 0x104
lea ecx, [ebp - 0x778]
call fcn.00402cf0
mov ebx, dword [ebp - 0x778]
push 0x104
push ebx
push str._APPDATA_Canon
call dword [sym.imp.KERNEL32.dll_ExpandEnvironmentStringsW]
push dword [ebx - 8]
push ebx
call fcn.0054c667
add esp, 8
test eax, eax
js 0x588f30
cmp eax, dword [ebx - 8]
jg 0x588f30
xor ecx, ecx
mov dword [ebx - 0xc], eax
push ebx
mov word [ebx + eax*2], cx
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
lea ecx, [ebx - 0x10]
mov byte [ebp - 4], 0x19
or ebx, 0xffffffff
mov eax, ebx
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x589251
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov edx, dword [eax + 4]
mov dword [ebp - 0x768], edx
mov edx, dword [ecx]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x589249
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov edi, dword [eax + 4]
mov dword [ebp - 0x768], edi
mov edi, dword [ebp - 0x790]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x58923f
push 0
push dword [edx + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
jmp 0x589251
mov ecx, edx
call dword [ebp - 0x768]
jmp 0x589251
mov ecx, edx
call dword [ebp - 0x768]
mov byte [ebp - 4], 0x10
add edi, 0xfffffff0
mov eax, ebx
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x58928d
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x5892cc
mov ecx, dword [ecx + 4]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x5892cc
push 0
push dword [ecx + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov ebx, dword [ebp - 0x780]
mov edi, dword [ebp - 0x770]
mov byte [ebp - 4], 0xf
mov ecx, dword [ebp - 0x7d8]
test ecx, ecx
je 0x5893ab
mov eax, dword [ebp - 0x7d0]
sub eax, ecx
cmp eax, 0x1000
jb 0x5893a2
test cl, 0x1f
je 0x58937e
call fcn.0054a598
call edx
jmp 0x58928d
call fcn.00544ee6
mov ecx, str.install
mov eax, ebx
lea esp, [esp]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x589306
test dx, dx
je 0x589302
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x589306
add eax, 4
add ecx, 4
test dx, dx
jne 0x5892e0
xor eax, eax
jmp 0x58930b
sbb eax, eax
or eax, 1
test eax, eax
je 0x589293
mov ecx, str.update
mov eax, ebx
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x58933c
test dx, dx
je 0x589338
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x58933c
add eax, 4
add ecx, 4
test dx, dx
jne 0x589316
xor eax, eax
jmp 0x589341
sbb eax, eax
or eax, 1
test eax, eax
jne 0x589293
mov ecx, dword [0x643bfc]
mov edi, dword [ebp - 0x770]
test ecx, ecx
je 0x589299
cmp dword [ebp - 0x77c], 0x9fbf1
push 1
setne al
dec eax
and eax, 4
push edi
push dword [eax + 0x644028]
call ecx
jmp 0x589299
mov eax, dword [ecx - 4]
cmp eax, ecx
jb 0x58938a
call fcn.0054a598
sub ecx, eax
cmp ecx, 4
jae 0x589396
call fcn.0054a598
cmp ecx, 0x23
jbe 0x5893a0
call fcn.0054a598
mov ecx, eax
push ecx
call fcn.0040e5b0
add esp, 4
lea ecx, [esi - 0x10]
mov byte [ebp - 4], 0xe
or esi, 0xffffffff
mov eax, esi
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x589416
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov edi, dword [eax + 4]
mov dword [ebp - 0x768], edi
mov edi, dword [ebp - 0x770]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x58940e
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov ebx, dword [eax + 4]
mov dword [ebp - 0x768], ebx
mov ebx, dword [ebp - 0x780]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x589404
push 0
push dword [edx + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
jmp 0x589416
mov ecx, edx
call dword [ebp - 0x768]
jmp 0x589416
mov ecx, edx
call dword [ebp - 0x768]
mov byte [ebp - 4], 0xd
mov eax, esi
mov ecx, dword [ebp - 0x7b0]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x589484
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov ebx, dword [eax + 4]
mov dword [ebp - 0x768], ebx
mov ebx, dword [ebp - 0x780]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x58947c
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov edi, dword [eax + 4]
mov dword [ebp - 0x768], edi
mov edi, dword [ebp - 0x770]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x589472
push 0
push dword [edx + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
jmp 0x589484
mov ecx, edx
call dword [ebp - 0x768]
jmp 0x589484
mov ecx, edx
call dword [ebp - 0x768]
mov byte [ebp - 4], 0xc
mov eax, esi
mov ecx, dword [ebp - 0x7a4]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x5894f2
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov edi, dword [eax + 4]
mov dword [ebp - 0x768], edi
mov edi, dword [ebp - 0x770]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x5894ea
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov ebx, dword [eax + 4]
mov dword [ebp - 0x768], ebx
mov ebx, dword [ebp - 0x780]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x5894e0
push 0
push dword [edx + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
jmp 0x5894f2
mov ecx, edx
call dword [ebp - 0x768]
jmp 0x5894f2
mov ecx, edx
call dword [ebp - 0x768]
mov byte [ebp - 4], 0xb
mov eax, esi
mov ecx, dword [ebp - 0x7b4]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x589560
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov ebx, dword [eax + 4]
mov dword [ebp - 0x768], ebx
mov ebx, dword [ebp - 0x780]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x589558
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov edi, dword [eax + 4]
mov dword [ebp - 0x768], edi
mov edi, dword [ebp - 0x770]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x58954e
push 0
push dword [edx + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
jmp 0x589560
mov ecx, edx
call dword [ebp - 0x768]
jmp 0x589560
mov ecx, edx
call dword [ebp - 0x768]
mov byte [ebp - 4], 0xa
mov eax, esi
mov ecx, dword [ebp - 0x7b8]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x5895ce
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov edi, dword [eax + 4]
mov dword [ebp - 0x768], edi
mov edi, dword [ebp - 0x770]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x5895c6
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov ebx, dword [eax + 4]
mov dword [ebp - 0x768], ebx
mov ebx, dword [ebp - 0x780]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x5895bc
push 0
push dword [edx + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
jmp 0x5895ce
mov ecx, edx
call dword [ebp - 0x768]
jmp 0x5895ce
mov ecx, edx
call dword [ebp - 0x768]
mov byte [ebp - 4], 9
mov eax, esi
mov ecx, dword [ebp - 0x788]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x58963c
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov ebx, dword [eax + 4]
mov dword [ebp - 0x768], ebx
mov ebx, dword [ebp - 0x780]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x589634
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov edi, dword [eax + 4]
mov dword [ebp - 0x768], edi
mov edi, dword [ebp - 0x770]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x58962a
push 0
push dword [edx + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
jmp 0x58963c
mov ecx, edx
call dword [ebp - 0x768]
jmp 0x58963c
mov ecx, edx
call dword [ebp - 0x768]
mov byte [ebp - 4], 8
mov eax, esi
mov ecx, dword [ebp - 0x78c]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x5896aa
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov edi, dword [eax + 4]
mov dword [ebp - 0x768], edi
mov edi, dword [ebp - 0x770]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x5896a2
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov ebx, dword [eax + 4]
mov dword [ebp - 0x768], ebx
mov ebx, dword [ebp - 0x780]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x589698
push 0
push dword [edx + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
jmp 0x5896aa
mov ecx, edx
call dword [ebp - 0x768]
jmp 0x5896aa
mov ecx, edx
call dword [ebp - 0x768]
mov byte [ebp - 4], 7
add ebx, 0xfffffff0
mov eax, esi
lock xadd dword [ebx + 0xc], eax
dec eax
test eax, eax
jg 0x5896ec
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x5896ea
mov ecx, dword [ecx + 4]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x5896ea
mov ebx, dword [sym.imp.KERNEL32.dll_HeapFree]
push 0
push dword [ecx + 4]
call ebx
jmp 0x5896f2
call edx
mov ebx, dword [sym.imp.KERNEL32.dll_HeapFree]
mov byte [ebp - 4], 6
mov eax, esi
mov ecx, dword [ebp - 0x7bc]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x58975c
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov edi, dword [eax + 4]
mov dword [ebp - 0x768], edi
mov edi, dword [ebp - 0x770]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x589754
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov edi, dword [eax + 4]
mov dword [ebp - 0x768], edi
mov edi, dword [ebp - 0x770]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x58974a
push 0
push dword [edx + 4]
call ebx
jmp 0x58975c
mov ecx, edx
call dword [ebp - 0x768]
jmp 0x58975c
mov ecx, edx
call dword [ebp - 0x768]
mov byte [ebp - 4], 5
mov eax, esi
mov ecx, dword [ebp - 0x7c0]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x5897c6
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov edi, dword [eax + 4]
mov dword [ebp - 0x768], edi
mov edi, dword [ebp - 0x770]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x5897be
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov edi, dword [eax + 4]
mov dword [ebp - 0x768], edi
mov edi, dword [ebp - 0x770]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x5897b4
push 0
push dword [edx + 4]
call ebx
jmp 0x5897c6
mov ecx, edx
call dword [ebp - 0x768]
jmp 0x5897c6
mov ecx, edx
call dword [ebp - 0x768]
mov byte [ebp - 4], 4
mov eax, esi
mov ecx, dword [ebp - 0x7c4]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x589830
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov edi, dword [eax + 4]
mov dword [ebp - 0x768], edi
mov edi, dword [ebp - 0x770]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x589828
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov edi, dword [eax + 4]
mov dword [ebp - 0x768], edi
mov edi, dword [ebp - 0x770]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x58981e
push 0
push dword [edx + 4]
call ebx
jmp 0x589830
mov ecx, edx
call dword [ebp - 0x768]
jmp 0x589830
mov ecx, edx
call dword [ebp - 0x768]
mov byte [ebp - 4], 3
mov eax, esi
mov ecx, dword [ebp - 0x7c8]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x58989a
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov edi, dword [eax + 4]
mov dword [ebp - 0x768], edi
mov edi, dword [ebp - 0x770]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x589892
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov edi, dword [eax + 4]
mov dword [ebp - 0x768], edi
mov edi, dword [ebp - 0x770]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x589888
push 0
push dword [edx + 4]
call ebx
jmp 0x58989a
mov ecx, edx
call dword [ebp - 0x768]
jmp 0x58989a
mov ecx, edx
call dword [ebp - 0x768]
mov byte [ebp - 4], 2
mov eax, esi
mov ecx, dword [ebp - 0x798]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x589904
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov edi, dword [eax + 4]
mov dword [ebp - 0x768], edi
mov edi, dword [ebp - 0x770]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x5898fc
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov edi, dword [eax + 4]
mov dword [ebp - 0x768], edi
mov edi, dword [ebp - 0x770]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x5898f2
push 0
push dword [edx + 4]
call ebx
jmp 0x589904
mov ecx, edx
call dword [ebp - 0x768]
jmp 0x589904
mov ecx, edx
call dword [ebp - 0x768]
mov byte [ebp - 4], 1
mov eax, esi
mov ecx, dword [ebp - 0x7cc]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x58996e
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov edi, dword [eax + 4]
mov dword [ebp - 0x768], edi
mov edi, dword [ebp - 0x770]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x589966
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov edi, dword [eax + 4]
mov dword [ebp - 0x768], edi
mov edi, dword [ebp - 0x770]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x58995c
push 0
push dword [edx + 4]
call ebx
jmp 0x58996e
mov ecx, edx
call dword [ebp - 0x768]
jmp 0x58996e
mov ecx, edx
call dword [ebp - 0x768]
mov byte [ebp - 4], 0
add edi, 0xfffffff0
mov eax, esi
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x5899aa
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x5899a8
mov ecx, dword [ecx + 4]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x5899a8
push 0
push dword [ecx + 4]
call ebx
jmp 0x5899aa
call edx
mov dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0x7a8]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], esi
dec esi
test esi, esi
jg 0x5899f4
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x5899f0
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x5899f0
push 0
push dword [edx + 4]
call ebx
xor eax, eax
jmp 0x58acc1
mov ecx, edx
call esi
xor eax, eax
jmp 0x58acc1
cmp dword [edi - 0xc], 0
je 0x589efd
mov eax, dword [ebp - 0x788]
cmp dword [eax - 0xc], 0
je 0x589efd
lea ecx, [ebp - 0x774]
call fcn.00402be0
lea ecx, [ebp - 0x790]
call fcn.00402be0
push 0x10
push 0
push 0
push 0x604200
mov byte [ebp - 4], 0x1c
call dword [sym.imp.SETUPAPI.dll_SetupDiGetClassDevsW]
xor ecx, ecx
mov dword [ebp - 0x79c], eax
mov dword [ebp - 0x240], ecx
xor ebx, ebx
mov dword [ebp - 0x23c], ecx
mov dword [ebp - 0x238], ecx
mov dword [ebp - 0x234], ecx
mov dword [ebp - 0x230], ecx
mov dword [ebp - 0x22c], ecx
lea ecx, [ebp - 0x244]
push ecx
push ebx
push eax
mov dword [ebp - 0x244], 0x1c
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInfo]
test eax, eax
je 0x589bee
nop
lea eax, [ebp - 0x790]
push eax
push 9
lea edx, [ebp - 0x244]
lea ecx, [ebp - 0x79c]
call fcn.005adae0
add esp, 8
call fcn.00418413
test eax, eax
je 0x5882bf
mov ecx, dword [eax]
mov edx, dword [ecx + 0xc]
cmp ecx, vtable.ATL::CAtlStringMgr.0
jne 0x589ad0
lock inc dword [eax + 0x14]
lea esi, [eax + 8]
jmp 0x589ad6
mov ecx, eax
call edx
mov esi, eax
add esi, 0x10
mov dword [ebp - 0x7ac], esi
lea eax, [ebp - 0x790]
mov byte [ebp - 4], 0x1d
push eax
lea eax, [ebp - 0x778]
push str.SYSTEMCurrentControlSetControlClass_
push eax
call fcn.004086f0
add esp, 0xc
lea eax, [ebp - 0x784]
mov byte [ebp - 4], 0x1e
push eax
push 0x20019
push 0
push dword [ebp - 0x778]
mov dword [ebp - 0x784], 0
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
mov eax, dword [ebp - 0x784]
test eax, eax
je 0x589b57
lea ecx, [ebp - 0x7ac]
mov edx, str.DeviceID
push ecx
mov ecx, eax
call fcn.005b0e00
mov esi, dword [ebp - 0x7ac]
add esp, 4
mov eax, dword [ebp - 0x784]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [ebp - 0x784], 0
test esi, esi
je 0x5882bf
push esi
push edi
call fcn.0054dd33
add esp, 8
test eax, eax
je 0x589bb7
lea ecx, [ebp - 0x778]
call fcn.00402b90
lea ecx, [ebp - 0x7ac]
mov byte [ebp - 4], 0x1c
call fcn.00402b90
lea eax, [ebp - 0x244]
inc ebx
push eax
push ebx
push dword [ebp - 0x79c]
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInfo]
test eax, eax
jne 0x589a90
jmp 0x589bee
lea eax, [ebp - 0x774]
push eax
push 0
lea edx, [ebp - 0x244]
lea ecx, [ebp - 0x79c]
call fcn.005adae0
add esp, 8
lea ecx, [ebp - 0x778]
call fcn.00402b90
lea ecx, [ebp - 0x7ac]
mov byte [ebp - 4], 0x1c
call fcn.00402b90
mov eax, dword [ebp - 0x774]
mov ebx, dword [ebp - 0x770]
add ebx, 0xfffffff0
lea edi, [eax - 0x10]
mov dword [ebp - 0x79c], edi
cmp edi, ebx
je 0x589c42
cmp dword [ebx + 0xc], 0
jl 0x589c33
mov edx, dword [edi]
cmp edx, dword [ebx]
jne 0x589c33
push edi
call fcn.004035b0
add esp, 4
mov ecx, ebx
mov esi, eax
call fcn.00402670
lea eax, [esi + 0x10]
mov dword [ebp - 0x770], eax
jmp 0x589c42
push dword [eax - 0xc]
lea ecx, [ebp - 0x770]
push eax
call fcn.00403620
lea eax, [ebp - 0x790]
push eax
lea eax, [ebp - 0x768]
push str.SYSTEMCurrentControlSetControlClass_
push eax
call fcn.004086f0
push str.DeviceData
push eax
lea eax, [ebp - 0x794]
mov byte [ebp - 4], 0x1f
push eax
call fcn.004087e0
add esp, 0x18
mov byte [ebp - 4], 0x21
or ebx, 0xffffffff
mov ecx, dword [ebp - 0x768]
mov eax, ebx
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x589cc0
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x589cbc
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x589cbc
mov esi, dword [sym.imp.KERNEL32.dll_HeapFree]
push 0
push dword [edx + 4]
call esi
jmp 0x589cc6
mov ecx, edx
call esi
mov esi, dword [sym.imp.KERNEL32.dll_HeapFree]
lea eax, [ebp - 0x76c]
mov dword [ebp - 0x76c], 0
push eax
push 0x20019
push 0
push dword [ebp - 0x794]
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
mov eax, dword [ebp - 0x76c]
mov dword [ebp - 0x14], eax
test eax, eax
je 0x589dd1
lea ecx, [ebp - 0x778]
mov dword [ebp - 0x778], 0
push ecx
push 0
push 0
push 0
push str.PushEventDataMFP
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x589d5b
push dword [ebp - 0x778]
lea ecx, [ebp - 0x7d8]
call fcn.0040cd70
lea eax, [ebp - 0x778]
push eax
push dword [ebp - 0x7d8]
push 0
push 0
push str.PushEventDataMFP
push dword [ebp - 0x14]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
je 0x589dbb
mov eax, dword [ebp - 0x76c]
lea ecx, [ebp - 0x778]
push ecx
push 0
push 0
push 0
push str.PushEventDataSFS
push eax
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x778], 0
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x589dbb
push dword [ebp - 0x778]
lea ecx, [ebp - 0x7d8]
call fcn.0040cd70
lea eax, [ebp - 0x778]
push eax
push dword [ebp - 0x7d8]
push 0
push 0
push str.PushEventDataSFS
push dword [ebp - 0x14]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
push dword [ebp - 0x76c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [ebp - 0x76c], 0
lea ecx, [ebp - 0x7d8]
call fcn.005af970
push 8
push str.pushscan
lea ecx, [ebp - 0x798]
call fcn.00403620
mov byte [ebp - 4], 0x1c
mov eax, ebx
mov ecx, dword [ebp - 0x794]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x589e54
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov edx, dword [eax + 4]
mov dword [ebp - 0x768], edx
mov edx, dword [ecx]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x589e4c
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov edi, dword [eax + 4]
mov dword [ebp - 0x768], edi
mov edi, dword [ebp - 0x79c]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x589e42
push 0
push dword [edx + 4]
call esi
jmp 0x589e54
mov ecx, edx
call dword [ebp - 0x768]
jmp 0x589e54
mov ecx, edx
call dword [ebp - 0x768]
mov byte [ebp - 4], 0x1b
mov eax, ebx
mov ecx, dword [ebp - 0x790]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x589eba
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov edx, dword [eax + 4]
mov dword [ebp - 0x768], edx
mov edx, dword [ecx]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x589eb2
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov edi, dword [eax + 4]
mov dword [ebp - 0x768], edi
mov edi, dword [ebp - 0x79c]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x589ea8
push 0
push dword [edx + 4]
call esi
jmp 0x589eba
mov ecx, edx
call dword [ebp - 0x768]
jmp 0x589eba
mov ecx, edx
call dword [ebp - 0x768]
mov byte [ebp - 4], 0x10
lock xadd dword [edi + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x58a019
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x589ef6
mov ecx, dword [ecx + 4]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x589ef6
push 0
push dword [ecx + 4]
call esi
jmp 0x58a019
call edx
jmp 0x58a019
mov eax, dword [ebp - 0x7b8]
cmp dword [eax - 0xc], 0
je 0x58a019
mov eax, dword [ebp - 0x7b4]
cmp dword [eax - 0xc], 0
je 0x58a019
mov eax, dword [ebp - 0x7a4]
cmp dword [eax - 0xc], 0
je 0x58a019
mov eax, dword [ebp - 0x7b0]
cmp dword [eax - 0xc], 0
je 0x58a019
cmp dword [esi - 0xc], 0
lea eax, [esi - 0xc]
mov dword [ebp - 0x794], eax
je 0x58a019
lea eax, [ebp - 0x7a4]
push eax
lea ecx, [ebp - 0x770]
call fcn.00403220
mov ecx, dword [ebp - 0x794]
xor ebx, ebx
mov eax, dword [ecx]
cdq
sub eax, edx
sar eax, 1
mov dword [ebp - 0x768], eax
test eax, eax
jle 0x589ffe
xor edi, edi
xor eax, eax
mov dword [ebp - 0x18], eax
mov word [ebp - 0x14], ax
test edi, edi
js 0x588f30
cmp edi, dword [ecx]
jg 0x588f30
mov ax, word [esi]
mov word [ebp - 0x18], ax
lea eax, [edi + 1]
test eax, eax
js 0x588f30
cmp eax, dword [ecx]
jg 0x588f30
mov ax, word [esi + 2]
mov word [ebp - 0x16], ax
xor eax, eax
push 0x10
push eax
mov word [ebp - 0x14], ax
lea eax, [ebp - 0x18]
push eax
call fcn.0054dcdb
add esp, 0xc
mov byte [ebp - 0x79d], al
lea eax, [ebp - 0x79d]
lea ecx, [ebp - 0x7d8]
push eax
call fcn.00408680
mov ecx, dword [ebp - 0x794]
inc ebx
add edi, 2
add esi, 4
cmp ebx, dword [ebp - 0x768]
jl 0x589f81
lea ecx, [ebp - 0x7d8]
call fcn.005af970
push str.pushscan
lea ecx, [ebp - 0x798]
call fcn.004031d0
mov dword [ebp - 0x7e4], 0
mov dword [ebp - 0x7e0], 0
mov dword [ebp - 0x7dc], 0
push 0x10
lea ecx, [ebp - 0x7e4]
mov byte [ebp - 4], 0x22
call fcn.00404eb0
mov ebx, dword [ebp - 0x798]
mov eax, dword [ebx - 0xc]
test eax, eax
je 0x58a523
js 0x58a25c
push str.error
push ebx
call fcn.00546eba
add esp, 8
test eax, eax
je 0x58a25c
sub eax, ebx
sar eax, 1
js 0x58a25c
push 8
lea eax, [ebp - 0x768]
push eax
lea ecx, [ebp - 0x798]
call fcn.00408960
push 0x10
push 0
push dword [eax]
call fcn.0054dcdb
add esp, 0xc
lea ecx, [ebp - 0x768]
mov esi, eax
call fcn.00402b90
test esi, 0xff0000
jne 0x58a169
push 0
lea ecx, [ebp - 0x764]
call fcn.00579d50
lea eax, [esi - 0xff01]
mov byte [ebp - 4], 0x23
cmp eax, 0xb
ja case.default.0x58a0d6
jmp dword [eax*4 + 0x58ad20]
push 0x1fa8
jmp 0x58a12f
push 0x1fa9
jmp 0x58a12f
push 0x1fa6
jmp 0x58a12f
push 0x1fa7
jmp 0x58a12f
push 0x1fb5
jmp 0x58a12f
push 0x1fb6
jmp 0x58a12f
push 0x1fb7
jmp 0x58a12f
push 0x1fb8
jmp 0x58a12f
push 0x1fb9
jmp 0x58a12f
push 0x1fba
jmp 0x58a12f
push 0x1fbb
jmp 0x58a12f
push 0x1fbc
lea ecx, [ebp - 0x764]
call fcn.00576490
mov eax, 0xff04
lea ecx, [ebp - 0x764]
cmp eax, esi
sbb eax, eax
and eax, 0xe
add eax, 0x23b3
mov dword [ebp - 0x590], eax
call fcn.00579670
lea ecx, [ebp - 0x764]
call fcn.005797f0
jmp 0x58a17e
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call fcn.0041065e
mov edx, esi
mov ecx, eax
call fcn.0056c650
mov ecx, dword [ebp - 0x7e4]
test ecx, ecx
je 0x58a19a
mov eax, dword [ebp - 0x7dc]
sub eax, ecx
sar eax, 2
push eax
push ecx
call fcn.00404e50
lea ecx, [ebp - 0x7d8]
call fcn.00408c70
lea ecx, [ebp - 0x7e8]
call fcn.00402b90
lea ecx, [ebp - 0x7b0]
call fcn.00402b90
lea ecx, [ebp - 0x7a4]
call fcn.00402b90
lea ecx, [ebp - 0x7b4]
call fcn.00402b90
lea ecx, [ebp - 0x7b8]
call fcn.00402b90
lea ecx, [ebp - 0x788]
call fcn.00402b90
lea ecx, [ebp - 0x78c]
call fcn.00402b90
lea ecx, [ebp - 0x780]
call fcn.00402b90
lea ecx, [ebp - 0x7bc]
call fcn.00402b90
lea ecx, [ebp - 0x7c0]
call fcn.00402b90
lea ecx, [ebp - 0x7c4]
call fcn.00402b90
lea ecx, [ebp - 0x7c8]
call fcn.00402b90
lea ecx, [ebp - 0x798]
call fcn.00402b90
lea ecx, [ebp - 0x7cc]
call fcn.00402b90
lea ecx, [ebp - 0x770]
call fcn.00402b90
lea ecx, [ebp - 0x7a8]
call fcn.00402b90
xor eax, eax
jmp 0x58acc1
mov dword [ebp - method.CList_struct_AFX_DYNAMIC_LAYOUT_ITEM___struct_AFX_DYNAMIC_LAYOUT_ITEM__.virtual_0], vtable.CMap_class_ATL::CStringT_wchar_t__class_StrTraitMFC_wchar_t__class_ATL::ChTraitsCRT_wchar_t_____wchar_t_const___int__int_.0
mov dword [ebp - 0x800], 0
mov dword [ebp - 0x7fc], 0x11
mov dword [ebp - 0x7f8], 0
mov dword [ebp - 0x7f4], 0
mov dword [ebp - 0x7f0], 0
mov dword [ebp - 0x7ec], 0xa
push str.preferences
lea ecx, [ebp - 0x804]
mov byte [ebp - 4], 0x24
call fcn.00409180
push str.mainoneclick
lea ecx, [ebp - 0x804]
mov dword [eax], 0xcfc
call fcn.00409180
push str.auto
lea ecx, [ebp - 0x804]
mov dword [eax], 0xce4
call fcn.00409180
push str.photo
lea ecx, [ebp - 0x804]
mov dword [eax], 0xce5
call fcn.00409180
push str.document
lea ecx, [ebp - 0x804]
mov dword [eax], 0xce6
call fcn.00409180
push str.copy
lea ecx, [ebp - 0x804]
mov dword [eax], 0xce7
call fcn.00409180
push str.custom
lea ecx, [ebp - 0x804]
mov dword [eax], 0xce8
call fcn.00409180
push str.stitch
lea ecx, [ebp - 0x804]
mov dword [eax], 0xceb
call fcn.00409180
push str.scangear
lea ecx, [ebp - 0x804]
mov dword [eax], 0xcea
call fcn.00409180
push 0x60dfd4
lea ecx, [ebp - 0x804]
mov dword [eax], 0xce9
call fcn.00409180
push 0x60dfdc
lea ecx, [ebp - 0x804]
mov dword [eax], 0xd0a
call fcn.00409180
push str.mail
lea ecx, [ebp - 0x804]
mov dword [eax], 0xd08
call fcn.00409180
push str.settings
lea ecx, [ebp - 0x804]
mov dword [eax], 0xd09
call fcn.00409180
push str.pushscan
lea ecx, [ebp - 0x804]
mov dword [eax], 0xcfb
call fcn.00409180
push str.mainoneclick
lea ecx, [ebp - 0x804]
mov dword [eax], 0xcec
call fcn.00409180
push str.pushscansettings
lea ecx, [ebp - 0x804]
mov dword [eax], 0xce4
call fcn.00409180
push str.silent
lea ecx, [ebp - 0x804]
mov dword [eax], 0xcfb
call fcn.00409180
push str.autopower
lea ecx, [ebp - 0x804]
mov dword [eax], 0xd03
call fcn.00409180
mov dword [eax], 0xd04
push str.none
lea ecx, [ebp - 0x804]
call fcn.00409180
push str.documentduplex
lea ecx, [ebp - 0x804]
mov dword [eax], 0xd07
call fcn.00409180
push str.pdfeditor
lea ecx, [ebp - 0x804]
mov dword [eax], 0xd11
call fcn.00409180
mov dword [eax], 0xec3
call fcn.00418413
push eax
lea ecx, [ebp - 0x76c]
call fcn.00402ca0
push 0x2c
xor esi, esi
mov byte [ebp - 4], 0x25
push esi
push ebx
lea eax, [ebp - 0x76c]
push eax
call fcn.004197b0
test eax, eax
je 0x58a4fb
nop
lea ecx, [ebp - 0x76c]
inc esi
call fcn.00408ab0
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x808]
push eax
push dword [ebp - 0x76c]
lea ecx, [ebp - 0x804]
call fcn.004092f0
test eax, eax
je 0x58a4e7
mov eax, dword [eax + 4]
lea ecx, [ebp - 0x7e4]
mov dword [ebp - 0x768], eax
lea eax, [ebp - 0x768]
push eax
call fcn.00403df0
push 0x2c
push esi
push ebx
lea eax, [ebp - 0x76c]
push eax
call fcn.004197b0
test eax, eax
jne 0x58a4a0
lea ecx, [ebp - 0x76c]
call fcn.00402b90
mov byte [ebp - 4], 0x26
lea ecx, [ebp - 0x804]
mov dword [ebp - method.CList_struct_AFX_DYNAMIC_LAYOUT_ITEM___struct_AFX_DYNAMIC_LAYOUT_ITEM__.virtual_0], vtable.CMap_class_ATL::CStringT_wchar_t__class_StrTraitMFC_wchar_t__class_ATL::ChTraitsCRT_wchar_t_____wchar_t_const___int__int_.0
call fcn.00409230
mov byte [ebp - 4], 0x22
mov eax, dword [ebp - 0x7e0]
mov ecx, dword [ebp - 0x7e4]
sub eax, ecx
cmp eax, 4
jae 0x58a558
lea eax, [ebp - 0x768]
mov dword [ebp - 0x7e0], ecx
push eax
lea ecx, [ebp - 0x7e4]
mov dword [ebp - 0x768], 0xce4
call fcn.00403df0
mov eax, dword [ebp - 0x7a8]
mov edx, dword [0x643be0]
mov ecx, dword [eax - 0xc]
test ecx, ecx
je 0x58a598
test edx, edx
je 0x58a598
inc ecx
push ecx
push eax
xor eax, eax
cmp dword [ebp - 0x77c], 0x9fbf1
push 0x20001
setne al
dec eax
and eax, 4
push dword [eax + 0x644028]
call edx
mov edx, dword [0x643be0]
mov ebx, dword [ebp - 0x770]
cmp dword [ebx - 0xc], 0
je 0x58a8c0
push ecx
mov esi, esp
lea edi, [ebx - 0x10]
push edi
mov dword [ebp - 0x768], esi
call fcn.004035b0
add esp, 4
lea ecx, [ebp - 0x774]
add eax, 0x10
xor edx, edx
mov dword [esi], eax
call fcn.005aded0
mov esi, esp
mov byte [ebp - 4], 0x27
push edi
mov dword [ebp - 0x768], esi
call fcn.004035b0
add esp, 4
lea ecx, [ebp - 0x794]
add eax, 0x10
mov edx, 1
mov dword [esi], eax
call fcn.005aded0
add esp, 4
mov byte [ebp - 4], 0x28
push dword [ebp - 0x774]
mov esi, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
call esi
test eax, eax
je 0x58a69f
push dword [ebp - 0x794]
call esi
test eax, eax
je 0x58a69f
mov ecx, dword [0x643be0]
mov esi, dword [ebp - 0x77c]
test ecx, ecx
je 0x58a658
mov eax, dword [ebx - 0xc]
inc eax
push eax
xor eax, eax
cmp esi, 0x9fbf1
push ebx
setne al
dec eax
and eax, 4
push 0x2000001
push dword [eax + 0x644028]
call ecx
mov eax, dword [0x643bf4]
test eax, eax
je 0x58a6ce
xor ebx, ebx
cmp esi, 0x9fbf1
push 0x2000001
setne bl
dec ebx
and ebx, 4
push 0x2000000
push dword [ebx + 0x644028]
call eax
mov eax, dword [0x643bf4]
test eax, eax
je 0x58a6ce
push 0x132e
push 0x10016
push dword [ebx + 0x644028]
call eax
jmp 0x58a6ce
mov ecx, dword [0x643bf4]
test ecx, ecx
je 0x58a6ce
xor eax, eax
cmp dword [ebp - 0x77c], 0x9fbf1
push 0x132f
setne al
dec eax
and eax, 4
push 0x10016
push dword [eax + 0x644028]
call ecx
lea ecx, [ebp - 0x794]
call fcn.00402b90
lea ecx, [ebp - 0x774]
mov byte [ebp - 4], 0x22
call fcn.00402b90
mov edx, dword [0x643be0]
mov ebx, dword [ebp - 0x77c]
mov eax, dword [ebp - 0x7bc]
mov ecx, dword [eax - 0xc]
test ecx, ecx
je 0x58a752
test edx, edx
je 0x58a724
inc ecx
push ecx
push eax
xor eax, eax
cmp ebx, 0x9fbf1
push 0x20006
setne al
dec eax
and eax, 4
push dword [eax + 0x644028]
call edx
mov eax, dword [ebp - 0x7e4]
lea ecx, [ebp - 0x7e4]
mov dword [ebp - 0x7e0], eax
lea eax, [ebp - 0x768]
push eax
mov dword [ebp - 0x768], 0x1faa
call fcn.00403df0
mov edx, dword [0x643be0]
mov eax, dword [ebp - 0x7cc]
mov ecx, dword [eax - 0xc]
test ecx, ecx
je 0x58a788
test edx, edx
je 0x58a788
inc ecx
push ecx
push eax
xor eax, eax
cmp ebx, 0x9fbf1
push 0x6020001
setne al
dec eax
and eax, 4
push dword [eax + 0x644028]
call edx
mov edx, dword [0x643be0]
mov ebx, dword [ebp - 0x7c8]
cmp dword [ebx - 0xc], 0
je 0x58aa97
mov dword [ebp - method.CList_struct_AFX_DYNAMIC_LAYOUT_ITEM___struct_AFX_DYNAMIC_LAYOUT_ITEM__.virtual_0], vtable.CMap_class_ATL::CStringT_wchar_t__class_StrTraitMFC_wchar_t__class_ATL::ChTraitsCRT_wchar_t_____wchar_t_const___int__int_.0
mov dword [ebp - 0x240], 0
mov dword [ebp - 0x23c], 0x11
mov dword [ebp - 0x238], 0
mov dword [ebp - 0x234], 0
mov dword [ebp - 0x230], 0
mov dword [ebp - 0x22c], 0xa
push str.auto
lea ecx, [ebp - 0x244]
mov byte [ebp - 4], 0x29
call fcn.00409180
push str.jpeg
lea ecx, [ebp - 0x244]
mov dword [eax], 0x10eb
call fcn.00409180
push 0x60e098
lea ecx, [ebp - 0x244]
mov dword [eax], 0x10e0
call fcn.00409180
push 0x60e0a0
lea ecx, [ebp - 0x244]
mov dword [eax], 0x10e1
call fcn.00409180
push 0x60e0a8
lea ecx, [ebp - 0x244]
mov dword [eax], 0x10e2
call fcn.00409180
push 0x60dfd4
lea ecx, [ebp - 0x244]
mov dword [eax], 0x10e3
call fcn.00409180
push str.mpdf
lea ecx, [ebp - 0x244]
mov dword [eax], 0x10e5
call fcn.00409180
mov dword [ebp - 0x818], 0
mov dword [ebp - 0x814], 0
mov dword [ebp - 0x810], 0
mov dword [eax], 0x10e6
push 8
lea ecx, [ebp - 0x818]
mov byte [ebp - 4], 0x2a
call fcn.00404eb0
call fcn.00418413
mov ecx, eax
test ecx, ecx
jne 0x58a900
push 0x80004005
call fcn.00402650
mov ecx, dword [0x643bf4]
test ecx, ecx
je 0x58a6ee
mov ebx, dword [ebp - 0x77c]
xor eax, eax
cmp ebx, 0x9fbf1
push 0x132f
setne al
dec eax
and eax, 4
push 0x10016
push dword [eax + 0x644028]
call ecx
mov edx, dword [0x643be0]
jmp 0x58a6f4
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x58a915
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
jmp 0x58a917
call edx
add eax, 0x10
mov dword [ebp - 0x784], eax
push 0x2c
xor esi, esi
mov byte [ebp - 4], 0x2b
push esi
push ebx
lea eax, [ebp - 0x784]
push eax
call fcn.004197b0
test eax, eax
je 0x58a99b
lea ebx, [ebx]
lea ecx, [ebp - 0x784]
inc esi
call fcn.00408ab0
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x808]
push eax
push dword [ebp - 0x784]
lea ecx, [ebp - 0x244]
call fcn.004092f0
test eax, eax
je 0x58a987
mov eax, dword [eax + 4]
lea ecx, [ebp - 0x818]
mov dword [ebp - 0x768], eax
lea eax, [ebp - 0x768]
push eax
call fcn.00403df0
push 0x2c
push esi
push ebx
lea eax, [ebp - 0x784]
push eax
call fcn.004197b0
test eax, eax
jne 0x58a940
mov edi, dword [ebp - 0x814]
mov ebx, dword [ebp - 0x818]
sub edi, ebx
mov ecx, dword [0x643bf4]
sar edi, 2
test ecx, ecx
je 0x58a9dd
xor eax, eax
cmp dword [ebp - 0x77c], 0x9fbf1
push edi
setne al
dec eax
and eax, 4
push 0x100ffff
push dword [eax + 0x644028]
call ecx
mov ecx, dword [0x643bf4]
xor esi, esi
test edi, edi
jle 0x58aa1d
cmp edi, esi
jbe 0x58aa23
test ecx, ecx
je 0x58aa16
push dword [ebx + esi*4]
lea eax, [esi + 0x1000001]
push eax
xor eax, eax
cmp dword [ebp - 0x77c], 0x9fbf1
setne al
dec eax
and eax, 4
push dword [eax + 0x644028]
call ecx
mov ecx, dword [0x643bf4]
inc esi
cmp edi, esi
jg 0x58a9e5
test edi, edi
je 0x58aa53
test edi, edi
jne 0x58aa2d
push str.invalid_vector_T__subscript
call fcn.00545b0e
test ecx, ecx
je 0x58aa53
push dword [ebx]
xor eax, eax
cmp dword [ebp - 0x77c], 0x9fbf1
push 0x1000000
setne al
dec eax
and eax, 4
push dword [eax + 0x644028]
call ecx
lea ecx, [ebp - 0x784]
call fcn.00402b90
test ebx, ebx
je 0x58aa74
mov eax, dword [ebp - 0x810]
sub eax, ebx
sar eax, 2
push eax
push ebx
call fcn.00404e50
mov byte [ebp - 4], 0x2c
lea ecx, [ebp - 0x244]
mov dword [ebp - method.CList_struct_AFX_DYNAMIC_LAYOUT_ITEM___struct_AFX_DYNAMIC_LAYOUT_ITEM__.virtual_0], vtable.CMap_class_ATL::CStringT_wchar_t__class_StrTraitMFC_wchar_t__class_ATL::ChTraitsCRT_wchar_t_____wchar_t_const___int__int_.0
call fcn.00409230
mov byte [ebp - 4], 0x22
mov edx, dword [0x643be0]
mov eax, dword [ebp - 0x7c4]
mov esi, dword [ebp - 0x77c]
mov ecx, dword [eax - 0xc]
test ecx, ecx
je 0x58aad3
test edx, edx
je 0x58aad3
inc ecx
push ecx
push eax
xor eax, eax
cmp esi, 0x9fbf1
push 0x20004
setne al
dec eax
and eax, 4
push dword [eax + 0x644028]
call edx
mov edx, dword [0x643be0]
mov eax, dword [ebp - 0x7c0]
mov ecx, dword [eax - 0xc]
test ecx, ecx
je 0x58ab03
test edx, edx
je 0x58ab03
inc ecx
push ecx
push eax
xor eax, eax
cmp esi, 0x9fbf1
push 0x20005
setne al
dec eax
and eax, 4
push dword [eax + 0x644028]
call edx
mov edi, dword [ebp - 0x7e0]
mov ebx, dword [ebp - 0x7e4]
sub edi, ebx
sar edi, 2
test edi, edi
je 0x58ab40
mov ecx, dword [0x643bf4]
test ecx, ecx
je 0x58ab40
push dword [ebx]
xor eax, eax
cmp esi, 0x9fbf1
push 0x10002
setne al
dec eax
and eax, 4
push dword [eax + 0x644028]
call ecx
cmp edi, 1
jbe 0x58abb4
mov ecx, dword [0x643bf4]
test ecx, ecx
je 0x58ab6f
lea eax, [edi - 1]
push eax
xor eax, eax
cmp esi, 0x9fbf1
push 0x102ffff
setne al
dec eax
and eax, 4
push dword [eax + 0x644028]
call ecx
mov esi, 1
cmp edi, esi
jle 0x58abb4
cmp edi, esi
jbe 0x58aa23
mov ecx, dword [0x643bf4]
test ecx, ecx
je 0x58abaf
push dword [ebx + esi*4]
lea eax, [esi + 0x1020000]
push eax
xor eax, eax
cmp dword [ebp - 0x77c], 0x9fbf1
setne al
dec eax
and eax, 4
push dword [eax + 0x644028]
call ecx
inc esi
cmp edi, esi
jg 0x58ab7a
mov eax, dword [ebp - 0x7d4]
mov ecx, dword [ebp - 0x7d8]
sub eax, ecx
je 0x58abeb
mov edx, dword [0x643be8]
test edx, edx
je 0x58abeb
push eax
xor eax, eax
cmp dword [ebp - 0x77c], 0x9fbf1
push ecx
setne al
dec eax
and eax, 4
push dword [eax + 0x644028]
call edx
test ebx, ebx
je 0x58ac01
mov eax, dword [ebp - 0x7dc]
sub eax, ebx
sar eax, 2
push eax
push ebx
call fcn.00404e50
lea ecx, [ebp - 0x7d8]
call fcn.00408c70
lea ecx, [ebp - 0x7e8]
call fcn.00402b90
lea ecx, [ebp - 0x7b0]
call fcn.00402b90
lea ecx, [ebp - 0x7a4]
call fcn.00402b90
lea ecx, [ebp - 0x7b4]
call fcn.00402b90
lea ecx, [ebp - 0x7b8]
call fcn.00402b90
lea ecx, [ebp - 0x788]
call fcn.00402b90
lea ecx, [ebp - 0x78c]
call fcn.00402b90
lea ecx, [ebp - 0x780]
call fcn.00402b90
lea ecx, [ebp - 0x7bc]
call fcn.00402b90
lea ecx, [ebp - 0x7c0]
call fcn.00402b90
lea ecx, [ebp - 0x7c4]
call fcn.00402b90
lea ecx, [ebp - 0x7c8]
call fcn.00402b90
lea ecx, [ebp - 0x798]
call fcn.00402b90
lea ecx, [ebp - 0x7cc]
call fcn.00402b90
lea ecx, [ebp - 0x770]
call fcn.00402b90
lea ecx, [ebp - 0x7a8]
call fcn.00402b90
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.00544774
mov esp, ebp
pop ebp
ret