Function at 0x40a910
Capabilities:
Create process on windows
Encode data using xor
Get common file path
Terminate process

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x364
mov eax, dword [0x42c760]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [0x423380]
push esi
mov esi, dword [ebp + 8]
mov dword [ebp - 0x108], eax
mov ax, word [0x423384]
push 0xfe
mov word [ebp - 0x104], ax
lea eax, [ebp - 0x102]
push 0
push eax
call fcn.0040cfa0
add esp, 0xc
mov dword [0x42fc48], esi
cmp byte [0x42fc58], 0
jne 0x40a975
push 0x104
push 0x42fc58
push esi
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push ebx
push 5
push str.Setup
push 0x42c726
call fcn.00416680
neg eax
sbb eax, eax
neg eax
mov dword [0x42fd60], eax
call fcn.0040a2d0
push 0x42fc50
call fcn.0040a740
push 0
mov dword [0x42fc4c], eax
call fcn.004076c0
mov eax, dword [0x42c4ec]
add esp, 0x14
xor ebx, ebx
test eax, eax
jle 0x40a9eb
mov esi, 0x42c6fc
push edi
mov edi, dword [ebx*4 + 0x42c4e0]
xor edx, edx
test edi, edi
jle 0x40a9e2
nop
lea ecx, [esi + edx]
lea eax, [edx + 0x64]
inc edx
xor byte [ecx], al
cmp edx, edi
jl 0x40a9d0
mov eax, dword [0x42c4ec]
inc ebx
add esi, 0xa
cmp ebx, eax
jl 0x40a9c1
pop edi
mov ecx, dword [0x42fd60]
pop ebx
cmp ecx, 1
jne 0x40aab6
mov ecx, 0x42fc58
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40aa03
sub ecx, edx
lea eax, [ecx + 0x42fc4c]
push eax
push 0x423390
call fcn.0040f993
add esp, 8
test eax, eax
je 0x40aab0
lea eax, [ebp - 0x20c]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
lea eax, [ebp - 0x20c]
push eax
call fcn.004087c0
push str._DSUItmp.exe
lea eax, [ebp - 0x20c]
push eax
push str._s_s
lea eax, [ebp - 0x108]
push 0x104
push eax
call fcn.00404c40
lea eax, [ebp - 0x108]
push eax
push 0x42fc58
call fcn.00406ca0
add esp, 0x20
lea eax, [ebp - 0x108]
push 1
push 0
push 0
push eax
push 0
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteA]
cmp eax, 0x20
ja 0x40ac9a
mov eax, 0x17
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040b37e
mov esp, ebp
pop ebp
ret
mov ecx, dword [0x42fd60]
test ecx, ecx
mov edx, str.Uninstall.dis
push 1
mov eax, str.Setup.dis
cmovne eax, edx
push 0x42fd5c
push eax
call fcn.00406be0
mov ecx, eax
add esp, 0xc
mov dword [0x42fc54], ecx
test ecx, ecx
jne 0x40aaf3
lea eax, [ecx + 1]
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040b37e
mov esp, ebp
pop ebp
ret
mov eax, dword [0x42fd5c]
push 1
mov byte [eax + ecx], 0
call fcn.004076c0
add esp, 4
test eax, eax
jne 0x40ac8b
push 0x154
push eax
lea eax, [ebp - 0x360]
mov dword [ebp - 0x364], 0x158
push eax
call fcn.0040cfa0
add esp, 0xc
lea eax, [ebp - 0x364]
push 0
push eax
push 0
push 0x29
call dword [sym.imp.USER32.dll_SystemParametersInfoA]
cmp byte [ebp - 0x230], 0
jne 0x40ac08
push str.Arial
push 0
push 0
mov esi, dword [sym.imp.GDI32.dll_CreateFontA]
push 0
push 0
push 0
push 0
push 0
push 0
push 0x2bc
push 0
push 0
push 0
push 0xfffffffffffffff0
call esi
push 0x4233dc
push 0
push 0
push 0
push 0
push 0
push 0
push 0
push 0
push 0x190
push 0
push 0
push 0
push 0xfffffffffffffff2
mov dword [0x42fdec], eax
call esi
push 0x4233ec
push 0
push 0
push 0
push 0
push 0
push 0
push 0
push 0
push 0x2bc
push 0
push 0
push 0
push 0xfffffffffffffff2
mov dword [0x42fde8], eax
call esi
push 0x4233fc
push 0
push 0
push 0
push 0
push 0
push 0
push 1
push 0
push 0x190
push 0
push 0
push 0
push 0xfffffffffffffff2
mov dword [0x42fdf0], eax
call esi
mov dword [0x42fe00], eax
xor eax, eax
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040b37e
mov esp, ebp
pop ebp
ret
mov esi, dword [sym.imp.GDI32.dll_CreateFontIndirectA]
lea eax, [ebp - 0x24c]
push eax
call esi
mov dword [0x42fde8], eax
lea eax, [ebp - 0x24c]
push eax
mov dword [ebp - 0x23c], 0x2bc
call esi
mov dword [0x42fdf0], eax
lea eax, [ebp - 0x24c]
push eax
mov dword [ebp - 0x23c], 0x190
mov byte [ebp - 0x237], 1
call esi
movd xmm0, dword [ebp - 0x24c]
cvtdq2pd xmm0, xmm0
mov dword [0x42fe00], eax
mov dword [ebp - 0x33c], 0x2bc
mulsd xmm0, qword [0x423538]
cvttsd2si eax, xmm0
mov dword [ebp - 0x34c], eax
lea eax, [ebp - 0x34c]
push eax
call esi
mov dword [0x42fdec], eax
xor eax, eax
mov ecx, dword [ebp - 4]
xor ecx, ebp
pop esi
call fcn.0040b37e
mov esp, ebp
pop ebp
ret
push 0
call fcn.00416d37
int3