Function at 0x402110
Capabilities:
Check mutex on windows
Encode data using xor
Get common file path
Set current directory

Disassembly:
sub esp, 0x4cc
push ebx
push ebp
push str.Arial
mov eax, dword [0x40e28c]
xor ebx, ebx
push ebx
push ebx
push ebx
push 2
push 0xcc
push ebx
push ebx
push ebx
push 0x258
push ebx
push ebx
push 8
push 0x19
mov dword [esp + 0x508], eax
call dword [sym.imp.GDI32.dll_CreateFontA]
mov dword [0x40f2e0], eax
push 1
lea eax, [esp + 0xc]
push eax
push str.settings.txt
call fcn.00402f80
mov ebp, eax
add esp, 0xc
cmp ebp, ebx
jne 0x40217f
pop ebp
xor al, al
pop ebx
mov ecx, dword [esp + 0x4c8]
call fcn.00403b0f
add esp, 0x4cc
ret
mov edx, dword [esp + 8]
mov al, dl
xor al, 0x4f
xor ecx, ecx
cmp edx, ebx
push esi
mov esi, edx
jle 0x4021a2
xor byte [ecx + ebp], al
add al, 3
mov dl, 3
imul dl
inc ecx
cmp ecx, esi
jl 0x402190
mov edx, dword [esp + 0xc]
push str.wrongkey
push ebp
push 0x40f0e0
mov byte [edx + ebp - 1], bl
call fcn.00402bf0
push str.productid
push ebp
push 0x40f328
call fcn.00402cc0
add esp, 0x18
xor eax, eax
jmp 0x4021d0
mov cl, byte [eax + 0x40f328]
mov byte [esp + eax + 0x54], cl
inc eax
cmp cl, bl
jne 0x4021d0
push edi
push 0x40c73c
push 0x40f328
call fcn.00403b20
add esp, 8
cmp eax, ebx
je 0x402238
mov dl, byte [0x40c73a]
mov cx, word [0x40c738]
inc eax
mov byte [esp + 0x5a], dl
mov word [esp + 0x58], cx
mov edx, eax
nop
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x402210
lea edi, [esp + 0x58]
sub eax, edx
dec edi
mov edi, edi
mov cl, byte [edi + 1]
inc edi
cmp cl, bl
jne 0x402220
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
xor eax, eax
lea ebx, [ebx]
mov cl, byte [esp + eax + 0x58]
mov byte [esp + eax + 0x18], cl
inc eax
cmp cl, bl
jne 0x402240
lea eax, [esp + 0x18]
push eax
mov byte [esp + 0x20], bl
call fcn.00403219
add esp, 4
cmp eax, ebx
mov dword [0x40f3a8], eax
jne 0x40229d
push 0x30
push 0x40c730
push 0x40c700
push ebx
mov dword [0x40f3a8], 0x69f6bc7
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
pop ebp
xor al, al
pop ebx
mov ecx, dword [esp + 0x4c8]
call fcn.00403b0f
add esp, 0x4cc
ret
lea ecx, [esp + 0x10]
push ecx
push 0x40f060
push str.affiliate.txt
mov dword [esp + 0x1c], ebx
call fcn.00402ee0
mov edx, dword [esp + 0x1c]
mov eax, 0x40f060
add esp, 0xc
mov byte [edx + 0x40f060], bl
mov esi, eax
lea esp, [esp]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x4022d0
mov edi, 0x40f328
sub eax, esi
dec edi
nop
mov cl, byte [edi + 1]
inc edi
cmp cl, bl
jne 0x4022e0
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, dword [0x40f3a8]
push eax
push str.software_nevosoftwrapper
and ecx, 3
push str._sproduct_i_
push 0x40f5b0
rep movsb byte es:[edi], byte [esi]
call fcn.00403ba6
lea ecx, [esp + 0x24]
push ecx
push 0x40ed40
push str.settings
mov esi, 0x320
push 0x40f5b0
mov dword [esp + 0x34], esi
call fcn.00402b40
mov eax, dword [esp + 0x34]
add esp, 0x20
cmp eax, ebx
jne 0x402457
push str.trialtime
push ebp
call fcn.00402d30
add esp, 8
cmp eax, ebx
jne 0x40235a
mov eax, 0x36ee80
jmp 0x402360
imul eax, eax, 0xea60
push ebx
push str.nagscreen.dat
mov dword [0x40efd0], eax
mov dword [0x40f058], eax
mov dword [0x40eec4], eax
call fcn.00403de2
add esp, 8
cmp eax, 0xffffffff
je 0x402388
mov dword [0x40f058], ebx
xor ecx, ecx
lea ebx, [ebx]
mov al, cl
mov dl, 3
imul dl
inc al
mov byte [ecx + 0x40edc1], al
inc ecx
cmp ecx, 0x100
jb 0x402390
push str.productname
push ebp
push 0x40eec8
mov byte [0x40eec0], bl
call fcn.00402cc0
push str.visitus
push ebp
push 0x40ed40
call fcn.00402cc0
push str.buylink
push ebp
push 0x40ef4c
call fcn.00402cc0
push str.anketa
push ebp
push 0x40efd4
call fcn.00402cc0
push str.shortnum
push ebp
call fcn.00402d30
add esp, 0x38
mov dword [0x40f05c], eax
mov dword [esp + 0x14], esi
mov al, 0x6f
xor ecx, ecx
jmp 0x402410
xor byte [ecx + 0x40ed40], al
add al, 3
mov dl, 3
imul dl
inc ecx
cmp ecx, esi
jl 0x402410
push esi
push 0x40ed40
push str.settings
push 0x40f5b0
call fcn.00402af0
add esp, 0x10
mov al, 0x6f
xor ecx, ecx
lea ecx, [ecx]
xor byte [ecx + 0x40ed40], al
add al, 3
mov dl, 3
imul dl
inc ecx
cmp ecx, esi
jl 0x402440
mov dword [esp + 0x14], esi
jmp 0x402471
mov al, 0x6f
xor ecx, ecx
jmp 0x402460
xor byte [ecx + 0x40ed40], al
add al, 3
mov dl, 3
imul dl
inc ecx
cmp ecx, esi
jl 0x402460
push str.shortnum
push ebp
call fcn.00402d30
push str.anketa
push ebp
push 0x40efd4
mov dword [0x40f05c], eax
call fcn.00402cc0
push str.buylink
push ebp
push 0x40ef4c
call fcn.00402cc0
push str.visitus
push ebp
push 0x40ed40
call fcn.00402cc0
push str.productname
push ebp
push 0x40eec8
call fcn.00402cc0
push str.namerus
push ebp
push 0x40f4b0
call fcn.00402cc0
mov al, byte [0x40f4b0]
add esp, 0x44
cmp al, bl
jne 0x4024f1
xor eax, eax
nop
mov cl, byte [eax + 0x40eec8]
mov byte [eax + 0x40f4b0], cl
inc eax
cmp cl, bl
jne 0x4024e0
push ebp
call fcn.00402a70
mov eax, dword [0x40f058]
mov ecx, dword [0x40eec4]
add esp, 4
cmp eax, ecx
je 0x40250f
mov dword [0x40f058], ebx
mov ecx, dword [0x40f3a8]
push ecx
lea edx, [esp + 0x3c]
push str.NevoWrapper_i
push edx
call fcn.00403ba6
add esp, 0xc
lea eax, [esp + 0x38]
push eax
push 1
push ebx
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x402565
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
pop edi
pop esi
pop ebp
xor al, al
pop ebx
mov ecx, dword [esp + 0x4c8]
call fcn.00403b0f
add esp, 0x4cc
ret
mov esi, dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
lea ecx, [esp + 0x3d8]
push ecx
push 0x100
call esi
lea edx, [esp + 0x1d8]
push edx
push 0x100
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
push 0x40f6d8
push 0x100
call esi
lea eax, [esp + 0x1d8]
push eax
push str._shtml_nag.htm
push 0x4101f8
call fcn.00403d73
lea ecx, [esp + 0x1e4]
push ecx
push str._shtml_nag2.htm
push 0x40fff8
call fcn.00403d73
lea edx, [esp + 0x1f0]
push edx
push str._shtml_nag3.htm
push 0x40fdf8
call fcn.00403d73
lea eax, [esp + 0x1fc]
push eax
push str._shtml_wrongkey.htm
push 0x40fbf8
call fcn.00403d73
lea ecx, [esp + 0x208]
push ecx
push str._shtml_ad.htm
push 0x40f9f8
call fcn.00403d73
add esp, 0x3c
xor eax, eax
mov cl, byte [esp + eax + 0x3d8]
mov byte [esp + eax + 0xd8], cl
inc eax
cmp cl, bl
jne 0x402611
lea edi, [esp + 0xd8]
dec edi
lea esp, [esp]
mov al, byte [edi + 1]
inc edi
cmp al, bl
jne 0x402630
mov edx, dword [str.game]
mov ax, word [0x40c5c0]
mov dword [edi], edx
mov word [edi + 4], ax
xor eax, eax
lea esp, [esp]
mov cl, byte [esp + eax + 0xd8]
mov byte [eax + 0x40f8e8], cl
inc eax
cmp cl, bl
jne 0x402650
push str.smssrv1.dll
lea ecx, [esp + 0xdc]
push ecx
push str._s_s
push 0x40f7e0
call fcn.00403ba6
push ebp
call fcn.00402a70
add esp, 0x14
push str.MSHTML.DLL
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
cmp eax, ebx
mov dword [0x40f9ec], eax
jne 0x4026c6
push ebx
push str.Error
push str.Cant_load_MSHTML.DLL._Program_will_now_stop.
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
pop ebp
xor al, al
pop ebx
mov ecx, dword [esp + 0x4c8]
call fcn.00403b0f
add esp, 0x4cc
ret
push str.ShowHTMLDialog
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp eax, ebx
mov dword [0x40f9f0], eax
jne 0x402706
push ebx
push str.Error
push str.Cant_use_ShowHTMLDialog._Program_will_now_stop.
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
pop ebp
xor al, al
pop ebx
mov ecx, dword [esp + 0x4c8]
call fcn.00403b0f
add esp, 0x4cc
ret
mov esi, dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
push 0x40f6d8
call esi
push str.html
call esi
push str.html.dat
call fcn.004030a0
add esp, 4
push 0x40f6d8
call esi
call fcn.00401630
mov ecx, dword [esp + 0x4d8]
pop edi
pop esi
pop ebp
mov al, 1
pop ebx
call fcn.00403b0f
add esp, 0x4cc
ret