Function at 0x401740
Capabilities:
Check mutex on windows
Get common file path
Hide graphical window
Read .ini file
Swap mouse buttons

Disassembly:
sub esp, 0x200
lea eax, [esp + 0x100]
push ebx
push ebp
push esi
push edi
push 0xff
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
mov edi, str._syschg.ini
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x110]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push 0
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov eax, dword [esp + 0x218]
mov ecx, ebx
dec edi
push eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
push 0
push 0
push 0x168
push 0x1a4
push 0x64
mov ecx, ebx
push 0x64
push 0xa0000
and ecx, 3
push 0x415118
push 0x418ec4
push 0
rep movsb byte es:[edi], byte [esi]
mov dword [0x418f8c], eax
call dword [sym.imp.USER32.dll_CreateWindowExA]
mov ebp, eax
test ebp, ebp
jne 0x4017d7
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x200
ret
push 0x418f28
push 1
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x401813
push 0x10
push 0x4151ec
push 0x4151c0
push ebp
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x200
ret
push 2
call fcn.00407de0
add esp, 4
test eax, eax
jne 0x40182b
push eax
push ebp
call fcn.00407cb0
add esp, 8
call dword [sym.imp.keydll.dll_int___stdcall_Start_void_]
push 1
call fcn.00407de0
add esp, 4
cmp eax, 1
jne 0x401844
push 0
jmp 0x401846
push 5
push ebp
call dword [sym.imp.USER32.dll_ShowWindow]
mov edi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea eax, [esp + 0x110]
push eax
lea ecx, [esp + 0x14]
push 0xff
push ecx
push 0
push 0x4151bc
push str.KEYMOUSE
call edi
mov esi, 0x4151ac
lea eax, [esp + 0x10]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x4018a4
test cl, cl
je 0x4018a0
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x4018a4
add eax, 2
add esi, 2
test cl, cl
jne 0x40187c
xor eax, eax
jmp 0x4018a9
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
push 0
push 0
jne 0x4018b5
push 1
jmp 0x4018b7
push 0
push 0x61
call dword [sym.imp.USER32.dll_SystemParametersInfoA]
lea eax, [esp + 0x110]
lea ecx, [esp + 0x10]
push eax
push 0xff
push ecx
push 0
push str.MOUSE
push str.KEYMOUSE
call edi
mov esi, 0x4151ac
lea eax, [esp + 0x10]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x401910
test cl, cl
je 0x40190c
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x401910
add eax, 2
add esi, 2
test cl, cl
jne 0x4018e8
xor eax, eax
jmp 0x401915
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x40191d
push 1
jmp 0x40191f
push 0
call dword [sym.imp.USER32.dll_SwapMouseButton]
lea eax, [esp + 0x110]
lea ecx, [esp + 0x10]
push eax
push 0xff
push ecx
push 0
push str.DISKEY
push str.KEYMOUSE
call edi
mov esi, 0x4151ac
lea eax, [esp + 0x10]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x401976
test cl, cl
je 0x401972
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x401976
add eax, 2
add esi, 2
test cl, cl
jne 0x40194e
xor eax, eax
jmp 0x40197b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x401985
call dword [sym.imp.keydll.dll_void___stdcall_diskey_void_]
lea eax, [esp + 0x110]
lea ecx, [esp + 0x10]
push eax
push 0xff
push ecx
push 0
push str.DISMOUSE
push str.KEYMOUSE
call edi
mov esi, 0x4151ac
lea eax, [esp + 0x10]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x4019d6
test cl, cl
je 0x4019d2
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x4019d6
add eax, 2
add esi, 2
test cl, cl
jne 0x4019ae
xor eax, eax
jmp 0x4019db
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4019e5
call dword [sym.imp.keydll.dll_void___stdcall_dismouse_void_]
lea eax, [esp + 0x110]
lea ecx, [esp + 0x10]
push eax
push 0xff
push ecx
push 0
push 0x41518c
push str.server
call edi
mov esi, 0x4151ac
lea eax, [esp + 0x10]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x401a36
test cl, cl
je 0x401a32
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x401a36
add eax, 2
add esi, 2
test cl, cl
jne 0x401a0e
xor eax, eax
jmp 0x401a3b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x401a51
call dword [sym.imp.local.dll_Ordinal_2]
mov dword [0x415180], 0
jmp 0x401a5b
mov dword [0x415180], 1
push ebp
call dword [sym.imp.USER32.dll_UpdateWindow]
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x200
ret