Function at 0x4123b4
Capabilities:
Create directory
Create process on windows
Get common file path

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffff004
push eax
add esp, 0xfffff600
push ebx
push esi
push edi
mov esi, 0x46d958
mov ebx, dword [ebp + 0xc]
push 0x2e
push ebx
call fcn.00453124
add esp, 8
test eax, eax
je 0x4123f0
push 0x45fa4b
push eax
call fcn.00453000
add esp, 8
test eax, eax
je 0x4123f7
xor eax, eax
jmp 0x4126f4
cmp byte [ebp + 0x10], 0
jne 0x412407
mov eax, 1
jmp 0x4126f4
cmp dword [0x466a98], 0
jne 0x41247f
push 0x44
push 0
lea edx, [ebp - 0x44]
push edx
call fcn.00452e2c
add esp, 0xc
lea ecx, [ebp - 0x54]
mov dword [ebp - 0x44], 0x44
push ecx
lea eax, [ebp - 0x44]
push eax
push 0
push 0
push 0
push 0
push 0
push 0
push ebx
call fcn.0040809c
push eax
push 0
call sub.KERNEL32.dll_CreateProcessA
test eax, eax
je 0x412461
mov edx, dword [ebp - 0x50]
push edx
call sub.KERNEL32.dll_CloseHandle
mov ecx, dword [ebp - 0x54]
push ecx
call sub.KERNEL32.dll_CloseHandle
jmp 0x412475
push ebx
push 0x201
call fcn.00408028
push eax
call fcn.00414028
add esp, 8
mov eax, 1
jmp 0x4126f4
lea edx, [ebp - 0x454]
push edx
push 0x400
call sub.KERNEL32.dll_GetTempPathA
lea ecx, [ebp - 0x454]
push ecx
call fcn.004080c8
push 0x45fa50
lea eax, [ebp - 0x454]
push eax
call fcn.00452e5c
add esp, 8
lea edx, [ebp - 0x454]
push edx
call fcn.00456624
pop ecx
test eax, eax
je 0x4124d3
push 0
lea ecx, [ebp - 0x454]
push ecx
call sub.KERNEL32.dll_CreateDirectoryA
test eax, eax
jne 0x4124dd
mov eax, 1
jmp 0x4126f4
lea edx, [ebp - 0x854]
push edx
push 0x400
call sub.KERNEL32.dll_GetCurrentDirectoryA
lea ecx, [ebp - 0x454]
push ecx
call fcn.00457f40
pop ecx
push 0x938
push 0
lea eax, [ebp - 0x118c]
push eax
call fcn.00452e2c
add esp, 0xc
lea edx, [ebp - 0x118c]
push edx
push 0x465fe5
call fcn.0041eca0
push 0x465fe5
call fcn.0041834e
mov dword [ebp - 0xd8c], eax
xor eax, eax
push esi
or ecx, 0xffffffff
mov edi, 0x4668cb
lea esi, [ebp - 0xd80]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
xchg edi, esi
shr ecx, 2
mov eax, edi
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea eax, [ebp - 0x11b0]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop esi
push eax
call fcn.004262c0
lea edx, [ebp - 0x11a8]
push edx
call fcn.004262c0
push 0x474
push 0
lea ecx, [ebp - 0x1600]
push ecx
call fcn.00452e2c
add esp, 0xc
cmp dword [ebp - 0xd8c], 1
jne 0x41259a
mov eax, 0x45fa5d
jmp 0x41259f
mov eax, 0x45fa5f
mov edi, eax
xor eax, eax
push esi
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea esi, [ebp - 0x1600]
xchg edi, esi
mov edx, ecx
mov eax, edi
shr ecx, 2
lea eax, [ebp - 0x1600]
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop esi
mov dword [ebp - 0xd88], eax
mov dword [ebp - 0xd84], 1
mov dword [ebp - 0x880], 1
xor edx, edx
lea ecx, [ebp - 0x118c]
mov dword [ebp - 0x87c], edx
push ecx
push 0x465fe5
call fcn.0041ecdc
lea eax, [ebp - 0x1a00]
push eax
push 0x465fe5
call fcn.0041ec64
lea edx, [ebp - 0x1a00]
push edx
call fcn.00457f40
pop ecx
push esi
add esi, 0x404
xor eax, eax
mov edi, ebx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
xchg edi, esi
shr ecx, 2
mov eax, edi
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop esi
xor eax, eax
push esi
lea edi, [ebp - 0x118c]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
xchg edi, esi
shr ecx, 2
mov eax, edi
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop esi
lea eax, [esi + 0x804]
push eax
push 0x400
call sub.KERNEL32.dll_GetCurrentDirectoryA
push esi
add esi, 0xc04
xor eax, eax
lea edi, [ebp - 0x454]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
xchg edi, esi
shr ecx, 2
mov eax, edi
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop esi
xor eax, eax
push esi
add esi, 0x1004
lea edi, [ebp - 0x854]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
xchg edi, esi
shr ecx, 2
mov eax, edi
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop esi
mov eax, dword [ebp - 0xd8c]
mov dword [esi + 0x400], eax
push esi
push 0x10000
push 0x41095c
call fcn.0045bb50
add esp, 0xc
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc