Function at 0x409d40
Capabilities:
Check if file exists
Create directory
Get common file path
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x67d238
mov eax, dword fs:[0]
push eax
sub esp, 0x630
mov eax, dword [0x70af2c]
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 edi, ecx
mov eax, dword [0x6dbf50]
cmp dword [eax], 0
jne 0x409f17
call fcn.00412220
push 1
push ecx
mov esi, esp
mov dword [ebp - 0x628], esi
call fcn.00529f92
mov ecx, eax
test ecx, ecx
je 0x40a50a
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [esi], eax
mov eax, str.CuteExts8628ID
mov dword [ebp - 4], 0
mov ecx, esi
test eax, 0xffff0000
jne 0x409dc7
movzx eax, ax
push eax
call fcn.00409070
jmp 0x409dd3
push 0xe
push str.CuteExts8628ID
call fcn.004087a0
mov dword [ebp - 4], 0xffffffff
call fcn.00413a20
add esp, 8
mov dword [edi + 0x138], eax
push 1
push ecx
mov esi, esp
mov dword [ebp - 0x628], esi
call fcn.00529f92
mov ecx, eax
test ecx, ecx
je 0x40a514
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [esi], eax
mov eax, str.CuteExts8628REG
mov dword [ebp - 4], 1
mov ecx, esi
test eax, 0xffff0000
jne 0x409e2c
movzx eax, ax
push eax
call fcn.00409070
jmp 0x409e38
push 0xf
push str.CuteExts8628REG
call fcn.004087a0
mov dword [ebp - 4], 0xffffffff
call fcn.00413a20
add esp, 8
mov dword [edi + 0x13c], eax
push 1
push ecx
mov esi, esp
mov dword [ebp - 0x628], esi
call fcn.00529f92
mov ecx, eax
test ecx, ecx
je 0x40a51e
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [esi], eax
mov eax, str.CuteExts8628VER
mov dword [ebp - 4], 2
mov ecx, esi
test eax, 0xffff0000
jne 0x409e91
movzx eax, ax
push eax
call fcn.00409070
jmp 0x409e9d
push 0xf
push str.CuteExts8628VER
call fcn.004087a0
mov dword [ebp - 4], 0xffffffff
call fcn.00413a20
add esp, 8
mov dword [edi + 0x140], eax
push 1
push ecx
mov esi, esp
mov dword [ebp - 0x628], esi
call fcn.00529f92
mov ecx, eax
test ecx, ecx
je 0x40a528
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [esi], eax
mov eax, str.CuteExts8628EXT
mov dword [ebp - 4], 3
mov ecx, esi
test eax, 0xffff0000
jne 0x409ef6
movzx eax, ax
push eax
call fcn.00409070
jmp 0x409f02
push 0xf
push str.CuteExts8628EXT
call fcn.004087a0
mov dword [ebp - 4], 0xffffffff
call fcn.00413a20
add esp, 8
mov dword [edi + 0x144], eax
mov esi, dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathA]
lea eax, [ebp - 0x220]
push 0
push 0x1c
push eax
push 0
mov dword [edi + 0x20], 1
mov dword [edi + 0x24], 0
mov dword [edi + 0x74], 0
mov dword [edi + 0x78], 0
mov dword [edi + 0x88], 0
mov dword [edi + 0x1a0], 0
mov dword [edi + 0x90], 0
mov dword [edi + 0xa4], 0
mov dword [edi + 0xa8], 0
mov dword [edi + 0xdc], 0
mov dword [edi + 0xe0], 0
mov dword [edi + 0xe8], 0
mov dword [edi + 0xac], 1
mov dword [edi + 0xb0], 2
mov dword [edi + 0xb4], 1
mov dword [edi + 0xb8], 0
mov dword [edi + 0x16c], 0
mov dword [edi + 0x170], 0
mov dword [edi + 0x174], 0
mov dword [edi + 0x178], 0
mov dword [edi + 0x17c], 0
call esi
test eax, eax
jne 0x40a01f
push eax
push 0x1a
lea eax, [ebp - 0x220]
push eax
push 0
call esi
test eax, eax
jne 0x40a01f
push 1
push 5
lea eax, [ebp - 0x220]
push eax
push 0
call esi
test eax, eax
je 0x40a09d
lea ecx, [ebp - 0x220]
dec ecx
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x40a026
mov eax, dword [0x6db07c]
mov dword [ecx], eax
mov eax, dword [0x6db080]
mov dword [ecx + 4], eax
mov al, byte [0x6db084]
mov byte [ecx + 8], al
lea ecx, [ebp - 0x220]
dec ecx
nop
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x40a050
mov eax, dword [str.TempForms]
lea edx, [ebp - 0x220]
mov dword [ecx], eax
lea ebx, [edx + 1]
mov eax, dword [0x6db08c]
mov dword [ecx + 4], eax
mov ax, word [0x6db090]
mov word [ecx + 8], ax
mov al, byte [0x6db092]
mov byte [ecx + 0xa], al
lea ecx, [edi + 0x70]
mov al, byte [edx]
inc edx
test al, al
jne 0x40a087
sub edx, ebx
lea eax, [ebp - 0x220]
push edx
push eax
call fcn.004087a0
push 0x105
lea eax, [ebp - 0x118]
push 0
push eax
call fcn.0065b560
add esp, 0xc
lea eax, [ebp - 0x118]
push 0
push 0x1c
push eax
push 0
call esi
test eax, eax
jne 0x40a126
push eax
push 0x1a
lea eax, [ebp - 0x118]
push eax
push 0
call esi
test eax, eax
jne 0x40a126
lea eax, [ebp - 0x118]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
cmp byte [ebp + eax - 0x119], 0x5c
lea ecx, [eax - 1]
jne 0x40a10b
cmp ecx, 0x105
jae 0x40a53c
mov byte [ebp + ecx - 0x118], 0
cmp ecx, 0x103
jbe 0x40a126
push 1
push 5
lea eax, [ebp - 0x118]
push eax
push 0
call esi
test eax, eax
je 0x40a182
lea ecx, [ebp - 0x118]
dec ecx
nop dword [eax]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x40a130
mov eax, dword [str.CutePDFWriter4]
mov dword [ecx], eax
mov eax, dword [0x6db018]
mov dword [ecx + 4], eax
mov eax, dword [0x6db01c]
mov dword [ecx + 8], eax
mov eax, dword [0x6db020]
mov dword [ecx + 0xc], eax
lea eax, [ebp - 0x118]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
jne 0x40a182
push eax
lea eax, [ebp - 0x118]
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
neg eax
sbb al, al
and byte [ebp - 0x118], al
call fcn.00529f92
mov ecx, eax
test ecx, ecx
je 0x40a532
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x628], eax
lea eax, [ebp - 0x118]
mov dword [ebp - 4], 4
test eax, 0xffff0000
jne 0x40a1c4
movzx eax, ax
lea ecx, [ebp - 0x628]
push eax
call fcn.00409070
jmp 0x40a1ec
lea ecx, [ebp - 0x118]
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40a1d0
sub ecx, edx
lea eax, [ebp - 0x118]
push ecx
push eax
lea ecx, [ebp - 0x628]
call fcn.004087a0
mov dword [ebp - 4], 5
mov eax, dword [ebp - 0x628]
mov esi, dword [edi + 0x64]
sub esi, 0x10
lea ebx, [eax - 0x10]
cmp ebx, esi
je 0x40a252
cmp dword [esi + 0xc], 0
jl 0x40a246
mov ecx, dword [ebx]
cmp ecx, dword [esi]
jne 0x40a246
push ebx
call fcn.00408950
add esp, 4
mov dword [ebp - 0x638], eax
or ecx, 0xffffffff
lea edx, [esi + 0xc]
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40a23e
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x638]
add eax, 0x10
mov dword [edi + 0x64], eax
jmp 0x40a252
push dword [eax - 0xc]
lea ecx, [edi + 0x64]
push eax
call fcn.004087a0
mov dword [ebp - 4], 0xffffffff
or eax, 0xffffffff
lock xadd dword [ebx + 0xc], eax
dec eax
test eax, eax
jg 0x40a26e
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
lea eax, [ebp - 0x634]
mov dword [edi + 0x28], 1
push eax
push str.SOFTWAREAcro_Software_IncCutePDF
push SysReAllocString
mov dword [edi + 0x2c], 1
mov dword [ebp - 0x634], 0
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyA]
test eax, eax
jne 0x40a347
mov esi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
mov dword [ebp - 0x630], eax
lea eax, [ebp - 0x63c]
push eax
lea eax, [ebp - 0x630]
mov dword [ebp - 0x63c], 4
push eax
lea eax, [ebp - 0x638]
mov dword [ebp - 0x638], 4
push eax
push 0
push str.ShowToolbar
push dword [ebp - 0x634]
call esi
test eax, eax
jne 0x40a2f6
mov eax, dword [ebp - 0x630]
mov dword [edi + 0x28], eax
lea eax, [ebp - 0x63c]
mov dword [ebp - 0x630], 0
push eax
lea eax, [ebp - 0x630]
mov dword [ebp - 0x63c], 4
push eax
lea eax, [ebp - 0x638]
push eax
push 0
push str.Optimize
push dword [ebp - 0x634]
call esi
test eax, eax
jne 0x40a33b
mov eax, dword [ebp - 0x630]
mov dword [edi + 0x2c], eax
push dword [ebp - 0x634]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [edi + 0x30], 1
mov dword [edi + 0x34], 1
mov dword [edi + 0x3c], 0
mov dword [edi + 0x184], 0
mov dword [edi + 0x188], 0
mov dword [edi + 0x104], 1
call fcn.0052cd39
push 0x104
lea ecx, [ebp - 0x424]
push ecx
mov eax, dword [eax + 8]
push eax
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea eax, [ebp - 0x524]
push eax
lea eax, [ebp - 0x624]
push eax
lea eax, [ebp - 0x320]
push eax
lea eax, [ebp - 0x62c]
push eax
lea eax, [ebp - 0x424]
push eax
call fcn.0065e7a7
add esp, 0x14
call fcn.00529f92
mov ecx, eax
test ecx, ecx
je 0x40a541
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x628], eax
lea eax, [ebp - 0x62c]
mov dword [ebp - 4], 6
test eax, 0xffff0000
jne 0x40a402
movzx eax, ax
lea ecx, [ebp - 0x628]
push eax
call fcn.00409070
jmp 0x40a42c
lea ecx, [ebp - 0x62c]
lea edx, [ecx + 1]
nop dword [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40a410
sub ecx, edx
lea eax, [ebp - 0x62c]
push ecx
push eax
lea ecx, [ebp - 0x628]
call fcn.004087a0
lea ecx, [ebp - 0x320]
mov dword [ebp - 4], 7
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40a440
sub ecx, edx
lea eax, [ebp - 0x320]
push ecx
push eax
lea ecx, [ebp - 0x628]
call fcn.0040d6b0
push 9
push str.setup.ini
lea ecx, [ebp - 0x628]
call fcn.0040d6b0
mov esi, dword [ebp - 0x628]
push esi
mov dword [edi + 0x48], 0
mov dword [edi + 0x100], 0
mov dword [edi + 0x40], 1
mov dword [edi + 0x38], 1
mov dword [edi + 0x44], 1
mov dword [edi + 0x50], 0
mov dword [edi + 0x54], 0
mov dword [edi + 0x168], 0x32
call fcn.00411990
add esp, 4
mov dword [edi + 0xe4], 0
mov dword [edi + 0xd8], 0
add esi, 0xfffffff0
mov dword [ebp - 4], 0xffffffff
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x40a4ee
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
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.006588a1
mov esp, ebp
pop ebp
ret
push 0x80004005
call fcn.004088a0
push 0x80004005
call fcn.004088a0
push 0x80004005
call fcn.004088a0
push 0x80004005
call fcn.004088a0
push 0x80004005
call fcn.004088a0
call fcn.006589f6
push 0x80004005
call fcn.004088a0
int3