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

Disassembly:
mov ecx, dword [0x41c258]
mov eax, dword [ecx + 4]
sub esp, 8
push ebx
push edi
xor edi, edi
cmp eax, edi
je 0x401e42
cmp dword [ecx], 2
jle 0x401e42
mov edx, dword [eax + 8]
mov dword [esp + 8], edx
jmp 0x401e48
mov dword [esp + 8], edi
mov edx, edi
cmp eax, edi
je 0x401e5a
cmp dword [ecx], 3
jle 0x401e5a
mov eax, dword [eax + 0xc]
mov dword [esp + 0xc], eax
jmp 0x401e5e
mov dword [esp + 0xc], edi
mov ebx, dword [esp + 0x14]
mov ecx, ebx
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x401e64
mov eax, edx
push esi
mov si, word [eax]
add eax, 2
test si, si
jne 0x401e72
sub eax, edx
sub ecx, ebx
sar eax, 1
sar ecx, 1
lea esi, [eax + ecx - 1]
push ebp
lea ebp, [esi + esi]
cmp ebp, edi
je 0x401ea2
push ebp
push edi
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov edi, eax
mov eax, ebx
mov edx, edi
mov ebx, esi
sub edx, eax
lea ebx, [ebx]
movzx ecx, word [eax]
mov word [edx + eax], cx
add eax, 2
test cx, cx
je 0x401ec4
sub ebx, 1
jne 0x401eb0
test ebx, ebx
jne 0x401ecd
mov word [edi + ebp - 2], bx
test esi, esi
mov edx, dword [esp + 0x10]
mov eax, edi
jbe 0x401ee7
cmp word [eax], 0
je 0x401ee5
add eax, 2
sub esi, 1
jne 0x401ed7
test esi, esi
je 0x401f0f
lea esp, [esp]
movzx ecx, word [edx]
mov word [eax], cx
add eax, 2
add edx, 2
test cx, cx
je 0x401f06
sub esi, 1
jne 0x401ef0
test esi, esi
jne 0x401f0f
mov word [edi + ebp - 2], si
push edi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
push edi
mov edi, dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push 0
mov dword [esp + 0x18], eax
call edi
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov ebp, dword [esp + 0x1c]
mov eax, ebp
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x401f32
mov edx, dword [esp + 0x14]
mov ecx, edx
mov si, word [ecx]
add ecx, 2
test si, si
jne 0x401f43
sub eax, ebp
sub ecx, edx
sar eax, 1
sar ecx, 1
lea esi, [ecx + eax - 1]
lea eax, [esi + esi]
test eax, eax
mov dword [esp + 0x1c], eax
je 0x401f75
push eax
push 0
call edi
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov edi, eax
jmp 0x401f77
xor edi, edi
mov edx, edi
mov eax, ebp
sub edx, ebp
mov ebx, esi
pop ebp
movzx ecx, word [eax]
mov word [edx + eax], cx
add eax, 2
test cx, cx
je 0x401f94
sub ebx, 1
jne 0x401f80
test ebx, ebx
jne 0x401fa1
mov edx, dword [esp + 0x18]
mov word [edx + edi - 2], bx
test esi, esi
mov edx, dword [esp + 0x10]
mov eax, edi
jbe 0x401fc0
jmp 0x401fb0
cmp word [eax], 0
je 0x401fbe
add eax, 2
sub esi, 1
jne 0x401fb0
test esi, esi
je 0x401fe5
movzx ecx, word [edx]
mov word [eax], cx
add eax, 2
add edx, 2
test cx, cx
je 0x401fd8
sub esi, 1
jne 0x401fc2
test esi, esi
jne 0x401fe5
mov eax, dword [esp + 0x18]
mov word [eax + edi - 2], si
push edi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
push edi
push 0
mov ebx, eax
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov eax, dword [esp + 0xc]
cmp eax, 0xffffffff
pop esi
je 0x40201e
test al, 0x10
je 0x40201e
cmp ebx, 0xffffffff
je 0x40201e
test bl, 0x10
jne 0x40201e
pop edi
mov al, 1
pop ebx
add esp, 8
ret
pop edi
xor al, al
pop ebx
add esp, 8
ret