Function at 0x100189c6
Capabilities:
Check if file exists
Get file attributes

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x84c
and dword [esp + 0x18], 0
push ebx
mov ebx, dword [ebp + 8]
push esi
mov esi, dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
lea eax, [ebx + 0x28]
push edi
push eax
mov dword [esp + 0x48], eax
call esi
mov eax, ebx
neg eax
sbb eax, eax
lea ecx, [ebx + 8]
and eax, ecx
add eax, 4
push eax
mov dword [esp + 0x4c], eax
call esi
call fcn.10015cdc
or dword [ebx + 0x98], 0xffffffff
or dword [ebx + 0x9c], 0xffffffff
push 0xafc8
push str.ts.scanpkt
lea ecx, [esp + 0x54]
mov dword [esp + 0x54], vtable.SplitterSettings.0
mov byte [ebx + 0x80c8], 0
call fcn.10006a53
mov edi, dword [ebp + 0x10]
mov esi, dword [ebp + 0xc]
mov dword [ebx + 0xac], eax
mov eax, dword [ebp + 0x14]
mov dword [ebx + 0x84], eax
lea eax, [ebx + 0x40]
mov dword [ebx + 0x80], edi
cmp dword [eax], esi
mov dword [esp + 0x20], eax
je 0x10018a64
push esi
push eax
call fcn.10001172
lea ecx, [esp + 0x3c]
push ecx
lea ecx, [esp + 0x54]
push ecx
push dword [ebp + 0x14]
mov dword [ebx + 0xa8], 0xbc
mov eax, dword [esi]
push edi
push esi
mov dword [esp + 0x50], 0x804
call dword [eax + 0xc]
test eax, eax
mov edi, 0x800
jl 0x10018b0e
cmp dword [esp + 0x3c], 0xc5
jb 0x10018aba
cmp byte [esp + 0x54], 0x47
jne 0x10018aba
cmp byte [esp + 0x114], 0x47
jne 0x10018aba
mov dword [ebx + 0xa8], 0xc0
jmp 0x10018b0e
cmp dword [esp + 0x3c], 0x804
jb 0x10018b0e
cmp byte [esp + 0x50], 0
jne 0x10018b0e
cmp byte [esp + 0x51], 0
jne 0x10018b0e
cmp byte [esp + 0x52], 1
jne 0x10018b0e
cmp byte [esp + 0x53], 0xba
jne 0x10018b0e
cmp byte [esp + 0x850], 0
jne 0x10018b0e
cmp byte [esp + 0x851], 0
jne 0x10018b0e
cmp byte [esp + 0x852], 1
jne 0x10018b0e
cmp byte [esp + 0x853], 0xba
jne 0x10018b0e
mov dword [ebx + 0xa8], edi
cmp byte [ebx + 0xa1], 0
jne 0x10018b54
mov eax, dword [esi]
and dword [esp + 0x1c], 0
lea ecx, [esp + 0x1c]
push ecx
push 0x1001ee10
push esi
mov dword [esp + 0x30], 1
call dword [eax]
lea eax, [ebx + 0x90]
push eax
push str.FileSize
push dword [esp + 0x24]
call fcn.100066ad
add esp, 0xc
test eax, eax
mov byte [esp + 0x17], 0
jge 0x10018b59
mov byte [esp + 0x17], 1
test byte [esp + 0x24], 1
je 0x10018b6e
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x10018b6e
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
cmp byte [esp + 0x17], 0
je 0x10018b86
or dword [ebx + 0x90], 0xffffffff
mov dword [ebx + 0x94], SysStringLen
xor ecx, ecx
cmp dword [ebx + 0xa8], edi
mov dword [ebx + 0x8104], ecx
mov dword [ebx + 0x80fc], ecx
jne 0x10018bb4
mov eax, 0x10015f17
mov dword [ebx + 0x8100], eax
mov eax, 0x10013785
mov dword [ebx + 0x80f8], eax
jmp 0x10018c0e
mov eax, 0x100170dc
mov dword [ebx + 0x8100], eax
mov eax, 0x100188c9
mov edi, 0xf0
push edi
mov dword [ebx + 0x80f8], eax
call fcn.100080f5
mov esi, eax
xor eax, eax
cmp esi, eax
pop ecx
je 0x10018be7
push eax
push eax
xor cl, cl
call fcn.10001640
push edi
mov dword [ebx + 0xb0], eax
call fcn.100080f5
mov esi, eax
xor eax, eax
cmp esi, eax
pop ecx
je 0x10018c08
push eax
push eax
push 0x11
xor cl, cl
pop eax
call fcn.10001640
mov dword [ebx + 0xf4], eax
mov eax, dword [ebx + 0xac]
imul eax, eax, 0xbc
xor edx, edx
div dword [ebx + 0xa8]
push ebx
mov dword [ebx + 0xac], eax
call fcn.1001730a
mov edi, eax
test edi, edi
jl 0x1001911e
cmp dword [ebx + 0x80b8], 0
je 0x1001911e
mov ecx, dword [ebp + 0x1c]
lea eax, [ebx + 0x44]
cmp dword [eax], ecx
je 0x10018c56
push ecx
push eax
call fcn.10001172
mov eax, 0x1001d438
mov esi, eax
lea edi, [ebx + 0x4c]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov esi, eax
lea edi, [ebx + 0x5c]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov esi, 0x10023cb0
push esi
lea ecx, [esp + 0x1c]
call fcn.100026f1
mov eax, dword [esp + 0x20]
mov eax, dword [eax]
and dword [esp + 0x1c], 0
test eax, eax
je 0x10018c9a
mov ecx, dword [eax]
lea edx, [esp + 0x1c]
push edx
push 0x1001ee10
push eax
call dword [ecx]
lea eax, [esp + 0x18]
push eax
push str.Name
push dword [esp + 0x24]
call fcn.10006ba4
add esp, 0xc
test eax, eax
mov eax, dword [esp + 0x1c]
setge byte [esp + 0x17]
test eax, eax
je 0x10018cc5
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
cmp byte [esp + 0x17], 0
je 0x100190fc
push 0x2f
push dword [esp + 0x1c]
call fcn.100081cc
test eax, eax
pop ecx
pop ecx
jne 0x10018ce6
or edi, 0xffffffff
jmp 0x10018cee
sub eax, dword [esp + 0x18]
sar eax, 1
mov edi, eax
push 0x5c
push dword [esp + 0x1c]
call fcn.100081cc
test eax, eax
pop ecx
pop ecx
jne 0x10018d04
or eax, 0xffffffff
jmp 0x10018d0a
sub eax, dword [esp + 0x18]
sar eax, 1
cmp edi, eax
jg 0x10018d10
mov edi, eax
push esi
lea ecx, [esp + 0x14]
call fcn.100026f1
push esi
lea ecx, [esp + 0x20]
call fcn.100026f1
test edi, edi
jge 0x10018d38
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x14]
call fcn.10002734
jmp 0x10018d92
mov eax, dword [esp + 0x18]
mov eax, dword [eax - 0xc]
lea esi, [edi + 1]
push esi
lea ecx, [esp + 0x28]
push ecx
sub eax, esi
lea ecx, [esp + 0x20]
call fcn.10002650
lea eax, [esp + 0x24]
push eax
lea ecx, [esp + 0x14]
call fcn.10002734
mov ecx, dword [esp + 0x24]
add ecx, 0xfffffff0
call fcn.1000127e
mov ecx, esi
lea edx, [esp + 0x20]
lea eax, [esp + 0x18]
call fcn.10002115
push eax
lea ecx, [esp + 0x20]
call fcn.10002734
mov ecx, dword [esp + 0x20]
add ecx, 0xfffffff0
call fcn.1000127e
push 0xf0000040
push 1
xor esi, esi
push esi
push esi
lea eax, [esp + 0x40]
push eax
call dword [sym.imp.ADVAPI32.dll_CryptAcquireContextW]
test eax, eax
jne 0x10018db0
mov dword [esp + 0x30], esi
mov eax, dword [esp + 0x10]
mov eax, dword [eax - 0xc]
lea edi, [ebx + 0x4c]
push edi
add eax, eax
push eax
lea ecx, [esp + 0x18]
call fcn.10002222
push eax
lea eax, [esp + 0x3c]
call fcn.10001575
test al, al
jne 0x10018dde
mov esi, 0x1001d438
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
lea ecx, [esp + 0x20]
lea eax, [esp + 0x10]
call fcn.100020e4
mov edi, eax
mov eax, dword [edi]
mov esi, dword [eax - 0xc]
push esi
mov ecx, edi
call fcn.10002c71
lea ecx, [esi + 1]
push ecx
push eax
call fcn.10007753
pop ecx
pop ecx
push esi
mov ecx, edi
call fcn.10002c9b
push edi
lea ecx, [esp + 0x28]
call fcn.10002716
mov ecx, dword [esp + 0x20]
add ecx, 0xfffffff0
call fcn.1000127e
lea eax, [esp + 0x24]
push eax
mov ecx, str..EVO
call fcn.100021b8
test al, al
pop ecx
jne 0x10018e50
lea eax, [esp + 0x24]
push eax
mov ecx, str..VOB
call fcn.100021b8
test al, al
pop ecx
je 0x100190c5
mov eax, dword [esp + 0x10]
mov esi, dword [eax - 0xc]
and dword [esp + 0x34], 0
xor edi, edi
sub esi, 4
inc edi
test esi, esi
mov dword [esp + 0x20], esi
jle 0x10018ebe
lea eax, [esi - 1]
mov dword [esp + 0x2c], eax
push dword [esp + 0x2c]
lea ecx, [esp + 0x14]
call fcn.10002201
cmp ax, 0x30
jb 0x10018ebe
push dword [esp + 0x2c]
lea ecx, [esp + 0x14]
call fcn.10002201
cmp ax, 0x39
ja 0x10018ebe
dec esi
dec dword [esp + 0x2c]
push esi
lea ecx, [esp + 0x14]
mov dword [esp + 0x24], esi
call fcn.10002201
movzx eax, ax
sub eax, 0x30
imul eax, edi
imul edi, edi, 0xa
add dword [esp + 0x34], eax
test esi, esi
jg 0x10018e71
mov eax, dword [esp + 0x10]
mov eax, dword [eax - 0xc]
sub eax, 4
cmp esi, eax
jge 0x100190c5
mov eax, dword [esp + 0x34]
inc eax
push eax
lea eax, [esp + 0x1c]
push 0x1001f33c
push eax
call fcn.10002feb
add esp, 0xc
lea ecx, [esp + 0x28]
lea eax, [esp + 0x10]
call fcn.100020e4
push eax
lea eax, [esp + 0x1c]
push eax
mov ecx, esi
lea edx, [esp + 0x48]
lea eax, [esp + 0x18]
call fcn.10002115
lea ecx, [esp + 0x40]
push ecx
call fcn.10002146
pop ecx
pop ecx
lea ecx, [esp + 0x30]
push ecx
call fcn.10002146
pop ecx
pop ecx
push eax
lea ecx, [esp + 0x14]
call fcn.10002734
mov ecx, dword [esp + 0x2c]
add ecx, 0xfffffff0
call fcn.1000127e
mov ecx, dword [esp + 0x38]
add ecx, 0xfffffff0
call fcn.1000127e
mov ecx, dword [esp + 0x40]
add ecx, 0xfffffff0
call fcn.1000127e
mov ecx, dword [esp + 0x28]
add ecx, 0xfffffff0
call fcn.1000127e
lea eax, [esp + 0x10]
push eax
lea eax, [esp + 0x2c]
push eax
lea eax, [esp + 0x24]
call fcn.10002146
pop ecx
pop ecx
push eax
lea ecx, [esp + 0x1c]
call fcn.10002734
mov ecx, dword [esp + 0x28]
add ecx, 0xfffffff0
call fcn.1000127e
push dword [esp + 0x18]
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x10018fc8
mov eax, dword [esp + 0x10]
mov eax, dword [eax - 0xc]
lea edi, [ebx + 0x5c]
push edi
add eax, eax
push eax
lea ecx, [esp + 0x18]
call fcn.10002222
push eax
lea eax, [esp + 0x3c]
call fcn.10001575
test al, al
jne 0x10018fc8
mov esi, 0x1001d438
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x34]
cmp eax, 1
jle 0x100190c5
dec eax
push eax
lea eax, [esp + 0x1c]
push 0x1001f33c
push eax
call fcn.10002feb
add esp, 0xc
lea ecx, [esp + 0x20]
lea eax, [esp + 0x10]
call fcn.100020e4
push eax
lea eax, [esp + 0x1c]
push eax
mov ecx, esi
lea edx, [esp + 0x40]
lea eax, [esp + 0x18]
call fcn.10002115
lea ecx, [esp + 0x48]
push ecx
call fcn.10002146
pop ecx
pop ecx
lea ecx, [esp + 0x2c]
push ecx
call fcn.10002146
pop ecx
pop ecx
push eax
lea ecx, [esp + 0x14]
call fcn.10002734
mov ecx, dword [esp + 0x28]
add ecx, 0xfffffff0
call fcn.1000127e
mov ecx, dword [esp + 0x40]
add ecx, 0xfffffff0
call fcn.1000127e
mov ecx, dword [esp + 0x38]
add ecx, 0xfffffff0
call fcn.1000127e
mov ecx, dword [esp + 0x20]
add ecx, 0xfffffff0
call fcn.1000127e
lea eax, [esp + 0x10]
push eax
lea eax, [esp + 0x2c]
push eax
lea eax, [esp + 0x24]
call fcn.10002146
pop ecx
pop ecx
push eax
lea ecx, [esp + 0x1c]
call fcn.10002734
mov ecx, dword [esp + 0x28]
add ecx, 0xfffffff0
call fcn.1000127e
push dword [esp + 0x18]
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x100190c5
mov eax, dword [esp + 0x10]
mov eax, dword [eax - 0xc]
lea edi, [ebx + 0x6c]
push edi
add eax, eax
push eax
lea ecx, [esp + 0x18]
call fcn.10002222
push eax
lea eax, [esp + 0x3c]
call fcn.10001575
test al, al
jne 0x100190c5
mov esi, 0x1001d438
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x24]
add ecx, 0xfffffff0
call fcn.1000127e
cmp dword [esp + 0x30], 0
je 0x100190e4
push 0
push dword [esp + 0x34]
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
mov ecx, dword [esp + 0x1c]
add ecx, 0xfffffff0
call fcn.1000127e
mov ecx, dword [esp + 0x10]
add ecx, 0xfffffff0
call fcn.1000127e
mov ecx, dword [esp + 0x18]
add ecx, 0xfffffff0
call fcn.1000127e
push dword [esp + 0x48]
mov esi, dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
call esi
push dword [esp + 0x44]
call esi
xor eax, eax
jmp 0x10019151
call fcn.10015cdc
mov eax, dword [esp + 0x20]
cmp dword [eax], 0
je 0x10019134
push 0
push eax
call fcn.10001172
test edi, edi
jl 0x1001913d
mov edi, 0x80004005
push dword [esp + 0x48]
mov esi, dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
call esi
push dword [esp + 0x44]
call esi
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18