Function at 0x4078a0
Capabilities:
Check mutex on windows
Get common file path
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x13c
mov eax, dword [section..data]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0xc]
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
push 0x496744
mov dword [ebp - 0x110], eax
call fcn.004011e0
push 0x104
lea eax, [ebp - 0x10c]
push 0
push eax
call fcn.004189f0
add esp, 0x10
lea eax, [ebp - 0x10c]
push 0x104
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
mov ecx, edi
call fcn.00408430
lea ebx, [edi + 0x7f74]
push ebx
push 0x407c90
push dword [ebp - 0x110]
lea esi, [edi + 0x8148]
mov ecx, esi
mov dword [ebp - 0x120], esi
call fcn.00401df0
test al, al
je 0x4079a8
mov ecx, esi
call fcn.00401cf0
push eax
push 0x69
push dword [ebp - 0x110]
lea ecx, [edi + 0x81a0]
mov dword [edi + 0x819c], eax
call fcn.00401320
lea ecx, [edi + 0x81a0]
call fcn.00401670
cmp dword [edi + 0x81a0], 1
je 0x4079a8
push ebx
push 0x66
push 1
lea ecx, [edi + 0x8148]
call fcn.00401e70
push ebx
push dword [edi + 0x819c]
mov ecx, edi
call fcn.004020b0
push ebx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov dword [0x4bb5f0], eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x4079bd
push ebx
push 0x66
push 0
lea ecx, [edi + 0x8148]
call fcn.00401e70
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004099c0
mov esp, ebp
pop ebp
ret 0x14
push 0x104
lea eax, [ebp - 0x10c]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
test eax, eax
je 0x407b80
push 0x495358
lea eax, [ebp - 0x10c]
mov dword [ebp - 0x110], 0
push eax
lea eax, [ebp - 0x110]
push eax
call fcn.00428f60
add esp, 0xc
test eax, eax
jne 0x407b80
cmp dword [ebp - 0x110], eax
je 0x407b80
xor al, al
push 0x200000
mov dword [ebp - 0x114], eax
call fcn.00409de0
push dword [ebp - 0x110]
mov dword [ebp - 0x118], eax
push 0x200000
push 1
push eax
call fcn.00429aa0
push dword [ebp - 0x110]
mov esi, eax
call fcn.004291c0
add esp, 0x18
test esi, esi
jle 0x407b31
xor ecx, ecx
cmp esi, 0x20
jb 0x407ad4
mov eax, esi
and eax, 0x8000001f
jns 0x407a6a
dec eax
or eax, 0xffffffe0
inc eax
mov edx, esi
xorps xmm2, xmm2
sub edx, eax
xorps xmm1, xmm1
mov eax, dword [ebp - 0x118]
nop word [eax + eax]
movups xmm0, xmmword [eax + ecx]
paddb xmm2, xmm0
movups xmm0, xmmword [eax + ecx + 0x10]
add ecx, 0x20
paddb xmm1, xmm0
cmp ecx, edx
jl 0x407a80
paddb xmm1, xmm2
movaps xmm0, xmm1
psrldq xmm0, 8
paddb xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
paddb xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 2
paddb xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 1
paddb xmm1, xmm0
movd dword [ebp - 0x114], xmm1
xor bl, bl
xor dl, dl
cmp ecx, esi
jge 0x407b2b
mov eax, esi
sub eax, ecx
cmp eax, 2
jl 0x407b06
lea eax, [esi - 1]
mov dword [ebp - 0x11c], eax
mov eax, dword [ebp - 0x118]
add bl, byte [eax + ecx]
add dl, byte [eax + ecx + 1]
add ecx, 2
cmp ecx, dword [ebp - 0x11c]
jl 0x407af4
mov eax, dword [ebp - 0x114]
cmp ecx, esi
mov esi, dword [ebp - 0x118]
jge 0x407b19
add al, byte [ecx + esi]
add dl, bl
lea ebx, [edi + 0x7f74]
add al, dl
mov dword [ebp - 0x114], eax
jmp 0x407b37
lea ebx, [edi + 0x7f74]
mov esi, dword [ebp - 0x118]
push esi
call fcn.00409e00
mov eax, dword [ebp - 0x114]
add esp, 4
test al, al
je 0x407b80
movzx eax, al
push eax
push str.err__02x_r_n
call fcn.004011e0
mov ecx, dword [ebp - 0x120]
add esp, 8
push ebx
push 0x66
push 0
call fcn.00401e70
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004099c0
mov esp, ebp
pop ebp
ret 0x14
mov esi, dword [sym.imp.USER32.dll_GetMessageA]
lea eax, [ebp - 0x13c]
push 0
push 0
push 0
push eax
call esi
test eax, eax
je 0x407bc9
mov ebx, dword [sym.imp.USER32.dll_TranslateMessage]
nop
lea eax, [ebp - 0x13c]
push eax
call ebx
lea eax, [ebp - 0x13c]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageA]
push 0
push 0
push 0
lea eax, [ebp - 0x13c]
push eax
call esi
test eax, eax
jne 0x407ba0
push 0x496758
call fcn.004011e0
mov ecx, dword [edi + 0x1dd0]
add esp, 4
nop dword [eax]
xor ebx, ebx
mov dword [ebp - 0x114], ebx
test ecx, ecx
jle 0x407c14
lea esi, [edi + 0xd8]
lea ecx, [esi - 8]
call fcn.00406530
cmp byte [esi], 0
jne 0x407c0e
inc ebx
add esi, 0xe8
cmp ebx, dword [edi + 0x1dd0]
jl 0x407bf2
mov dword [ebp - 0x114], ebx
xor eax, eax
cmp dword [edi + 0x7f54], eax
jle 0x407c54
lea esi, [edi + 0x1ddc]
mov ebx, eax
lea ecx, [esi - 8]
call fcn.00406530
cmp byte [esi], 0
jne 0x407c42
inc ebx
add esi, 0x30c
cmp ebx, dword [edi + 0x7f54]
jl 0x407c26
mov dword [ebp - 0x110], ebx
mov ebx, dword [ebp - 0x114]
mov eax, dword [ebp - 0x110]
mov ecx, dword [edi + 0x1dd0]
cmp ebx, ecx
jne 0x407be0
cmp eax, dword [edi + 0x7f54]
jne 0x407be0
push 0x49676c
call fcn.004011e0
mov ecx, dword [ebp - 4]
add esp, 4
mov eax, dword [ebp - 0x134]
xor ecx, ebp
pop edi
pop esi
pop ebx
call fcn.004099c0
mov esp, ebp
pop ebp
ret 0x14