Function at 0x10029420
Capabilities:
Create process on windows
Get common file path
Move file
Write and execute a file
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1006191a
mov eax, dword fs:[0]
push eax
sub esp, 0x55c
mov eax, dword [0x1007a010]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
lea eax, [ebp - 0x220]
push eax
xor ebx, ebx
push 0x104
mov dword [ebp - 4], ebx
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
test eax, eax
je 0x1002965e
mov dword [ebp - 0x434], 0xf
mov dword [ebp - 0x438], ebx
mov byte [ebp - 0x448], bl
mov byte [ebp - 4], 1
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push ebx
push eax
lea esi, [ebp - 0x4f0]
call fcn.1001fa80
add esp, 8
mov edi, eax
mov byte [ebp - 4], 2
lea eax, [ebp - 0x220]
mov dword [ebp - 0x450], 0xf
mov dword [ebp - 0x454], ebx
mov byte [ebp - 0x464], bl
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x100294c2
sub eax, esi
push eax
lea edx, [ebp - 0x220]
push edx
lea ecx, [ebp - 0x464]
call fcn.100035b0
lea eax, [ebp - 0x464]
push eax
mov edx, 0x1006fa3c
lea esi, [ebp - 0x480]
mov byte [ebp - 4], 3
call fcn.1002fa50
mov ecx, eax
mov eax, edi
lea edi, [ebp - 0x49c]
mov byte [ebp - 4], 4
call fcn.10016090
push eax
mov edx, str..bat
lea esi, [ebp - 0x4d4]
mov byte [ebp - 4], 5
call fcn.1002fa50
add esp, 8
push eax
lea ecx, [ebp - 0x448]
mov byte [ebp - 4], 6
call fcn.10003100
mov esi, 0x10
cmp dword [ebp - 0x4c0], esi
jb 0x10029550
mov ecx, dword [ebp - 0x4d4]
push ecx
call fcn.10046e92
add esp, 4
mov edi, 0xf
mov dword [ebp - 0x4c0], edi
mov dword [ebp - 0x4c4], ebx
mov byte [ebp - 0x4d4], bl
cmp dword [ebp - 0x488], esi
jb 0x1002957e
mov edx, dword [ebp - 0x49c]
push edx
call fcn.10046e92
add esp, 4
mov dword [ebp - 0x488], edi
mov dword [ebp - 0x48c], ebx
mov byte [ebp - 0x49c], bl
cmp dword [ebp - 0x46c], esi
jb 0x100295a7
mov eax, dword [ebp - 0x480]
push eax
call fcn.10046e92
add esp, 4
mov dword [ebp - 0x46c], edi
mov dword [ebp - 0x470], ebx
mov byte [ebp - 0x480], bl
cmp dword [ebp - 0x450], esi
jb 0x100295d0
mov ecx, dword [ebp - 0x464]
push ecx
call fcn.10046e92
add esp, 4
mov byte [ebp - 4], 1
mov dword [ebp - 0x450], edi
mov dword [ebp - 0x454], ebx
mov byte [ebp - 0x464], bl
cmp dword [ebp - 0x4dc], esi
jb 0x100295fd
mov edx, dword [ebp - 0x4f0]
push edx
call fcn.10046e92
add esp, 4
mov eax, dword [ebp - 0x448]
cmp dword [ebp - 0x434], esi
jae 0x10029611
lea eax, [ebp - 0x448]
push ebx
push 0x8000080
push 2
push ebx
push ebx
push 0x40000000
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov esi, eax
mov dword [ebp - 0x564], esi
cmp esi, 0xffffffff
jne 0x10029677
cmp dword [ebp - 0x434], 0x10
jb 0x1002964c
mov eax, dword [ebp - 0x448]
push eax
call fcn.10046e92
add esp, 4
mov dword [ebp - 0x434], edi
mov dword [ebp - 0x438], ebx
mov byte [ebp - 0x448], bl
cmp dword [ebp + 0x1c], 8
jb 0x10029670
mov ecx, dword [ebp + 8]
push ecx
call fcn.10046e92
add esp, 4
xor al, al
jmp 0x10029b1d
mov eax, dword [0x1007dd3c]
push 0x104
lea edx, [ebp - 0x118]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
test eax, eax
jne 0x100296dd
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [ebp - 0x434], 0x10
jb 0x100296b2
mov ecx, dword [ebp - 0x448]
push ecx
call fcn.10046e92
add esp, 4
cmp dword [ebp + 0x1c], 8
mov dword [ebp - 0x434], edi
mov dword [ebp - 0x438], ebx
mov byte [ebp - 0x448], bl
jb 0x10029670
mov edx, dword [ebp + 8]
push edx
call fcn.10046e92
add esp, 4
xor al, al
jmp 0x10029b1d
mov dword [ebp - 0x4a4], edi
mov dword [ebp - 0x4a8], ebx
mov byte [ebp - 0x4b8], bl
mov byte [ebp - 4], 7
cmp dword [ebp + 0x18], ebx
je 0x100297fc
cmp dword [ebp + 0x1c], 8
mov eax, dword [ebp + 8]
jae 0x10029708
lea eax, [ebp + 8]
push ebx
push ebx
push 0x209
lea ecx, [ebp - 0x42c]
push ecx
push 0xffffffffffffffff
push eax
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
test eax, eax
je 0x100297fc
push str.:m2_r_n_del__
lea ecx, [ebp - 0x480]
call fcn.10002a10
push eax
lea edx, [ebp - 0x42c]
lea esi, [ebp - 0x560]
mov byte [ebp - 4], 8
call fcn.1002fa50
push eax
mov edx, str.____NUL_r_n
lea esi, [ebp - 0x528]
mov byte [ebp - 4], 9
call fcn.1002fa50
push eax
mov edx, str._if_exist__
lea esi, [ebp - 0x50c]
mov byte [ebp - 4], 0xa
call fcn.1002fa50
push eax
lea edx, [ebp - 0x42c]
lea esi, [ebp - 0x544]
mov byte [ebp - 4], 0xb
call fcn.1002fa50
push eax
mov edx, str.__goto_m2_r_n
lea esi, [ebp - 0x4f0]
mov byte [ebp - 4], 0xc
call fcn.1002fa50
add esp, 0x14
push 0xffffffffffffffff
push ebx
push eax
lea ecx, [ebp - 0x4b8]
mov byte [ebp - 4], 0xd
call fcn.10009120
mov ecx, esi
call fcn.10002a50
lea ecx, [ebp - 0x544]
call fcn.10002a50
lea ecx, [ebp - 0x50c]
call fcn.10002a50
lea ecx, [ebp - 0x528]
call fcn.10002a50
lea ecx, [ebp - 0x560]
call fcn.10002a50
lea ecx, [ebp - 0x480]
mov byte [ebp - 4], 7
call fcn.10002a50
push 0xa
push str.:m_r_n_del__
lea ecx, [ebp - 0x464]
mov dword [ebp - 0x450], edi
mov dword [ebp - 0x454], ebx
mov byte [ebp - 0x464], bl
call fcn.100035b0
lea edx, [ebp - 0x464]
push edx
lea edx, [ebp - 0x118]
lea esi, [ebp - 0x4f0]
mov byte [ebp - 4], 0xe
call fcn.1002fa50
push eax
mov edx, str.____NUL_r_n
lea esi, [ebp - 0x544]
mov byte [ebp - 4], 0xf
call fcn.1002fa50
push eax
mov edx, str._if_exist__
lea esi, [ebp - 0x50c]
mov byte [ebp - 4], 0x10
call fcn.1002fa50
push eax
lea edx, [ebp - 0x118]
lea esi, [ebp - 0x528]
mov byte [ebp - 4], 0x11
call fcn.1002fa50
push eax
mov edx, str.__goto_m_r_n
lea esi, [ebp - 0x560]
mov byte [ebp - 4], 0x12
call fcn.1002fa50
push eax
mov edx, str._del__
lea esi, [ebp - 0x4d4]
mov byte [ebp - 4], 0x13
call fcn.1002fa50
mov ecx, eax
lea eax, [ebp - 0x448]
lea esi, [ebp - 0x49c]
mov byte [ebp - 4], 0x14
call fcn.10016100
push eax
mov edx, str.____NUL_r_n
lea esi, [ebp - 0x480]
mov byte [ebp - 4], 0x15
call fcn.1002fa50
add esp, 0x1c
push 0xffffffffffffffff
push ebx
push eax
lea ecx, [ebp - 0x4b8]
mov byte [ebp - 4], 0x16
call fcn.10009120
mov esi, 0x10
cmp dword [ebp - 0x46c], esi
jb 0x10029904
mov eax, dword [ebp - 0x480]
push eax
call fcn.10046e92
add esp, 4
mov dword [ebp - 0x46c], edi
mov dword [ebp - 0x470], ebx
mov byte [ebp - 0x480], bl
cmp dword [ebp - 0x488], esi
jb 0x1002992d
mov ecx, dword [ebp - 0x49c]
push ecx
call fcn.10046e92
add esp, 4
mov dword [ebp - 0x488], edi
mov dword [ebp - 0x48c], ebx
mov byte [ebp - 0x49c], bl
cmp dword [ebp - 0x4c0], esi
jb 0x10029956
mov edx, dword [ebp - 0x4d4]
push edx
call fcn.10046e92
add esp, 4
mov dword [ebp - 0x4c0], edi
mov dword [ebp - 0x4c4], ebx
mov byte [ebp - 0x4d4], bl
cmp dword [ebp - 0x54c], esi
jb 0x1002997f
mov eax, dword [ebp - 0x560]
push eax
call fcn.10046e92
add esp, 4
mov dword [ebp - 0x54c], edi
mov dword [ebp - 0x550], ebx
mov byte [ebp - 0x560], bl
cmp dword [ebp - 0x514], esi
jb 0x100299a8
mov ecx, dword [ebp - 0x528]
push ecx
call fcn.10046e92
add esp, 4
mov dword [ebp - 0x514], edi
mov dword [ebp - 0x518], ebx
mov byte [ebp - 0x528], bl
cmp dword [ebp - 0x4f8], esi
jb 0x100299d1
mov edx, dword [ebp - 0x50c]
push edx
call fcn.10046e92
add esp, 4
mov dword [ebp - 0x4f8], edi
mov dword [ebp - 0x4fc], ebx
mov byte [ebp - 0x50c], bl
cmp dword [ebp - 0x530], esi
jb 0x100299fa
mov eax, dword [ebp - 0x544]
push eax
call fcn.10046e92
add esp, 4
mov dword [ebp - 0x530], edi
mov dword [ebp - 0x534], ebx
mov byte [ebp - 0x544], bl
cmp dword [ebp - 0x4dc], esi
jb 0x10029a23
mov ecx, dword [ebp - 0x4f0]
push ecx
call fcn.10046e92
add esp, 4
mov dword [ebp - 0x4dc], edi
mov dword [ebp - 0x4e0], ebx
mov byte [ebp - 0x4f0], bl
cmp dword [ebp - 0x450], esi
jb 0x10029a4c
mov edx, dword [ebp - 0x464]
push edx
call fcn.10046e92
add esp, 4
mov eax, dword [ebp - 0x4b8]
cmp dword [ebp - 0x4a4], esi
jae 0x10029a60
lea eax, [ebp - 0x4b8]
mov edx, dword [ebp - 0x4a8]
mov edi, dword [ebp - 0x564]
push ebx
lea ecx, [ebp - 0x568]
push ecx
push edx
push eax
push edi
call dword [sym.imp.KERNEL32.dll_WriteFile]
push edi
test eax, eax
jne 0x10029aaa
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea ecx, [ebp - 0x4b8]
call fcn.10002a50
lea ecx, [ebp - 0x448]
call fcn.10002a50
lea ecx, [ebp + 8]
call fcn.10007650
xor al, al
jmp 0x10029b1d
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp - 0x448]
cmp dword [ebp - 0x434], esi
jae 0x10029ac4
lea eax, [ebp - 0x448]
push ebx
push eax
call dword [sym.imp.KERNEL32.dll_WinExec]
cmp eax, 0x1f
jb 0x10029a88
mov eax, dword [ebp - 0x448]
cmp dword [ebp - 0x434], esi
jae 0x10029ae5
lea eax, [ebp - 0x448]
mov esi, dword [sym.imp.KERNEL32.dll_MoveFileExA]
push 4
push ebx
push eax
call esi
push 4
push ebx
lea eax, [ebp - 0x118]
push eax
call esi
lea ecx, [ebp - 0x4b8]
call fcn.10002a50
lea ecx, [ebp - 0x448]
call fcn.10002a50
lea ecx, [ebp + 8]
call fcn.10007650
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.1004677e
mov esp, ebp
pop ebp
ret