Function at 0x1004e2e0
Capabilities:
Check if file exists

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x101c7750
mov eax, dword fs:[0]
push eax
sub esp, 0xf8
mov eax, dword [0x1022b584]
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 eax, dword [ebp + 0x10]
mov ebx, dword [ebp + 8]
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0xf0], eax
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0x104], ebx
mov dword [ebp - 0x100], eax
mov eax, dword [ebp + 0x18]
mov dword [ebp - 4], 0
mov dword [ebp - 0xe8], eax
mov dword [ebp - 0xf8], 0
call fcn.1000ed90
mov ecx, eax
test ecx, ecx
je 0x1004e947
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebx], eax
mov dword [ebp - 4], 0
mov dword [ebp - 0xf8], 1
call fcn.1000ed90
mov ecx, eax
test ecx, ecx
je 0x1004e951
mov eax, dword [ecx]
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0xfc], esi
mov dword [ebp - 4], 1
test edi, edi
je 0x1004e90d
cmp dword [ebp - 0xf0], 0
je 0x1004e90d
call fcn.1000ed90
mov ecx, eax
test ecx, ecx
je 0x1004e95b
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0xdc], eax
push edi
lea ecx, [ebp - 0xdc]
mov byte [ebp - 4], 2
call fcn.1003e240
test al, al
jne 0x1004e3fc
mov ecx, edi
lea edx, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x1004e3e0
sub ecx, edx
sar ecx, 1
push ecx
push edi
lea ecx, [ebp - 0xdc]
call fcn.1000f6e0
mov edi, dword [ebp - 0xdc]
push edi
mov byte [ebp - 4], 3
call dword [sym.imp.SHLWAPI.dll_PathIsRelativeW]
test eax, eax
je 0x1004e435
lea eax, [ebp - 0xdc]
push eax
lea eax, [ebp - 0xe0]
push eax
call fcn.1004c800
mov edi, dword [ebp - 0xdc]
add esp, 8
mov eax, dword [ebp - 0xe0]
jmp 0x1004e44a
lea eax, [edi - 0x10]
push eax
call fcn.100121a0
add esp, 4
add eax, 0x10
mov dword [ebp - 0xe0], eax
mov dword [ebp - 0xf8], 3
lea ecx, [eax - 0x10]
mov byte [ebp - 4], 4
lea edx, [esi - 0x10]
mov dword [ebp - 0xf4], ecx
mov dword [ebp - 0xe4], edx
cmp ecx, edx
je 0x1004e4d7
cmp dword [edx + 0xc], 0
lea esi, [edx + 0xc]
jl 0x1004e4bc
mov ecx, dword [ecx]
cmp ecx, dword [edx]
jne 0x1004e4bc
push dword [ebp - 0xf4]
call fcn.100121a0
add esp, 4
mov dword [ebp - 0xf4], eax
or ecx, 0xffffffff
lock xadd dword [esi], ecx
dec ecx
test ecx, ecx
jg 0x1004e4b1
mov esi, dword [ebp - 0xe4]
push esi
mov ecx, dword [esi]
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0xf4]
lea esi, [eax + 0x10]
mov dword [ebp - 0xfc], esi
jmp 0x1004e4d1
push dword [eax - 0xc]
lea ecx, [ebp - 0xfc]
push eax
call fcn.1000f6e0
mov esi, dword [ebp - 0xfc]
mov eax, dword [ebp - 0xe0]
lea edx, [eax - 0x10]
mov byte [ebp - 4], 3
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1004e4f3
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea edx, [edi - 0x10]
mov byte [ebp - 4], 1
or edi, 0xffffffff
mov eax, edi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1004e511
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push esi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x1004e90d
push esi
call fcn.1015b3b0
add esp, 4
test eax, eax
jne 0x1004e6aa
cmp dword [ebp - 0xe8], eax
je 0x1004e90d
push 0x42
push eax
lea eax, [ebp - 0x54]
push eax
call fcn.1018d4b0
push 0x21
lea eax, [ebp - 0x54]
push eax
push esi
call fcn.10171400
add esp, 0x18
call fcn.1000ed90
mov ecx, eax
test ecx, ecx
je 0x1004e965
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0xdc], eax
push str.45476F8083D74AC28A2DA8ED399737B7
lea ecx, [ebp - 0xdc]
mov byte [ebp - 4], 5
call fcn.1003e240
test al, al
jne 0x1004e59f
push 0x20
push str.45476F8083D74AC28A2DA8ED399737B7
lea ecx, [ebp - 0xdc]
call fcn.1000f6e0
mov byte [ebp - 4], 6
call fcn.1000ed90
mov ecx, eax
test ecx, ecx
je 0x1004e96f
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0xe0], eax
push dword [ebp - 0xe8]
lea ecx, [ebp - 0xe0]
mov byte [ebp - 4], 7
call fcn.1003e240
test al, al
jne 0x1004e610
mov edx, dword [ebp - 0xe8]
mov ecx, edx
lea eax, [ecx + 2]
mov dword [ebp - 0xe4], eax
nop word [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x1004e5f0
sub ecx, dword [ebp - 0xe4]
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0xe0]
call fcn.1000f6e0
lea eax, [ebp - 0xdc]
mov byte [ebp - 4], 8
push eax
lea eax, [ebp - 0xe0]
push eax
lea eax, [ebp - 0xec]
push eax
call fcn.100aa4c0
mov edx, dword [ebp - 0xe0]
add esp, 0xc
mov byte [ebp - 4], 6
add edx, 0xfffffff0
mov eax, edi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1004e652
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0xdc]
mov eax, edi
mov byte [ebp - 4], 1
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1004e673
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea eax, [ebp - 0x54]
push eax
push dword [ebp - 0xec]
call fcn.1019694f
mov edx, dword [ebp - 0xec]
add esp, 8
add edx, 0xfffffff0
test eax, eax
mov eax, edi
jne 0x1004e8fb
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1004e6aa
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push esi
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov dword [ebp - 0xf4], eax
test eax, eax
je 0x1004e90d
mov ecx, dword [ebp - 0xf0]
lea eax, [ebp - 0xd4]
mov dword [ebp - 0xd8], eax
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x1004e6d4
sub ecx, edx
sar ecx, 1
push 0x80
lea eax, [ecx + 1]
lea edi, [eax*4]
mov dword [ebp - 0xec], eax
lea eax, [ebp - 0xd4]
push eax
lea eax, [ebp - 0xd8]
push edi
push eax
call fcn.1001a300
add esp, 0x10
push 0
push 0
push edi
push dword [ebp - 0xd8]
mov edi, dword [ebp - 0xec]
push edi
push dword [ebp - 0xf0]
push 0
push 3
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
xor ecx, ecx
test eax, eax
sete cl
mov dword [ebp - 0xe4], ecx
test eax, eax
jne 0x1004e7b4
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x7a
jne 0x1004e7ae
push 0
push 0
push 0
push 0
push edi
push dword [ebp - 0xf0]
push 0
push 3
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov edi, eax
lea eax, [ebp - 0xd4]
push 0x80
push eax
lea eax, [ebp - 0xd8]
push edi
push eax
call fcn.1001a300
add esp, 0x10
push 0
push 0
push edi
push dword [ebp - 0xd8]
push dword [ebp - 0xec]
push dword [ebp - 0xf0]
push 0
push 3
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov ecx, eax
neg ecx
sbb ecx, ecx
inc ecx
jmp 0x1004e7b4
mov ecx, dword [ebp - 0xe4]
test ecx, ecx
jne 0x1004e979
push dword [ebp - 0xd8]
lea ecx, [ebp - 0xe8]
mov byte [ebp - 4], 9
call fcn.100498e0
mov eax, dword [ebp - 0xd8]
lea ecx, [ebp - 0xd4]
mov byte [ebp - 4], 0xb
cmp eax, ecx
je 0x1004e7ee
push eax
call fcn.10190ee6
add esp, 4
push dword [ebp - 0xe8]
push dword [ebp - 0xf4]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov edi, eax
mov dword [ebp - 0xe4], edi
test edi, edi
je 0x1004e8eb
mov ecx, dword [ebx]
mov edx, 1
sub edx, dword [ecx - 4]
mov ecx, dword [ecx - 8]
sub ecx, 0x104
or ecx, edx
jge 0x1004e833
push 0x104
mov ecx, ebx
call fcn.1000f500
mov ecx, dword [ebx]
cmp dword [ecx - 8], 0x104
jl 0x1004e998
mov dword [ecx - 0xc], 0x104
xor edx, edx
mov eax, dword [ebx]
push 0x104
push ecx
push dword [ebp - 0x100]
mov word [eax + 0x208], dx
call edi
mov edi, eax
mov eax, dword [ebx]
test eax, eax
jne 0x1004e86e
xor ecx, ecx
jmp 0x1004e884
push dword [eax - 8]
push eax
call fcn.101952b4
mov ecx, eax
add esp, 8
test ecx, ecx
js 0x1004e998
mov eax, dword [ebx]
cmp ecx, dword [eax - 8]
jg 0x1004e998
mov dword [eax - 0xc], ecx
xor edx, edx
mov eax, dword [ebx]
mov word [eax + ecx*2], dx
test edi, edi
jle 0x1004e8eb
inc edi
mov ecx, ebx
push edi
push edi
call fcn.10033430
push eax
push dword [ebp - 0x100]
call dword [ebp - 0xe4]
mov eax, dword [ebx]
test eax, eax
jne 0x1004e8bf
xor ecx, ecx
jmp 0x1004e8d5
push dword [eax - 8]
push eax
call fcn.101952b4
mov ecx, eax
add esp, 8
test ecx, ecx
js 0x1004e998
mov eax, dword [ebx]
cmp ecx, dword [eax - 8]
jg 0x1004e998
mov dword [eax - 0xc], ecx
xor edx, edx
mov eax, dword [ebx]
mov word [eax + ecx*2], dx
mov edx, dword [ebp - 0xe8]
add edx, 0xfffffff0
mov byte [ebp - 4], 1
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1004e90d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea eax, [esi - 0x10]
mov byte [ebp - 4], 0
or esi, 0xffffffff
lock xadd dword [eax + 0xc], esi
dec esi
test esi, esi
jg 0x1004e929
mov ecx, dword [eax]
push eax
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, ebx
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.101799ce
mov esp, ebp
pop ebp
ret
push 0x80004005
call fcn.10009b10
push 0x80004005
call fcn.10009b10
push 0x80004005
call fcn.10009b10
push 0x80004005
call fcn.10009b10
push 0x80004005
call fcn.10009b10
push 0x80
lea eax, [ebp - 0xd4]
push eax
push dword [ebp - 0xd8]
call fcn.1001a400
add esp, 0xc
call fcn.1001be50
push 0x80070057
call fcn.10009b10
int3