Function at 0x408f12
Capabilities:
Copy file
Persist via run registry key
Read .ini file
Set file attributes
Set registry value

Disassembly:
mov eax, 0x421ae8
call fcn.004175a4
mov eax, 0x267c
call fcn.004176a0
push ebx
push esi
push edi
mov dword [ebp - 0x10], ecx
call fcn.00401046
mov esi, 0xff
mov dword [ebp - 0x28], eax
xor ebx, ebx
mov ecx, esi
xor eax, eax
lea edi, [ebp - 0x687]
mov byte [ebp - 0x688], bl
rep stosd dword es:[edi], eax
mov ecx, dword [ebp - 0x28]
stosw word es:[edi], ax
stosb byte es:[edi], al
call fcn.0040fe8b
test eax, eax
jne 0x40908c
lea ecx, [ebp - 0x6c]
call fcn.0040151a
push dword [0x4281dc]
lea eax, [ebp - 0x688]
mov dword [ebp - 4], ebx
push 0x42bab4
push eax
call fcn.0041200c
lea eax, [ebp - 0x688]
push ebx
push eax
push 0x42db88
call dword [sym.imp.KERNEL32.dll_CopyFileA]
lea eax, [ebp - 0x688]
push 0x80
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
lea eax, [ebp - 0x688]
lea ecx, [ebp - 0x6c]
push eax
call fcn.00401675
xor eax, eax
lea edi, [ebp - 0x4b]
mov byte [ebp - 0x4c], bl
push dword [0x42e1a4]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [ebp - 0x4c]
push str._04x
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
lea eax, [ebp - 0x2288]
push eax
lea eax, [ebp - 0x2688]
push eax
push 0x42db88
call fcn.00411dcb
lea eax, [ebp - 0x4c]
push eax
lea eax, [ebp - 0x2688]
push eax
lea eax, [ebp - 0x2288]
push eax
call fcn.0041200c
lea eax, [ebp - 0x2288]
push str..ini
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatA]
mov ecx, esi
xor eax, eax
lea edi, [ebp - 0x1a87]
mov byte [ebp - 0x1a88], bl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [ebp - 0x4c]
push eax
lea eax, [ebp - 0x1a88]
push 0x42bab4
push eax
call fcn.0041200c
lea eax, [ebp - 0x1a88]
push str..ini
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatA]
lea eax, [ebp - 0x1a88]
push ebx
push eax
lea eax, [ebp - 0x2288]
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileA]
lea eax, [ebp - 0x1a88]
lea ecx, [ebp - 0x6c]
push eax
call fcn.00401675
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x6c]
call fcn.00401547
jmp 0x40909e
lea eax, [ebp - 0x688]
push 0x42db88
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea eax, [ebp - 0x688]
push eax
push ebx
push dword [0x42360c]
push dword [0x4235b8]
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x1c], ebx
mov ecx, esi
xor eax, eax
lea edi, [ebp - 0x1287]
mov byte [ebp - 0x1288], bl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 4], 1
sub eax, ebx
je 0x409102
dec eax
je 0x4090ee
dec eax
jne 0x409114
push str.SoftwareMicrosoftWindowsCurrentVersionRun
jmp 0x4090f3
push str.SoftwareMicrosoftWindowsCurrentVersionRunOnceEx
lea eax, [ebp - 0x1288]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
jmp 0x40911e
lea eax, [ebp - 0x1288]
push str.SoftwareMicrosoftWindowsCurrentVersionRunOnce
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
cmp dword [ebp - 0x2c], 3
je 0x4098fc
lea eax, [ebp - 0x1288]
push 0xf003f
push eax
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [ebp - 0x1c]
call fcn.0040637b
test eax, eax
jne 0x4098fc
mov ecx, esi
lea edi, [ebp - 0xa87]
mov byte [ebp - 0xa88], bl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov edi, 0x427b6c
push edi
push dword [ebp + 8]
call fcn.00418154
pop ecx
cmp eax, ebx
pop ecx
mov dword [ebp + 8], eax
je 0x4091ba
lea eax, [ebp - 0xa88]
push 0x42bab0
push eax
call fcn.00416f90
pop ecx
pop ecx
push dword [ebp + 8]
test eax, eax
jne 0x40919a
lea eax, [ebp - 0xa88]
push 0x4271e4
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
jmp 0x4091b6
lea eax, [ebp - 0xa88]
push eax
lea eax, [ebp - 0xa88]
push 0x4271c0
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
push edi
push ebx
jmp 0x40915b
cmp dword [ebp + 0xc], ebx
je 0x4091d1
lea eax, [ebp - 0xa88]
push str._AFTERREBOOT1
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatA]
mov ecx, esi
xor eax, eax
lea edi, [ebp - 0xe87]
mov byte [ebp - 0xe88], bl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov edi, dword [ebp - 0x28]
mov eax, dword [edi + 0x14bc]
dec eax
je 0x40923f
dec eax
je 0x409231
dec eax
je 0x409213
dec eax
je 0x40920c
dec eax
je 0x409205
push 0x42bab0
jmp 0x409244
push 0x427b58
jmp 0x409244
push 0x427b54
jmp 0x409244
lea eax, [edi + 0x14c0]
push eax
push str._j_s
lea eax, [ebp - 0xe88]
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
jmp 0x409253
lea eax, [edi + 0x14c0]
push eax
push str._f_s
jmp 0x40921f
push 0x4275d4
lea eax, [ebp - 0xe88]
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
pop ecx
pop ecx
push 0x104
lea eax, [ebp - 0x288]
push ebx
push eax
call fcn.00416f30
add esp, 0xc
mov ecx, edi
call fcn.0040fe8b
test eax, eax
je 0x409285
lea eax, [ebp - 0x288]
push 0x427b40
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov ecx, esi
xor eax, eax
lea edi, [ebp - 0x1e87]
mov byte [ebp - 0x1e88], bl
rep stosd dword es:[edi], eax
mov esi, dword [ebp - 0x28]
stosw word es:[edi], ax
mov ecx, esi
stosb byte es:[edi], al
call fcn.0040f451
push eax
lea eax, [ebp - 0x1e88]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov ecx, esi
call fcn.0040fe8b
test eax, eax
je 0x4092fb
mov eax, dword [ebp - 0x10]
cmp dword [eax + 0x38], ebx
jne 0x4092fb
lea eax, [ebp - 0x288]
mov ecx, esi
push eax
lea eax, [ebp - 0xa88]
push eax
push 0x42bab4
call fcn.0040f48c
push eax
lea eax, [ebp - 0xe88]
push dword [0x42e1a4]
push eax
lea eax, [ebp - 0x1e88]
push eax
push str.__s___k__s__l_d__t__s___e__s___w__v__s___s
jmp 0x40932f
lea eax, [ebp - 0x288]
mov ecx, esi
push eax
lea eax, [ebp - 0xa88]
push eax
push 0x42bab4
call fcn.0040f48c
push eax
lea eax, [ebp - 0xe88]
push dword [0x42e1a4]
push eax
lea eax, [ebp - 0x1e88]
push eax
push str.__s___s__l_d__t__s___e__s___v__s___s
lea eax, [ebp - 0x1688]
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x24
push 1
pop edi
cmp dword [ebp - 0x2c], edi
jne 0x409397
lea eax, [ebp - 0x1288]
push str.0001
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatA]
lea eax, [ebp + 0xc]
mov dword [ebp + 8], ebx
push eax
lea eax, [ebp + 8]
push eax
push ebx
push 0xf003f
push ebx
push ebx
lea eax, [ebp - 0x1288]
push ebx
push eax
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
cmp eax, ebx
jne 0x409397
cmp dword [ebp - 0x1c], ebx
je 0x409391
push dword [ebp - 0x1c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp + 8]
mov dword [ebp - 0x1c], eax
lea eax, [ebp - 0x1688]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
cmp eax, 0x102
jle 0x4098c3
push ebx
call dword [sym.imp.ole32.dll_CoInitialize]
lea eax, [ebp + 0xb]
push edi
push eax
lea eax, [ebp - 0x1688]
push eax
lea ecx, [ebp - 0xbc]
mov byte [ebp - 4], 2
call fcn.0040c0e8
lea eax, [ebp + 0xf]
push edi
push eax
mov ecx, esi
mov byte [ebp - 4], 3
call fcn.0040f48c
push eax
lea ecx, [ebp - 0x15c]
call fcn.0040c0e8
lea eax, [ebp - 0x2d]
push edi
push eax
push 0x42bab4
lea ecx, [ebp - 0x134]
mov byte [ebp - 4], 4
call fcn.0040c0e8
lea eax, [ebp - 0x15]
push edi
push eax
lea eax, [ebp - 0xa88]
push eax
lea ecx, [ebp - 0xe4]
mov byte [ebp - 4], 5
call fcn.0040c0e8
mov dword [ebp - 0x20], ebx
push 0xf003f
push str.SoftwareMicrosoftWindowsCurrentVersion
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [ebp - 0x20]
mov byte [ebp - 4], 7
call fcn.0040637b
mov edi, dword [sym.imp.KERNEL32.dll_lstrlenW]
mov esi, dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
test eax, eax
jne 0x409806
lea eax, [ebp - 0x15c]
push eax
lea eax, [ebp - 0x60]
push 0x22
push eax
call fcn.0040ddbd
push 0x22
push eax
lea eax, [ebp - 0x94]
mov byte [ebp - 4], 8
push eax
call fcn.0040de4d
mov eax, dword [eax + 8]
add esp, 0x18
cmp eax, ebx
mov dword [ebp - 0x14], 0x423620
je 0x40948c
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], ebx
jne 0x409496
mov dword [ebp - 0x10], ebx
jmp 0x4094c8
push dword [ebp - 0x14]
call edi
lea eax, [eax + eax + 2]
mov dword [ebp - 0x10], eax
add eax, 3
and al, 0xfc
call fcn.004176a0
mov eax, esp
push ebx
push ebx
mov dword [ebp - 0x24], eax
push dword [ebp - 0x10]
mov byte [eax], bl
push eax
push 0xffffffffffffffff
push dword [ebp - 0x14]
push ebx
push ebx
call esi
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x10], eax
push dword [ebp - 0x10]
call dword [sym.imp.KERNEL32.dll_lstrlenA]
inc eax
push eax
push dword [ebp - 0x10]
push 1
push ebx
push str._IS_T_
push dword [ebp - 0x20]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
lea ecx, [ebp - 0x94]
call fcn.00407cce
lea ecx, [ebp - 0x60]
mov byte [ebp - 4], 7
call fcn.00407cce
lea eax, [ebp - 0x134]
push eax
lea eax, [ebp - 0x60]
push 0x22
push eax
call fcn.0040ddbd
push 0x22
push eax
lea eax, [ebp - 0x94]
mov byte [ebp - 4], 9
push eax
call fcn.0040de4d
mov eax, dword [eax + 8]
add esp, 0x18
cmp eax, ebx
mov dword [ebp - 0x14], 0x423620
je 0x409537
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], ebx
jne 0x409541
mov dword [ebp - 0x10], ebx
jmp 0x409573
push dword [ebp - 0x14]
call edi
lea eax, [eax + eax + 2]
mov dword [ebp - 0x10], eax
add eax, 3
and al, 0xfc
call fcn.004176a0
mov eax, esp
push ebx
push ebx
mov dword [ebp - 0x24], eax
push dword [ebp - 0x10]
mov byte [eax], bl
push eax
push 0xffffffffffffffff
push dword [ebp - 0x14]
push ebx
push ebx
call esi
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x10], eax
push dword [ebp - 0x10]
call dword [sym.imp.KERNEL32.dll_lstrlenA]
inc eax
push eax
push dword [ebp - 0x10]
push 1
push ebx
push str._IS_E_
push dword [ebp - 0x20]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
lea ecx, [ebp - 0x94]
call fcn.00407cce
lea ecx, [ebp - 0x60]
mov byte [ebp - 4], 7
call fcn.00407cce
cmp dword [ebp - 0xd8], ebx
je 0x409660
lea eax, [ebp - 0xe4]
push eax
lea eax, [ebp - 0x60]
push 0x22
push eax
call fcn.0040ddbd
push 0x22
push eax
lea eax, [ebp - 0x94]
mov byte [ebp - 4], 0xa
push eax
call fcn.0040de4d
mov eax, dword [eax + 8]
add esp, 0x18
cmp eax, ebx
mov dword [ebp - 0x14], 0x423620
je 0x4095ee
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], ebx
jne 0x4095f8
mov dword [ebp - 0x10], ebx
jmp 0x40962a
push dword [ebp - 0x14]
call edi
lea eax, [eax + eax + 2]
mov dword [ebp - 0x10], eax
add eax, 3
and al, 0xfc
call fcn.004176a0
mov eax, esp
push ebx
push ebx
mov dword [ebp - 0x24], eax
push dword [ebp - 0x10]
mov byte [eax], bl
push eax
push 0xffffffffffffffff
push dword [ebp - 0x14]
push ebx
push ebx
call esi
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x10], eax
push dword [ebp - 0x10]
call dword [sym.imp.KERNEL32.dll_lstrlenA]
inc eax
push eax
push dword [ebp - 0x10]
push 1
push ebx
push str._IS_V_
push dword [ebp - 0x20]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
lea ecx, [ebp - 0x94]
call fcn.00407cce
lea ecx, [ebp - 0x60]
mov byte [ebp - 4], 7
call fcn.00407cce
cmp dword [ebp - 0x20], ebx
je 0x409671
push dword [ebp - 0x20]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [ebp - 0x20], ebx
lea eax, [ebp - 0x15]
push 1
push eax
push str._IS_T_
lea ecx, [ebp - 0x60]
call fcn.0040bfc6
lea eax, [ebp - 0x15c]
mov byte [ebp - 4], 0xb
push eax
lea eax, [ebp - 0x10c]
push 0x22
push eax
call fcn.0040ddbd
push 0x22
push eax
lea eax, [ebp - 0x94]
mov byte [ebp - 4], 0xc
push eax
call fcn.0040de4d
add esp, 0x18
lea ecx, [ebp - 0x60]
mov byte [ebp - 4], 0xd
push ecx
push eax
lea ecx, [ebp - 0xbc]
call fcn.0040c0a0
lea ecx, [ebp - 0x94]
mov byte [ebp - 4], 0xc
call fcn.00407cce
lea ecx, [ebp - 0x10c]
mov byte [ebp - 4], 0xb
call fcn.00407cce
lea ecx, [ebp - 0x60]
mov byte [ebp - 4], 7
call fcn.00407cce
lea eax, [ebp - 0x15]
push 1
push eax
push str._IS_E_
lea ecx, [ebp - 0x60]
call fcn.0040bfc6
lea eax, [ebp - 0x134]
mov byte [ebp - 4], 0xe
push eax
lea eax, [ebp - 0x94]
push 0x22
push eax
call fcn.0040ddbd
push 0x22
push eax
lea eax, [ebp - 0x10c]
mov byte [ebp - 4], 0xf
push eax
call fcn.0040de4d
add esp, 0x18
lea ecx, [ebp - 0x60]
mov byte [ebp - 4], 0x10
push ecx
push eax
lea ecx, [ebp - 0xbc]
call fcn.0040c0a0
lea ecx, [ebp - 0x10c]
mov byte [ebp - 4], 0xf
call fcn.00407cce
lea ecx, [ebp - 0x94]
mov byte [ebp - 4], 0xe
call fcn.00407cce
lea ecx, [ebp - 0x60]
mov byte [ebp - 4], 7
call fcn.00407cce
cmp dword [ebp - 0xd8], ebx
je 0x409806
lea eax, [ebp - 0x15]
push 1
push eax
push str._IS_V_
lea ecx, [ebp - 0x94]
call fcn.0040bfc6
lea eax, [ebp - 0xe4]
mov byte [ebp - 4], 0x11
push eax
lea eax, [ebp - 0x184]
push 0x22
push eax
call fcn.0040ddbd
push 0x22
push eax
lea eax, [ebp - 0x10c]
mov byte [ebp - 4], 0x12
push eax
call fcn.0040de4d
add esp, 0x18
lea ecx, [ebp - 0x94]
mov byte [ebp - 4], 0x13
push ecx
push eax
lea ecx, [ebp - 0xbc]
call fcn.0040c0a0
lea ecx, [ebp - 0x10c]
mov byte [ebp - 4], 0x12
call fcn.00407cce
lea ecx, [ebp - 0x184]
mov byte [ebp - 4], 0x11
call fcn.00407cce
lea ecx, [ebp - 0x94]
mov byte [ebp - 4], 7
call fcn.00407cce
mov eax, dword [ebp - 0xb4]
mov dword [ebp - 0x14], 0x423620
cmp eax, ebx
je 0x40981a
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], ebx
jne 0x409823
xor edi, edi
jmp 0x40984c
push dword [ebp - 0x14]
call edi
lea eax, [eax + eax + 2]
mov dword [ebp - 0x10], eax
add eax, 3
and al, 0xfc
call fcn.004176a0
mov edi, esp
push ebx
push ebx
push dword [ebp - 0x10]
mov byte [edi], bl
push edi
push 0xffffffffffffffff
push dword [ebp - 0x14]
push ebx
push ebx
call esi
push edi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
inc eax
push eax
push edi
push 1
push ebx
push str.ISSetup
push dword [ebp - 0x1c]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
cmp dword [ebp - 0x20], ebx
je 0x409878
push dword [ebp - 0x20]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [ebp - 0x20], ebx
lea ecx, [ebp - 0xe4]
mov byte [ebp - 4], 5
call fcn.00407cce
lea ecx, [ebp - 0x134]
mov byte [ebp - 4], 4
call fcn.00407cce
lea ecx, [ebp - 0x15c]
mov byte [ebp - 4], 3
call fcn.00407cce
lea ecx, [ebp - 0xbc]
mov byte [ebp - 4], 2
call fcn.00407cce
mov byte [ebp - 4], 1
call dword [sym.imp.ole32.dll_CoUninitialize]
mov esi, dword [ebp - 0x28]
jmp 0x4098e9
lea eax, [ebp - 0x1688]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
inc eax
push eax
lea eax, [ebp - 0x1688]
push eax
push edi
push ebx
push str.ISSetup
push dword [ebp - 0x1c]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
cmp dword [ebp - 0x1c], ebx
je 0x4098ff
push dword [ebp - 0x1c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [ebp - 0x1c], ebx
jmp 0x4098ff
mov esi, dword [ebp - 0x28]
xor eax, eax
lea edi, [ebp - 0x37]
mov byte [ebp - 0x38], bl
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosb byte es:[edi], al
lea eax, [ebp - 0x688]
mov edi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
push eax
push ebx
push dword [0x4235e8]
push dword [0x4235f8]
call edi
cmp dword [esi + 0x2100], ebx
jne 0x409938
cmp eax, 1
je 0x409938
cmp eax, 2
jne 0x409969
push 4
lea eax, [ebp - 0x38]
push 0x427ae0
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
lea eax, [ebp - 0x688]
push eax
lea eax, [ebp - 0x38]
push eax
push dword [0x4235e8]
push dword [0x4235f8]
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
lea ecx, [ebp - 0x688]
lea eax, [esi + 0x8ac]
push ecx
push ebx
push dword [0x4235e8]
mov dword [ebp + 8], eax
push eax
call edi
cmp dword [esi + 0x1cfc], ebx
jne 0x409995
cmp eax, 1
je 0x409995
cmp eax, 2
jne 0x4099c3
push 4
lea eax, [ebp - 0x38]
push 0x427ae0
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
lea eax, [ebp - 0x688]
push eax
lea eax, [ebp - 0x38]
push eax
push dword [0x4235e8]
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
cmp dword [ebp - 0x2c], 3
je 0x4099e3
cmp dword [0x42ea60], ebx
je 0x4099d8
call fcn.00412432
jmp 0x4099e3
push 0x453
call fcn.004118dc
pop ecx
cmp dword [ebp - 0x1c], ebx
je 0x4099f1
push dword [ebp - 0x1c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [ebp - 0xc]
lea esp, [ebp - 0x2694]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
leave
ret 8