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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x47c
mov eax, dword [ebp + 8]
mov al, byte [eax + 1]
push ebx
mov cl, 1
cmp cl, al
push esi
sbb esi, esi
mov dl, 2
cmp dl, al
push edi
sbb edi, edi
and edi, dword [0x4bb3f0]
mov ecx, 3
cmp cl, al
sbb ebx, ebx
and ebx, dword [0x4bb3f4]
mov dl, 4
cmp dl, al
sbb ecx, ecx
and ecx, dword [0x4bb3f8]
mov edx, 5
cmp dl, al
sbb edx, edx
and edx, dword [0x4bb3fc]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x20], edx
mov edx, 6
cmp dl, al
sbb edx, edx
and edx, dword [0x4bb400]
mov dword [esp + 0x18], edx
mov dl, 7
cmp dl, al
sbb eax, eax
and eax, dword [0x4bb404]
and esi, dword [0x4bb3ec]
mov dword [esp + 0x1c], eax
je 0x45e0af
mov ecx, esi
call fcn.0041c2a0
mov ecx, dword [esp + 0x14]
test edi, edi
je 0x45e0be
mov ecx, edi
call fcn.0041c2a0
mov ecx, dword [esp + 0x14]
test ebx, ebx
je 0x45e0cd
mov ecx, ebx
call fcn.0041c2a0
mov ecx, dword [esp + 0x14]
test ecx, ecx
je 0x45e0d6
call fcn.0041c2a0
mov ecx, dword [esp + 0x20]
test ecx, ecx
je 0x45e0e3
call fcn.0041c2a0
mov ecx, dword [esp + 0x18]
test ecx, ecx
je 0x45e0f0
call fcn.0041c2a0
mov ecx, dword [esp + 0x1c]
test ecx, ecx
je 0x45e0fd
call fcn.0041c2a0
mov eax, dword [ebp + 0xc]
push 0x2a
push eax
mov byte [esp + 0x17], 0
call fcn.00494a31
add esp, 8
test eax, eax
jne 0x45e13a
mov ecx, dword [ebp + 0xc]
push 0x3f
push ecx
call fcn.00494a31
add esp, 8
test eax, eax
jne 0x45e13a
mov edx, dword [ebp + 0xc]
push edx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
jne 0x45e15c
jmp 0x45e368
mov ecx, dword [ebp + 0xc]
lea eax, [esp + 0x138]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
cmp eax, 0xffffffff
je 0x45e368
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
push 0
call dword [sym.imp.ole32.dll_CoInitialize]
lea edx, [esp + 0x10]
push edx
push 0x4a5828
push 1
push 0
push 0x4a5838
call dword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
js 0x45e35b
mov eax, dword [esp + 0x10]
mov ecx, dword [eax]
lea edx, [esp + 0x24]
push edx
push 0x4a5848
push eax
mov eax, dword [ecx]
call eax
test eax, eax
js 0x45e34f
mov edx, dword [ebp + 0xc]
push 0x105
lea ecx, [esp + 0x27c]
push ecx
push 0xffffffffffffffff
push edx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov eax, dword [esp + 0x24]
mov ecx, dword [eax]
push 0
lea edx, [esp + 0x27c]
push edx
push eax
mov eax, dword [ecx + 0x14]
call eax
test eax, eax
js 0x45e343
test esi, esi
je 0x45e20c
mov eax, dword [esp + 0x10]
mov ecx, dword [eax]
push 2
push 0
push 0x104
lea edx, [esp + 0x3c]
push edx
push eax
mov eax, dword [ecx + 0xc]
call eax
push 1
push 0
push 0xffffffffffffffff
lea ecx, [esp + 0x3c]
push ecx
push esi
call fcn.00482ff0
test edi, edi
je 0x45e237
mov eax, dword [esp + 0x10]
mov edx, dword [eax]
mov edx, dword [edx + 0x20]
push 0x104
lea ecx, [esp + 0x34]
push ecx
push eax
call edx
push 1
push 0
push 0xffffffffffffffff
lea eax, [esp + 0x3c]
push eax
push edi
call fcn.00482ff0
test ebx, ebx
je 0x45e262
mov eax, dword [esp + 0x10]
mov ecx, dword [eax]
push 0x104
lea edx, [esp + 0x34]
push edx
push eax
mov eax, dword [ecx + 0x28]
call eax
push 1
push 0
push 0xffffffffffffffff
lea ecx, [esp + 0x3c]
push ecx
push ebx
call fcn.00482ff0
mov esi, dword [esp + 0x14]
test esi, esi
je 0x45e291
mov eax, dword [esp + 0x10]
mov edx, dword [eax]
mov edx, dword [edx + 0x18]
push 0x104
lea ecx, [esp + 0x34]
push ecx
push eax
call edx
push 1
push 0
push 0xffffffffffffffff
lea eax, [esp + 0x3c]
push eax
push esi
call fcn.00482ff0
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0x18]
test esi, esi
jne 0x45e2a1
test edi, edi
je 0x45e2fe
mov eax, dword [esp + 0x10]
mov ecx, dword [eax]
lea edx, [esp + 0x2c]
push edx
push 0x104
lea edx, [esp + 0x38]
push edx
push eax
mov eax, dword [ecx + 0x40]
call eax
test esi, esi
je 0x45e2d1
push 1
push 0
push 0xffffffffffffffff
lea ecx, [esp + 0x3c]
push ecx
push esi
call fcn.00482ff0
test edi, edi
je 0x45e2fe
cmp byte [esp + 0x30], 0
je 0x45e2f7
mov eax, dword [esp + 0x2c]
xor edx, edx
test eax, eax
setns dl
push 0x18
add eax, edx
cdq
push edx
push eax
mov eax, edi
call fcn.00401130
jmp 0x45e2fe
mov ecx, edi
call fcn.0041c2a0
mov esi, dword [esp + 0x1c]
test esi, esi
je 0x45e327
mov eax, dword [esp + 0x10]
mov ecx, dword [eax]
lea edx, [esp + 0x28]
push edx
push eax
mov eax, dword [ecx + 0x38]
call eax
mov eax, dword [esp + 0x28]
cdq
push 0x18
push edx
push eax
mov eax, esi
call fcn.00401130
mov ecx, dword [0x4bbcb4]
push 1
push 0
push 0xffffffffffffffff
push 0x4a7950
push ecx
call fcn.00482ff0
mov byte [esp + 0xf], 1
mov eax, dword [esp + 0x24]
mov edx, dword [eax]
push eax
mov eax, dword [edx + 8]
call eax
mov eax, dword [esp + 0x10]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
call dword [sym.imp.ole32.dll_CoUninitialize]
cmp byte [esp + 0xf], 0
jne 0x45e3b3
mov eax, dword [0x4b7a70]
test byte [eax + 0xe0], 1
jne 0x45e396
mov ecx, dword [0x4bbcb4]
push 1
push 0
push 0xffffffffffffffff
push 0x4a7df4
push ecx
call fcn.00482ff0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov ebx, dword [ebp + 8]
push 0x4a7935
push 0
push 0x4a7df4
call fcn.0043b130
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret 8