Function at 0x4f8b10
Capabilities:
Check for time delay via gettickcount
Check if file exists
Create process on windows
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x53a552
mov eax, dword fs:[0]
push eax
sub esp, 0x6e8
mov eax, dword [0x59a0a0]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov eax, dword [edi]
call dword [eax + 0xd4]
test eax, eax
je 0x4f91a8
push 0x20a
lea eax, [ebp - 0x454]
push 0
push eax
call fcn.0049e130
add esp, 0xc
lea eax, [ebp - 0x454]
push 0x104
push eax
push 0x74
push dword [edi + 0x3f0]
call dword [sym.imp.USER32.dll_LoadStringW]
test eax, eax
je 0x4f8ba7
lea eax, [ebp - 0x454]
push eax
call fcn.004a65cc
add esp, 4
test eax, eax
je 0x4f8ba7
push ecx
mov ecx, edi
call fcn.004f91d0
test eax, eax
jne 0x4f91a8
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ebx, eax
mov dword [ebp - 0x6b0], 0
push 0x208
lea eax, [ebp - 0x218]
mov dword [ebp - 0x6b8], ebx
push 0
push eax
call fcn.0049e130
add esp, 0xc
lea ecx, [ebp - 0x6a8]
call fcn.00429390
mov dword [ebp - 4], 0
mov eax, dword [edi + 0x490]
mov dword [ebp - 0x610], eax
mov eax, dword [0x59fadc]
mov dword [ebp - 0x590], eax
mov eax, dword [edi + 0x494]
mov dword [ebp - 0x58c], eax
mov eax, dword [edi + 0x498]
mov dword [ebp - 0x588], eax
mov eax, dword [0x59fae0]
mov dword [ebp - 0x578], eax
mov eax, dword [edi + 0x4a0]
mov dword [ebp - 0x574], eax
lea eax, [edi + 0x4c0]
push eax
mov dword [ebp - 0x6a8], 0x64
mov dword [ebp - 0x6a0], 0x16
mov dword [ebp - 0x618], ebx
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov ebx, dword [edi + 0x478]
mov dword [ebp - 0x570], eax
test ebx, ebx
jne 0x4f8c68
xor edx, edx
jmp 0x4f8ca5
mov ecx, ebx
lea edx, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4f8c70
sub ecx, edx
sar ecx, 1
lea esi, [ecx + 1]
cmp esi, 0x3fffffff
jle 0x4f8c8e
xor edx, edx
jmp 0x4f8ca5
add esi, esi
mov eax, esi
call fcn.0049bc00
mov ecx, esp
mov edx, ebx
push 3
push esi
call fcn.0042d380
mov edx, eax
cmp byte [edx], 0
jne 0x4f8cae
xor ecx, ecx
jmp 0x4f8cbc
mov ecx, edx
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4f8cb3
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x608]
call fcn.00406560
push ecx
lea eax, [ebp - 0x6a8]
push eax
call fcn.0044c609
mov ecx, eax
call fcn.0042af00
lea ecx, [ebp - 0x6a8]
mov dword [ebp - 4], 0xffffffff
call fcn.0042a2e0
push 0x20a
xor esi, esi
lea eax, [ebp - 0x454]
push esi
push eax
call fcn.0049e130
add esp, 0xc
lea eax, [ebp - 0x454]
push 0x104
push eax
push 0x71
push dword [edi + 0x3f0]
call dword [sym.imp.USER32.dll_LoadStringW]
test eax, eax
je 0x4f8d3d
lea eax, [ebp - 0x454]
push eax
call fcn.004a65cc
add esp, 4
mov ecx, 1
test eax, eax
cmovne esi, ecx
cmp dword [edi + 0x91c], 0
je 0x4f8e06
cmp dword [edi + 0x924], 0
je 0x4f8dfc
mov esi, 1
mov ecx, 0x59af94
call fcn.004cdae0
test eax, eax
jne 0x4f905f
test esi, esi
je 0x4f905f
lea eax, [ebp - 0x218]
push eax
push 0
push 0
push dword [edi + 0x434]
call dword [sym.imp.KERNEL32.dll_GetTempFileNameW]
mov dword [ebp - 0x6b0], eax
lea ecx, [ebp - 0x6b4]
lea eax, [ebp - 0x218]
push eax
call fcn.00401ff0
push 0x56e424
mov edx, eax
mov dword [ebp - 4], 1
lea ecx, [ebp - 0x6ac]
call fcn.00401d60
add esp, 4
mov byte [ebp - 4], 3
or ebx, 0xffffffff
mov edx, dword [ebp - 0x6b4]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4f8e1a
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
mov esi, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x4f8e18
mov eax, dword [ecx + 4]
push 0
push dword [eax + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
jmp 0x4f8e1a
mov ebx, 0x2c5
jmp 0x4f9064
test esi, esi
jne 0x4f8d5c
mov ebx, 0x2be
jmp 0x4f9064
call esi
mov ecx, dword [edi + 0x3f0]
mov edx, 0x8b
push 0x56e4c4
push dword [ebp - 0x6ac]
call fcn.004e1010
add esp, 8
test eax, eax
jne 0x4f8e58
lea ecx, [ebp - 0x6ac]
mov dword [ebp - 4], 0xffffffff
mov ebx, 0x2bc
call fcn.00402ed0
jmp 0x4f9064
push dword [ebp - 0x6ac]
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x4f8e84
lea ecx, [ebp - 0x6ac]
mov dword [ebp - 4], 0xffffffff
mov ebx, 0x2bd
call fcn.00402ed0
jmp 0x4f9064
xor eax, eax
mov dword [ebp - 0x234], 7
mov word [ebp - 0x248], ax
mov eax, dword [ebp - 0x6ac]
mov dword [ebp - 0x238], 0
cmp word [eax], 0
jne 0x4f8eb1
xor edx, edx
jmp 0x4f8ec5
mov edx, eax
lea esi, [edx + 2]
mov cx, word [edx]
add edx, 2
test cx, cx
jne 0x4f8eb6
sub edx, esi
sar edx, 1
push edx
push eax
lea ecx, [ebp - 0x248]
call fcn.00405040
xor eax, eax
mov byte [ebp - 4], 4
push eax
push 0x56e474
lea ecx, [ebp - 0x230]
mov dword [ebp - 0x21c], 7
mov dword [ebp - 0x220], 0
mov word [ebp - 0x230], ax
call fcn.00405040
push 0x38
lea eax, [ebp - 0x6f0]
push 0
push eax
call fcn.0049e130
add esp, 0xc
mov dword [ebp - 0x6f4], 0x3c
cmp dword [ebp - 0x234], 8
lea eax, [ebp - 0x248]
mov dword [ebp - 0x6ec], 0
cmovae eax, dword [ebp - 0x248]
cmp dword [ebp - 0x21c], 8
mov dword [ebp - 0x6e4], eax
lea eax, [ebp - 0x230]
cmovae eax, dword [ebp - 0x230]
mov dword [ebp - 0x6e0], eax
lea eax, [ebp - 0x6f4]
push eax
mov dword [ebp - 0x6e8], 0x555194
mov dword [ebp - 0x6d8], 1
mov dword [ebp - 0x6f0], 0x400
call dword [sym.imp.SHELL32.dll_ShellExecuteExW]
test eax, eax
jne 0x4f8f9c
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x6b0], eax
jmp 0x4f8fa6
mov dword [ebp - 0x6b0], 0
mov eax, dword [ebp - 0x21c]
cmp eax, 8
jb 0x4f8fc4
inc eax
lea ecx, [ebp - 0x230]
push eax
push dword [ebp - 0x230]
call fcn.00403010
xor eax, eax
mov dword [ebp - 0x21c], 7
mov word [ebp - 0x230], ax
mov eax, dword [ebp - 0x234]
mov dword [ebp - 0x220], 0
cmp eax, 8
jb 0x4f8fff
inc eax
lea ecx, [ebp - 0x248]
push eax
push dword [ebp - 0x248]
call fcn.00403010
mov dword [ebp - 4], 0xffffffff
xor eax, eax
mov ecx, dword [ebp - 0x6ac]
mov dword [ebp - 0x234], 7
add ecx, 0xfffffff0
mov dword [ebp - 0x238], 0
mov word [ebp - 0x248], ax
lock xadd dword [ecx + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x4f905b
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x4f9057
mov eax, dword [edx + 4]
push 0
push dword [eax + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
xor ebx, ebx
jmp 0x4f9064
mov ecx, edx
call esi
xor ebx, ebx
jmp 0x4f9064
mov ebx, 0x2bf
mov esi, dword [ebp - 0x6b0]
push esi
push ebx
push str.Launch_Downloader_Code__d__dwRet__d_
call fcn.004e78a0
push eax
call fcn.004e76a0
add esp, 0x10
lea ecx, [ebp - 0x478]
call fcn.00429390
mov dword [ebp - 4], 5
mov dword [ebp - 0x478], 0x64
mov dword [ebp - 0x470], 0x17
mov dword [ebp - 0x46c], ebx
mov dword [ebp - 0x474], esi
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [ebp - 0x6b8]
mov dword [ebp - 0x3e8], eax
mov eax, dword [edi + 0x490]
mov dword [ebp - 0x3e0], eax
mov eax, dword [0x59fadc]
mov dword [ebp - 0x360], eax
mov eax, dword [edi + 0x494]
mov dword [ebp - 0x35c], eax
mov eax, dword [edi + 0x498]
mov dword [ebp - 0x358], eax
mov eax, dword [0x59fae0]
mov dword [ebp - 0x348], eax
mov eax, dword [edi + 0x4a0]
mov dword [ebp - 0x344], eax
lea eax, [edi + 0x4c0]
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
mov edi, dword [edi + 0x478]
mov dword [ebp - 0x340], eax
test edi, edi
jne 0x4f912a
xor edx, edx
jmp 0x4f9165
mov ecx, edi
lea edx, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4f9130
sub ecx, edx
sar ecx, 1
lea esi, [ecx + 1]
cmp esi, 0x3fffffff
jle 0x4f914e
xor edx, edx
jmp 0x4f9165
add esi, esi
mov eax, esi
call fcn.0049bc00
mov ecx, esp
mov edx, edi
push 3
push esi
call fcn.0042d380
mov edx, eax
cmp byte [edx], 0
jne 0x4f916e
xor ecx, ecx
jmp 0x4f917c
mov ecx, edx
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4f9173
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x3d8]
call fcn.00406560
push ecx
lea eax, [ebp - 0x478]
push eax
call fcn.0044c609
mov ecx, eax
call fcn.0042af00
lea ecx, [ebp - 0x478]
call fcn.0042a2e0
lea esp, [ebp - 0x704]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0049aa22
mov esp, ebp
pop ebp
ret