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

Disassembly:
sub esp, 0x554
push ebx
mov ebx, dword [esp + 0x55c]
push ebp
push esi
push edi
push str.ins.exe
mov ebp, ecx
push ebx
call dword [sym.imp.MSVCRT.dll_strstr]
add esp, 8
test eax, eax
je 0x406f5b
mov eax, dword [ebp + 0x230c0]
xor edi, edi
test eax, eax
jle 0x406cc9
lea eax, [ebp + 0x132d8]
mov dword [esp + 0x10], eax
mov esi, ebx
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x406ca6
test cl, cl
je 0x406ca2
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x406ca6
add eax, 2
add esi, 2
test cl, cl
jne 0x406c82
xor eax, eax
jmp 0x406cab
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x406d86
mov eax, dword [esp + 0x10]
mov ecx, dword [ebp + 0x230c0]
inc edi
add eax, 0x41
cmp edi, ecx
mov dword [esp + 0x10], eax
jl 0x406c80
push 0
push ebx
call dword [sym.imp.MSVCRT.dll__access]
add esp, 8
test eax, eax
jne 0x406f4c
mov ecx, dword [ebp + 0x23394]
push 0x4109e4
add ecx, 0x29c
call sub.MFC42.DLL_CString::operator_1
lea ecx, [esp + 0x35c]
push ecx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
lea esi, [ebp + 0x23290]
push ebx
mov ebx, dword [sym.imp.MSVCRT.dll_sprintf]
push esi
lea edx, [esp + 0x468]
push 0x410670
push edx
call ebx
mov ecx, 0x41
xor eax, eax
lea edi, [esp + 0x164]
add esp, 0x10
rep stosd dword es:[edi], eax
mov ecx, 0x41
lea edi, [esp + 0x50]
rep stosd dword es:[edi], eax
lea eax, [esp + 0x35c]
push esi
push eax
lea ecx, [esp + 0x15c]
push str._s_s
push ecx
call ebx
mov ebx, dword [esp + 0x578]
or ecx, 0xffffffff
mov edi, ebx
xor eax, eax
add esp, 0x10
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov edx, ecx
dec edx
js 0x406e2d
cmp byte [edx + ebx], 0x5c
je 0x406da7
dec edx
jns 0x406d78
jmp 0x406e2d
mov eax, edi
shl eax, 6
add ebp, eax
mov eax, 1
mov byte [edi + ebp + 0x13318], 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x554
ret 4
mov ecx, 0x41
xor eax, eax
lea edi, [esp + 0x258]
mov esi, ebx
rep stosd dword es:[edi], eax
mov ecx, edx
lea edi, [esp + 0x258]
mov eax, ecx
lea ebx, [esp + 0x154]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x258]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, ebx
mov ebx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
mov ebx, dword [esp + 0x568]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [edx + ebx + 1]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x50]
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x50]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
jne 0x406e5e
mov edi, ebx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x50]
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, 0xf
xor eax, eax
lea edi, [esp + 0x14]
xor esi, esi
rep stosd dword es:[edi], eax
lea eax, [esp + 0x14]
lea ecx, [esp + 0x50]
lea edx, [esp + 0x154]
push eax
mov dword [esp + 0x18], 0x3c
mov dword [esp + 0x1c], 0x40
mov dword [esp + 0x20], esi
mov dword [esp + 0x24], esi
mov dword [esp + 0x28], ecx
mov dword [esp + 0x2c], esi
mov dword [esp + 0x30], edx
mov dword [esp + 0x34], 1
mov dword [esp + 0x38], esi
call dword [sym.imp.SHELL32.dll_ShellExecuteExA]
mov eax, dword [esp + 0x4c]
cmp eax, esi
je 0x406f4c
push 0xffffffffffffffff
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
lea ecx, [esp + 0x460]
mov dword [esp + 0x34], esi
push ecx
mov dword [esp + 0x50], esi
call dword [sym.imp.MSVCRT.dll__unlink]
mov eax, dword [ebp + 0x230c0]
mov ecx, ebp
mov edx, eax
mov edi, ebx
shl edx, 6
add ecx, edx
add esp, 4
lea edx, [eax + ecx + 0x132d8]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
mov edx, ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [ebp + 0x230c0]
pop edi
mov ecx, eax
pop esi
shl ecx, 6
add edx, ecx
mov byte [eax + edx + 0x13318], 1
mov eax, dword [ebp + 0x230c0]
inc eax
mov dword [ebp + 0x230c0], eax
pop ebp
mov eax, 1
pop ebx
add esp, 0x554
ret 4
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x554
ret 4
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
add esp, 0x554
ret 4