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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x174
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 eax, dword [ecx + 0x98]
push eax
lea eax, [esp + 0x74]
call fcn.00404cb0
add esp, 4
test al, al
je 0x4076c8
push str.TEMP
call fcn.00420d1e
mov esi, eax
add esp, 4
mov eax, str..exe
mov dword [esp + 0xc], esi
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
test cl, cl
jne 0x4073e0
sub eax, edx
mov edi, eax
cmp byte [0x444a85], cl
jne 0x4073ff
call fcn.004060f0
mov byte [0x444a85], 1
mov edx, dword [0x444b3c]
mov eax, dword [edx + 0x9c]
lea edx, [eax + 1]
mov edi, edi
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x407410
sub eax, edx
mov ebx, eax
mov eax, esi
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x407420
sub eax, edx
mov edx, eax
mov eax, dword [esp + 0x10]
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x407432
sub eax, esi
add eax, edx
add eax, ebx
lea eax, [eax + edi + 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
add esp, 0x18
test eax, eax
jne 0x4074bb
push ebx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
jne 0x4074c4
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
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 ecx, ebx
add esp, 8
mov word [eax], 0x22
lea esi, [ecx + 1]
lea esp, [esp]
mov dl, byte [ecx]
inc ecx
test dl, dl
jne 0x407520
sub ecx, esi
lea esi, [ecx + 1]
lea edx, [esi + 1]
push edx
push eax
call fcn.004228ad
mov ecx, 1
add esp, 8
cmp esi, ecx
jle 0x40754e
mov dl, byte [ebx + ecx - 1]
mov byte [ecx + eax], dl
inc ecx
cmp ecx, esi
jl 0x407542
lea ecx, [esi + 3]
push ecx
push eax
mov byte [esi + eax], 0
call fcn.004228ad
lea ecx, [esi + 2]
add esp, 8
mov edi, eax
mov eax, esi
cmp esi, ecx
jge 0x40758f
mov edx, 0x43daa8
sub edx, esi
mov dword [esp + 0xc], edx
jmp 0x407584
mov edx, dword [esp + 0xc]
mov dl, byte [edx + eax]
mov byte [eax + edi], dl
inc eax
cmp eax, ecx
jl 0x407580
mov eax, 1
mov esi, ecx
mov byte [esi + edi], 0
mov dword [esp + 0xc], eax
cmp dword [0x443cd0], eax
jle 0x40766a
lea eax, [esi + 2]
push eax
push edi
call fcn.004228ad
lea edi, [esi + 1]
add esp, 8
mov ecx, esi
cmp esi, edi
jge 0x4075d2
mov edx, 0x43c654
sub edx, esi
mov bl, byte [edx + ecx]
mov byte [ecx + eax], bl
inc ecx
cmp ecx, edi
jl 0x4075c7
mov ecx, dword [0x443cd4]
mov edx, dword [esp + 0xc]
mov byte [edi + eax], 0
mov ebx, dword [ecx + edx*4]
mov ecx, ebx
lea esi, [ecx + 1]
mov dl, byte [ecx]
inc ecx
test dl, dl
jne 0x4075e8
sub ecx, esi
lea esi, [ecx + edi]
lea ecx, [esi + 1]
push ecx
push eax
call fcn.004228ad
add esp, 8
mov ecx, edi
cmp edi, esi
jge 0x40761b
mov edx, ebx
sub edx, edi
jmp 0x407610
mov bl, byte [edx + ecx]
mov byte [ecx + eax], bl
inc ecx
cmp ecx, esi
jl 0x407610
lea edx, [esi + 3]
push edx
push eax
mov byte [esi + eax], 0
call fcn.004228ad
lea ecx, [esi + 2]
add esp, 8
mov edi, eax
mov eax, esi
cmp esi, ecx
jge 0x40764b
mov edx, 0x43daa8
sub edx, esi
mov edi, edi
mov bl, byte [edx + eax]
mov byte [eax + edi], bl
inc eax
cmp eax, ecx
jl 0x407640
mov eax, dword [esp + 0xc]
inc eax
mov esi, ecx
mov byte [esi + edi], 0
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 edi
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
add esp, 4
push edi
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