Function at 0x10019390
Capabilities:
Check if file exists
Get file attributes
Get file size
Read file on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1015429d
mov eax, dword fs:[0]
push eax
sub esp, 0x238
mov eax, dword [0x101a4494]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
mov dword [ebp - 0xd4], edi
mov dword [ebp - 0xd0], edi
mov dword [ebp - 0xd4], ecx
mov dword [ebp - 0xcc], 0
mov dword [ebp - 0xc8], 0
mov dword [ebp - 0xc4], 0
mov dword [ebp - 4], 0
mov dword [ebp - 0x78], 0
mov dword [ebp - 0x74], 0xf
mov byte [ebp - 0x88], 0
cmp dword [ecx + 0x14], 8
mov eax, ecx
mov byte [ebp - 4], 1
jb 0x1001941d
mov eax, dword [ecx]
push 1
push 0x40
push 0x20
push eax
lea ecx, [ebp - 0x194]
call fcn.10014940
mov eax, dword [ebp - 0x194]
mov eax, dword [eax + 4]
mov dword [ebp + eax - method.std::basic_ifstream_char__struct_std::char_traits_char__.virtual_0], vtable.std::basic_ifstream_char__struct_std::char_traits_char__.0
mov eax, dword [ebp - 0x194]
mov ecx, dword [eax + 4]
lea eax, [ecx - 0x70]
mov dword [ebp + ecx - 0x198], eax
cmp dword [ebp - 0x138], 0
mov byte [ebp - 4], 2
je 0x100194c2
push 1
push 3
lea ecx, [ebp - 0x244]
call fcn.10014db0
lea eax, [ebp - 0x184]
mov byte [ebp - 4], 3
push eax
lea ecx, [ebp - 0x234]
call fcn.10015d20
lea eax, [ebp - 0x58]
push eax
lea ecx, [ebp - 0x22c]
call fcn.1001e7b0
lea ecx, [ebp - 0x88]
call fcn.10009890
movups xmm0, xmmword [ebp - 0x58]
lea ecx, [ebp - 0x244]
movups xmmword [ebp - 0x88], xmm0
movq xmm0, qword [ebp - 0x48]
movq qword [ebp - 0x78], xmm0
call fcn.10017df0
lea ecx, [ebp - 0x194]
mov byte [ebp - 4], 1
call fcn.10017c90
mov esi, dword [ebp - 0x78]
test esi, esi
jne 0x10019552
xor eax, eax
mov dword [edi + 0x10], esi
push eax
mov dword [edi + 0x14], 7
mov ecx, edi
push 0x10161b24
mov word [edi], ax
call fcn.1000bc10
mov edx, dword [ebp - 0x74]
cmp edx, 0x10
jb 0x1001952b
mov ecx, dword [ebp - 0x88]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x10019521
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10019f1f
push edx
push ecx
call fcn.100f4a6f
add esp, 8
lea ecx, [ebp - 0xcc]
mov dword [ebp - 0x78], 0
mov dword [ebp - 0x74], 0xf
mov byte [ebp - 0x88], 0
call fcn.1000ddd0
mov eax, edi
jmp 0x10019ee5
xor edi, edi
nop dword [eax]
nop dword [eax + eax]
cmp dword [ebp - 0x74], 0x10
lea ecx, [ebp - 0x88]
mov edx, dword [ebp - 0x88]
cmovae ecx, edx
mov dword [ebp - 0xbc], ecx
cmp esi, 2
jb 0x100195e4
lea eax, [esi - 2]
cmp edi, eax
ja 0x100195e4
lea eax, [ecx - 1]
add ecx, edi
add eax, esi
mov dword [ebp - 0xc0], eax
sub eax, ecx
push eax
push 0x3a
push ecx
call fcn.1012ec50
mov edi, eax
add esp, 0xc
test edi, edi
je 0x100195de
movzx ecx, byte [edi]
cmp cl, 0x3a
jne 0x100195ba
movzx eax, byte [edi + 1]
cmp al, 0x5c
jne 0x100195ba
xor eax, eax
jmp 0x100195bf
sbb eax, eax
or eax, 1
test eax, eax
je 0x1001961c
mov eax, dword [ebp - 0xc0]
inc edi
sub eax, edi
push eax
push 0x3a
push edi
call fcn.1012ec50
mov edi, eax
add esp, 0xc
test edi, edi
jne 0x100195a6
mov edx, dword [ebp - 0x88]
mov ecx, dword [ebp - 0x74]
mov byte [ebp - 4], 0
cmp ecx, 0x10
jb 0x100199d6
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x100199cc
mov edx, dword [edx - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10019f24
jmp 0x100199cc
sub edi, dword [ebp - 0xbc]
cmp edi, 0xffffffff
je 0x100195de
lea edx, [edi - 1]
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 0xf
mov byte [ebp - 0x40], 0
cmp esi, edx
jb 0x10019f29
sub esi, edx
lea eax, [ebp - 0x88]
or ecx, 0xffffffff
cmp esi, 0xffffffff
cmovb ecx, esi
cmp dword [ebp - 0x74], 0x10
push ecx
cmovae eax, dword [ebp - 0x88]
lea ecx, [ebp - 0x40]
add eax, edx
push eax
call fcn.1000bb20
cmp dword [ebp - 0x2c], 0x10
lea ecx, [ebp - 0x40]
mov eax, dword [ebp - 0x40]
mov edx, dword [ebp - 0x30]
cmovae ecx, eax
mov byte [ebp - 4], 4
mov dword [ebp - 0xbc], eax
mov dword [ebp - 0xc0], ecx
cmp edx, 4
jb 0x10019716
lea eax, [edx - 3]
add eax, ecx
sub eax, ecx
push eax
push 0x2e
push ecx
call fcn.1012ec50
mov esi, eax
add esp, 0xc
test esi, esi
je 0x1001970d
nop
mov ecx, esi
mov edx, str..exe
mov eax, dword [ecx]
cmp eax, dword [edx]
je 0x100196d9
cmp al, byte [edx]
jne 0x100196dd
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x100196dd
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x100196dd
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
jne 0x100196dd
xor eax, eax
jmp 0x100196e2
sbb eax, eax
or eax, 1
mov edx, dword [ebp - 0x30]
test eax, eax
je 0x1001978d
mov eax, dword [ebp - 0xc0]
add edx, 0xfffffffd
inc esi
add eax, edx
sub eax, esi
push eax
push 0x2e
push esi
call fcn.1012ec50
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x100196b0
mov eax, dword [ebp - 0xbc]
mov edx, dword [ebp - 0x30]
or esi, 0xffffffff
cmp esi, 0xffffffff
je 0x1001997c
cmp dword [ebp - 0x2c], 0x10
lea ecx, [ebp - 0x40]
cmovae ecx, eax
mov dword [ebp - 0xd8], ecx
cmp edx, 4
jb 0x100197c9
lea eax, [edx - 3]
add eax, ecx
mov dword [ebp - 0xc0], eax
sub eax, ecx
push eax
push 0x2e
push ecx
call fcn.1012ec50
mov esi, eax
add esp, 0xc
test esi, esi
je 0x100197c6
nop word [eax + eax]
mov ecx, esi
mov edx, str..exe
mov eax, dword [ecx]
cmp eax, dword [edx]
je 0x10019789
cmp al, byte [edx]
jne 0x1001979e
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x1001979e
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x1001979e
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
jne 0x1001979e
xor eax, eax
jmp 0x100197a3
sub esi, dword [ebp - 0xc0]
mov eax, dword [ebp - 0xbc]
jmp 0x10019719
sbb eax, eax
or eax, 1
test eax, eax
je 0x10019869
mov eax, dword [ebp - 0xc0]
inc esi
sub eax, esi
push eax
push 0x2e
push esi
call fcn.1012ec50
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x10019760
mov edx, dword [ebp - 0x30]
or esi, 0xffffffff
lea ecx, [esi + 4]
mov dword [ebp - 0x48], 0
cmp edx, ecx
mov dword [ebp - 0x44], 0xf
lea eax, [ebp - 0x40]
mov byte [ebp - 0x58], 0
cmovb ecx, edx
cmp dword [ebp - 0x2c], 0x10
push ecx
cmovae eax, dword [ebp - 0xbc]
lea ecx, [ebp - 0x58]
push eax
call fcn.1000bb20
mov edx, dword [ebp - 0x2c]
cmp edx, 0x10
jb 0x10019832
mov ecx, dword [ebp - 0x40]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x10019828
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10019f1f
push edx
push ecx
call fcn.100f4a6f
add esp, 8
movups xmm0, xmmword [ebp - 0x58]
mov ecx, dword [ebp - 0x48]
movups xmmword [ebp - 0x40], xmm0
movq xmm0, qword [ebp - 0x48]
movq qword [ebp - 0x30], xmm0
test ecx, ecx
jne 0x10019877
xor eax, eax
mov dword [ebp - 0x60], ecx
mov dword [ebp - 0x5c], 7
movq xmm0, qword [ebp - 0x60]
mov word [ebp - 0x70], ax
movups xmm1, xmmword [ebp - 0x70]
jmp 0x100198eb
sub esi, dword [ebp - 0xd8]
mov edx, dword [ebp - 0x30]
jmp 0x100197cc
cmp dword [ebp - 0x44], 0x10
lea eax, [ebp - 0x40]
push 0
cmovae eax, dword [ebp - 0x58]
push 0
push ecx
push eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov esi, eax
lea ecx, [ebp - 0x28]
push 0
push esi
call fcn.10008e80
cmp dword [ebp - 0x14], 8
lea ecx, [ebp - 0x28]
push esi
cmovae ecx, dword [ebp - 0x28]
lea eax, [ebp - 0x40]
cmp dword [ebp - 0x2c], 0x10
push ecx
push dword [ebp - 0x30]
cmovae eax, dword [ebp - 0x40]
push eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
movups xmm1, xmmword [ebp - 0x28]
xor eax, eax
movq xmm0, qword [ebp - 0x18]
movups xmmword [ebp - 0x70], xmm1
mov dword [ebp - 0x18], 0
movq qword [ebp - 0x60], xmm0
mov dword [ebp - 0x14], 7
mov word [ebp - 0x28], ax
mov eax, dword [ebp - 0xc8]
mov byte [ebp - 4], 5
cmp dword [ebp - 0xc4], eax
je 0x10019929
mov dword [eax + 0x10], 0
xor ecx, ecx
mov dword [eax + 0x14], 0
mov edx, 7
movups xmmword [eax], xmm1
mov word [ebp - 0x70], cx
movq qword [eax + 0x10], xmm0
add eax, 0x18
mov dword [ebp - 0xc8], eax
jmp 0x1001993c
lea ecx, [ebp - 0x70]
push ecx
push eax
lea ecx, [ebp - 0xcc]
call fcn.10013370
mov edx, dword [ebp - 0x5c]
mov byte [ebp - 4], 4
cmp edx, 8
jb 0x10019977
mov ecx, dword [ebp - 0x70]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x1001996d
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10019f1f
push edx
push ecx
call fcn.100f4a6f
add esp, 8
mov edx, dword [ebp - 0x40]
jmp 0x10019982
mov edx, dword [ebp - 0xbc]
mov eax, dword [ebp - 0x2c]
add edi, 2
mov byte [ebp - 4], 1
cmp eax, 0x10
jae 0x10019999
mov esi, dword [ebp - 0x78]
jmp 0x10019560
lea ecx, [eax + 1]
mov eax, edx
cmp ecx, 0x1000
jb 0x100199ba
mov edx, dword [edx - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10019f1f
push ecx
push edx
call fcn.100f4a6f
mov esi, dword [ebp - 0x78]
add esp, 8
jmp 0x10019560
push ecx
push edx
call fcn.100f4a6f
add esp, 8
xor eax, eax
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 7
mov word [ebp - 0x28], ax
mov eax, dword [ebp - 0xd4]
cmp dword [eax + 0x14], 8
jb 0x100199f8
mov eax, dword [eax]
push 0
push 0x80
push 3
push 0
push 1
push SysReAllocString
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov esi, eax
mov dword [ebp - 0xd4], esi
mov byte [ebp - 4], 7
cmp esi, 0xffffffff
jne 0x10019a29
mov byte [ebp - 4], 6
push eax
jmp 0x10019a93
lea eax, [ebp - 0xdc]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetFileSizeEx]
test eax, eax
je 0x10019a8a
mov ecx, dword [ebp - 0xdc]
mov eax, dword [ebp - 0x18]
shr ecx, 1
cmp ecx, eax
ja 0x10019a60
cmp dword [ebp - 0x14], 8
lea eax, [ebp - 0x28]
mov dword [ebp - 0x18], ecx
cmovae eax, dword [ebp - 0x28]
xor edx, edx
mov word [eax + ecx*2], dx
jmp 0x10019a6d
sub ecx, eax
push 0
push ecx
lea ecx, [ebp - 0x28]
call fcn.1001ce10
cmp dword [ebp - 0x14], 8
lea eax, [ebp - 0x28]
push 0
cmovae eax, dword [ebp - 0x28]
push 0
push dword [ebp - 0xdc]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_ReadFile]
mov byte [ebp - 4], 6
test esi, esi
je 0x10019a99
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov edi, dword [ebp - 0x18]
test edi, edi
jne 0x10019acf
mov esi, dword [ebp - 0xd0]
xor eax, eax
push eax
push 0x10161b24
mov ecx, esi
mov dword [esi + 0x10], edi
mov dword [esi + 0x14], 7
mov word [esi], ax
call fcn.1000bc10
lea ecx, [ebp - 0x28]
call fcn.100098e0
jmp 0x10019ed8
xor esi, esi
cmp dword [ebp - 0x14], 8
lea eax, [ebp - 0x28]
push 4
cmovae eax, dword [ebp - 0x28]
push 0x101621c8
push esi
push edi
push eax
call fcn.10013af0
mov esi, eax
add esp, 0x14
xor eax, eax
cmp esi, 0xffffffff
je 0x10019c4e
lea edx, [esi - 1]
mov dword [ebp - 0x90], eax
mov dword [ebp - 0x8c], 7
mov word [ebp - 0xa0], ax
cmp edi, edx
jb 0x10019f2e
sub edi, edx
lea eax, [ebp - 0x28]
or ecx, 0xffffffff
cmp edi, 0xffffffff
cmovb ecx, edi
cmp dword [ebp - 0x14], 8
push ecx
cmovae eax, dword [ebp - 0x28]
lea ecx, [ebp - 0xa0]
lea eax, [eax + edx*2]
push eax
call fcn.1000bc10
cmp dword [ebp - 0x8c], 8
lea eax, [ebp - 0xa0]
mov edi, dword [ebp - 0x90]
cmovae eax, dword [ebp - 0xa0]
push 4
push 0x101621c8
push 0
push edi
push eax
mov byte [ebp - 4], 8
call fcn.10013af0
add esp, 0x14
cmp eax, 0xffffffff
je 0x10019c34
cmp dword [ebp - 0x8c], 8
lea eax, [ebp - 0xa0]
push 4
cmovae eax, dword [ebp - 0xa0]
push 0x101621c8
push 0
push edi
push eax
call fcn.10013af0
xor ecx, ecx
mov dword [ebp - 0x48], 0
mov word [ebp - 0x58], cx
add esp, 0x14
mov dword [ebp - 0x44], 7
lea ecx, [eax + 4]
cmp edi, ecx
lea eax, [ebp - 0xa0]
cmovb ecx, edi
cmp dword [ebp - 0x8c], 8
push ecx
cmovae eax, dword [ebp - 0xa0]
lea ecx, [ebp - 0x58]
push eax
call fcn.1000bc10
lea ecx, [ebp - 0xa0]
call fcn.100098e0
movups xmm0, xmmword [ebp - 0x58]
mov edi, dword [ebp - 0xc8]
lea eax, [ebp - 0xa0]
push eax
movups xmmword [ebp - 0xa0], xmm0
movq xmm0, qword [ebp - 0x48]
movq qword [ebp - 0x90], xmm0
cmp dword [ebp - 0xc4], edi
je 0x10019c28
mov ecx, edi
call fcn.1000da50
add edi, 0x18
mov dword [ebp - 0xc8], edi
jmp 0x10019c34
push edi
lea ecx, [ebp - 0xcc]
call fcn.1000d780
lea ecx, [ebp - 0xa0]
mov byte [ebp - 4], 6
add esi, 2
call fcn.100098e0
mov edi, dword [ebp - 0x18]
jmp 0x10019ad1
mov dword [ebp - 0x60], 0
mov dword [ebp - 0x5c], 7
mov word [ebp - 0x70], ax
mov byte [ebp - 4], 9
add edi, 0xffffffff
jne 0x10019c75
xor eax, eax
mov dword [ebp - 0x60], edi
mov word [ebp + edi*2 - 0x70], ax
jmp 0x10019c80
push 0
push edi
lea ecx, [ebp - 0x70]
call fcn.1001ce10
mov ecx, dword [ebp - 0x18]
lea eax, [ebp - 0x28]
dec ecx
cmp dword [ebp - 0x14], 8
push ecx
cmovae eax, dword [ebp - 0x28]
lea ecx, [ebp - 0x70]
inc eax
push eax
call fcn.1000bc10
xor esi, esi
nop dword [eax]
cmp dword [ebp - 0x5c], 8
lea eax, [ebp - 0x70]
mov edi, dword [ebp - 0x60]
cmovae eax, dword [ebp - 0x70]
push 2
push 0x101623fc
push esi
push edi
push eax
call fcn.10013af0
mov esi, eax
add esp, 0x14
cmp esi, 0xffffffff
je 0x10019e52
lea edx, [esi - 1]
mov dword [ebp - 0xa8], 0
xor eax, eax
mov dword [ebp - 0xa4], 7
mov word [ebp - 0xb8], ax
cmp edi, edx
jb 0x10019f2e
sub edi, edx
lea eax, [ebp - 0x70]
or ecx, 0xffffffff
cmp edi, 0xffffffff
cmovb ecx, edi
cmp dword [ebp - 0x5c], 8
push ecx
cmovae eax, dword [ebp - 0x70]
lea ecx, [ebp - 0xb8]
lea eax, [eax + edx*2]
push eax
call fcn.1000bc10
cmp dword [ebp - 0xa4], 8
lea eax, [ebp - 0xb8]
mov edi, dword [ebp - 0xa8]
cmovae eax, dword [ebp - 0xb8]
push 4
push 0x101621c8
push 0
push edi
push eax
mov byte [ebp - 4], 0xa
call fcn.10013af0
add esp, 0x14
cmp eax, 0xffffffff
je 0x10019e3b
cmp dword [ebp - 0xa4], 8
lea eax, [ebp - 0xb8]
push 4
cmovae eax, dword [ebp - 0xb8]
push 0x101621c8
push 0
push edi
push eax
call fcn.10013af0
xor ecx, ecx
mov dword [ebp - 0x48], 0
mov word [ebp - 0x58], cx
add esp, 0x14
mov dword [ebp - 0x44], 7
lea ecx, [eax + 4]
cmp edi, ecx
lea eax, [ebp - 0xb8]
cmovb ecx, edi
cmp dword [ebp - 0xa4], 8
push ecx
cmovae eax, dword [ebp - 0xb8]
lea ecx, [ebp - 0x58]
push eax
call fcn.1000bc10
lea ecx, [ebp - 0xb8]
call fcn.100098e0
movups xmm0, xmmword [ebp - 0x58]
xor eax, eax
lea ecx, [ebp - 0x58]
mov word [ebp - 0x58], ax
movups xmmword [ebp - 0xb8], xmm0
movq xmm0, qword [ebp - 0x48]
movq qword [ebp - 0xa8], xmm0
mov dword [ebp - 0x48], 0
mov dword [ebp - 0x44], 7
call fcn.100098e0
mov edi, dword [ebp - 0xc8]
lea eax, [ebp - 0xb8]
push eax
cmp dword [ebp - 0xc4], edi
je 0x10019e2f
mov ecx, edi
call fcn.1000da50
add edi, 0x18
mov byte [ebp - 4], 9
lea ecx, [ebp - 0xb8]
mov dword [ebp - 0xc8], edi
add esi, 2
call fcn.100098e0
jmp 0x10019ca0
push edi
lea ecx, [ebp - 0xcc]
call fcn.1000d780
lea ecx, [ebp - 0xb8]
mov byte [ebp - 4], 9
add esi, 2
call fcn.100098e0
jmp 0x10019ca0
lea ecx, [ebp - 0x70]
call fcn.100098e0
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 0
call fcn.100098e0
mov esi, dword [ebp - 0xcc]
mov edi, dword [ebp - 0xc8]
cmp esi, edi
je 0x10019eb2
cmp dword [esi + 0x10], 0
je 0x10019eab
cmp dword [esi + 0x14], 8
mov eax, esi
jb 0x10019e86
mov eax, dword [esi]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x10019eab
cmp dword [esi + 0x14], 8
mov eax, esi
jb 0x10019e9b
mov eax, dword [esi]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x10019eab
test al, 0x10
je 0x10019f00
add esi, 0x18
cmp esi, edi
jne 0x10019e76
mov esi, dword [ebp - 0xd0]
xor eax, eax
push eax
push 0x10161b24
mov ecx, esi
mov dword [esi + 0x10], 0
mov dword [esi + 0x14], 7
mov word [esi], ax
call fcn.1000bc10
lea ecx, [ebp - 0xcc]
call fcn.1000ddd0
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.100f4dc3
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 0xd0]
push esi
call fcn.1000da50
lea ecx, [ebp - 0xcc]
call fcn.1000ddd0
mov eax, dword [ebp - 0xd0]
jmp 0x10019ee5
call fcn.10131c3f
call fcn.10131c3f
call fcn.1000b780
call fcn.1000b780
int3