Function at 0x469690
Capabilities:
Check if file exists
Create process on windows
Get file size

Disassembly:
sub esp, 0x44
push esi
mov esi, ecx
xor cl, cl
push edi
mov eax, dword [esi + 0xec]
cmp eax, 1
jne 0x4696b0
mov ecx, esi
pop edi
pop esi
add esp, 0x44
jmp 0x46bf10
test eax, eax
jne 0x4696c0
mov ecx, esi
pop edi
pop esi
add esp, 0x44
jmp fcn.0046c1c0
cmp eax, 3
jne 0x4697bb
cmp dword [esi + 0x10c], 0
jne 0x4697b3
mov eax, dword [esi + 0xf4]
xorps xmm0, xmm0
mov dword [esp + 0x14], 0
movlpd qword [esp + 0x20], xmm0
movlpd qword [esp + 0x2c], xmm0
movlpd qword [esp + 0x34], xmm0
movlpd qword [esp + 0x3c], xmm0
mov dword [esp + 0x44], 0
mov dword [esp + 0xc], 0x3c
mov dword [esp + 0x10], 0x40
cmp dword [eax - 4], 1
jle 0x46972b
push dword [eax - 0xc]
lea ecx, [esi + 0xf4]
call fcn.00402410
mov ecx, dword [esi + 0xf8]
mov eax, dword [esi + 0xf4]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x28], 0
mov dword [esp + 0x18], str.open
mov eax, dword [ecx - 0xc]
test eax, eax
je 0x46976e
cmp dword [ecx - 4], 1
jle 0x469764
push eax
lea ecx, [esi + 0xf8]
call fcn.00402410
mov eax, dword [esi + 0xf8]
mov dword [esp + 0x20], eax
lea eax, [esp + 0xc]
push eax
call dword [sym.imp.SHELL32.dll_ShellExecuteExW]
test eax, eax
je 0x4697b3
mov eax, dword [esp + 0x44]
test eax, eax
je 0x4697b3
push 0xffffffffffffffff
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
lea eax, [esp + 8]
mov dword [esp + 8], 0
push eax
push dword [esp + 0x48]
call dword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
cmp dword [esp + 8], 0
setne al
pop edi
pop esi
add esp, 0x44
ret
xor al, al
pop edi
pop esi
add esp, 0x44
ret
cmp eax, 4
jne 0x4697cc
mov ecx, esi
pop edi
pop esi
add esp, 0x44
jmp fcn.0046c650
pop edi
mov al, cl
pop esi
add esp, 0x44
ret
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4d9cc5
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x50
mov eax, dword [0x514080]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov dword [ebp - 0x30], edi
cmp dword [edi + 0xec], 1
jne 0x46c137
cmp dword [edi + 0x10c], 0
jne 0x46c137
lea eax, [ebp - 0x2c]
mov dword [ebp - 0x2c], 0
xorps xmm0, xmm0
lea edx, [ebp - 0x4c]
push eax
lea ecx, [edi + 0xf4]
movlpd qword [ebp - 0x4c], xmm0
call fcn.0040f080
add esp, 4
test eax, eax
jne 0x46c137
test byte [edi + 0xf0], 1
je 0x46c0c2
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x5c], eax
mov dword [ebp - 0x60], eax
mov dword [ebp - 0x50], eax
mov eax, dword [edi + 0xf4]
cmp dword [eax - 4], 1
jle 0x46bfcf
push dword [eax - 0xc]
lea ecx, [edi + 0xf4]
call fcn.00402410
mov ecx, dword [edi + 0xf4]
lea eax, [ebp - 0x38]
push eax
lea edx, [ebp - 0x2c]
call fcn.0040ff30
add esp, 4
test eax, eax
jne 0x46c0b3
mov eax, dword [ebp - 0x2c]
mov ecx, eax
movzx eax, ax
shr ecx, 0x10
mov dword [ebp - 0x44], eax
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x48], ecx
mov ecx, eax
shr ecx, 0x10
movzx eax, ax
mov dword [ebp - 0x40], ecx
mov dword [ebp - 0x3c], eax
call fcn.004046f0
mov dword [ebp - 0x38], eax
test eax, eax
je 0x46c1aa
mov eax, dword [eax]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x4e1514]
mov ecx, dword [ebp - 0x38]
call esi
add eax, 0x10
mov dword [ebp - 0x2c], eax
mov dword [ebp - 4], 1
lea eax, [ebp - 0x2c]
push dword [ebp - 0x3c]
push dword [ebp - 0x40]
push dword [ebp - 0x44]
push dword [ebp - 0x48]
push str._d._d._d._d
push eax
call fcn.00408b50
add esp, 0x14
mov dword [ebp - 0x18], 0
lea eax, [ebp - 0x2c]
xorps xmm0, xmm0
lea ecx, [ebp - 0x28]
movups xmmword [ebp - 0x28], xmm0
push eax
call fcn.0041faa0
movups xmm0, xmmword [ebp - 0x28]
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x50], eax
movups xmmword [ebp - 0x60], xmm0
mov dword [ebp - 4], 0xffffffff
or eax, 0xffffffff
mov ecx, dword [ebp - 0x2c]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x46c0b3
mov edi, dword [ecx]
push ecx
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x4e1514]
mov ecx, edi
call esi
mov edi, dword [ebp - 0x30]
lea eax, [ebp - 0x60]
mov ecx, edi
push eax
call fcn.0046be90
test al, al
je 0x46c137
test byte [edi + 0xf0], 2
je 0x46c1a6
mov eax, dword [edi + 0xf4]
cmp dword [eax - 4], 1
jle 0x46c0e9
push dword [eax - 0xc]
lea ecx, [edi + 0xf4]
call fcn.00402410
push 0
push 0x80
push 3
push 0
push 0
push SysReAllocString
push dword [edi + 0xf4]
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov esi, eax
mov dword [ebp - 0x34], 0x4ec614
mov dword [ebp - 0x30], esi
mov dword [ebp - 4], 3
cmp esi, 0xffffffff
jne 0x46c157
mov dword [ebp - 4], eax
mov dword [ebp - 0x34], 0x4ec614
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [ebp - 0x30], 0
xor al, al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.004a1550
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
cmp dword [edi + 0x128], 0
jne 0x46c175
mov dword [ebp - 4], 0xffffffff
mov dword [ebp - 0x34], 0x4ec614
test esi, esi
je 0x46c137
push esi
jmp 0x46c12a
push 0
push esi
call dword [sym.imp.KERNEL32.dll_GetFileSize]
cmp eax, dword [edi + 0x128]
jne 0x46c160
mov dword [ebp - 4], 0xffffffff
mov dword [ebp - 0x34], 0x4ec614
test esi, esi
je 0x46c1a6
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [ebp - 0x30], 0
mov al, 1
jmp 0x46c139
push 0x80004005
call fcn.00402720
int3