Function at 0x407350
Capabilities:
Check if file exists
Create process on windows
Set file attributes

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
add esp, 0xfffffe8c
mov eax, dword [0x441480]
xor eax, esp
mov dword [esp + 0x170], eax
push ebx
push esi
push edi
push 0x104
lea eax, [esp + 0x74]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
cmp byte [0x444a85], 0
jne 0x407394
call fcn.004060f0
mov byte [0x444a85], 1
mov ecx, dword [0x444b3c]
mov ebx, dword [ecx + 0x98]
push ebx
lea eax, [esp + 0x74]
call fcn.00404cb0
sub esp, 0xfffffffc
or al, al
je 0x4076c8
push str.TEMP
call fcn.00420d1e
mov ebx, eax
add esp, 4
mov eax, str..exe
mov dword [esp + 0xc], ebx
call fcn.004020c0
mov dword [esp + 0x10], eax
lea eax, [esp + 0x70]
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
or cl, cl
jne 0x4073e0
sub eax, edx
mov esi, eax
cmp byte [0x444a85], cl
jne 0x4073ff
call fcn.004060f0
mov byte [0x444a85], 1
mov eax, dword [0x444b3c]
mov edx, dword [eax + 0x9c]
lea edi, [edx + 1]
mov esi, esi
mov cl, byte [edx]
inc edx
test cl, cl
jne 0x407410
mov eax, ebx
sub edx, edi
mov ebx, edx
lea edi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x407420
sub eax, edi
mov edx, eax
mov eax, dword [esp + 0x10]
lea edi, [eax + 1]
mov cl, byte [eax]
inc eax
or cl, cl
jne 0x407432
sub eax, edi
add eax, edx
add eax, ebx
lea eax, [eax + esi + 8]
push eax
call fcn.0041ff97
add esp, 4
cmp byte [0x444a85], 0
mov ebx, eax
mov dword [esp + 0x14], ebx
jne 0x407467
call fcn.004060f0
mov byte [0x444a85], 1
mov ecx, dword [0x444b3c]
mov edx, dword [ecx + 0x9c]
push edx
lea eax, [esp + 0x74]
push eax
push str._s__s.exe
push ebx
call fcn.00420bd5
push 0x43daa4
push ebx
call fcn.00421d73
sub esp, 0xffffffe8
or eax, eax
jne 0x4074bb
push ebx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
jne 0x4074c4
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
push ecx
push edx
push 0x43c26c
push ebx
call fcn.00420bd5
add esp, 0x10
jmp 0x4074c4
push eax
call fcn.004226f5
add esp, 4
cmp byte [0x444a85], 0
jne 0x4074d9
call fcn.004060f0
mov byte [0x444a85], 1
mov ecx, dword [0x444b3c]
mov ecx, dword [ecx + 0x98]
push 0
push ebx
lea eax, [esp + 0x78]
call fcn.00404f80
add esp, 8
push 6
push ebx
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
push 1
call fcn.00422819
add esp, 4
push 2
push eax
call fcn.004228ad
mov word [eax], 0x22
sub esp, 0xfffffff8
lea esp, [esp]
mov ecx, ebx
lea esi, [ecx + 1]
mov dl, byte [ecx]
inc ecx
or dl, dl
jne 0x407520
sub ecx, esi
lea edi, [ecx + 1]
lea edx, [edi + 1]
push edx
push eax
call fcn.004228ad
mov esi, 1
add esp, 8
cmp edi, esi
jle 0x40754e
mov dl, byte [ebx + esi - 1]
mov byte [esi + eax], dl
inc esi
cmp esi, edi
jl 0x407542
lea ecx, [edi + 3]
push ecx
push eax
mov byte [edi + eax], 0
call fcn.004228ad
mov esi, eax
lea ecx, [edi + 2]
mov eax, edi
sub esp, 0xfffffff8
cmp edi, ecx
jge 0x40758f
mov edx, 0x43daa8
sub edx, edi
mov dword [esp + 0xc], edx
jmp 0x407584
mov edx, dword [esp + 0xc]
mov dl, byte [edx + eax]
mov byte [eax + esi], dl
inc eax
cmp eax, ecx
jl 0x407580
mov eax, 1
mov edi, ecx
mov byte [edi + esi], 0
mov dword [esp + 0xc], eax
cmp dword [0x443cd0], eax
jle 0x40766a
lea eax, [edi + 2]
push eax
push esi
call fcn.004228ad
lea esi, [edi + 1]
sub esp, 0xfffffff8
mov ecx, edi
cmp edi, esi
jge 0x4075d2
mov edx, 0x43c654
sub edx, edi
mov bl, byte [edx + ecx]
mov byte [ecx + eax], bl
inc ecx
cmp ecx, esi
jl 0x4075c7
mov ecx, dword [0x443cd4]
mov edx, dword [esp + 0xc]
mov byte [esi + eax], 0
mov ebx, dword [ecx + edx*4]
mov ecx, ebx
lea edi, [ecx + 1]
mov dl, byte [ecx]
inc ecx
test dl, dl
jne 0x4075e8
sub ecx, edi
lea edi, [ecx + esi]
lea ecx, [edi + 1]
push ecx
push eax
call fcn.004228ad
add esp, 8
mov ecx, esi
cmp esi, edi
jge 0x40761b
mov edx, ebx
sub edx, esi
jmp 0x407610
mov bl, byte [edx + ecx]
mov byte [ecx + eax], bl
inc ecx
cmp ecx, edi
jl 0x407610
lea edx, [edi + 3]
push edx
push eax
mov byte [edi + eax], 0
call fcn.004228ad
mov esi, eax
sub esp, 0xfffffff8
lea ecx, [edi + 2]
cmp edi, ecx
mov eax, edi
jge 0x40764b
mov edx, 0x43daa8
sub edx, edi
mov esi, esi
mov bl, byte [edx + eax]
mov byte [eax + esi], bl
inc eax
cmp eax, ecx
jl 0x407640
mov edi, ecx
mov eax, dword [esp + 0xc]
mov byte [edi + esi], 0
inc eax
mov dword [esp + 0xc], eax
cmp eax, dword [0x443cd0]
jl 0x4075aa
mov ebx, dword [esp + 0x14]
push 0x44
lea eax, [esp + 0x2c]
push 0
push eax
call fcn.00429890
add esp, 0xc
xor eax, eax
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x2c]
push edx
push eax
push eax
push 0x100
push eax
push eax
push eax
push esi
push eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], eax
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
mov eax, dword [esp + 0x10]
push eax
call fcn.00420c59
add esp, 4
push ebx
call fcn.00420c59
sub esp, 0xfffffffc
push esi
call fcn.004214f1
add esp, 4
mov ecx, dword [esp + 0x17c]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00420bc6
mov esp, ebp
pop ebp
ret