Function at 0x450e50
Capabilities:
Check if file exists
Get file attributes
Get file size

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x1c
mov eax, dword [0x505034]
xor eax, esp
mov dword [esp + 0x18], eax
push ebx
push esi
mov esi, ecx
xor edx, edx
cmp dword [esi + 0x1c], 8
push edi
lea edi, [esi + 8]
mov dword [esp + 0x14], edx
mov ecx, edi
jb 0x450e7c
mov ecx, dword [edi]
movzx eax, word [ecx]
cmp eax, 0x5c
je 0x450e89
cmp eax, 0x2f
jne 0x450ea5
movzx ebx, word [ecx + 2]
cmp ebx, 0x5c
je 0x450e97
cmp ebx, 0x2f
jne 0x450ea5
movzx ebx, word [ecx + 4]
cmp ebx, 0x3f
je 0x450ea5
cmp ebx, 0x2e
jne 0x450ec8
and eax, 0xffdf
sub eax, 0x41
cmp ax, 0x19
ja 0x450edd
cmp word [ecx + 2], 0x3a
jne 0x450edd
movzx eax, word [ecx + 4]
cmp eax, 0x5c
je 0x450ec8
cmp eax, 0x2f
jne 0x450edd
cmp dword [edi + 0x14], 8
mov ecx, edi
jb 0x450ed2
mov ecx, dword [edi]
call fcn.00443a50
mov edx, eax
mov dword [esp + 0x14], eax
mov ebx, dword [esi + 0x5c]
cmp ebx, 0xffffffff
jne 0x450f90
test edx, edx
je 0x450f33
mov eax, dword [0x50bad8]
xor ebx, ebx
mov dword [esp + 0xc], 1
test eax, eax
je 0x450f0b
push ebx
call eax
mov edx, dword [esp + 0x14]
mov dword [esp + 0xc], eax
push edx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov dword [esp + 0x1c], eax
cmp eax, 0xffffffff
jne 0x450f24
mov eax, dword [sym.imp.KERNEL32.dll_GetLastError]
call eax
mov ebx, eax
mov eax, dword [0x50bad8]
test eax, eax
je 0x450f88
push dword [esp + 0xc]
jmp 0x450f86
cmp dword [edi + 0x14], 8
mov dword [esp + 0xc], edi
jb 0x450f43
mov eax, dword [edi]
mov dword [esp + 0xc], eax
mov eax, dword [0x50bad8]
xor ebx, ebx
mov dword [esp + 0x18], 1
test eax, eax
je 0x450f5d
push ebx
call eax
mov dword [esp + 0x18], eax
push dword [esp + 0xc]
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov dword [esp + 0x1c], eax
cmp eax, 0xffffffff
jne 0x450f79
mov eax, dword [sym.imp.KERNEL32.dll_GetLastError]
call eax
mov ebx, eax
mov eax, dword [0x50bad8]
test eax, eax
je 0x450f88
push dword [esp + 0x18]
call eax
test ebx, ebx
jne 0x450f9d
mov ebx, dword [esp + 0x1c]
mov dword [esi + 0x5c], ebx
test bl, 0x40
je 0x450fc2
mov ebx, 0xa416
push dword [esp + 0x14]
call fcn.0047a31f
add esp, 4
mov dword [esi + 0x60], ebx
mov eax, ebx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x18]
xor ecx, esp
call fcn.00479e61
mov esp, ebp
pop ebp
ret 0x18
mov al, byte [esi + 0x2a]
mov ecx, dword [ebp + 0x14]
mov byte [esp + 0x13], al
mov eax, ecx
shr eax, 1
and al, 1
mov word [esi + 0x24], 0xff01
mov byte [esi + 0x2a], al
mov al, cl
and al, 0x24
mov byte [esi + 0x2b], al
mov eax, ecx
shr eax, 4
and al, 1
mov byte [esi + 0x2c], al
mov eax, ecx
shr eax, 7
and al, 1
mov byte [esi + 0x2d], al
mov eax, dword [esi + 0x48]
mov dword [esp + 0x1c], eax
test eax, eax
je 0x451037
cmp byte [esi + 0x29], 0
jne 0x451030
cmp byte [eax + 6], 0
je 0x451013
cmp byte [eax + 4], 1
jae 0x451025
mov ecx, dword [eax]
cmp ecx, 0xffffffff
je 0x451025
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [esp + 0x1c]
push 8
push eax
call fcn.00479e95
add esp, 8
mov dword [esi + 0x48], 0
mov dl, byte [esi + 0x2b]
movzx ecx, dl
and ecx, 4
mov byte [esi + 0x29], 0
shl ecx, 0x1a
or ecx, 0x31
mov eax, ecx
or eax, 0x80000
and dl, 0x20
cmove eax, ecx
mov ecx, eax
or ecx, 0x80000000
cmp byte [esi + 0x2d], 0
cmove ecx, eax
mov eax, dword [ebp + 0x14]
mov edx, eax
and edx, 0x700
mov dword [esp + 0xc], edx
mov edx, ecx
je 0x4510cd
mov edx, dword [esp + 0xc]
cmp edx, 0x600
ja 0x4510bb
je 0x4510b1
cmp edx, 0x400
mov edx, ecx
je 0x4510a3
cmp dword [esp + 0xc], 0x500
jne 0x4510cd
or edx, 0x5000000
jmp 0x4510cd
or edx, 0x4000000
or ebx, 0x100
jmp 0x4510cd
mov edx, ecx
or edx, 0x6000000
jmp 0x4510cd
cmp dword [esp + 0xc], 0x700
mov edx, ecx
jne 0x4510cd
or edx, 0x7000000
and eax, 0x30000
je 0x4510f0
cmp eax, 0x10000
je 0x4510ea
cmp eax, 0x20000
jne 0x4510f0
or edx, 0x8000
jmp 0x4510f0
or edx, 0x4000
mov eax, dword [esp + 0x14]
test eax, eax
je 0x451115
push ecx
lea edi, [esi + 0x48]
mov ecx, eax
push edi
call fcn.00444a40
push dword [esp + 0x1c]
mov dword [esi + 0x60], eax
call fcn.0047a31f
add esp, 0xc
jmp 0x451132
cmp dword [edi + 0x14], 8
jb 0x45111d
mov edi, dword [edi]
push ecx
lea eax, [esi + 0x48]
mov ecx, edi
push eax
call fcn.00444a40
add esp, 8
mov dword [esi + 0x60], eax
lea edi, [esi + 0x48]
cmp dword [esi + 0x60], 0
jne 0x451221
mov edi, dword [edi]
xor eax, eax
mov byte [esi + 0x27], 1
test edi, edi
je 0x451173
cmp byte [edi + 4], 2
jb 0x451173
mov dl, byte [edi + 7]
movzx ecx, dl
mov al, dl
and ecx, 1
add ecx, ecx
mov dword [esp + 0xc], ecx
or dword [esp + 0xc], 4
and al, 2
mov eax, dword [esp + 0xc]
cmove eax, ecx
test dl, 4
cmovne eax, eax
cmp byte [esi + 0x25], 0
jne 0x4511b8
test al, 2
jne 0x4511b8
test edi, edi
je 0x4511b8
cmp byte [edi + 5], 0
jne 0x4511b8
mov eax, dword [edi]
cmp eax, 0xffffffff
je 0x4511b8
push 0
lea ecx, [esp + 0x20]
mov dword [esp + 0x20], 0xffffffff
push ecx
push 0
push eax
mov dword [esp + 0x30], 0xffffffff
call dword [sym.imp.KERNEL32.dll_SetFileTime]
test eax, eax
jne 0x4511b8
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esi + 0x5c], ebx
test bl, 0x10
je 0x4511d6
mov ebx, dword [ebp + 0x14]
mov dword [esi + 0x40], 0
and ebx, 0xfffffffe
mov dword [esi + 0x44], 0
jmp 0x451224
mov eax, dword [esi + 0x48]
or edi, 0xffffffff
or ebx, 0xffffffff
test eax, eax
je 0x45121b
mov eax, dword [eax]
cmp eax, 0xffffffff
je 0x45121b
lea ecx, [esp + 0x1c]
mov dword [esp + 0x1c], 0
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov dword [esp + 0x18], eax
cmp eax, 0xffffffff
jne 0x451215
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x45121b
mov eax, dword [esp + 0x18]
mov ebx, dword [esp + 0x1c]
mov edi, eax
mov dword [esi + 0x40], edi
mov dword [esi + 0x44], ebx
mov ebx, dword [ebp + 0x14]
cmp dword [esi + 0x60], 0
je 0x451233
mov ecx, esi
call fcn.00451660
jmp 0x451296
test bl, 1
je 0x45126a
push dword [esi + 0x44]
mov ecx, esi
push dword [esi + 0x40]
call fcn.004502b0
mov dword [esi + 0x60], eax
test eax, eax
jne 0x451261
or byte [esi + 0x2a], 2
mov ecx, esi
push eax
push eax
call fcn.004503e0
and byte [esi + 0x2a], 0xfd
test al, al
jne 0x451284
mov ecx, esi
call fcn.00451660
jmp 0x451284
mov al, byte [esi + 0x2a]
cmp byte [esp + 0x13], al
je 0x451284
test al, 1
mov eax, dword [0x5059f4]
cmovne eax, dword [0x5059f8]
mov dword [esi + 0x54], eax
test ebx, 0x2000
je 0x451296
cmp dword [esi + 0x60], 0
jne 0x451296
mov byte [esi + 0x29], 1
mov eax, dword [esi + 0x60]
mov ecx, dword [esp + 0x24]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00479e61
mov esp, ebp
pop ebp
ret 0x18