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

Disassembly:
sub esp, 0x43c
cmp word [ecx], 0
push ebx
push esi
push edi
mov esi, edx
je 0x45acc0
cmp word [esi], 0
je 0x45acc0
mov eax, dword [esp + 0x44c]
cmp eax, 1
je 0x45aa74
cmp eax, 2
je 0x45aa74
xor bh, bh
jmp 0x45aa76
mov bh, 1
mov edi, dword [sym.imp.KERNEL32.dll_GetFullPathNameW]
lea eax, [esp + 0xc]
push eax
lea eax, [esp + 0x34]
push eax
push 0x104
push ecx
call edi
lea ecx, [esp + 0x30]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x45aa95
sub ecx, edx
sar ecx, 1
je 0x45aab5
cmp word [esp + ecx*2 + 0x2e], 0x5c
jne 0x45aab5
xor eax, eax
mov word [esp + ecx*2 + 0x2e], ax
lea eax, [esp + 0xc]
push eax
lea eax, [esp + 0x240]
push eax
push 0x104
push esi
call edi
lea ecx, [esp + 0x23c]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x45aad4
sub ecx, edx
sar ecx, 1
je 0x45aafa
cmp word [esp + ecx*2 + 0x23a], 0x5c
jne 0x45aafa
xor eax, eax
mov word [esp + ecx*2 + 0x23a], ax
mov bl, byte [esp + 0x450]
test bl, bl
je 0x45aba5
lea eax, [esp + 0x30]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x45acc0
test al, 0x10
je 0x45acc0
movzx esi, word [esp + 0x30]
test esi, 0xffffff80
jne 0x45ab42
push esi
call fcn.004a5820
add esp, 4
test eax, eax
je 0x45ab42
or esi, 0x20
movzx edi, word [esp + 0x23c]
test edi, 0xffffff80
jne 0x45ab62
push edi
call fcn.004a5820
add esp, 4
test eax, eax
je 0x45ab62
or edi, 0x20
cmp si, di
jne 0x45ab6f
cmp word [esp + 0x32], 0x3a
je 0x45aba5
movzx eax, bh
lea edx, [esp + 0x23c]
push 0
push eax
lea ecx, [esp + 0x38]
call fcn.0045aa40
add esp, 8
test al, al
je 0x45acc0
mov dl, 1
lea ecx, [esp + 0x30]
call fcn.0045acd0
pop edi
pop esi
pop ebx
add esp, 0x43c
ret
lea eax, [esp + 0x23c]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x45abce
test al, 0x10
je 0x45acc0
test bh, bh
je 0x45acc0
test bl, bl
jne 0x45ac15
jmp 0x45abe8
test bl, bl
jne 0x45ac15
xor edx, edx
lea ecx, [esp + 0x23c]
call fcn.00444be0
test al, al
je 0x45acc0
lea ecx, [esp + 0x30]
add ecx, 0xfffffffe
nop
mov ax, word [ecx + 2]
lea ecx, [ecx + 2]
test ax, ax
jne 0x45abf0
mov eax, dword [str..]
mov dword [ecx], eax
mov eax, dword [0x4dd0e4]
mov dword [ecx + 4], eax
mov ax, word [0x4dd0e8]
mov word [ecx + 8], ax
lea ecx, [esp + 0x30]
lea edx, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x45ac20
sub ecx, edx
sar ecx, 1
xor eax, eax
mov word [esp + ecx*2 + 0x32], ax
lea ecx, [esp + 0x23c]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x45ac40
xor eax, eax
sub ecx, edx
sar ecx, 1
xorps xmm0, xmm0
mov dword [esp + 0x10], eax
mov dword [esp + 0x2a], eax
movlpd qword [esp + 0x22], xmm0
mov word [esp + ecx*2 + 0x23e], ax
lea eax, [esp + 0x30]
mov dword [esp + 0x18], eax
lea eax, [esp + 0x23c]
mov dword [esp + 0x1c], eax
movzx eax, bl
xor eax, 1
inc eax
cmp dword [esp + 0x44c], 2
mov dword [esp + 0x14], eax
mov eax, 0x614
mov word [esp + 0x20], ax
jne 0x45aca6
mov eax, 0x615
mov word [esp + 0x20], ax
lea eax, [esp + 0x10]
push eax
call dword [sym.imp.SHELL32.dll_SHFileOperationW]
pop edi
test eax, eax
pop esi
sete al
pop ebx
add esp, 0x43c
ret
pop edi
pop esi
xor al, al
pop ebx
add esp, 0x43c
ret