Function at 0x401e90
Capabilities:
Check if file exists
Check os version
Contain obfuscated stackstrings
Create directory
Create process on windows
Get common file path
Read .ini file
Set registry value
Write and execute a file
Write file on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x1564
call fcn.00414020
mov eax, dword [section..data]
xor eax, esp
mov dword [esp + 0x1560], eax
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
push str.OA_Main_Window
push 0
push 0x1f0001
mov dword [esp + 0x1c], eax
call dword [sym.imp.KERNEL32.dll_OpenMutexW]
test eax, eax
jne 0x402951
push 0x206
push eax
mov word [esp + 0x670], ax
lea eax, [esp + 0x672]
push eax
call fcn.0040b750
mov esi, dword [sym.imp.USER32.dll_GetDesktopWindow]
lea eax, [esp + 0x674]
add esp, 0xc
push 0
push 0x1a
push eax
call esi
mov edi, dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
push eax
call edi
push 0x4206fc
lea eax, [esp + 0x66c]
push 0x104
push eax
call fcn.0040938f
add esp, 0xc
lea eax, [esp + 0x668]
push str.wenguanjia_
push 0x104
push eax
call fcn.0040938f
add esp, 0xc
xor eax, eax
mov word [esp + 0xf50], ax
push 0x206
push eax
lea eax, [esp + 0xf5a]
push eax
call fcn.0040b750
add esp, 0xc
lea eax, [esp + 0x668]
push eax
push 0x586c88
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
push str.filecache.ini
push 0x104
push 0x586c88
call fcn.0040938f
add esp, 0xc
push 0x586a80
call dword [sym.imp.KERNEL32.dll_lstrlenW]
test eax, eax
jg 0x401fbe
push 0x586c88
push 0x104
push 0x586a80
push 0x420700
push str.REName
push str.config
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
mov ecx, 0x586a80
call fcn.00401ce0
call fcn.00401c00
xor eax, eax
mov dword [esp + 0x3b8], 0x4034b50
push 0x206
push eax
mov word [esp + 0x3dc], ax
mov word [esp + 0xb48], ax
lea eax, [esp + 0xb4a]
mov dword [esp + 0x3c4], 0x14
movq xmm0, qword [esp + 0x3c0]
push eax
movq qword [0x426550], xmm0
mov dword [esp + 0x3c4], 0x650077
mov dword [esp + 0x3c8], 0x67006e
mov dword [esp + 0x3cc], 0x610075
mov dword [esp + 0x3d0], 0x6a006e
mov dword [esp + 0x3d4], 0x610069
mov dword [esp + 0x3d8], 0x65002e
mov dword [esp + 0x3dc], 0x650078
call fcn.0040b750
add esp, 0xc
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push eax
call fcn.004095bd
add esp, 4
call fcn.0040959c
cdq
mov ecx, 0x12
idiv ecx
lea eax, [esp + 0xb40]
shl edx, 8
add edx, 0x425350
push edx
push 0x104
push eax
call fcn.004093fb
add esp, 0xc
lea eax, [esp + 0xb40]
push str..exe
push 0x104
push eax
call fcn.0040938f
add esp, 8
call fcn.00406770
mov ebx, eax
add esp, 4
test ebx, ebx
je 0x4022ce
xor eax, eax
xor edi, edi
push 0x206
push eax
mov word [esp + 0x1160], ax
lea eax, [esp + 0x1162]
push eax
call fcn.0040b750
add esp, 0xc
xor eax, eax
mov word [esp + 0xd48], ax
push 0x206
push eax
lea eax, [esp + 0xd52]
push eax
call fcn.0040b750
add esp, 0xc
lea eax, [esp + 0x668]
push eax
lea eax, [esp + 0x115c]
push 0x104
push eax
call fcn.004093fb
add esp, 0xc
lea eax, [esp + 0x1158]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
mov esi, dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test eax, eax
jne 0x402152
push edi
lea eax, [esp + 0x115c]
push eax
call esi
lea eax, [esp + 0x60]
xor edx, edx
push eax
mov ecx, ebx
call fcn.00406840
add esp, 4
test eax, eax
jne 0x4022c2
jmp 0x402170
lea eax, [esp + 0x1158]
push eax
lea eax, [esp + 0xd4c]
push 0x104
push eax
call fcn.004093fb
add esp, 0xc
lea eax, [esp + 0x3b8]
lea ecx, [esp + 0x64]
mov dx, word [ecx]
cmp dx, word [eax]
jne 0x4021be
test dx, dx
je 0x4021ba
mov dx, word [ecx + 2]
cmp dx, word [eax + 2]
jne 0x4021be
add ecx, 4
add eax, 4
test dx, dx
jne 0x402198
xor eax, eax
jmp 0x4021c3
sbb eax, eax
or eax, 1
test eax, eax
lea eax, [esp + 0xb40]
je 0x4021d2
lea eax, [esp + 0x64]
push eax
lea eax, [esp + 0xd4c]
push 0x104
push eax
call fcn.0040938f
mov eax, dword [esp + 0x278]
add esp, 0xc
test al, 0x10
je 0x402206
push 0
lea eax, [esp + 0xd4c]
push eax
call esi
mov eax, dword [esp + 0x26c]
test al, 0x20
je 0x4022a8
push 0x42087c
lea eax, [esp + 0xd4c]
push eax
lea eax, [esp + 0x14]
push eax
call fcn.004095cd
add esp, 0xc
cmp dword [esp + 0xc], 0
je 0x4022a8
push dword [esp + 0x28c]
call fcn.004096dc
add esp, 4
mov esi, eax
push dword [esp + 0x28c]
push 0
push esi
call fcn.0040b750
add esp, 0xc
cmp dword [ebx], 1
je 0x402263
mov dword [0x587098], 0x80000
jmp 0x40227a
push ecx
push dword [esp + 0x290]
mov ecx, dword [ebx + 4]
push esi
push edi
call fcn.00406670
mov dword [0x587098], eax
push dword [esp + 0xc]
push dword [esp + 0x290]
push 1
push esi
call fcn.0040983e
push dword [esp + 0x1c]
call fcn.0040992c
add esp, 0x14
push esi
call fcn.00409597
mov esi, dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
add esp, 4
lea eax, [esp + 0x60]
inc edi
push eax
mov edx, edi
mov ecx, ebx
call fcn.00406840
add esp, 4
test eax, eax
je 0x402170
mov edi, dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
mov esi, dword [sym.imp.USER32.dll_GetDesktopWindow]
push 0
push 0
push 0
push 0
push 5
push 0x10000000
push 0x586c88
call dword [sym.imp.KERNEL32.dll_CreateFileW]
xor eax, eax
push 0x206
push eax
mov word [esp + 0x878], ax
lea eax, [esp + 0x87a]
push eax
call fcn.0040b750
add esp, 0xc
lea eax, [esp + 0x668]
push eax
lea eax, [esp + 0x874]
push 0x104
push eax
call fcn.004093fb
add esp, 0xc
lea eax, [esp + 0xb40]
push eax
lea eax, [esp + 0x874]
push 0x104
push eax
call fcn.0040938f
add esp, 0xc
mov dword [esp + 0x2a0], 0x114
lea eax, [esp + 0x2a0]
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
cmp dword [esp + 0x2a4], 5
jne 0x402388
cmp dword [esp + 0x2a8], 1
jne 0x402388
push ecx
lea edx, [esp + 0x66c]
lea ecx, [esp + 0x874]
call fcn.00401170
add esp, 4
jmp 0x402394
lea ecx, [esp + 0x870]
call fcn.00401420
lea eax, [esp + 0x290]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemTime]
xor eax, eax
push 0xc6
push eax
mov word [esp + 0xa80], ax
lea eax, [esp + 0xa82]
push eax
call fcn.0040b750
add esp, 0xc
xor eax, eax
mov word [esp + 0x460], ax
push 0x206
push eax
lea eax, [esp + 0x46a]
push eax
call fcn.0040b750
movzx eax, word [esp + 0x2a2]
add esp, 0xc
push eax
movzx eax, word [esp + 0x296]
push eax
lea eax, [esp + 0xa80]
push str._d_02d
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x10
lea eax, [esp + 0x460]
push 0
push 2
push eax
call esi
push eax
call edi
mov esi, dword [sym.imp.KERNEL32.dll_lstrcatW]
lea eax, [esp + 0x460]
push 0x4206fc
push eax
call esi
push 0x420894
lea eax, [esp + 0x464]
push eax
call esi
push 0x42089c
lea eax, [esp + 0x464]
push eax
call esi
lea eax, [esp + 0xa78]
push eax
lea eax, [esp + 0x464]
push eax
call esi
push 0x4208a0
lea eax, [esp + 0x464]
push eax
call esi
push 0x4206fc
lea eax, [esp + 0x464]
push eax
call esi
push 0x420894
sub esp, 0xc
lea edx, [esp + 0x880]
lea ecx, [esp + 0x470]
call fcn.00401760
add esp, 0x10
lea eax, [esp + 0x460]
push 0x586c88
push eax
push str.StartMenuPath
push str.config
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
xor eax, eax
push 0x206
push eax
mov word [esp + 0x1368], ax
lea eax, [esp + 0x136a]
push eax
call fcn.0040b750
add esp, 0xc
lea eax, [esp + 0x668]
push eax
lea eax, [esp + 0x1364]
push 0x104
push eax
call fcn.004093fb
add esp, 0xc
lea eax, [esp + 0x1360]
push 0x4208a4
push eax
call esi
push 0x4208c0
sub esp, 0xc
lea edx, [esp + 0x1370]
lea ecx, [esp + 0x470]
call fcn.00401760
lea eax, [esp + 0x3fc]
mov dword [esp + 0x3fc], 0x2f0020
push eax
lea eax, [esp + 0x884]
mov dword [esp + 0x404], 0x750061
push 0x104
push eax
mov dword [esp + 0x410], 0x6f0074
mov dword [esp + 0x414], 0x750072
mov dword [esp + 0x418], 0x6e
call fcn.0040938f
add esp, 0x1c
mov dword [esp + 0x400], 0x4f0053
lea eax, [esp + 0xc]
mov dword [esp + 0x404], 0x540046
xor esi, esi
mov dword [esp + 0x408], 0x410057
mov dword [esp + 0x40c], 0x450052
push eax
push 2
push esi
lea eax, [esp + 0x40c]
mov dword [esp + 0x41c], 0x4d005c
push eax
push 0x80000002
mov dword [esp + 0x428], 0x630069
mov dword [esp + 0x42c], 0x6f0072
mov dword [esp + 0x430], 0x6f0073
mov dword [esp + 0x434], 0x740066
mov dword [esp + 0x438], 0x57005c
mov dword [esp + 0x43c], 0x6e0069
mov dword [esp + 0x440], 0x6f0064
mov dword [esp + 0x444], 0x730077
mov dword [esp + 0x448], 0x43005c
mov dword [esp + 0x44c], 0x720075
mov dword [esp + 0x450], 0x650072
mov dword [esp + 0x454], 0x74006e
mov dword [esp + 0x458], 0x650056
mov dword [esp + 0x45c], 0x730072
mov dword [esp + 0x460], 0x6f0069
mov dword [esp + 0x464], 0x5c006e
mov dword [esp + 0x468], 0x750052
mov dword [esp + 0x46c], 0x6e
mov dword [esp + 0x20], esi
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
mov ebx, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test eax, eax
jne 0x4026e8
mov esi, dword [esp + 0xc]
lea ecx, [esp + 0x870]
lea edx, [ecx + 2]
lea ebx, [ebx]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4026b0
sub ecx, edx
sar ecx, 1
lea eax, [ecx*2 + 2]
push eax
lea eax, [esp + 0x874]
push eax
push 1
push 0
push str.wenguanjia
push esi
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
test esi, esi
je 0x4026e8
push esi
call ebx
xor esi, esi
lea eax, [esp + 0x668]
push eax
lea eax, [esp + 0xf54]
push 0x104
push eax
call fcn.004093fb
add esp, 0xc
lea eax, [esp + 0xb40]
push eax
lea eax, [esp + 0xf54]
push 0x104
push eax
call fcn.0040938f
xor eax, eax
mov dword [esp + 0x3e4], 0x2f0020
add esp, 0xc
mov word [esp + 0x3e8], ax
lea eax, [esp + 0x3d8]
mov dword [esp + 0x3dc], 0x6e0069
mov dword [esp + 0x3e0], 0x740069
mov dword [esp + 0x3e4], 0x630061
push eax
lea eax, [esp + 0xf54]
push 0x104
push eax
call fcn.0040938f
add esp, 0xc
mov dword [esp + 0x18], 0x44
xor eax, eax
mov dword [esp + 0x1c], 0
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], eax
lea eax, [esp + 0x3b8]
push eax
lea eax, [esp + 0x1c]
mov dword [esp + 0x24], 0x420700
push eax
push 0
push 0
push 0x200
push 0
push 0
push 0
lea eax, [esp + 0xf70]
mov dword [esp + 0x44], 0
push eax
push 0
mov dword [esp + 0x6c], 1
call dword [sym.imp.KERNEL32.dll_CreateProcessW]
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
test eax, eax
je 0x4027ef
push dword [esp + 0x3bc]
call edi
push dword [esp + 0x3b8]
call edi
push 0x586c88
lea eax, [esp + 0xb44]
push eax
push str.REName
push str.config
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
push 0x104
lea eax, [esp + 0xb44]
push eax
push dword [esp + 0x18]
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [esp + 0xb40]
push 0x5c
push eax
call fcn.004099a3
add esp, 8
test eax, eax
je 0x402852
push 0x586c88
add eax, 2
push eax
push str.InstallName
push str.config
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
push 0x586c88
lea eax, [esp + 0x66c]
push eax
push str.InstallPath
push str.config
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
sub esp, 8
call fcn.00407180
add esp, 8
mov dword [esp + 0x18], 0x44
lea eax, [esp + 0x3b8]
mov dword [esp + 0x1c], 0
mov dword [esp + 0x20], 0x420700
mov dword [esp + 0x24], 0
push eax
lea eax, [esp + 0x1c]
mov dword [esp + 0x48], 1
push eax
push 0
push 0
push 0x200
push 0
push 0
push 0
lea eax, [esp + 0x890]
mov dword [esp + 0x68], 5
push eax
push 0
mov dword [esp + 0x74], 0
call dword [sym.imp.KERNEL32.dll_CreateProcessW]
test eax, eax
je 0x4028f4
push dword [esp + 0x3bc]
call edi
push dword [esp + 0x3b8]
call edi
lea eax, [esp + 0x3b8]
mov dword [esp + 0x14], 1
push eax
lea eax, [esp + 0x14]
push eax
push 0
push 0xf003f
push 0
push 0
push 0
push str.SoftwareMicrosoftpcg
push 0x80000001
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
test eax, eax
jne 0x40294a
push 4
lea eax, [esp + 0x18]
push eax
push 4
push 0
push 0x420700
push dword [esp + 0x24]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
push dword [esp + 0x10]
call ebx
test esi, esi
je 0x402951
push esi
call ebx
mov ecx, dword [esp + 0x156c]
xor eax, eax
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00409348
mov esp, ebp
pop ebp
ret 0x10