Function at 0x438940
Capabilities:
Check if file exists

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x80
mov eax, dword [0x560094]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0xc]
push ebx
push edi
mov edi, dword [ebp + 8]
mov dword [ebp - 0x2c], edi
mov ecx, dword [eax + 4]
mov ebx, dword [eax]
sub ecx, ebx
mov eax, 0x2aaaaaab
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
jne 0x4389a7
push 0xb
mov dword [edi + 0x10], eax
mov ecx, edi
mov dword [edi + 0x14], 7
push 0x4fd5ac
mov word [edi], ax
call fcn.0042b3e0
mov eax, edi
pop edi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004a01a0
mov esp, ebp
pop ebp
ret 8
mov dword [ebp - 0xc], 0
mov dword [ebp - 8], 0
cmp dword [ebx + 0x14], 8
mov eax, dword [ebx + 0x10]
mov dword [ebp - 0x7c], 1
mov dword [ebp - 0x6c], eax
jb 0x4389ca
mov ebx, dword [ebx]
push esi
cmp eax, 8
jae 0x4389e6
movups xmm0, xmmword [ebx]
mov dword [ebp - 0xc], eax
lea eax, [ebp - 0x1c]
mov dword [ebp - 8], 7
movups xmmword [ebp - 0x1c], xmm0
jmp 0x438a2c
mov esi, eax
lea ecx, [ebp - 0x1c]
mov eax, SysReAllocString
or esi, 7
cmp esi, eax
cmova esi, eax
lea eax, [esi + 1]
push eax
call fcn.0042af30
mov ecx, dword [ebp - 0x6c]
mov dword [ebp - 0x1c], eax
lea ecx, [ecx*2 + 2]
push ecx
push ebx
push eax
call fcn.004c0d60
mov eax, dword [ebp - 0x6c]
add esp, 0xc
mov dword [ebp - 0xc], eax
cmp esi, 8
lea eax, [ebp - 0x1c]
mov dword [ebp - 8], esi
cmovae eax, dword [ebp - 0x1c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x438aaa
mov dword [ebp - 0x7c], 1
lea ecx, [ebp - 0x1c]
call fcn.004292e0
push dword [ebp - 0x7c]
lea eax, [ebp - 0x54]
push str._code_:__d_
push eax
call fcn.00471650
movups xmm0, xmmword [ebp - 0x54]
mov dword [edi + 0x10], 0
lea ecx, [ebp - 0x54]
mov dword [edi + 0x14], 0
add esp, 0xc
movups xmmword [edi], xmm0
xor eax, eax
movq xmm0, qword [ebp - 0x44]
movq qword [edi + 0x10], xmm0
mov dword [ebp - 0x44], 0
mov dword [ebp - 0x40], 7
mov word [ebp - 0x54], ax
call fcn.004292e0
mov ecx, dword [ebp - 4]
mov eax, edi
pop esi
pop edi
xor ecx, ebp
pop ebx
call fcn.004a01a0
mov esp, ebp
pop ebp
ret 8
xor eax, eax
mov dword [ebp - 0x20], 0x1f01ff
cmp dword [ebp - 8], 8
lea esi, [ebp - 0x1c]
mov dword [ebp - 0x80], eax
cmovae esi, dword [ebp - 0x1c]
mov byte [ebp - 0x75], al
mov dword [ebp - 0x70], eax
lea eax, [ebp - 0x70]
push eax
push 0
push 0
push 7
push esi
call dword [sym.imp.ADVAPI32.dll_GetFileSecurityW]
test eax, eax
jne 0x438a3e
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x7a
jne 0x438a3e
push dword [ebp - 0x70]
call fcn.004ca0b7
mov ebx, eax
add esp, 4
test ebx, ebx
je 0x438a3e
lea eax, [ebp - 0x70]
push eax
push dword [ebp - 0x70]
push ebx
push 7
push esi
call dword [sym.imp.ADVAPI32.dll_GetFileSecurityW]
test eax, eax
je 0x438a3e
lea eax, [ebp - 0x6c]
mov dword [ebp - 0x6c], 0
push eax
push 0x2000e
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.ADVAPI32.dll_OpenProcessToken]
test eax, eax
je 0x438bfc
lea eax, [ebp - 0x74]
mov dword [ebp - 0x74], 0
push eax
push 2
push dword [ebp - 0x6c]
call dword [sym.imp.ADVAPI32.dll_DuplicateToken]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
test eax, eax
je 0x438bf7
lea eax, [ebp - 0x3c]
mov dword [ebp - 0x30], 0
push eax
xorps xmm0, xmm0
mov dword [ebp - 0x58], 0
lea eax, [ebp - 0x20]
movq qword [ebp - 0x38], xmm0
push eax
movups xmmword [ebp - 0x68], xmm0
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x2c], 0x14
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x3c], 0x120089
mov dword [ebp - 0x38], 0x120116
mov dword [ebp - 0x34], 0x1200a0
mov dword [ebp - 0x30], 0x1f01ff
call dword [sym.imp.ADVAPI32.dll_MapGenericMask]
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x68]
push eax
lea eax, [ebp - 0x3c]
push eax
push dword [ebp - 0x20]
push dword [ebp - 0x74]
push ebx
call dword [sym.imp.ADVAPI32.dll_AccessCheck]
test eax, eax
je 0x438bf2
cmp dword [ebp - 0x24], 1
mov eax, dword [ebp - 0x28]
sete byte [ebp - 0x75]
mov dword [ebp - 0x80], eax
push dword [ebp - 0x74]
call esi
push dword [ebp - 0x6c]
call esi
push ebx
call fcn.004c4deb
add esp, 4
cmp byte [ebp - 0x75], 0
je 0x438a3e
mov ebx, dword [ebp - 0x80]
xor ecx, ecx
mov eax, ebx
and eax, 0x120116
cmp eax, 0x120116
setne cl
bt ebx, 0x1e
setae al
movzx eax, al
and ecx, eax
mov eax, ebx
and eax, 0x120089
xor ecx, 1
cmp eax, 0x120089
lea edx, [ecx*2 + 1]
setne cl
bt ebx, 0x1f
mov esi, edx
setae al
or esi, 4
and cl, al
mov eax, ebx
cmovne esi, edx
mov edx, dword [ebp - 8]
and eax, 0x1f01ff
cmp eax, 0x1f01ff
setne cl
bt ebx, 0x1c
setae al
and cl, al
mov eax, esi
or eax, 8
test cl, cl
cmovne eax, esi
mov dword [ebp - 0x7c], eax
cmp edx, 8
jb 0x438a46
mov ecx, dword [ebp - 0x1c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x438cae
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x438cbd
push edx
push ecx
call fcn.0049fef8
add esp, 8
jmp 0x438a46
call fcn.004c4d9a
int3