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

Disassembly:
mov eax, 0x422886
call fcn.00418354
mov eax, 0x2654
call fcn.00418450
push ebx
push esi
push edi
mov dword [ebp - 0x10], ecx
call fcn.00401046
mov dword [ebp - 0x24], eax
xor ebx, ebx
mov ecx, 0xff
xor eax, eax
lea edi, [ebp - 0x65f]
mov byte [ebp - 0x660], bl
rep stosd dword es:[edi], eax
mov ecx, dword [ebp - 0x24]
stosw word es:[edi], ax
stosb byte es:[edi], al
call fcn.00410411
test eax, eax
mov esi, 0x42db84
jne 0x40925c
lea ecx, [ebp - 0x6c]
call fcn.0040151a
push dword [0x42a1fc]
lea eax, [ebp - 0x660]
mov dword [ebp - 4], ebx
push esi
push eax
call fcn.00412568
lea eax, [ebp - 0x660]
push ebx
push eax
push 0x42fc58
call dword [sym.imp.KERNEL32.dll_CopyFileA]
lea eax, [ebp - 0x660]
push 0x80
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
lea eax, [ebp - 0x660]
lea ecx, [ebp - 0x6c]
push eax
call fcn.00401675
xor eax, eax
lea edi, [ebp - 0x4b]
mov byte [ebp - 0x4c], bl
push dword [0x430274]
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 - 0x2260]
push eax
lea eax, [ebp - 0x2660]
push eax
push 0x42fc58
call fcn.00412327
lea eax, [ebp - 0x4c]
push eax
lea eax, [ebp - 0x2660]
push eax
lea eax, [ebp - 0x2260]
push eax
call fcn.00412568
lea eax, [ebp - 0x2260]
push str..ini
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatA]
mov ecx, 0xff
xor eax, eax
lea edi, [ebp - 0x1a5f]
mov byte [ebp - 0x1a60], 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 - 0x1a60]
push esi
push eax
call fcn.00412568
lea eax, [ebp - 0x1a60]
push str..ini
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatA]
lea eax, [ebp - 0x1a60]
push ebx
push eax
lea eax, [ebp - 0x2260]
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileA]
lea eax, [ebp - 0x1a60]
lea ecx, [ebp - 0x6c]
push eax
call fcn.00401675
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x6c]
call fcn.00401547
jmp 0x40926e
lea eax, [ebp - 0x660]
push 0x42fc58
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea eax, [ebp - 0x660]
push eax
push ebx
push dword [0x424620]
push dword [0x4245cc]
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x1c], ebx
mov ecx, 0xff
xor eax, eax
lea edi, [ebp - 0xe5f]
mov byte [ebp - 0xe60], 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 0x4092d5
dec eax
je 0x4092c1
dec eax
jne 0x4092e7
push str.SoftwareMicrosoftWindowsCurrentVersionRun
jmp 0x4092c6
push str.SoftwareMicrosoftWindowsCurrentVersionRunOnceEx
lea eax, [ebp - 0xe60]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
jmp 0x4092f1
lea eax, [ebp - 0xe60]
push str.SoftwareMicrosoftWindowsCurrentVersionRunOnce
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
cmp dword [ebp - 0x2c], 3
je 0x4099e6
lea eax, [ebp - 0xe60]
push 0xf003f
push eax
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [ebp - 0x1c]
call fcn.0040654b
test eax, eax
jne 0x4099e6
mov ecx, 0xff
lea edi, [ebp - 0x125f]
mov byte [ebp - 0x1260], bl
push dword [ebp + 8]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [ebp - 0x1260]
push eax
call fcn.00417dd0
cmp dword [ebp + 0xc], ebx
pop ecx
pop ecx
je 0x409350
lea eax, [ebp - 0x1260]
push str._AFTERREBOOT1
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatA]
mov ecx, 0xff
xor eax, eax
lea edi, [ebp - 0xa5f]
mov byte [ebp - 0xa60], bl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov edi, dword [ebp - 0x24]
mov eax, dword [edi + 0x14bc]
dec eax
je 0x4093c1
dec eax
je 0x4093b3
dec eax
je 0x409395
dec eax
je 0x40938e
dec eax
je 0x409387
push 0x42db80
jmp 0x4093c6
push 0x429b70
jmp 0x4093c6
push 0x429b6c
jmp 0x4093c6
lea eax, [edi + 0x14c0]
push eax
push str._j_s
lea eax, [ebp - 0xa60]
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
jmp 0x4093d5
lea eax, [edi + 0x14c0]
push eax
push str._f_s
jmp 0x4093a1
push 0x4295cc
lea eax, [ebp - 0xa60]
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
pop ecx
pop ecx
push 0x104
lea eax, [ebp - 0x260]
push ebx
push eax
call fcn.00417ce0
add esp, 0xc
mov ecx, edi
call fcn.00410411
test eax, eax
je 0x409407
lea eax, [ebp - 0x260]
push 0x429b58
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov ecx, 0xff
xor eax, eax
lea edi, [ebp - 0x1e5f]
mov byte [ebp - 0x1e60], bl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov edi, dword [ebp - 0x24]
mov ecx, edi
call fcn.0040f9ce
push eax
lea eax, [ebp - 0x1e60]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov ecx, edi
call fcn.00410411
test eax, eax
je 0x40947c
mov eax, dword [ebp - 0x10]
cmp dword [eax + 0x38], ebx
jne 0x40947c
lea eax, [ebp - 0x260]
mov ecx, edi
push eax
lea eax, [ebp - 0x1260]
push eax
push esi
call fcn.0040fa09
push eax
lea eax, [ebp - 0xa60]
push dword [0x430274]
push eax
lea eax, [ebp - 0x1e60]
push eax
push str.__s___k__s__l_d__t__s___e__s___w__v__s___s
jmp 0x4094ac
lea eax, [ebp - 0x260]
mov ecx, edi
push eax
lea eax, [ebp - 0x1260]
push eax
push esi
call fcn.0040fa09
push eax
lea eax, [ebp - 0xa60]
push dword [0x430274]
push eax
lea eax, [ebp - 0x1e60]
push eax
push str.__s___s__l_d__t__s___e__s___v__s___s
lea eax, [ebp - 0x1660]
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x24
push 1
pop edi
cmp dword [ebp - 0x2c], edi
jne 0x409514
lea eax, [ebp - 0xe60]
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 - 0xe60]
push ebx
push eax
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
cmp eax, ebx
jne 0x409514
cmp dword [ebp - 0x1c], ebx
je 0x40950e
push dword [ebp - 0x1c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp + 8]
mov dword [ebp - 0x1c], eax
lea eax, [ebp - 0x1660]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
cmp eax, 0x102
jle 0x4099af
push ebx
call dword [sym.imp.ole32.dll_CoInitialize]
lea eax, [ebp + 0xb]
push edi
push eax
lea eax, [ebp - 0x1660]
push eax
lea ecx, [ebp - 0xbc]
mov byte [ebp - 4], 2
call fcn.0040c41e
mov ecx, dword [ebp - 0x24]
lea eax, [ebp + 0xf]
push edi
push eax
mov byte [ebp - 4], 3
call fcn.0040fa09
push eax
lea ecx, [ebp - 0x134]
call fcn.0040c41e
lea eax, [ebp - 0x2d]
push edi
push eax
push esi
lea ecx, [ebp - 0x15c]
mov byte [ebp - 4], 4
call fcn.0040c41e
lea eax, [ebp - 0x15]
push edi
push eax
lea eax, [ebp - 0x1260]
push eax
lea ecx, [ebp - 0xe4]
mov byte [ebp - 4], 5
call fcn.0040c41e
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.0040654b
mov esi, dword [sym.imp.KERNEL32.dll_lstrlenW]
mov edi, dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
test eax, eax
jne 0x4098f5
lea eax, [ebp - 0x134]
push eax
lea eax, [ebp - 0x60]
push 0x22
push eax
call fcn.0040e263
push 0x22
push eax
lea eax, [ebp - 0x94]
mov byte [ebp - 4], 8
push eax
call fcn.0040e2f7
mov eax, dword [eax + 8]
add esp, 0x18
cmp eax, ebx
mov dword [ebp - 0x14], 0x424634
je 0x409606
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], ebx
jne 0x409610
mov dword [ebp - 0x10], ebx
jmp 0x409642
push dword [ebp - 0x14]
call esi
lea eax, [eax + eax + 2]
mov dword [ebp - 0x10], eax
add eax, 3
and al, 0xfc
call fcn.00418450
mov eax, esp
push ebx
push ebx
mov dword [ebp - 0x28], eax
push dword [ebp - 0x10]
mov byte [eax], bl
push eax
push 0xffffffffffffffff
push dword [ebp - 0x14]
push ebx
push ebx
call edi
mov eax, dword [ebp - 0x28]
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.00407e99
lea ecx, [ebp - 0x60]
mov byte [ebp - 4], 7
call fcn.00407e99
lea eax, [ebp - 0x15c]
push eax
lea eax, [ebp - 0x60]
push 0x22
push eax
call fcn.0040e263
push 0x22
push eax
lea eax, [ebp - 0x94]
mov byte [ebp - 4], 9
push eax
call fcn.0040e2f7
mov eax, dword [eax + 8]
add esp, 0x18
cmp eax, ebx
mov dword [ebp - 0x14], 0x424634
je 0x4096b1
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], ebx
jne 0x4096bb
mov dword [ebp - 0x10], ebx
jmp 0x4096ed
push dword [ebp - 0x14]
call esi
lea eax, [eax + eax + 2]
mov dword [ebp - 0x10], eax
add eax, 3
and al, 0xfc
call fcn.00418450
mov eax, esp
push ebx
push ebx
mov dword [ebp - 0x28], eax
push dword [ebp - 0x10]
mov byte [eax], bl
push eax
push 0xffffffffffffffff
push dword [ebp - 0x14]
push ebx
push ebx
call edi
mov eax, dword [ebp - 0x28]
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.00407e99
lea ecx, [ebp - 0x60]
mov byte [ebp - 4], 7
call fcn.00407e99
cmp dword [ebp - 0xd8], ebx
je 0x40979a
mov eax, dword [ebp - 0xdc]
mov dword [ebp - 0x14], 0x424634
cmp eax, ebx
je 0x40973f
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], ebx
jne 0x409749
mov dword [ebp - 0x10], ebx
jmp 0x40977b
push dword [ebp - 0x14]
call esi
lea eax, [eax + eax + 2]
mov dword [ebp - 0x10], eax
add eax, 3
and al, 0xfc
call fcn.00418450
mov eax, esp
push ebx
push ebx
mov dword [ebp - 0x28], eax
push dword [ebp - 0x10]
mov byte [eax], bl
push eax
push 0xffffffffffffffff
push dword [ebp - 0x14]
push ebx
push ebx
call edi
mov eax, dword [ebp - 0x28]
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]
cmp dword [ebp - 0x20], ebx
je 0x4097ab
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.0040c2fc
lea eax, [ebp - 0x134]
mov byte [ebp - 4], 0xa
push eax
lea eax, [ebp - 0x10c]
push 0x22
push eax
call fcn.0040e263
push 0x22
push eax
lea eax, [ebp - 0x94]
mov byte [ebp - 4], 0xb
push eax
call fcn.0040e2f7
add esp, 0x18
lea ecx, [ebp - 0x60]
mov byte [ebp - 4], 0xc
push ecx
push eax
lea ecx, [ebp - 0xbc]
call fcn.0040c3d6
lea ecx, [ebp - 0x94]
mov byte [ebp - 4], 0xb
call fcn.00407e99
lea ecx, [ebp - 0x10c]
mov byte [ebp - 4], 0xa
call fcn.00407e99
lea ecx, [ebp - 0x60]
mov byte [ebp - 4], 7
call fcn.00407e99
lea eax, [ebp - 0x15]
push 1
push eax
push str._IS_E_
lea ecx, [ebp - 0x60]
call fcn.0040c2fc
lea eax, [ebp - 0x15c]
mov byte [ebp - 4], 0xd
push eax
lea eax, [ebp - 0x94]
push 0x22
push eax
call fcn.0040e263
push 0x22
push eax
lea eax, [ebp - 0x10c]
mov byte [ebp - 4], 0xe
push eax
call fcn.0040e2f7
add esp, 0x18
lea ecx, [ebp - 0x60]
mov byte [ebp - 4], 0xf
push ecx
push eax
lea ecx, [ebp - 0xbc]
call fcn.0040c3d6
lea ecx, [ebp - 0x10c]
mov byte [ebp - 4], 0xe
call fcn.00407e99
lea ecx, [ebp - 0x94]
mov byte [ebp - 4], 0xd
call fcn.00407e99
lea ecx, [ebp - 0x60]
mov byte [ebp - 4], 7
call fcn.00407e99
cmp dword [ebp - 0xd8], ebx
je 0x4098f5
lea eax, [ebp - 0x15]
push 1
push eax
push str._IS_V_
lea ecx, [ebp - 0x94]
call fcn.0040c2fc
lea eax, [ebp - 0x94]
lea ecx, [ebp - 0xbc]
push eax
lea eax, [ebp - 0xe4]
push eax
mov byte [ebp - 4], 0x10
call fcn.0040c3d6
lea ecx, [ebp - 0x94]
mov byte [ebp - 4], 7
call fcn.00407e99
mov eax, dword [ebp - 0xb4]
mov dword [ebp - 0x14], 0x424634
cmp eax, ebx
je 0x409909
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], ebx
jne 0x409912
xor esi, esi
jmp 0x40993b
push dword [ebp - 0x14]
call esi
lea eax, [eax + eax + 2]
mov dword [ebp - 0x10], eax
add eax, 3
and al, 0xfc
call fcn.00418450
mov esi, esp
push ebx
push ebx
push dword [ebp - 0x10]
mov byte [esi], bl
push esi
push 0xffffffffffffffff
push dword [ebp - 0x14]
push ebx
push ebx
call edi
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
inc eax
push eax
push esi
push 1
push ebx
push str.ISSetup
push dword [ebp - 0x1c]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
cmp dword [ebp - 0x20], ebx
je 0x409967
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.00407e99
lea ecx, [ebp - 0x15c]
mov byte [ebp - 4], 4
call fcn.00407e99
lea ecx, [ebp - 0x134]
mov byte [ebp - 4], 3
call fcn.00407e99
lea ecx, [ebp - 0xbc]
mov byte [ebp - 4], 2
call fcn.00407e99
mov byte [ebp - 4], 1
call dword [sym.imp.ole32.dll_CoUninitialize]
jmp 0x4099d5
lea eax, [ebp - 0x1660]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
inc eax
push eax
lea eax, [ebp - 0x1660]
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 0x4099e6
push dword [ebp - 0x1c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [ebp - 0x1c], ebx
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 - 0x660]
mov edi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
push eax
push ebx
push dword [0x4245fc]
push dword [0x42460c]
call edi
mov esi, dword [ebp - 0x24]
cmp dword [esi + 0x2100], ebx
jne 0x409a22
cmp eax, 1
je 0x409a22
cmp eax, 2
jne 0x409a53
push 4
lea eax, [ebp - 0x38]
push 0x429af8
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
lea eax, [ebp - 0x660]
push eax
lea eax, [ebp - 0x38]
push eax
push dword [0x4245fc]
push dword [0x42460c]
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
lea ecx, [ebp - 0x660]
lea eax, [esi + 0x8ac]
push ecx
push ebx
push dword [0x4245fc]
mov dword [ebp + 8], eax
push eax
call edi
cmp dword [esi + 0x1cfc], ebx
jne 0x409a7f
cmp eax, 1
je 0x409a7f
cmp eax, 2
jne 0x409aad
push 4
lea eax, [ebp - 0x38]
push 0x429af8
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
lea eax, [ebp - 0x660]
push eax
lea eax, [ebp - 0x38]
push eax
push dword [0x4245fc]
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
cmp dword [ebp - 0x2c], 3
je 0x409acd
cmp dword [0x430b30], ebx
je 0x409ac2
call fcn.00412a32
jmp 0x409acd
push 0x453
call fcn.00411e38
pop ecx
cmp dword [ebp - 0x1c], ebx
je 0x409adb
push dword [ebp - 0x1c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [ebp - 0xc]
lea esp, [ebp - 0x266c]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
leave
ret 8