Function at 0x406fb0
Capabilities:
Check if file exists
Create process on windows
Get file attributes

Disassembly:
push 0x29c
mov eax, 0x5d78de
call fcn.005ad5b8
mov eax, dword [ebp + 8]
mov dword [ebp - 0x2a8], eax
lea eax, [ebp - 0x22c]
mov esi, ecx
push 0x8b
push eax
mov dword [ebp - 0x2a4], esi
call fcn.0040dfb6
pop ecx
pop ecx
and dword [ebp - 4], 0
cmp dword [eax + 0x14], 0x10
jb 0x406fef
mov eax, dword [eax]
mov edi, dword [esi + 0x58]
push eax
mov ebx, 0x60c3d4
push ebx
call fcn.0040e021
or dword [ebp - 4], 0xffffffff
pop ecx
pop ecx
xor esi, esi
push 0
inc esi
push esi
lea ecx, [ebp - 0x22c]
call fcn.0040228b
push 0x100
lea eax, [ebp - 0x210]
push eax
xor edi, edi
push edi
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
test eax, eax
jne 0x407057
push str.GetModuleFileName_Failed
push 0x8e
push 4
push dword [0x6470bc]
mov ebx, str.CUpdateThread::SelfUpdate
mov edi, str.UpdateThread.cpp
call fcn.004750b0
add esp, 0x10
jmp 0x407521
push 0xf
pop eax
mov dword [ebp - 0x250], eax
mov dword [ebp - 0x254], edi
mov byte [ebp - 0x264], 0
mov dword [ebp - 4], esi
mov dword [ebp - 0x234], eax
mov dword [ebp - 0x238], edi
mov byte [ebp - 0x248], 0
mov byte [ebp - 4], 2
mov dword [ebp - 0x218], eax
lea eax, [ebp - 0x210]
mov dword [ebp - 0x21c], edi
mov byte [ebp - 0x22c], 0
lea ecx, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x4070a3
sub eax, ecx
push eax
lea eax, [ebp - 0x210]
push eax
lea ecx, [ebp - 0x22c]
call fcn.0040232c
lea eax, [ebp - 0x248]
push eax
lea edx, [ebp - 0x264]
lea ecx, [ebp - 0x22c]
mov byte [ebp - 4], 3
call fcn.00472b70
pop ecx
neg al
sbb al, al
push edi
inc al
push esi
lea ecx, [ebp - 0x22c]
mov byte [ebp - 0x29d], al
mov byte [ebp - 4], 2
call fcn.0040228b
cmp byte [ebp - 0x29d], 0
je 0x40713c
push str.SplitExeDirFile_Failed
push 0x96
push 4
push dword [0x6470bc]
mov ebx, str.CUpdateThread::SelfUpdate
mov edi, str.UpdateThread.cpp
call fcn.004750b0
add esp, 0x10
push 0
push esi
lea ecx, [ebp - 0x248]
call fcn.0040228b
push 0
push esi
jmp 0x407516
mov eax, dword [ebp - 0x238]
dec eax
push eax
push 2
lea eax, [ebp - 0x248]
push eax
lea esi, [ebp - 0x280]
call fcn.0040c80d
mov byte [ebp - 4], 4
cmp dword [ebp - 0x26c], 0x10
mov eax, dword [ebp - 0x280]
jae 0x40716d
mov eax, esi
push eax
call fcn.004064fb
push eax
push str._sdlcache_s.dl
lea eax, [ebp - 0x110]
push 0x100
push eax
call fcn.005a73a6
push dword [ebp - 0x2a8]
lea eax, [ebp - 0x110]
push eax
call fcn.00473430
add esp, 0x1c
test al, al
lea eax, [ebp - 0x22c]
je 0x40746b
mov esi, 0x90
push esi
push eax
call fcn.0040dfb6
pop ecx
pop ecx
mov byte [ebp - 4], 5
cmp dword [eax + 0x14], 0x10
jb 0x4071c7
mov eax, dword [eax]
push eax
mov eax, dword [ebp - 0x2a4]
mov edi, dword [eax + 0x58]
push ebx
call fcn.0040e021
pop ecx
pop ecx
push 0
push 1
lea ecx, [ebp - 0x22c]
mov byte [ebp - 4], 4
call fcn.0040228b
lea eax, [ebp - 0x22c]
push esi
push eax
call fcn.0040dfb6
pop ecx
pop ecx
mov byte [ebp - 4], 6
cmp dword [eax + 0x14], 0x10
jb 0x407207
mov eax, dword [eax]
push eax
push ebx
push 0xa1
push 2
push dword [0x6470bc]
mov ebx, str.CUpdateThread::SelfUpdate
mov edi, str.UpdateThread.cpp
call fcn.004750b0
add esp, 0x14
push 0
push 1
lea ecx, [ebp - 0x22c]
mov byte [ebp - 4], 4
call fcn.0040228b
lea eax, [ebp - 0x110]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x407393
lea eax, [ebp - 0x110]
push eax
call fcn.00473480
test al, al
pop ecx
lea eax, [ebp - 0x22c]
je 0x407302
push 0x92
push eax
call fcn.0040dfb6
pop ecx
pop ecx
mov byte [ebp - 4], 7
cmp dword [eax + 0x14], 0x10
jb 0x407285
mov eax, dword [eax]
push eax
mov eax, dword [ebp - 0x2a4]
mov edi, dword [eax + 0x58]
mov esi, 0x60c3d4
push esi
call fcn.0040e021
pop ecx
pop ecx
push 0
push 1
lea ecx, [ebp - 0x22c]
mov byte [ebp - 4], 4
call fcn.0040228b
lea eax, [ebp - 0x22c]
push 0x92
push eax
call fcn.0040dfb6
pop ecx
pop ecx
mov byte [ebp - 4], 8
cmp dword [eax + 0x14], 0x10
jb 0x4072ce
mov eax, dword [eax]
push eax
push esi
push 0xa8
push 2
push dword [0x6470bc]
mov edi, str.UpdateThread.cpp
call fcn.004750b0
add esp, 0x14
push 0
push 1
lea ecx, [ebp - 0x22c]
mov byte [ebp - 4], 4
call fcn.0040228b
jmp 0x407398
push 0x93
push eax
call fcn.0040dfb6
pop ecx
pop ecx
mov byte [ebp - 4], 9
cmp dword [eax + 0x14], 0x10
jb 0x40731b
mov eax, dword [eax]
push eax
mov eax, dword [ebp - 0x2a4]
mov edi, dword [eax + 0x58]
mov esi, 0x60c3d4
push esi
call fcn.0040e021
pop ecx
pop ecx
push 0
push 1
lea ecx, [ebp - 0x22c]
mov byte [ebp - 4], 4
call fcn.0040228b
lea eax, [ebp - 0x22c]
push 0x93
push eax
call fcn.0040dfb6
pop ecx
pop ecx
mov byte [ebp - 4], 0xa
cmp dword [eax + 0x14], 0x10
jb 0x407364
mov eax, dword [eax]
push eax
push esi
push 0xad
push 4
push dword [0x6470bc]
mov edi, str.UpdateThread.cpp
call fcn.004750b0
add esp, 0x14
push 0
push 1
lea ecx, [ebp - 0x22c]
mov byte [ebp - 4], 4
call fcn.0040228b
mov esi, 0x60c3d4
push 1
push dword [ebp - 0x2a8]
call dword [sym.imp.KERNEL32.dll_WinExec]
lea eax, [ebp - 0x22c]
push 0x94
push eax
call fcn.0040dfb6
pop ecx
pop ecx
mov byte [ebp - 4], 0xb
cmp dword [eax + 0x14], 0x10
jb 0x4073c5
mov eax, dword [eax]
push eax
mov eax, dword [ebp - 0x2a4]
mov edi, dword [eax + 0x58]
push esi
call fcn.0040e021
pop ecx
pop ecx
push 0
push 1
lea ecx, [ebp - 0x22c]
mov byte [ebp - 4], 4
call fcn.0040228b
lea eax, [ebp - 0x22c]
push 0x94
push eax
call fcn.0040dfb6
pop ecx
pop ecx
mov byte [ebp - 4], 0xc
cmp dword [eax + 0x14], 0x10
jb 0x407409
mov eax, dword [eax]
push eax
push esi
push 0xb3
push 2
push dword [0x6470bc]
mov edi, str.UpdateThread.cpp
call fcn.004750b0
add esp, 0x14
xor esi, esi
push esi
push 1
lea ecx, [ebp - 0x22c]
mov byte [ebp - 4], 4
call fcn.0040228b
mov eax, dword [ebp - 0x2a4]
push esi
push esi
push 0x10
push dword [eax + 0x58]
call dword [sym.imp.USER32.dll_PostMessageA]
push str.__UpdateThread_WM_CLOSE
push 0xb5
push 2
push dword [0x6470bc]
call fcn.004750b0
add esp, 0x10
jmp 0x4074f5
mov esi, 0x91
push esi
push eax
call fcn.0040dfb6
pop ecx
pop ecx
mov byte [ebp - 4], 0xd
cmp dword [eax + 0x14], 0x10
jb 0x407485
mov eax, dword [eax]
push eax
mov eax, dword [ebp - 0x2a4]
mov edi, dword [eax + 0x58]
push ebx
call fcn.0040e021
pop ecx
pop ecx
push 0
push 1
lea ecx, [ebp - 0x22c]
mov byte [ebp - 4], 4
call fcn.0040228b
lea eax, [ebp - 0x29c]
push esi
push eax
call fcn.0040dfb6
pop ecx
pop ecx
mov byte [ebp - 4], 0xe
cmp dword [eax + 0x14], 0x10
jb 0x4074c5
mov eax, dword [eax]
push eax
push ebx
push 0xba
push 4
push dword [0x6470bc]
mov ebx, str.CUpdateThread::SelfUpdate
mov edi, str.UpdateThread.cpp
call fcn.004750b0
add esp, 0x14
push 0
push 1
lea ecx, [ebp - 0x29c]
call fcn.0040228b
xor esi, esi
push esi
push 1
lea ecx, [ebp - 0x280]
call fcn.0040228b
push esi
push 1
lea ecx, [ebp - 0x248]
call fcn.0040228b
push esi
push 1
lea ecx, [ebp - 0x264]
call fcn.0040228b
call fcn.005ad63b
ret 4