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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2c
mov eax, dword [section..data]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, ecx
mov byte [ebp - 0x1d], 0
mov dword [ebp - 0x24], ebx
xorps xmm0, xmm0
mov dword [ebp - 0xc], 0
mov word [ebp - 8], 0
mov dword [0x457638], 0
push edi
movzx edi, dx
movups xmmword [ebp - 0x1c], xmm0
test ebx, ebx
je 0x404815
cmp word [ebx], 0
je 0x404815
push esi
test di, di
jne 0x404634
mov esi, 0x7fff
push 0x457630
mov edx, esi
call fcn.00402470
test eax, eax
jns 0x40462d
xor edi, edi
mov dword [0x457630], 0
cmp word [ebx], di
cmovne edi, esi
jmp 0x404634
movzx edi, word [0x457630]
movzx esi, di
dec esi
lea esi, [ebx + esi*2]
test di, di
je 0x40465f
movzx eax, word [esi]
cmp eax, 0x5c
je 0x40464d
cmp eax, 0x2f
jne 0x40465f
add edi, 0xffff
mov byte [ebp - 0x1d], 1
sub esi, 2
test di, di
jne 0x404640
cmp di, 4
jbe 0x4046db
cmp word [esi], 0x29
jne 0x4046db
push 0x457628
push 1
sub esi, 2
push esi
push 1
call dword [sym.imp.KERNEL32.dll_GetStringTypeW]
test eax, eax
je 0x4046db
test byte [0x457628], 4
je 0x4046db
lea eax, [edi - 1]
movzx ebx, ax
add ebx, 0xffff
test bx, bx
je 0x4046bc
push 0x457628
push 1
sub esi, 2
push esi
push 1
call dword [sym.imp.KERNEL32.dll_GetStringTypeW]
test eax, eax
je 0x4046bc
test byte [0x457628], 4
jne 0x404691
cmp bx, 1
mov ebx, dword [ebp - 0x24]
jbe 0x4046db
cmp word [esi], 0x28
jne 0x4046db
sub esi, 2
cmp word [esi], 0x20
jne 0x4046db
sub esi, ebx
sar esi, 1
movzx edi, si
movzx eax, word [ebp + 8]
movzx edx, di
mov dword [ebp - 0x28], edx
lea ecx, [edx + 0xe]
cmp eax, ecx
jae 0x40476b
lea eax, [edx*2 + 0x1c]
push eax
push 0
push dword [0x45764c]
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov esi, eax
test esi, esi
jne 0x404752
mov dword [0x45771c], 8
mov ebx, 1
mov edi, dword [ebp - 0x24]
movzx eax, bx
add eax, dword [ebp - 0x28]
cmp byte [ebp - 0x1d], 0
pop esi
lea ecx, [eax - 1]
mov dword [0x457638], ecx
je 0x404740
mov dword [0x457638], eax
mov dword [edi + ecx*2], 0x5c
mov eax, edi
pop edi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00428cd6
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 0x28]
lea eax, [ecx + ecx]
push eax
push ebx
push esi
call fcn.0043c9e0
mov edx, dword [ebp - 0x28]
add esp, 0xc
mov ebx, esi
mov dword [ebp - 0x24], esi
mov esi, dword [ebp - 0x24]
xor eax, eax
mov word [ebx + edx*2], ax
push esi
lea ebx, [eax + 1]
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x40471b
mov ecx, dword [ebp - 0x28]
add edi, 2
mov eax, dword [0x444194]
mov dword [esi + ecx*2], eax
mov ax, word [0x444198]
mov word [esi + ecx*2 + 4], ax
mov eax, 0x29
mov word [ebp - 0xa], ax
movzx eax, di
mov edi, esi
mov dword [ebp - 0x28], eax
lea eax, [edi + eax*2]
mov dword [ebp - 0x24], eax
mov eax, ebx
inc eax
lea esi, [ebp - 0xa]
mov dword [ebp - 0x2c], eax
mov ecx, eax
mov ebx, 2
mov eax, 0xcccccccd
sub esi, 2
mul ecx
inc ebx
shr edx, 3
lea eax, [edx + edx*4]
add eax, eax
sub ecx, eax
add ecx, 0x30
mov word [esi], cx
mov ecx, edx
test ecx, ecx
jne 0x4047c3
movzx eax, bx
add eax, eax
push eax
push esi
push dword [ebp - 0x24]
call fcn.0043c9e0
add esp, 0xc
push edi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x40471e
mov eax, dword [ebp - 0x2c]
cmp eax, 0x3b9ac9ff
jb 0x4047b5
jmp 0x40471e
mov ecx, dword [ebp - 4]
mov eax, ebx
pop edi
xor ecx, ebp
pop ebx
call fcn.00428cd6
mov esp, ebp
pop ebp
ret