Function at 0x4c92e0
Capabilities:
Check if file exists

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5da5bd
mov eax, dword fs:[0]
push eax
sub esp, 0x564
mov eax, dword [0x63d284]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x55c], ecx
xor edi, edi
mov dword [ebp - 0x558], edi
mov dword [ebp - 4], 1
lea eax, [ebp + 8]
cmp dword [ebp + 0x1c], 8
cmovae eax, dword [ebp + 8]
push eax
call dword [sym.imp.SHLWAPI.dll_PathIsDirectoryW]
test eax, eax
lea eax, [ebp + 0x20]
je 0x4c9e04
sub esp, 0x18
mov edx, SysReAllocString
mov esi, esp
mov dword [esi], edi
mov dword [esi + 0x10], edi
mov dword [esi + 0x14], edi
cmp dword [ebp + 0x34], 8
mov ecx, dword [ebp + 0x30]
cmovae eax, dword [ebp + 0x20]
mov dword [ebp - 0x560], ecx
mov dword [ebp - 0x544], eax
cmp ecx, 8
jae 0x4c937b
movups xmm0, xmmword [eax]
lea eax, [edi + 7]
movups xmmword [esi], xmm0
jmp 0x4c9410
mov eax, ecx
or eax, 7
cmp eax, 0x7ffffffe
cmova eax, edx
mov dword [ebp - 0x54c], eax
inc eax
cmp eax, 0x7fffffff
ja 0x4ca433
add eax, eax
cmp eax, 0x1000
jb 0x4c93ca
lea ecx, [eax + 0x23]
cmp ecx, eax
jbe 0x4ca433
push ecx
call fcn.00591cad
add esp, 4
test eax, eax
je 0x4ca3ee
lea ecx, [eax + 0x23]
and ecx, 0xffffffe0
mov dword [ecx - 4], eax
jmp 0x4c93e5
test eax, eax
je 0x4c93e3
push eax
call fcn.00591cad
mov ecx, eax
add esp, 4
test ecx, ecx
je 0x4ca3ff
jmp 0x4c93e5
xor ecx, ecx
mov eax, dword [ebp - 0x560]
mov dword [esi], ecx
lea eax, [eax*2 + 2]
push eax
push dword [ebp - 0x544]
push ecx
call fcn.005729d0
mov eax, dword [ebp - 0x54c]
add esp, 0xc
mov ecx, dword [ebp - 0x560]
mov dword [esi + 0x10], ecx
mov ecx, dword [ebp - 0x55c]
mov dword [esi + 0x14], eax
call fcn.004cc910
test eax, eax
jne 0x4c942c
xor esi, esi
jmp 0x4ca347
mov eax, 0x5c
mov dword [ebp - 0xe0], 0
mov word [ebp - 0xe4], ax
mov dword [ebp - 0xdc], 0
mov byte [ebp - 4], 2
mov eax, SysReAllocString
mov ecx, dword [ebp + 0x18]
sub eax, ecx
cmp eax, 2
jb 0x4ca410
cmp dword [ebp + 0x1c], 8
lea eax, [ebp + 8]
push 2
cmovae eax, dword [ebp + 8]
push 0x61befc
push ecx
push eax
lea eax, [ebp + 8]
push eax
push dword [ebp - 0x550]
lea ecx, [ebp - 0x40]
call fcn.00447219
or edi, 1
mov dword [ebp - 0x558], edi
mov byte [ebp - 4], 3
lea eax, [ebp - 0x40]
cmp dword [ebp - 0x2c], 8
lea ecx, [ebp - 0x53c]
cmovae eax, dword [ebp - 0x40]
push eax
call fcn.004c5a20
mov byte [ebp - 4], 2
mov esi, eax
mov edx, dword [ebp - 0x2c]
cmp edx, 8
jb 0x4c94ed
mov ecx, dword [ebp - 0x40]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4c94e3
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4ca415
push edx
push ecx
call fcn.0056c61e
add esp, 8
test esi, esi
je 0x4c9c33
mov esi, dword [sym.imp.KERNEL32.dll_FindNextFileW]
mov ecx, dword [ebp - 0xdc]
mov dword [ebp - 0x570], esi
xor edx, edx
test ecx, ecx
je 0x4c9545
mov eax, dword [ebp - 0x53c]
shr eax, 4
and eax, 1
je 0x4c9545
cmp word [ebp - 0x510], 0x2e
jne 0x4c9545
mov ax, word [ebp - 0x50e]
test ax, ax
je 0x4c9540
cmp ax, 0x2e
jne 0x4c9545
cmp word [ebp - 0x50c], dx
jne 0x4c9545
mov edx, 1
test edx, edx
jne 0x4c9c0b
mov byte [ebp - 4], 4
call fcn.0040b813
mov ecx, eax
test ecx, ecx
je 0x4ca429
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
or edi, 2
cmp dword [ebp - 0xdc], 0
mov dword [ebp - 0x548], edi
mov dword [ebp - 0x558], edi
lea esi, [eax + 0x10]
mov dword [ebp - 0x568], esi
je 0x4c96db
lea edi, [ebp - 0x510]
lea ecx, [edi + 2]
mov ax, word [edi]
add edi, 2
test ax, ax
jne 0x4c9595
sub edi, ecx
sar edi, 1
jne 0x4c9604
cmp dword [esi - 0xc], 0
lea edx, [esi - 0x10]
mov edi, dword [edx]
je 0x4c96d5
cmp dword [edx + 0xc], 0
lea ecx, [edx + 0xc]
jge 0x4c95d9
cmp dword [esi - 8], 0
jl 0x4ca41a
xor eax, eax
mov dword [esi - 0xc], 0
mov word [esi], ax
jmp 0x4c96d5
or eax, 0xffffffff
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x4c95ed
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [edi]
mov ecx, edi
mov eax, dword [eax + 0xc]
call eax
lea esi, [eax + 0x10]
mov dword [ebp - 0x568], esi
jmp 0x4c96d5
mov eax, dword [esi - 0xc]
lea edx, [ebp - 0x510]
sub edx, esi
mov dword [ebp - 0x54c], eax
sar edx, 1
mov dword [ebp - 0x544], edx
test edi, edi
js 0x4ca41a
mov eax, dword [esi - 8]
mov ecx, 1
sub ecx, dword [esi - 4]
sub eax, edi
or eax, ecx
jge 0x4c964e
push edi
lea ecx, [ebp - 0x568]
call fcn.0040bfb3
mov esi, dword [ebp - 0x568]
mov edx, dword [ebp - 0x544]
lea ecx, [edi + edi]
mov eax, dword [esi - 8]
cmp edx, dword [ebp - 0x54c]
ja 0x4c9687
lea edx, [esi + edx*2]
test ecx, ecx
je 0x4c96c3
test edx, edx
jne 0x4c9674
call fcn.00591b4a
mov dword [eax], 0x16
jmp 0x4c96bb
add eax, eax
cmp eax, ecx
jb 0x4c96b0
push ecx
push edx
push esi
call fcn.00572f50
add esp, 0xc
jmp 0x4c96c0
add eax, eax
test ecx, ecx
je 0x4c96c3
cmp eax, ecx
jb 0x4c96a4
push ecx
lea eax, [ebp - 0x510]
push eax
push esi
call fcn.005729d0
add esp, 0xc
jmp 0x4c96c0
push eax
push 0
push esi
call fcn.00573610
add esp, 0xc
call fcn.00591b4a
mov dword [eax], 0x22
call fcn.0057da70
lea ecx, [edi + edi]
cmp edi, dword [esi - 8]
jg 0x4ca41a
xor eax, eax
mov dword [esi - 0xc], edi
mov word [ecx + esi], ax
mov edi, dword [ebp - 0x548]
mov ecx, dword [ebp + 0x30]
mov eax, SysReAllocString
sub eax, ecx
cmp eax, 1
jb 0x4ca410
cmp dword [ebp + 0x34], 8
lea eax, [ebp + 0x20]
push 1
cmovae eax, dword [ebp + 0x20]
push 0x60db0c
push ecx
push eax
lea eax, [ebp + 0x20]
push eax
push dword [ebp - 0x544]
lea ecx, [ebp - 0x58]
call fcn.00447219
or edi, 4
mov dword [ebp - 0x558], edi
mov ecx, esi
mov byte [ebp - 4], 5
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4c9726
sub ecx, edx
sar ecx, 1
push ecx
push esi
lea ecx, [ebp - 0x58]
call fcn.0040993b
xor ecx, ecx
or edi, 8
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x70], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x60], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 7
mov word [eax], cx
mov byte [ebp - 4], 7
mov edx, dword [ebp - 0x44]
cmp edx, 8
jb 0x4c97a4
mov ecx, dword [ebp - 0x58]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4c979a
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4ca415
push edx
push ecx
call fcn.0056c61e
add esp, 8
xor eax, eax
mov dword [ebp - 0x48], 0
and edi, 0xfffffffd
mov dword [ebp - 0x44], 7
mov word [ebp - 0x58], ax
mov dword [ebp - 0x558], edi
mov byte [ebp - 4], 8
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x4c97dd
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0x5c]
lea eax, [ebp - 0x70]
sub esp, 0x18
mov dword [ebp - 0x54c], ecx
cmp ecx, 8
mov dword [ebp - 0x564], esp
mov ecx, dword [ebp - 0x70]
mov esi, esp
cmovae eax, ecx
mov dword [ebp - 0x544], ecx
mov ecx, dword [ebp - 0x60]
mov dword [ebp - 0x56c], eax
mov dword [esi], 0
mov dword [esi + 0x10], 0
mov dword [esi + 0x14], 0
mov dword [ebp - 0x548], ecx
cmp ecx, 8
jae 0x4c983b
movups xmm0, xmmword [eax]
mov eax, 7
movups xmmword [esi], xmm0
jmp 0x4c98d5
mov eax, ecx
mov ecx, SysReAllocString
or eax, 7
cmp eax, 0x7ffffffe
cmova eax, ecx
mov dword [ebp - 0x554], eax
inc eax
cmp eax, 0x7fffffff
ja 0x4ca433
add eax, eax
cmp eax, 0x1000
jb 0x4c988f
lea ecx, [eax + 0x23]
cmp ecx, eax
jbe 0x4ca433
push ecx
call fcn.00591cad
add esp, 4
test eax, eax
je 0x4ca3ff
lea ecx, [eax + 0x23]
and ecx, 0xffffffe0
mov dword [ecx - 4], eax
jmp 0x4c98aa
test eax, eax
je 0x4c98a8
push eax
call fcn.00591cad
mov ecx, eax
add esp, 4
test ecx, ecx
je 0x4ca3ee
jmp 0x4c98aa
xor ecx, ecx
mov eax, dword [ebp - 0x548]
mov dword [esi], ecx
lea eax, [eax*2 + 2]
push eax
push dword [ebp - 0x56c]
push ecx
call fcn.005729d0
mov eax, dword [ebp - 0x554]
add esp, 0xc
mov ecx, dword [ebp - 0x548]
mov dword [esi + 0x10], ecx
mov dword [esi + 0x14], eax
mov byte [ebp - 4], 0xa
call fcn.0040b813
mov ecx, eax
test ecx, ecx
je 0x4ca429
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
or edi, 0x10
cmp dword [ebp - 0xdc], 0
mov dword [ebp - 0x548], edi
mov dword [ebp - 0x558], edi
lea esi, [eax + 0x10]
mov dword [ebp - 0x560], esi
je 0x4c9a69
lea edi, [ebp - 0x510]
lea ecx, [edi + 2]
mov ax, word [edi]
add edi, 2
test ax, ax
jne 0x4c9923
sub edi, ecx
sar edi, 1
jne 0x4c9992
cmp dword [esi - 0xc], 0
lea edx, [esi - 0x10]
mov edi, dword [edx]
je 0x4c9a63
cmp dword [edx + 0xc], 0
lea ecx, [edx + 0xc]
jge 0x4c9967
cmp dword [esi - 8], 0
jl 0x4ca41a
xor eax, eax
mov dword [esi - 0xc], 0
mov word [esi], ax
jmp 0x4c9a63
or eax, 0xffffffff
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x4c997b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [edi]
mov ecx, edi
mov eax, dword [eax + 0xc]
call eax
lea esi, [eax + 0x10]
mov dword [ebp - 0x560], esi
jmp 0x4c9a63
mov eax, dword [esi - 0xc]
lea edx, [ebp - 0x510]
sub edx, esi
mov dword [ebp - 0x56c], eax
sar edx, 1
mov dword [ebp - 0x554], edx
test edi, edi
js 0x4ca41a
mov eax, dword [esi - 8]
mov ecx, 1
sub ecx, dword [esi - 4]
sub eax, edi
or eax, ecx
jge 0x4c99dc
push edi
lea ecx, [ebp - 0x560]
call fcn.0040bfb3
mov esi, dword [ebp - 0x560]
mov edx, dword [ebp - 0x554]
lea ecx, [edi + edi]
mov eax, dword [esi - 8]
cmp edx, dword [ebp - 0x56c]
ja 0x4c9a15
lea edx, [esi + edx*2]
test ecx, ecx
je 0x4c9a51
test edx, edx
jne 0x4c9a02
call fcn.00591b4a
mov dword [eax], 0x16
jmp 0x4c9a49
add eax, eax
cmp eax, ecx
jb 0x4c9a3e
push ecx
push edx
push esi
call fcn.00572f50
add esp, 0xc
jmp 0x4c9a4e
add eax, eax
test ecx, ecx
je 0x4c9a51
cmp eax, ecx
jb 0x4c9a32
push ecx
lea eax, [ebp - 0x510]
push eax
push esi
call fcn.005729d0
add esp, 0xc
jmp 0x4c9a4e
push eax
push 0
push esi
call fcn.00573610
add esp, 0xc
call fcn.00591b4a
mov dword [eax], 0x22
call fcn.0057da70
lea ecx, [edi + edi]
cmp edi, dword [esi - 8]
jg 0x4ca41a
xor eax, eax
mov dword [esi - 0xc], edi
mov word [ecx + esi], ax
mov edi, dword [ebp - 0x548]
mov ecx, dword [ebp + 0x18]
mov eax, SysReAllocString
sub eax, ecx
cmp eax, 1
jb 0x4ca410
cmp dword [ebp + 0x1c], 8
lea eax, [ebp + 8]
push 1
cmovae eax, dword [ebp + 8]
push 0x60db0c
push ecx
push eax
lea eax, [ebp + 8]
push eax
push dword [ebp - 0x554]
lea ecx, [ebp - 0x40]
call fcn.00447219
or edi, 0x20
mov dword [ebp - 0x558], edi
mov ecx, esi
mov byte [ebp - 4], 0xb
sub esp, 0x18
mov dword [ebp - 0x550], esp
lea edx, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4c9ac0
sub ecx, edx
sar ecx, 1
push ecx
push esi
lea ecx, [ebp - 0x40]
call fcn.0040993b
mov ecx, dword [ebp - 0x550]
or edi, 0x40
mov dword [ebp - 0x558], edi
mov dword [ecx], 0
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0
movups xmm0, xmmword [eax]
movups xmmword [ecx], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ecx + 0x10], xmm0
xor ecx, ecx
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 7
mov word [eax], cx
mov ecx, dword [ebp - 0x55c]
mov byte [ebp - 4], 0xd
call fcn.004c92e0
test eax, eax
mov byte [ebp - 4], 0xc
mov edx, dword [ebp - 0x2c]
sete byte [ebp - 0x53d]
cmp edx, 8
jb 0x4c9b75
mov ecx, dword [ebp - 0x40]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4c9b6b
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4ca415
push edx
push ecx
call fcn.0056c61e
add esp, 8
xor eax, eax
mov dword [ebp - 0x30], 0
and edi, 0xffffffef
mov word [ebp - 0x40], ax
mov dword [ebp - 0x2c], 7
add esi, 0xfffffff0
mov dword [ebp - 0x558], edi
or eax, 0xffffffff
mov byte [ebp - 4], 8
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x4c9bae
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
cmp byte [ebp - 0x53d], 0
jne 0x4c9ca3
mov byte [ebp - 4], 2
mov ecx, dword [ebp - 0x54c]
cmp ecx, 8
jb 0x4c9bff
mov edx, dword [ebp - 0x544]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x4c9bf5
mov edx, dword [edx - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4ca424
push ecx
push edx
call fcn.0056c61e
add esp, 8
mov esi, dword [ebp - 0x570]
mov ecx, dword [ebp - 0xdc]
mov eax, dword [ebp - 0xe0]
test eax, eax
je 0x4c9c33
test ecx, ecx
je 0x4c9c33
lea ecx, [ebp - 0x53c]
push ecx
push eax
call esi
mov ecx, eax
mov dword [ebp - 0xdc], ecx
test ecx, ecx
jne 0x4c9507
cmp dword [ebp + 0x1c], 8
lea ecx, [ebp + 8]
cmovae ecx, dword [ebp + 8]
sub esp, 0x18
mov edi, esp
mov dword [ebp - 0x550], ecx
mov esi, ecx
mov dword [ebp - 0x54c], edi
mov dword [edi], 0
mov dword [edi + 0x10], 0
lea edx, [esi + 2]
mov dword [edi + 0x14], 7
nop dword [eax + eax]
mov ax, word [esi]
add esi, 2
test ax, ax
jne 0x4c9c70
sub esi, edx
sar esi, 1
cmp esi, 7
ja 0x4c9d0a
mov dword [edi + 0x10], esi
add esi, esi
push esi
push ecx
push edi
call fcn.00572f50
add esp, 0xc
xor eax, eax
mov word [esi + edi], ax
jmp 0x4c9dcf
mov ecx, dword [ebp - 0x54c]
cmp ecx, 8
jb 0x4c9ce3
mov edx, dword [ebp - 0x544]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x4c9cd9
mov edx, dword [edx - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4ca424
push ecx
push edx
call fcn.0056c61e
add esp, 8
mov eax, dword [ebp - 0xe0]
mov dword [ebp - 0xdc], 0
test eax, eax
je 0x4c9d03
cmp eax, 0xffffffff
je 0x4c9d03
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
xor esi, esi
jmp 0x4ca347
cmp esi, 0x7ffffffe
ja 0x4ca438
mov edi, esi
or edi, 7
cmp edi, 0x7ffffffe
jbe 0x4c9d34
mov dword [ebp - 0x544], SysReAllocString
mov eax, 0xfffffffe
jmp 0x4c9d5b
mov eax, 0xa
cmp edi, eax
cmovb edi, eax
mov dword [ebp - 0x544], edi
lea eax, [edi + 1]
cmp eax, 0x7fffffff
ja 0x4ca433
add eax, eax
cmp eax, 0x1000
jb 0x4c9d82
lea ecx, [eax + 0x23]
cmp ecx, eax
jbe 0x4ca433
push ecx
call fcn.00591cad
add esp, 4
test eax, eax
je 0x4ca43d
lea edi, [eax + 0x23]
and edi, 0xffffffe0
mov dword [edi - 4], eax
jmp 0x4c9d9d
test eax, eax
je 0x4c9d9b
push eax
call fcn.00591cad
mov edi, eax
add esp, 4
test edi, edi
je 0x4ca44e
jmp 0x4c9d9d
xor edi, edi
mov ecx, dword [ebp - 0x54c]
mov eax, dword [ebp - 0x544]
mov dword [ecx + 0x10], esi
add esi, esi
push esi
push dword [ebp - 0x550]
mov dword [ecx + 0x14], eax
push edi
call fcn.005729d0
add esp, 0xc
xor eax, eax
mov word [esi + edi], ax
mov eax, dword [ebp - 0x54c]
mov dword [eax], edi
mov ecx, dword [ebp - 0x55c]
call fcn.004ca4e0
mov eax, dword [ebp - 0xe0]
mov dword [ebp - 0xdc], 0
test eax, eax
je 0x4c9dfa
cmp eax, 0xffffffff
je 0x4c9dfa
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
mov esi, 1
jmp 0x4ca347
cmp dword [ebp + 0x34], 8
cmovae eax, dword [ebp + 0x20]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
mov edx, SysReAllocString
mov eax, dword [sym.imp.KERNEL32.dll_MoveFileW]
mov dword [ebp - 0x54c], eax
je 0x4ca0f5
sub esp, 0x18
lea eax, [ebp + 0x20]
mov esi, esp
mov dword [esi], 0
mov dword [esi + 0x10], 0
mov dword [esi + 0x14], 0
cmp dword [ebp + 0x34], 8
mov ecx, dword [ebp + 0x30]
cmovae eax, dword [ebp + 0x20]
mov dword [ebp - 0x544], ecx
mov dword [ebp - 0x550], eax
cmp ecx, 8
jae 0x4c9e73
movups xmm0, xmmword [eax]
mov edi, 7
movups xmmword [esi], xmm0
jmp 0x4c9efb
mov edi, ecx
or edi, 7
cmp edi, edx
cmova edi, edx
lea eax, [edi + 1]
cmp eax, 0x7fffffff
ja 0x4ca433
add eax, eax
cmp eax, 0x1000
jb 0x4c9ebb
lea ecx, [eax + 0x23]
cmp ecx, eax
jbe 0x4ca433
push ecx
call fcn.00591cad
add esp, 4
test eax, eax
je 0x4ca45f
lea ecx, [eax + 0x23]
and ecx, 0xffffffe0
mov dword [ecx - 4], eax
jmp 0x4c9ed6
test eax, eax
je 0x4c9ed4
push eax
call fcn.00591cad
mov ecx, eax
add esp, 4
test ecx, ecx
je 0x4ca470
jmp 0x4c9ed6
xor ecx, ecx
mov eax, dword [ebp - 0x544]
mov dword [esi], ecx
lea eax, [eax*2 + 2]
push eax
push dword [ebp - 0x550]
push ecx
call fcn.005729d0
mov ecx, dword [ebp - 0x544]
add esp, 0xc
lea eax, [ebp - 0x28]
mov dword [esi + 0x10], ecx
push eax
mov dword [esi + 0x14], edi
call fcn.004c8050
mov byte [ebp - 4], 0xe
lea ecx, [ebp - 0x28]
cmp dword [ebp - 0x14], 8
lea eax, [ebp + 0x20]
cmovae ecx, dword [ebp - 0x28]
cmp dword [ebp + 0x34], 8
push ecx
cmovae eax, dword [ebp + 0x20]
push eax
call dword [ebp - 0x54c]
test eax, eax
je 0x4ca146
mov eax, dword [ebp - 0x55c]
add eax, 0x2c
mov dword [ebp - 0x554], eax
mov esi, dword [eax + 4]
cmp esi, dword [eax + 8]
je 0x4ca03f
mov dword [esi], 0
lea edi, [ebp - 0x28]
mov dword [esi + 0x10], 0
mov dword [esi + 0x14], 0
cmp dword [ebp - 0x14], 8
mov ecx, dword [ebp - 0x18]
cmovae edi, dword [ebp - 0x28]
mov dword [ebp - 0x544], ecx
mov dword [ebp - 0x550], edi
cmp ecx, 8
jae 0x4c9f9c
movups xmm0, xmmword [edi]
mov edi, 7
movups xmmword [esi], xmm0
mov dword [esi + 0x10], ecx
mov dword [esi + 0x14], edi
add dword [eax + 4], 0x18
jmp 0x4ca04b
mov edi, ecx
mov eax, SysReAllocString
or edi, 7
cmp edi, 0x7ffffffe
cmova edi, eax
lea eax, [edi + 1]
cmp eax, 0x7fffffff
ja 0x4ca433
add eax, eax
cmp eax, 0x1000
jb 0x4c9fed
lea ecx, [eax + 0x23]
cmp ecx, eax
jbe 0x4ca433
push ecx
call fcn.00591cad
add esp, 4
test eax, eax
je 0x4ca481
lea ecx, [eax + 0x23]
and ecx, 0xffffffe0
mov dword [ecx - 4], eax
jmp 0x4ca008
test eax, eax
je 0x4ca006
push eax
call fcn.00591cad
mov ecx, eax
add esp, 4
test ecx, ecx
je 0x4ca492
jmp 0x4ca008
xor ecx, ecx
mov eax, dword [ebp - 0x544]
mov dword [esi], ecx
lea eax, [eax*2 + 2]
push eax
push dword [ebp - 0x550]
push ecx
call fcn.005729d0
mov eax, dword [ebp - 0x554]
add esp, 0xc
mov ecx, dword [ebp - 0x544]
mov dword [esi + 0x10], ecx
mov dword [esi + 0x14], edi
add dword [eax + 4], 0x18
jmp 0x4ca04b
lea ecx, [ebp - 0x28]
push ecx
push esi
mov ecx, eax
call fcn.00453179
mov esi, dword [ebp - 0x55c]
cmp dword [esi], 0
je 0x4ca0b2
lea ecx, [ebp - 0xa4]
call fcn.004c9210
lea eax, [ebp - 0x28]
mov byte [ebp - 4], 0xf
push eax
lea ecx, [ebp - 0xa0]
mov dword [ebp - 0xa4], 1
call fcn.00406392
cmp dword [ebp + 0x1c], 8
lea eax, [ebp + 8]
push dword [ebp + 0x18]
cmovae eax, dword [ebp + 8]
lea ecx, [ebp - 0x88]
push eax
call fcn.00407cc7
lea eax, [ebp - 0xa4]
push eax
lea ecx, [esi + 0x20]
call fcn.004cdc60
lea ecx, [ebp - 0xa4]
call fcn.004c9240
mov byte [ebp - 4], 1
mov edx, dword [ebp - 0x14]
cmp edx, 8
jb 0x4ca0f0
mov ecx, dword [ebp - 0x28]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4ca0e6
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4ca4a3
push edx
push ecx
call fcn.0056c61e
add esp, 8
mov edx, SysReAllocString
sub esp, 0x18
lea eax, [ebp + 0x20]
mov dword [ebp - 0x554], esp
sub esp, 0x18
mov esi, esp
mov dword [esi], 0
mov dword [esi + 0x10], 0
mov dword [esi + 0x14], 0
cmp dword [ebp + 0x34], 8
mov ecx, dword [ebp + 0x30]
cmovae eax, dword [ebp + 0x20]
mov dword [ebp - 0x544], ecx
mov dword [ebp - 0x550], eax
cmp ecx, 8
jae 0x4ca1b5
movups xmm0, xmmword [eax]
mov edi, 7
movups xmmword [esi], xmm0
jmp 0x4ca241
mov esi, dword [ebp - 0x55c]
lea eax, [ebp + 0x20]
lea ecx, [esi + 8]
cmp ecx, eax
je 0x4ca167
cmp dword [ebp + 0x34], 8
push dword [ebp + 0x30]
cmovae eax, dword [ebp + 0x20]
push eax
call fcn.00407cc7
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, dword [ebp - 0x14]
mov dword [esi + 4], eax
cmp edx, 8
jb 0x4ca28a
mov ecx, dword [ebp - 0x28]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4ca1a4
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4ca4a8
push edx
push ecx
call fcn.0056c61e
add esp, 8
xor esi, esi
jmp 0x4ca347
mov edi, ecx
or edi, 7
cmp edi, 0x7ffffffe
cmova edi, edx
lea eax, [edi + 1]
cmp eax, 0x7fffffff
ja 0x4ca433
add eax, eax
cmp eax, 0x1000
jb 0x4ca201
lea ecx, [eax + 0x23]
cmp ecx, eax
jbe 0x4ca433
push ecx
call fcn.00591cad
add esp, 4
test eax, eax
je 0x4ca4ad
lea ecx, [eax + 0x23]
and ecx, 0xffffffe0
mov dword [ecx - 4], eax
jmp 0x4ca21c
test eax, eax
je 0x4ca21a
push eax
call fcn.00591cad
mov ecx, eax
add esp, 4
test ecx, ecx
je 0x4ca4be
jmp 0x4ca21c
xor ecx, ecx
mov eax, dword [ebp - 0x544]
mov dword [esi], ecx
lea eax, [eax*2 + 2]
push eax
push dword [ebp - 0x550]
push ecx
call fcn.005729d0
mov ecx, dword [ebp - 0x544]
add esp, 0xc
mov dword [esi + 0x10], ecx
mov ecx, dword [ebp - 0x554]
mov dword [esi + 0x14], edi
call fcn.004c64f0
mov edi, dword [ebp - 0x55c]
add esp, 0x18
mov ecx, edi
call fcn.004cc910
test eax, eax
jne 0x4ca291
lea ecx, [edi + 8]
lea eax, [ebp + 0x20]
cmp ecx, eax
je 0x4ca281
cmp dword [ebp + 0x34], 8
push dword [ebp + 0x30]
cmovae eax, dword [ebp + 0x20]
push eax
call fcn.00407cc7
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [edi + 4], eax
xor esi, esi
jmp 0x4ca347
cmp dword [ebp + 0x34], 8
lea ecx, [ebp + 0x20]
lea eax, [ebp + 8]
cmovae ecx, dword [ebp + 0x20]
cmp dword [ebp + 0x1c], 8
push ecx
cmovae eax, dword [ebp + 8]
push eax
call dword [ebp - 0x54c]
mov esi, eax
test esi, esi
jne 0x4ca2db
lea ecx, [edi + 8]
lea eax, [ebp + 0x20]
cmp ecx, eax
je 0x4ca2d0
cmp dword [ebp + 0x34], 8
push dword [ebp + 0x30]
cmovae eax, dword [ebp + 0x20]
push eax
call fcn.00407cc7
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [edi + 4], eax
jmp 0x4ca347
cmp dword [edi], 0
je 0x4ca347
lea ecx, [ebp - 0xd8]
call fcn.004c9210
mov byte [ebp - 4], 0x10
lea eax, [ebp + 0x20]
cmp dword [ebp + 0x34], 8
lea ecx, [ebp - 0xd4]
push dword [ebp + 0x30]
cmovae eax, dword [ebp + 0x20]
push eax
mov dword [ebp - 0xd8], 1
call fcn.00407cc7
cmp dword [ebp + 0x34], 8
lea eax, [ebp + 0x20]
push dword [ebp + 0x30]
cmovae eax, dword [ebp + 0x20]
lea ecx, [ebp - 0xbc]
push eax
call fcn.00407cc7
lea eax, [ebp - 0xd8]
push eax
lea ecx, [edi + 0x20]
call fcn.004cdc60
lea ecx, [ebp - 0xd8]
call fcn.004c9240
mov edx, dword [ebp + 0x1c]
cmp edx, 8
jb 0x4ca381
mov ecx, dword [ebp + 8]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4ca377
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4ca4cf
push edx
push ecx
call fcn.0056c61e
add esp, 8
mov edx, dword [ebp + 0x34]
xor eax, eax
mov dword [ebp + 0x18], 0
mov dword [ebp + 0x1c], 7
mov word [ebp + 8], ax
cmp edx, 8
jb 0x4ca3cf
mov ecx, dword [ebp + 0x20]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4ca3c5
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4ca4cf
push edx
push ecx
call fcn.0056c61e
add esp, 8
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0056cd75
mov esp, ebp
pop ebp
ret 0x30
push 0x638780
lea eax, [ebp - 0x53d]
push eax
call fcn.0057359b
push 0x638780
lea eax, [ebp - 0x53e]
push eax
call fcn.0057359b
call fcn.0040791f
call fcn.0057da80
push 0x80070057
call fcn.0040c3c1
call fcn.0057da80
push 0x80004005
call fcn.0040c3c1
call fcn.00407b84
call fcn.0040791f
push 0x638780
lea eax, [ebp - 0x53e]
push eax
call fcn.0057359b
push 0x638780
lea eax, [ebp - 0x53d]
push eax
call fcn.0057359b
push 0x638780
lea eax, [ebp - 0x53e]
push eax
call fcn.0057359b
push 0x638780
lea eax, [ebp - 0x53d]
push eax
call fcn.0057359b
push 0x638780
lea eax, [ebp - 0x53e]
push eax
call fcn.0057359b
push 0x638780
lea eax, [ebp - 0x53d]
push eax
call fcn.0057359b
call fcn.0057da80
call fcn.0057da80
push 0x638780
lea eax, [ebp - 0x53e]
push eax
call fcn.0057359b
push 0x638780
lea eax, [ebp - 0x53d]
push eax
call fcn.0057359b
call fcn.0057da80
int3