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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xda0
mov ecx, dword [ebp + 8]
xor eax, eax
push ebx
mov dword [ebp - 4], eax
mov ecx, dword [ecx*4 + 0x7d04c708]
push esi
push edi
mov dword [ebp - 0xc], eax
cmp dword [ecx + 0x18], eax
je 0x7cf77d37
mov ebx, dword [ebp + 0xc]
mov esi, 0x104
lea eax, [ebp - 0x990]
push esi
lea edi, [ebx + 0x118]
push eax
push edi
call dword [sym.imp.SHLWAPI.dll_SHUnicodeToUnicode]
mov eax, dword [ebx + 0x104]
push esi
mov dword [ebp - 0x270], eax
mov eax, dword [ebx + 0x108]
mov dword [ebp - 0x26c], eax
mov eax, dword [ebx + 0x10c]
mov dword [ebp - 0x268], eax
mov eax, dword [ebx + 0x110]
mov dword [ebp - 0x264], eax
mov eax, dword [ebx + 0x114]
mov dword [ebp - 0x260], eax
lea eax, [ebp - 0xda0]
push eax
push ebx
call dword [sym.imp.SHLWAPI.dll_SHAnsiToUnicode]
lea eax, [ebp - 0xda0]
push eax
push edi
call dword [sym.imp.SHLWAPI.dll_StrCmpW]
test eax, eax
jne 0x7cf77d08
mov word [ebp - 0x378], 0x11c
lea eax, [ebp - 0x378]
jmp 0x7cf77d25
lea eax, [ebp - 0x580]
push edi
push eax
mov word [ebp - 0x378], 0x324
call dword [sym.imp.SHLWAPI.dll_StrCpyW]
lea eax, [ebp - 0x580]
push 0x46
mov esi, ebx
pop ecx
lea edi, [ebp - 0x374]
mov dword [ebp + 0xc], eax
rep movsd dword es:[edi], dword [esi]
jmp 0x7cf77d6c
mov ebx, dword [ebp + 0xc]
lea eax, [ebp - 0x990]
push 0x104
push eax
push ebx
call dword [sym.imp.SHLWAPI.dll_SHAnsiToUnicode]
push 0x46
mov esi, ebx
pop ecx
lea edi, [ebp - 0x374]
lea eax, [ebp - 0x378]
mov word [ebp - 0x378], 0x11c
rep movsd dword es:[edi], dword [esi]
mov dword [ebp + 0xc], eax
mov ax, word [ebx + 0x108]
add ax, 0x61
cmp ax, 0x7b
mov dword [ebp - 8], eax
jne 0x7cf77d87
mov dword [ebp - 8], 0x40
lea eax, [ebp - 0xb98]
push eax
push dword [ebp + 8]
call fcn.7cf71c3a
mov esi, dword [sym.imp.KERNEL32.dll_lstrcpynW]
mov edi, 0x104
lea eax, [ebp - 0xb98]
push edi
push eax
lea eax, [ebp - 0x788]
push eax
call esi
lea eax, [ebp - 0x990]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFindExtensionW]
push eax
movzx eax, word [ebp - 8]
push dword [ebx + 0x104]
push eax
lea eax, [ebp - 0x788]
push 0x7cf32594
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea eax, [ebp + eax*2 - 0x788]
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x14
lea eax, [ebp - 0x788]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
mov dword [ebp - 0x25c], eax
jne 0x7cf77e0d
xor eax, eax
jmp 0x7cf77f0c
mov eax, dword [ebx + 0x10c]
mov ecx, dword [ebx + 0x114]
mov dword [ebp - 0x258], eax
mov eax, dword [ebx + 0x110]
mov dword [ebp - 0x254], eax
mov eax, dword [ebx + 0x10c]
mov dword [ebp - 0x250], eax
mov eax, dword [ebx + 0x110]
mov dword [ebp - 0x24c], eax
mov eax, dword [ebx + 0x10c]
mov dword [ebp - 0x248], eax
mov eax, dword [ebx + 0x110]
mov dword [ebp - 0x244], eax
xor eax, eax
mov dword [ebp - 0x240], eax
mov dword [ebp - 0x238], eax
mov dword [ebp - 0x234], eax
lea eax, [ebp - 0x788]
push edi
push eax
mov dword [ebp - 0x23c], ecx
call dword [sym.imp.SHLWAPI.dll_PathFindFileNameW]
push eax
lea eax, [ebp - 0x230]
push eax
call esi
lea eax, [ebp - 4]
xor edi, edi
push eax
lea eax, [ebp - 0x25c]
push eax
lea eax, [ebp - 0xb98]
push eax
mov word [ebp - 0x28], di
call fcn.7cfb1d05
cmp dword [ebp - 4], edi
je 0x7cf77f09
push dword [ebp - 4]
call sym.SHELL32.dll_ILGetSize
mov esi, eax
push edi
movzx eax, word [ebp - 0x378]
mov ecx, esi
add ecx, eax
push ecx
push dword [ebp - 4]
call fcn.7cf95ab7
cmp eax, edi
je 0x7cf77f0c
movzx ecx, word [ebp - 0x378]
lea edx, [esi + eax]
mov esi, dword [ebp + 0xc]
mov ebx, ecx
lea edi, [edx - 2]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
movzx ecx, word [ebp - 0x378]
and word [ecx + edx - 2], 0
mov cx, word [ebp - 0x378]
add word [eax], cx
jmp 0x7cf77f0c
mov eax, dword [ebp - 0xc]
pop edi
pop esi
pop ebx
leave
ret 8