Function at 0x401190
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 0x179
push 0x1ae
push 0x64
mov ecx, ebx
push 0x64
push 0x200a0000
and ecx, 3
push 0x412098
push 0x413d08
push 0
rep movsb byte es:[edi], byte [esi]
mov dword [0x413dd0], eax
call dword [sym.imp.USER32.dll_CreateWindowExA]
mov ebp, eax
test ebp, ebp
jne 0x401227
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x200
ret
push 0x413d6c
push 1
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x401263
push 0x10
push 0x41208c
push 0x412060
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.00408650
add esp, 4
test eax, eax
jne 0x40127b
push eax
push ebp
call fcn.00408520
add esp, 8
call dword [sym.imp.keydll.dll_int___stdcall_Start_void_]
push 1
call fcn.00408650
add esp, 4
cmp eax, 1
jne 0x401294
push 0
jmp 0x401296
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 0x41205c
push str.KEYMOUSE
call edi
mov esi, 0x41204c
lea eax, [esp + 0x10]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x4012f4
test cl, cl
je 0x4012f0
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x4012f4
add eax, 2
add esi, 2
test cl, cl
jne 0x4012cc
xor eax, eax
jmp 0x4012f9
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
push 0
push 0
jne 0x401305
push 1
jmp 0x401307
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, 0x41204c
lea eax, [esp + 0x10]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x401360
test cl, cl
je 0x40135c
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x401360
add eax, 2
add esi, 2
test cl, cl
jne 0x401338
xor eax, eax
jmp 0x401365
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x40136d
push 1
jmp 0x40136f
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, 0x41204c
lea eax, [esp + 0x10]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x4013c6
test cl, cl
je 0x4013c2
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x4013c6
add eax, 2
add esi, 2
test cl, cl
jne 0x40139e
xor eax, eax
jmp 0x4013cb
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4013d5
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, 0x41204c
lea eax, [esp + 0x10]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x401426
test cl, cl
je 0x401422
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x401426
add eax, 2
add esi, 2
test cl, cl
jne 0x4013fe
xor eax, eax
jmp 0x40142b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x401435
call dword [sym.imp.keydll.dll_void___stdcall_dismouse_void_]
push ebp
call dword [sym.imp.USER32.dll_UpdateWindow]
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x200
ret