Function at 0x412ba0
Capabilities:
Check if file exists
Create thread

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x52ff45
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x19c
push esi
mov esi, ecx
push edi
mov dword [ebp - 0x40], esi
mov ecx, 0x56c83f
mov dword [ebp - 4], 0
call fcn.00500c8d
push 0x108
lea eax, [ebp - 0x1a4]
push 0
push eax
call fcn.00503f20
mov eax, dword [esi + 4]
add esp, 0xc
mov dword [ebp - 0x9c], 0
mov eax, dword [eax]
push 0
mov dword [ebp - 0x1a8], eax
lea eax, [ebp - 0x30]
push 0
mov dword [ebp - 0x98], eax
lea eax, [ebp - 0x1a8]
push eax
push 0x413fa0
push 0
push 0
mov dword [ebp - 0x30], 0
call dword [sym.imp.KERNEL32.dll_CreateThread]
xorps xmm0, xmm0
mov dword [ebp - 0x38], eax
movups xmmword [ebp - 0x2c], xmm0
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x18], 0xf
mov byte [ebp - 0x2c], 0
mov byte [ebp - 4], 1
call fcn.004087d0
movaps xmm0, xmmword [0x536db0]
lea ecx, [ebp - 0x63]
cmp eax, 0x40
mov byte [ebp - 0x64], 0
lea eax, [ebp - 0xd]
push eax
movups xmmword [ebp - 0x94], xmm0
lea edx, [ebp - 0x94]
movaps xmm0, xmmword [0x536d60]
push ecx
movups xmmword [ebp - 0x84], xmm0
push edx
lea ecx, [ebp - 0x50]
jne 0x412c9d
movaps xmm0, xmmword [0x536d40]
movups xmmword [ebp - 0x74], xmm0
call fcn.00404080
mov byte [ebp - 4], 2
jmp 0x412cb1
movaps xmm0, xmmword [0x536d50]
movups xmmword [ebp - 0x74], xmm0
call fcn.00404080
mov byte [ebp - 4], 3
push dword [eax]
lea ecx, [ebp - 0x2c]
call fcn.0040e710
lea ecx, [ebp - 0x50]
mov byte [ebp - 4], 1
call fcn.0040bc00
or esi, 0xffffffff
cmp dword [ebp - 0x1c], 0
jne 0x412cd9
mov byte [ebp - 0xd], 0
jmp 0x412e92
cmp dword [ebp - 0x18], 0x10
lea eax, [ebp - 0x2c]
lea ecx, [ebp - 0x44]
cmovae eax, dword [ebp - 0x2c]
push eax
call fcn.00403ce0
mov byte [ebp - 4], 4
mov dword [ebp - 0x34], 0
nop dword [eax + eax]
push 0
lea eax, [ebp - 0x1a0]
mov dword [ebp - 0x30], 0
push eax
mov eax, dword [ebp + 8]
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x60], esp
mov esi, esp
push eax
mov dword [ebp - 0x14], esi
call fcn.00404bb0
add eax, 0x10
mov dword [esi], eax
sub esp, 0x14
mov byte [ebp - 4], 5
mov edi, esp
lea ecx, [ebp - 0x2c]
xorps xmm0, xmm0
movups xmmword [edi], xmm0
mov dword [edi + 0x10], 0
mov dword [edi + 0x14], 0
cmp dword [ebp - 0x18], 0x10
mov eax, dword [ebp - 0x1c]
cmovae ecx, dword [ebp - 0x2c]
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x3c], eax
cmp eax, 0x7fffffff
ja 0x412f0c
mov dword [edi + 0x14], 0xf
cmp eax, 0x10
jae 0x412d80
push 0x10
push ecx
push edi
mov dword [edi + 0x10], eax
call fcn.005039a0
jmp 0x412dc0
mov esi, eax
or esi, 0xf
cmp esi, 0x7fffffff
jbe 0x412d94
mov esi, bind
jmp 0x412d9f
cmp esi, 0x16
mov eax, 0x16
cmovb esi, eax
lea eax, [esi + 1]
mov ecx, edi
push eax
call fcn.004029a0
mov ecx, dword [ebp - 0x3c]
mov dword [edi + 0x10], ecx
inc ecx
push ecx
push dword [ebp - 0x14]
mov dword [edi], eax
push eax
mov dword [edi + 0x14], esi
call fcn.005039a0
add esp, 0xc
mov byte [ebp - 4], 4
call fcn.0040c400
add esp, 0x24
test al, al
jne 0x412e05
push 0x3e8
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [ebp - 0x34]
inc eax
mov dword [ebp - 0x34], eax
cmp eax, 5
jl 0x412d00
push 0xffffffffffffffff
push dword [ebp - 0x38]
mov dword [ebp - 0x9c], 1
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
jmp 0x412e6d
push 0xffffffffffffffff
push dword [ebp - 0x38]
mov byte [ebp - 0xd], 1
mov dword [ebp - 0x9c], 1
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push dword [ebp + 8]
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x412e71
mov ecx, dword [ebp - 0x40]
lea eax, [ebp - 0x5c]
push 0x12
push eax
call fcn.00413910
mov ecx, dword [ebp - 0x48]
cmp ecx, 0x10
jb 0x412e6d
mov edx, dword [ebp - 0x5c]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x412e63
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x412f11
push ecx
push edx
call fcn.00500c7f
add esp, 8
mov byte [ebp - 0xd], 0
mov edx, dword [ebp - 0x44]
or esi, 0xffffffff
mov byte [ebp - 4], 1
add edx, 0xfffffff0
mov eax, esi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x412e92
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0x18]
mov byte [ebp - 4], 0
cmp ecx, 0x10
jb 0x412ec6
mov edx, dword [ebp - 0x2c]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x412ebc
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x412f11
push ecx
push edx
call fcn.00500c7f
add esp, 8
mov eax, dword [ebp + 8]
mov dword [ebp - 0x1c], 0
add eax, 0xfffffff0
mov dword [ebp - 0x18], 0xf
mov byte [ebp - 0x2c], 0
mov dword [ebp - 4], 0xffffffff
lock xadd dword [eax + 0xc], esi
dec esi
test esi, esi
jg 0x412ef7
mov ecx, dword [eax]
push eax
mov edx, dword [ecx]
call dword [edx + 4]
mov al, byte [ebp - 0xd]
mov ecx, dword [ebp - 0xc]
pop edi
mov dword fs:[0], ecx
pop esi
mov esp, ebp
pop ebp
ret 4
call fcn.00402980
call fcn.00507f1f
int3