Function at 0x401434
Capabilities:
Copy file
Create directory
Create process on windows
Create shortcut via ishelllink
Delete file
Delete registry value
Enumerate files on windows
Get file attributes
Get file version info
Move file
Query environment variable
Query or enumerate registry key
Query or enumerate registry value
Read .ini file
Read file on windows
Set current directory
Set file attributes
Set registry value
Write and execute a file
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1a4
mov eax, dword [0x423ea8]
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
push 7
pop ecx
lea edi, [ebp - 0x28]
mov dword [ebp - 0x34], eax
xor ebx, ebx
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebp - 0x24]
mov edx, dword [ebp - 0x20]
mov esi, eax
mov edi, edx
shl esi, 0xa
mov ecx, section..ndata
mov dword [ebp - 4], ebx
shl edi, 0xa
add esi, ecx
add edi, ecx
lea ecx, [ebp - 0x24]
mov dword [0x409b68], ecx
mov ecx, dword [ebp - 0x28]
add ecx, 0xfffffffe
cmp ecx, 0x41
ja case.0x401489.65
jmp dword [ecx*4 + 0x40289d]
push ebx
push eax
call fcn.00404f04
jmp 0x40220e
inc dword [0x42366c]
cmp dword [ebp - 0x34], ebx
je 0x40220e
push ebx
call dword [sym.imp.USER32.dll_PostQuitMessage]
jmp 0x40220e
push eax
call fcn.0040136d
dec eax
push ebx
push eax
call fcn.00401389
jmp case.0x401489.2
push ebx
push eax
call fcn.00404f04
jmp case.0x401489.65
push ebx
call fcn.004029d9
cmp eax, 1
jg 0x4014e4
xor eax, eax
inc eax
push eax
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp case.0x401489.65
push dword [ebp - 0x34]
call dword [sym.imp.USER32.dll_SetForegroundWindow]
jmp case.0x401489.65
shl eax, 2
cmp dword [ebp - 0x1c], ebx
jne 0x401528
mov ecx, dword [eax + 0x423f20]
push 1
mov dword [eax + 0x423f60], ecx
call fcn.004029d9
mov ecx, dword [ebp - 0x24]
mov dword [ecx*4 + 0x423f20], eax
jmp case.0x401489.65
mov ecx, dword [eax + 0x423f60]
mov dword [eax + 0x423f20], ecx
jmp case.0x401489.65
mov eax, dword [ebp - 0x1c]
lea esi, [eax*4 + 0x423f20]
xor eax, eax
mov ecx, dword [esi]
cmp ecx, ebx
sete al
and ecx, dword [ebp - 0x18]
mov eax, dword [ebp + eax*4 - 0x24]
mov dword [esi], ecx
jmp case.0x401489.2
push dword [edx*4 + 0x423f20]
push esi
jmp 0x402833
mov ecx, dword [0x423670]
mov esi, dword [sym.imp.USER32.dll_ShowWindow]
cmp ecx, ebx
je 0x40157e
push edx
push ecx
call esi
mov eax, dword [ebp - 0x24]
mov ecx, dword [0x423684]
cmp ecx, ebx
je case.0x401489.65
push eax
push ecx
call esi
jmp case.0x401489.65
push 0xfffffffffffffff0
call fcn.004029f6
push dword [ebp - 0x20]
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
test eax, eax
jne case.0x401489.65
jmp 0x40265c
push 0xfffffffffffffff0
call fcn.004029f6
mov edi, eax
push edi
call fcn.004056ed
mov esi, eax
cmp esi, ebx
je 0x40160a
push 0x5c
push esi
call fcn.00405684
mov esi, eax
push ebx
push edi
mov al, byte [esi]
mov byte [esi], bl
mov byte [ebp + 0xb], al
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
test eax, eax
jne 0x401600
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x4015fd
push edi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
test al, 0x10
jne 0x401600
inc dword [ebp - 4]
mov al, byte [ebp + 0xb]
mov byte [esi], al
inc esi
invalid