Function at 0xf037eec
Capabilities:
Check if file exists
Get common file path
Get file attributes

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x660
mov eax, dword [0xf072008]
xor eax, ebp
mov dword [ebp - 4], eax
mov edx, dword [ebp + 0xc]
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
mov esi, 0xf003248
lea edi, [ebp - 0x14]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
xor edi, edi
push ebx
mov dword [ebp - 0x64c], edx
mov dword [ebp - 0x654], 0xffff
mov dword [ebp - 0x650], edi
mov dword [0xf0ad1dc], edi
call fcn.0f037e3c
cmp byte [edx], 0
mov esi, 0x1fa
jne 0xf037f91
push esi
lea eax, [ebp - 0x21c]
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
cmp eax, edi
je 0xf037f91
cmp eax, esi
ja 0xf037f91
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x21c]
push 0x208
push eax
call fcn.0f00a2b3
add esp, 0xc
lea eax, [ebp - 0x21c]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0xf037f91
lea eax, [ebp - 0x21c]
mov dword [ebp - 0x64c], eax
mov eax, dword [ebp - 0x64c]
cmp byte [eax], 0
jne 0xf037fd6
push esi
lea eax, [ebp - 0x21c]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemWindowsDirectoryA]
cmp eax, edi
je 0xf038007
cmp eax, esi
ja 0xf038007
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x21c]
push 0x208
push eax
call fcn.0f00a2b3
lea eax, [ebp - 0x21c]
add esp, 0xc
mov dword [ebp - 0x64c], eax
push edi
push dword [ebp - 0x64c]
call dword [sym.imp.KERNEL32.dll__lopen]
mov edi, eax
mov dword [ebp - 0x64c], edi
cmp edi, 0xffffffff
je 0xf038007
push 0
push 0
push edi
call dword [sym.imp.KERNEL32.dll__llseek]
cmp eax, 0xffffffff
jne 0xf03801a
push edi
call dword [sym.imp.KERNEL32.dll__lclose]
xor eax, eax
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0f0057d5
leave
ret 8
mov esi, dword [sym.imp.KERNEL32.dll__lread]
push 0x171
lea eax, [ebp - 0x49c]
push eax
push edi
call esi
cmp eax, 0xffffffff
je 0xf038000
push 0x16
lea eax, [ebp - 0x234]
push eax
push edi
call esi
cmp eax, 0xffffffff
je 0xf038000
push 0x10
mov edi, 0xf003238
lea esi, [ebp - 0x234]
pop ecx
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0xf0384cd
and dword [ebp - 0x658], eax
jmp 0xf038398
movzx eax, word [ebp - 0x224]
mov esi, dword [ebp - 0x64c]
push 0
push eax
push esi
call dword [sym.imp.KERNEL32.dll__llseek]
cmp eax, 0xffffffff
je 0xf0384e3
push 0x16
lea eax, [ebp - 0x234]
push eax
push esi
call dword [sym.imp.KERNEL32.dll__lread]
cmp eax, 0xffffffff
je 0xf0384e3
push 0x10
pop eax
mov edi, 0xf003228
lea esi, [ebp - 0x234]
mov ecx, eax
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0xf03812b
cmp dword [ebp - 0x658], edx
jne 0xf03812b
movzx eax, word [ebp - 0x222]
push edx
push eax
push dword [ebp - 0x64c]
call dword [sym.imp.KERNEL32.dll__llseek]
cmp eax, 0xffffffff
je 0xf0384e9
push 6
lea eax, [ebp - 0x660]
push eax
push dword [ebp - 0x64c]
call dword [sym.imp.KERNEL32.dll__lread]
cmp eax, 0xffffffff
je 0xf0384e9
mov ax, word [ebp - 0x660]
mov word [ebx + 0x1e], ax
mov ax, word [ebp - 0x65e]
mov word [ebx + 0x1c], ax
mov al, byte [ebp - 0x65c]
mov cl, al
and cl, 0x1c
shl cl, 2
and al, 3
or cl, al
mov byte [ebx + 0x21], cl
jmp 0xf038398
mov edi, 0xf003218
lea esi, [ebp - 0x234]
mov ecx, eax
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0xf038245
movzx eax, word [ebp - 0x222]
push edx
push eax
push dword [ebp - 0x64c]
call dword [sym.imp.KERNEL32.dll__llseek]
cmp eax, 0xffffffff
je 0xf0384e9
push 0x68
lea eax, [ebp - 0x29c]
push eax
push dword [ebp - 0x64c]
call dword [sym.imp.KERNEL32.dll__lread]
cmp eax, 0xffffffff
je 0xf0384e9
mov ax, word [ebp - 0x294]
mov word [ebx + 0x1a], ax
mov ax, word [ebp - 0x292]
mov word [ebx + 0x18], ax
mov ax, word [ebp - 0x290]
xor esi, esi
mov word [ebx + 0x1e], ax
mov ax, word [ebp - 0x28e]
inc esi
cmp word [ebp - 0x654], 0x64
mov word [ebx + 0x1c], ax
mov eax, dword [ebp - 0x28c]
mov dword [ebp - 0x658], esi
jbe 0xf0381f6
mov cx, word [ebp - 0x298]
cmp cx, 0x64
jae 0xf0381d6
mov byte [0xf075ca8], cl
mov cx, word [ebp - 0x296]
cmp cx, 0x32
jae 0xf0381eb
add cl, cl
mov byte [0xf075ca9], cl
mov ecx, eax
shr ecx, 0xc
and cl, 1
mov byte [ebx + 0x26], cl
mov ecx, eax
shr ecx, 5
and cl, 0x7f
mov byte [ebx + 0x21], cl
mov cl, al
and cl, 1
mov byte [ebx + 0x20], cl
mov cx, word [ebp - 0x284]
mov word [ebx + 0x24], cx
mov cx, word [ebp - 0x282]
mov word [ebx + 0x22], cx
mov ecx, eax
shr ecx, 3
shr eax, 0x11
and ecx, esi
and eax, esi
mov word [ebx + 0x10], cx
mov dword [0xf074e00], eax
lea eax, [ebp - 0x274]
mov dword [ebp - 0x650], eax
jmp 0xf038398
mov edi, 0xf003208
lea esi, [ebp - 0x234]
mov ecx, eax
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0xf038313
movzx eax, word [ebp - 0x222]
push edx
push eax
push dword [ebp - 0x64c]
call dword [sym.imp.KERNEL32.dll__llseek]
cmp eax, 0xffffffff
je 0xf0384e9
push 0x8c
lea eax, [ebp - 0x328]
push eax
push dword [ebp - 0x64c]
call dword [sym.imp.KERNEL32.dll__lread]
cmp eax, 0xffffffff
je 0xf0384e9
mov eax, dword [ebp - 0x328]
mov dword [0xf0ad1dc], eax
and al, 0xf
cmp byte [ebx + 0x2d], 0
mov byte [ebx + 0x2e], al
jne 0xf038398
push 0x40
pop esi
push esi
call fcn.0f037ea5
mov dword [0xf082dbc], eax
mov byte [ebp - 0x2dd], 0
test eax, eax
je 0xf0382e1
push 0x3f
lea ecx, [ebp - 0x31c]
push ecx
push esi
push eax
call fcn.0f00b4ab
add esp, 0x10
push esi
call fcn.0f037ea5
mov dword [0xf082dc0], eax
mov byte [ebp - 0x29d], 0
test eax, eax
je 0xf038398
push 0x3f
lea ecx, [ebp - 0x2dc]
push ecx
push esi
push eax
call fcn.0f00b4ab
add esp, 0x10
jmp 0xf038398
mov ecx, eax
mov edi, 0xf0031f8
lea esi, [ebp - 0x234]
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0xf038398
movzx eax, word [ebp - 0x222]
xor esi, esi
push esi
push eax
push dword [ebp - 0x64c]
call dword [sym.imp.KERNEL32.dll__llseek]
cmp eax, 0xffffffff
je 0xf0384d0
push 0x1ac
lea eax, [ebp - 0x648]
push eax
push dword [ebp - 0x64c]
call dword [sym.imp.KERNEL32.dll__lread]
cmp eax, 0xffffffff
je 0xf0384d0
mov cx, word [ebp - 0x592]
cmp cx, 0x64
ja 0xf038398
movzx eax, cx
mov dword [ebp - 0x654], eax
mov dl, cl
add dl, dl
mov al, 0xc8
sub al, dl
mov byte [0xf075ca8], al
mov byte [0xf075ca9], al
test cx, cx
jbe 0xf038398
mov byte [ebx + 0x26], 1
mov eax, 0xffff
cmp word [ebp - 0x224], ax
jne 0xf038068
cmp dword [0xf07df5c], 0
jne 0xf0383ca
cmp byte [0xf0ada68], 0
je 0xf0384cd
cmp byte [ebx + 0x2e], 1
jne 0xf0384cd
cmp byte [ebp - 0x49a], 0
mov esi, 0x105
je 0xf038419
cmp byte [ebx + 0x29], 0
jne 0xf038419
push 0x1d
pop edi
cmp byte [ebp + edi - 0x49a], 0x20
jne 0xf0383ee
dec edi
jns 0xf0383e1
test edi, edi
jl 0xf038419
push esi
call fcn.0f037ea5
mov dword [ebx], eax
test eax, eax
je 0xf038419
lea ecx, [edi + 1]
push ecx
lea ecx, [ebp - 0x49a]
push ecx
push eax
call fcn.0f00a4b0
mov eax, dword [ebx]
add esp, 0xc
mov byte [eax + edi + 1], 0
cmp byte [ebp - 0x437], 0
mov edi, 0x104
je 0xf03844c
cmp byte [ebx + 0x2a], 0
jne 0xf03844c
push esi
call fcn.0f037ea5
mov dword [ebx + 8], eax
test eax, eax
je 0xf03844c
push edi
lea ecx, [ebp - 0x437]
push ecx
push esi
push eax
call fcn.0f00b4ab
add esp, 0x10
cmp byte [ebx + 0x2c], 0
jne 0xf038490
cmp dword [ebp - 0x650], 0
jne 0xf038467
lea eax, [ebp - 0x3f7]
mov dword [ebp - 0x650], eax
mov eax, dword [ebp - 0x650]
cmp byte [eax], 0
je 0xf038490
push esi
call fcn.0f037ea5
mov dword [ebx + 4], eax
test eax, eax
je 0xf038490
push edi
push dword [ebp - 0x650]
push esi
push eax
call fcn.0f00b4ab
add esp, 0x10
cmp dword [0xf07df5c], 0
je 0xf0384a8
movsx eax, byte [ebp - 0x439]
shr eax, 4
and al, 1
mov byte [ebx + 0x27], al
cmp byte [ebx + 0x28], 0
je 0xf0384cd
push esi
call fcn.0f037ea5
mov dword [ebx + 0xc], eax
test eax, eax
je 0xf0384cd
push edi
lea ecx, [ebp - 0x478]
push ecx
push esi
push eax
call fcn.0f00b4ab
add esp, 0x10
xor esi, esi
inc esi
push dword [ebp - 0x64c]
call dword [sym.imp.KERNEL32.dll__lclose]
mov eax, esi
jmp 0xf038009
push esi
jmp 0xf038001
push dword [ebp - 0x64c]
jmp 0xf038001