Function at 0x401113
Capabilities:
Copy file
Create process on windows
Delete file
Query environment variable
Read .ini file
Set current directory
Set environment variable
Set file attributes

Disassembly:
push ebp
lea ebp, [esp - 0xa68]
sub esp, 0xae8
mov eax, dword [0x40c018]
xor eax, ebp
mov dword [ebp + 0xa64], eax
mov eax, dword [ebp + 0xa78]
mov dword [ebp + 0x2c], eax
mov eax, dword [ebp + 0xa70]
push ebx
mov ecx, 0x40cd24
mov dword [0x40cd20], eax
call fcn.00401818
xor ebx, ebx
push 0x104
lea eax, [ebp + 0x85c]
push eax
push ebx
mov dword [ebp + 0x34], ebx
mov byte [ebp + 0x44c], bl
mov byte [ebp + 0x758], bl
mov byte [ebp + 0x654], bl
mov byte [ebp + 0x348], bl
mov byte [ebp + 0x960], bl
mov byte [ebp + 0x85c], bl
call dword [sym.imp.KERNEL32.DLL_GetModuleFileNameA]
lea eax, [ebp + 0x85c]
push eax
call fcn.00401622
test eax, eax
jne 0x4011a1
or eax, 0xffffffff
jmp 0x401588
push esi
push edi
lea eax, [ebp + 0x85c]
push 0x5c
push eax
call fcn.00401c44
mov esi, dword [sym.imp.USER32.dll_wsprintfA]
mov byte [eax], bl
lea eax, [ebp + 0x85c]
push eax
lea eax, [ebp + 0x348]
push str._sFinePlus.ini
push eax
call esi
mov edi, dword [sym.imp.KERNEL32.DLL_SetFileAttributesA]
add esp, 0x14
push 0x80
lea eax, [ebp + 0x348]
push eax
call edi
lea eax, [ebp + 0x348]
push eax
push 0x104
lea eax, [ebp + 0x244]
push eax
push ebx
push str.0001
push str.FinePlus
call dword [sym.imp.KERNEL32.DLL_GetPrivateProfileStringA]
test eax, eax
je 0x40122f
lea eax, [ebp + 0x960]
push eax
lea eax, [ebp + 0x85c]
push eax
lea eax, [ebp + 0x244]
push eax
call fcn.004010b5
test eax, eax
jne 0x4012f3
lea eax, [ebp + 0x85c]
push eax
lea eax, [ebp + 0x960]
push str._sQQ.exe
push eax
call esi
add esp, 0xc
lea eax, [ebp + 0x960]
push eax
call fcn.00401000
test eax, eax
jne 0x4012f3
lea eax, [ebp + 0x960]
push eax
call fcn.00401059
test eax, eax
je 0x40127b
lea eax, [ebp + 0x960]
push eax
call fcn.00401000
test eax, eax
jne 0x4012f3
push 0x54
lea eax, [ebp - 0x38]
push ebx
push eax
call fcn.00401fa0
lea eax, [ebp + 0x960]
mov dword [ebp - 0x20], eax
add esp, 0xc
lea eax, [ebp - 0x3c]
push eax
mov dword [ebp - 0x3c], 0x58
mov dword [ebp - 0x30], 0x40927c
mov dword [ebp - 8], 0x804
mov dword [ebp - 0x1c], 0x104
call dword [sym.imp.comdlg32.dll_GetOpenFileNameA]
test eax, eax
je 0x40156b
lea eax, [ebp + 0x960]
push eax
call fcn.00401000
test eax, eax
je 0x40156b
lea eax, [ebp + 0x348]
push eax
lea eax, [ebp + 0x960]
push eax
push str.0001
push str.FinePlus
call dword [sym.imp.KERNEL32.DLL_WritePrivateProfileStringA]
lea eax, [ebp + 0x960]
push eax
lea eax, [ebp + 0x44c]
push eax
call fcn.00401ea0
push 0x5c
push eax
call fcn.00401c44
mov byte [eax], bl
add esp, 0x10
lea eax, [ebp + 0x44c]
push eax
call dword [sym.imp.KERNEL32.DLL_SetCurrentDirectoryA]
lea eax, [ebp + 0x85c]
push eax
lea eax, [ebp + 0x654]
push str._sFinePlus.dll
push eax
call esi
add esp, 0xc
lea eax, [ebp + 0x654]
push eax
call fcn.004015d8
test eax, eax
lea eax, [ebp + 0x654]
jne 0x40135a
push ebx
push 0x40925c
push eax
jmp 0x40157c
push 0x80
push eax
call edi
lea eax, [ebp + 0x44c]
push eax
lea eax, [ebp + 0x140]
push str._sFinePlus.ini
push eax
call esi
lea eax, [ebp + 0x85c]
push eax
lea eax, [ebp + 0x758]
push str._sMSIMG32.dll
push eax
call esi
lea eax, [ebp + 0x44c]
push eax
lea eax, [ebp + 0x550]
push str._sMSIMG32.dll
push eax
call esi
add esp, 0x24
lea eax, [ebp + 0x758]
push eax
call fcn.004015d8
mov dword [ebp + 0x30], eax
lea eax, [ebp + 0x550]
push eax
call fcn.004015d8
cmp dword [ebp + 0x30], ebx
mov dword [ebp + 0x38], eax
je 0x401417
push 0x80
lea eax, [ebp + 0x758]
push eax
call edi
cmp dword [ebp + 0x38], ebx
lea eax, [ebp + 0x550]
je 0x4013fe
push eax
call fcn.0040171a
mov edi, eax
lea eax, [ebp + 0x758]
push eax
call fcn.0040171a
cmp eax, edi
nop
nop
jmp 0x408630
jmp 0x408630
mov dword [ebp + 0x38], eax
cmp dword [ebp + 0x38], ebx
jne 0x40141b
jmp 0x401438
cmp eax, ebx
je 0x401438
lea eax, [ebp + 0x550]
push eax
call fcn.00401622
test eax, eax
jne 0x401441
lea eax, [ebp + 0x550]
push eax
call dword [sym.imp.KERNEL32.DLL_DeleteFileA]
mov dword [ebp + 0x34], 1
jmp 0x40147f
lea eax, [ebp + 0x960]
push eax
lea eax, [ebp + 0x85c]
push eax
call fcn.00401e71
pop ecx
test eax, eax
pop ecx
lea eax, [ebp + 0x140]
push eax
jne 0x401468
push str.FinePlus.dll
jmp 0x40146f
lea eax, [ebp + 0x654]
push eax
push str.Path
push str.WorkerDll
call dword [sym.imp.KERNEL32.DLL_WritePrivateProfileStringA]
push 0x40
lea eax, [ebp - 0x7c]
push ebx
push eax
mov dword [ebp - 0x80], ebx
call fcn.00401fa0
add esp, 0xc
lea eax, [ebp - 0x80]
push eax
call dword [sym.imp.KERNEL32.DLL_GetStartupInfoA]
xor eax, eax
mov dword [ebp + 0x1c], ebx
lea edi, [ebp + 0x20]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
lea eax, [ebp + 0x85c]
push eax
push str._s___Path___
mov edi, 0x40ed38
push edi
call esi
add esp, 0xc
push 0x2000
push 0x40cd38
push edi
call dword [sym.imp.KERNEL32.DLL_ExpandEnvironmentStringsA]
test eax, eax
je 0x4014e4
push 0x40cd38
push str.PATH
call dword [sym.imp.KERNEL32.DLL_SetEnvironmentVariableA]
jmp 0x4014f1
lea eax, [ebp + 0x85c]
push eax
call dword [sym.imp.KERNEL32.DLL_SetCurrentDirectoryA]
push dword [ebp + 0x2c]
lea eax, [ebp + 0x244]
push eax
call fcn.00401ea0
lea eax, [ebp + 0x244]
push eax
lea eax, [ebp + 0x3c]
push 0x40920c
push eax
call esi
add esp, 0x14
lea eax, [ebp + 0x1c]
push eax
lea eax, [ebp - 0x80]
push eax
lea eax, [ebp + 0x44c]
push eax
push ebx
push ebx
push ebx
push ebx
push ebx
lea eax, [ebp + 0x3c]
push eax
lea eax, [ebp + 0x960]
push eax
call dword [sym.imp.KERNEL32.DLL_CreateProcessA]
test eax, eax
je 0x401567
cmp dword [ebp + 0x34], ebx
je 0x401557
lea eax, [ebp + 0x654]
push eax
push dword [ebp + 0x1c]
mov ecx, 0x40cd24
call fcn.004019a9
push dword [ebp + 0x20]
mov esi, dword [sym.imp.KERNEL32.DLL_CloseHandle]
call esi
push dword [ebp + 0x1c]
call esi
xor eax, eax
jmp 0x401586
push ebx
push 0x409204
mov byte [ebp + 0x960], bl
push 0x4091e4
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
or eax, 0xffffffff
pop edi
pop esi
mov ecx, dword [ebp + 0xa64]
xor ecx, ebp
pop ebx
call fcn.00401e84
add ebp, 0xa68
leave
ret 0x10
lea eax, [ebp + 0x550]
push ebx
push eax
lea eax, [ebp + 0x758]
push eax
call dword [sym.imp.KERNEL32.DLL_CopyFileA]
lea eax, [ebp + 0x85c]
push eax
lea eax, [ebp + 0x758]
push 0x408697
push eax
call esi
lea eax, [ebp + 0x44c]
push eax
lea eax, [ebp + 0x550]
push 0x408697
push eax
call esi
add esp, 0x18
push 0
lea eax, [ebp + 0x550]
push eax
lea eax, [ebp + 0x758]
push eax
call dword [sym.imp.KERNEL32.DLL_CopyFileA]
jmp 0x40140d