Function at 0x401e10
Capabilities:
Check mutex on windows
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xd0
lea eax, [0x5602ac]
lea esi, [esp + 0x40]
mov dword [esp + 0x40], eax
lea eax, [esp + 0x40]
mov eax, dword [esp + 0x40]
mov dword [esp + 0x40], 0xcd9e2c9c
push dword [esp + 0x40]
push eax
call fcn.00403f30
add esp, 8
mov ecx, 0xf381c108
xor ecx, dword [eax]
movzx eax, byte [eax + 4]
xor al, 0xd8
mov dword [esp + 0x34], ecx
mov byte [esp + 0x38], al
lea eax, [esp + 0x34]
lea ecx, [esp + 0xc]
push 5
push eax
push ecx
call fcn.004cebc0
add esp, 0xc
cmp dword [esp + 0xc], 0x80000000
jne 0x4028fa
mov edi, dword [esp + 0x10]
mov ebx, dword [esp + 0x14]
push edi
push 0
push 0
call sub.kernel32.dll_CreateMutexA
call sub.kernel32.dll_GetLastError
cmp eax, 0xb7
je 0x402841
push esi
mov dword [esp + 0x24], edi
mov dword [esp + 0x20], ebx
call fcn.004159a0
add esp, 4
push esi
call fcn.00415d00
add esp, 4
mov edx, dword [esp + 0x6c]
test edx, edx
je 0x40271f
mov eax, dword [esp + 0x60]
movdqa xmm0, xmmword [eax]
lea esi, [eax + 0x10]
mov dword [esp + 0x28], eax
pmovmskb eax, xmm0
not eax
jmp 0x401f47
mov ecx, dword [esp + 8]
movzx edx, word [eax + 0x10]
movdqu xmm1, xmmword [eax]
movdqu xmm0, xmmword [ecx]
movzx ecx, word [ecx + 0x10]
movd xmm2, edx
movd xmm3, ecx
pcmpeqb xmm1, xmm0
pcmpeqb xmm2, xmm3
pand xmm2, xmm1
pmovmskb esi, xmm2
push 1
push 0x12
push eax
call main
add esp, 0xc
cmp esi, 0xffff
mov esi, dword [esp + 0x2c]
je 0x4028e7
push 1
push edi
push dword [esp + 0x10]
call main
add esp, 0xc
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x30]
dec edx
je 0x40271f
test ax, ax
mov dword [esp + 0x3c], edx
je 0x401f60
mov edx, dword [esp + 0x28]
lea ecx, [eax - 1]
and ecx, eax
mov dword [esp + 0x30], ecx
jmp 0x401f9b
mov ecx, dword [esp + 0x28]
nop word cs:[eax + eax]
nop
movdqa xmm0, xmmword [esi]
add ecx, 0xfffff100
add esi, 0x10
pmovmskb eax, xmm0
cmp eax, 0xffff
je 0x401f70
mov ebx, 0xfffffffe
mov edx, ecx
sub ebx, eax
not eax
mov edi, eax
and edi, ebx
mov dword [esp + 0x30], edi
tzcnt eax, eax
mov dword [esp + 0x28], edx
neg eax
imul eax, eax, 0xf0
lea eax, [edx + eax - 0xe8]
push eax
call fcn.00416600
add esp, 4
push edx
push eax
lea eax, [esp + 0x14]
push eax
call fcn.004a8fa0
add esp, 0xc
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
mov dword [esp + 0x2c], esi
test ebx, ebx
mov dword [esp + 4], eax
mov dword [esp], ebx
je 0x402130
js 0x402886
mov eax, dword [0x593ab0]
movzx eax, byte [eax]
push 1
mov ebx, dword [esp + 4]
push ebx
call fcn.00409a80
add esp, 8
test eax, eax
je 0x40288a
mov esi, eax
mov edi, eax
push ebx
push dword [esp + 8]
push esi
call sub.msvcrt.dll_memcpy
add esp, 0xc
cmp ebx, 8
mov ecx, esi
mov dword [esp + 8], esi
jb 0x402160
mov edx, dword [esp]
xor eax, eax
cmp edx, 0x20
jb 0x4020c8
movdqa xmm5, xmmword [0x503010]
movdqa xmm6, xmmword [0x503020]
movdqa xmm7, xmmword [0x503030]
mov eax, edx
lea ecx, [esi + 0x10]
and eax, 0x7fffffe0
mov edx, eax
nop dword [eax]
movdqu xmm1, xmmword [ecx - 0x10]
movdqu xmm0, xmmword [ecx]
movdqa xmm2, xmm1
movdqa xmm3, xmm0
paddb xmm2, xmm5
paddb xmm3, xmm5
movdqa xmm4, xmm2
pminub xmm4, xmm6
pcmpeqb xmm4, xmm2
movdqa xmm2, xmm3
pminub xmm2, xmm6
pand xmm4, xmm7
pcmpeqb xmm2, xmm3
por xmm4, xmm1
pand xmm2, xmm7
movdqu xmmword [ecx - 0x10], xmm4
por xmm2, xmm0
movdqu xmmword [ecx], xmm2
add ecx, 0x20
add edx, 0xffffffe0
jne 0x402060
cmp dword [esp], eax
je 0x40218a
test byte [esp], 0x18
je 0x402154
mov edx, dword [esp]
movdqa xmm3, xmmword [0x503040]
movdqa xmm4, xmmword [0x503050]
movdqa xmm5, xmmword [0x503060]
and edx, 0x7ffffff8
lea edi, [esi + eax]
lea ecx, [esi + edx]
sub eax, edx
nop
movq xmm0, qword [edi]
movdqa xmm1, xmm0
paddb xmm1, xmm3
movdqa xmm2, xmm1
pmaxub xmm2, xmm4
pcmpeqb xmm2, xmm1
pandn xmm2, xmm5
por xmm2, xmm0
movq qword [edi], xmm2
add edi, 8
add eax, 8
jne 0x4020f0
cmp dword [esp], edx
jne 0x402160
jmp 0x40218a
mov dword [esp + 8], 1
mov eax, dword [esp + 0xc]
test eax, 0x7fffffff
je 0x402198
push 1
push eax
push dword [esp + 0xc]
call main
add esp, 0xc
jmp 0x402198
add eax, esi
mov ecx, eax
nop dword [eax + eax]
add esi, dword [esp]
nop word cs:[eax + eax]
nop dword [eax]
movzx eax, byte [ecx]
mov edx, eax
add dl, 0xbf
cmp dl, 0x1a
setb dl
shl dl, 5
or dl, al
mov byte [ecx], dl
inc ecx
cmp ecx, esi
jne 0x402170
mov ebx, dword [esp]
mov eax, dword [esp + 0xc]
test eax, 0x7fffffff
jne 0x402143
lea eax, [0x568b8e]
lea ecx, [esp + 0xc]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0xc], 0x820aa838
push dword [esp + 0xc]
push eax
call fcn.00403dc0
add esp, 8
mov esi, dword [eax]
mov edi, dword [eax + 4]
mov ebx, dword [eax + 8]
mov ecx, dword [eax + 0xc]
mov dword [esp + 0x24], ecx
movzx eax, byte [eax + 0x10]
mov byte [esp + 4], al
mov eax, dword [0x593ab0]
movzx eax, byte [eax]
push 1
push 0x11
call fcn.00409a80
add esp, 8
test eax, eax
je 0x40285c
mov ecx, edi
xor esi, 0xd9a957df
shr edi, 8
xor ebx, 0xdaaa3b38
xor ecx, 0x990b00b6
movd xmm0, edi
movd xmm1, ecx
mov edx, ecx
shr ecx, 0x18
movd xmm2, ecx
mov ecx, esi
shr edx, 0x10
punpcklbw xmm1, xmm0
movd xmm0, esi
shr ecx, 0x18
movd xmm3, edx
movzx edx, byte [esp + 4]
movd xmm4, ecx
mov ecx, esi
punpcklbw xmm3, xmm2
shr esi, 8
shr ecx, 0x10
punpcklwd xmm1, xmm3
movd xmm3, esi
movd xmm2, ecx
mov ecx, ebx
punpcklbw xmm0, xmm3
shr ecx, 0x18
punpcklbw xmm2, xmm4
xor dl, 0xe
movd xmm3, ecx
mov ecx, ebx
punpcklwd xmm0, xmm2
shr ecx, 0x10
punpckldq xmm0, xmm1
movd xmm1, ebx
shr ebx, 8
movd xmm2, ecx
punpcklbw xmm2, xmm3
movd xmm3, ebx
mov ebx, dword [esp + 0x24]
punpcklbw xmm1, xmm3
punpcklwd xmm1, xmm2
xor ebx, 0x2463ce1e
mov dword [eax + 0xc], ebx
movd xmm2, ebx
mov ebx, dword [esp]
movzx ecx, byte [eax + 0xd]
movd xmm3, ecx
movzx ecx, word [eax + 0xe]
punpcklbw xmm2, xmm3
punpckldq xmm1, xmm2
punpcklqdq xmm0, xmm1
pand xmm0, xmmword [0x503070]
movd xmm2, ecx
mov ecx, edx
pslldq xmm2, 0xe
add cl, 0xbf
cmp cl, 0x1a
setb cl
por xmm2, xmm0
shl cl, 5
movdqa xmm0, xmm2
or cl, dl
cmp ebx, 0x11
paddb xmm0, xmmword [0x503010]
movdqa xmm1, xmm0
pminub xmm1, xmmword [0x503020]
pcmpeqb xmm1, xmm0
pand xmm1, xmmword [0x503030]
por xmm1, xmm2
movdqu xmmword [eax], xmm1
mov byte [eax + 0x10], cl
jne 0x402348
mov ecx, dword [esp + 8]
movzx edx, byte [eax + 0x10]
movdqu xmm1, xmmword [eax]
movdqu xmm0, xmmword [ecx]
movzx ecx, byte [ecx + 0x10]
movd xmm2, edx
movd xmm3, ecx
pcmpeqb xmm1, xmm0
pcmpeqb xmm2, xmm3
pand xmm2, xmm1
pmovmskb ecx, xmm2
cmp ecx, 0xffff
je 0x4028a5
push 1
push 0x11
push eax
call main
add esp, 0xc
lea eax, [0x564052]
lea ecx, [esp + 0xc]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0xc], 0x9e779d3f
push dword [esp + 0xc]
push eax
call fcn.00403f70
add esp, 8
mov ebx, dword [eax]
mov esi, dword [eax + 4]
mov edi, dword [eax + 8]
movzx eax, byte [eax + 0xc]
mov byte [esp + 4], al
mov eax, dword [0x593ab0]
movzx eax, byte [eax]
push 1
push 0xd
call fcn.00409a80
add esp, 8
test eax, eax
je 0x402863
xor ebx, 0xf123be99
xor esi, 0x58eb61c1
xor edi, 0xaeb82ea8
movzx edx, byte [esp + 4]
mov ecx, eax
movd xmm0, ebx
mov ebx, dword [esp]
pinsrw xmm0, esi, 2
shr esi, 0x10
pinsrw xmm0, esi, 3
movdqa xmm1, xmm0
xor dl, 0xde
paddb xmm1, xmmword [0x503040]
movdqa xmm2, xmm1
pmaxub xmm2, xmmword [0x503050]
pcmpeqb xmm2, xmm1
movd xmm1, edi
pandn xmm2, xmmword [0x503060]
movdqa xmm3, xmm1
paddb xmm3, xmmword [0x503080]
por xmm2, xmm0
movq qword [eax], xmm2
movdqa xmm2, xmm3
pmaxub xmm2, xmmword [0x503090]
pcmpeqb xmm2, xmm3
pandn xmm2, xmmword [0x5030a0]
por xmm2, xmm1
movd dword [eax + 8], xmm2
mov eax, edx
add al, 0xbf
cmp al, 0x1a
setb al
shl al, 5
or al, dl
cmp ebx, 0xd
mov byte [ecx + 0xc], al
jne 0x402466
push 0xd
push ecx
push dword [esp + 0x10]
mov esi, ecx
call sub.msvcrt.dll_memcmp
mov ecx, esi
add esp, 0xc
test eax, eax
je 0x4028d1
push 1
push 0xd
push ecx
call main
add esp, 0xc
lea eax, [0x560ad1]
lea ecx, [esp + 0xc]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0xc], 0x4228502b
push dword [esp + 0xc]
push eax
call fcn.00403ee0
add esp, 8
mov ebx, dword [eax]
mov esi, dword [eax + 4]
mov edi, dword [eax + 8]
mov eax, dword [0x593ab0]
movzx eax, byte [eax]
push 1
push 0xc
call fcn.00409a80
add esp, 8
test eax, eax
je 0x40286a
xor ebx, 0x42ff8bbf
xor esi, 0xc28e7d1b
xor edi, 0xa88e6a2d
movd xmm0, ebx
movd xmm3, edi
mov ebx, dword [esp]
pinsrw xmm0, esi, 2
shr esi, 0x10
pinsrw xmm0, esi, 3
movdqa xmm1, xmm0
paddb xmm1, xmmword [0x503040]
cmp ebx, 0xc
movdqa xmm2, xmm1
pmaxub xmm2, xmmword [0x503050]
pcmpeqb xmm2, xmm1
movdqa xmm1, xmm3
pandn xmm2, xmmword [0x503060]
paddb xmm1, xmmword [0x503080]
por xmm2, xmm0
movq qword [eax], xmm2
movdqa xmm2, xmm1
pmaxub xmm2, xmmword [0x503090]
pcmpeqb xmm2, xmm1
pandn xmm2, xmmword [0x5030a0]
por xmm2, xmm3
movd dword [eax + 8], xmm2
jne 0x402561
push 0xc
push eax
push dword [esp + 0x10]
mov esi, eax
call sub.msvcrt.dll_memcmp
add esp, 0xc
test eax, eax
mov eax, esi
je 0x4028bb
push 1
push 0xc
push eax
call main
add esp, 0xc
lea eax, [0x56cb43]
lea ecx, [esp + 0xc]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0xc], 0x1d5d3fb5
push dword [esp + 0xc]
push eax
call fcn.00403fd0
add esp, 8
mov esi, dword [eax]
mov edi, dword [eax + 4]
mov ecx, dword [eax + 8]
mov dword [esp + 0x24], ecx
mov ecx, dword [eax + 0xc]
mov dword [esp + 4], ecx
movzx ebx, word [eax + 0x10]
mov eax, dword [0x593ab0]
movzx eax, byte [eax]
push 1
push 0x12
call fcn.00409a80
add esp, 8
test eax, eax
je 0x402871
xor edi, 0x856bd8b1
xor esi, 0xaf4b6b8c
xor bh, 0xbd
xor bl, 0x82
mov edx, edi
mov ecx, edi
movd xmm0, edi
shr edi, 0x18
shr edx, 0x10
shr ecx, 8
movd xmm2, edi
mov edi, dword [esp]
movd xmm1, edx
mov edx, dword [esp + 0x24]
movd xmm3, ecx
mov ecx, esi
shr ecx, 0x18
punpcklbw xmm1, xmm2
punpcklbw xmm0, xmm3
movd xmm4, ecx
mov ecx, esi
punpcklwd xmm0, xmm1
movd xmm1, esi
shr esi, 8
shr ecx, 0x10
movd xmm3, esi
xor edx, 0x31cd766f
movd xmm2, ecx
punpcklbw xmm1, xmm3
mov ecx, edx
punpcklbw xmm2, xmm4
shr ecx, 0x18
punpcklwd xmm1, xmm2
movd xmm3, ecx
mov ecx, edx
punpckldq xmm1, xmm0
movd xmm0, edx
shr ecx, 0x10
movd xmm2, ecx
mov ecx, edx
mov dl, bh
shr ecx, 8
punpcklbw xmm2, xmm3
movd xmm3, ecx
mov ecx, dword [esp + 4]
punpcklbw xmm0, xmm3
punpcklwd xmm0, xmm2
xor ecx, 0x7f1be40f
mov dword [eax + 0xc], ecx
movd xmm2, ecx
movzx ecx, byte [eax + 0xd]
movd xmm3, ecx
movzx ecx, word [eax + 0xe]
punpcklbw xmm2, xmm3
punpckldq xmm0, xmm2
punpcklqdq xmm1, xmm0
pand xmm1, xmmword [0x503070]
movd xmm2, ecx
mov ecx, ebx
pslldq xmm2, 0xe
add cl, 0xbf
cmp cl, 0x1a
setb cl
add dl, 0xbf
por xmm2, xmm1
shl cl, 5
movdqa xmm0, xmm2
or cl, bl
cmp dl, 0x1a
paddb xmm0, xmmword [0x503010]
setb dl
shl dl, 5
or dl, bh
cmp edi, 0x12
movdqa xmm1, xmm0
pminub xmm1, xmmword [0x503020]
pcmpeqb xmm1, xmm0
pand xmm1, xmmword [0x503030]
por xmm1, xmm2
movdqu xmmword [eax], xmm1
mov byte [eax + 0x10], cl
mov byte [eax + 0x11], dl
je 0x401ee0
push 1
push 0x12
push eax
call main
add esp, 0xc
mov esi, dword [esp + 0x2c]
test edi, edi
jne 0x401f29
jmp 0x401f38
call fcn.00409330
call fcn.00408df0
push 0x7d0
call fcn.004080c0
add esp, 4
mov edi, dword [0x593ab0]
movzx eax, byte [edi]
push 1
push 0x6c000
call fcn.00409a80
add esp, 8
test eax, eax
je 0x40292b
mov esi, eax
push 0x6c000
push 0x5032d8
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
xor eax, eax
nop dword [eax]
mov ecx, eax
and ecx, 0x1f
movzx ecx, byte [ecx + 0x56f2d8]
xor byte [esi + eax], cl
inc eax
cmp eax, 0x6c000
jne 0x402770
push 0x1388
call fcn.004080c0
add esp, 4
lea eax, [esp + 0xc]
push eax
call fcn.00404170
add esp, 4
mov eax, dword [esp + 0xc]
cmp eax, 0x80000000
je 0x4027bf
test eax, eax
je 0x4027bf
push 1
push eax
push dword [esp + 0x18]
call main
add esp, 0xc
movzx eax, byte [edi]
push 1
push 0x6c000
call fcn.00409a80
add esp, 8
test eax, eax
je 0x40293c
mov ebx, eax
push 0x6c000
push esi
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
sub esp, 0x18
mov edi, dword [esp + 0x38]
mov dword [esp], ebx
mov dword [esp + 0x10], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x6c000
call fcn.004095f0
add esp, 0x18
push 1
push 0x6c000
push ebx
call main
add esp, 0xc
push 1
push 0x6c000
push esi
call main
add esp, 0xc
mov ebx, dword [esp + 0x1c]
lea ecx, [esp + 0x40]
call fcn.004017d0
test ebx, ebx
mov byte [edi], 0
je 0x402854
push 1
push ebx
push edi
call main
add esp, 0xc
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, 0x11
jmp 0x402876
mov eax, 0xd
jmp 0x402876
mov eax, 0xc
jmp 0x402876
mov eax, 0x12
push eax
push 1
call fcn.004ce340
add esp, 8
jmp 0x40294b
xor eax, eax
jmp 0x402893
mov eax, 1
mov dword [esp + 8], ebx
push dword [esp + 8]
push eax
call fcn.004ce340
add esp, 8
jmp 0x40294b
push 1
push 0x11
push eax
call main
add esp, 0xc
mov dword [esp], 0x11
jmp 0x4028ee
push 1
push 0xc
push eax
call main
add esp, 0xc
mov dword [esp], 0xc
jmp 0x4028ee
push 1
push 0xd
push ecx
call main
add esp, 0xc
mov dword [esp], 0xd
jmp 0x4028ee
mov dword [esp], 0x12
push 0
call fcn.00493e60
add esp, 4
jmp 0x40294b
movq xmm0, qword [esp + 0xc]
movq xmm1, qword [esp + 0x14]
movq qword [esp + 0x48], xmm1
movq qword [esp + 0x40], xmm0
push 0x5032c8
push 0x50315c
push esi
push 0
push 1
call fcn.004da120
add esp, 0x14
jmp 0x40294b
push 0x6c000
push 1
call fcn.004ce340
add esp, 8
jmp 0x40294b
push 0x6c000
push 1
call fcn.004ce340
add esp, 8
ud2