Function at 0x41af10
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x70
movdqu xmm0, xmmword [edx + 0x10]
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x14], edx
mov dword [esp + 0x1c], ecx
pshufd xmm1, xmm0, 0x44
pshufd xmm0, xmm0, 0xee
mov ebx, eax
pxor xmm1, xmmword [str.uespemosarenegylmodnarodsetybdet]
pxor xmm0, xmmword [0x5472c0]
and ebx, 7
and eax, 0xfffffff8
mov dword [esp + 4], eax
mov dword [esp + 0x50], ebx
movdqu xmmword [esp + 0x20], xmm1
movdqu xmmword [esp + 0x30], xmm0
je 0x41b0dd
mov eax, dword [esp + 4]
mov ecx, dword [ebp + 8]
xor ebx, ebx
dec eax
and eax, 0xfffffff8
mov dword [esp + 0xc], eax
nop dword [eax]
mov edx, dword [ecx + ebx]
mov esi, dword [ecx + ebx + 4]
pshufd xmm2, xmm0, 0xee
movdqa xmm4, xmm0
add ebx, 8
movd eax, xmm2
pshufd xmm2, xmm0, 0xff
psrlq xmm4, 0x33
movd edi, xmm2
xor eax, edx
xor edi, esi
movd xmm3, eax
movd xmm2, edi
punpcklqdq xmm2, xmm3
movdqa xmm3, xmm0
psllq xmm0, 0xd
shufps xmm3, xmm2, 0x24
movaps xmm2, xmm3
paddq xmm1, xmm3
psllq xmm3, 0x10
psrlq xmm2, 0x30
shufps xmm0, xmm3, 0xe4
shufps xmm4, xmm2, 0xe4
pshufd xmm2, xmm1, 0x1e
orps xmm0, xmm4
pxor xmm0, xmm1
paddq xmm2, xmm0
pshufd xmm3, xmm2, 0xee
pshufd xmm1, xmm2, 0xff
movd edi, xmm3
movdqa xmm3, xmm0
xor edi, edx
movd edx, xmm1
movdqa xmm1, xmm0
psrlq xmm3, 0x2b
psrlq xmm1, 0x2f
xor edx, esi
cmp ebx, dword [esp + 4]
movsd xmm3, xmm1
movdqa xmm1, xmm0
psllq xmm0, 0x15
psllq xmm1, 0x11
movsd xmm0, xmm1
movd xmm1, edx
orpd xmm0, xmm3
movd xmm3, edi
punpcklqdq xmm1, xmm3
xorpd xmm0, xmm2
shufps xmm1, xmm2, 0x12
jb 0x41af80
mov eax, dword [ebp + 8]
mov ebx, dword [esp + 0x50]
pshufd xmm1, xmm2, 0x55
add dword [esp + 0xc], 8
movd ecx, xmm2
movdqu xmmword [esp + 0x30], xmm0
movd esi, xmm1
pshufd xmm1, xmm0, 0xff
mov dword [esp + 0x2c], ecx
movd dword [esp + 0x10], xmm1
pshufd xmm1, xmm0, 0xee
mov dword [esp + 0x28], esi
mov dword [esp + 0x20], edi
mov dword [esp + 0x24], edx
movd dword [esp + 0x40], xmm1
cmp ebx, 4
jb 0x41b110
mov ecx, dword [esp + 0xc]
mov dword [esp + 4], 0
mov esi, dword [eax + ecx]
mov eax, 4
mov ecx, eax
or ecx, 1
cmp ecx, ebx
jb 0x41b125
mov ecx, dword [esp + 4]
cmp eax, ebx
mov dword [esp + 8], esi
jb 0x41b17c
mov eax, dword [ebp + 0xc]
test ebx, ebx
lea esi, [eax + 1]
je 0x41b2e2
mov dword [esp + 0xc], esi
mov dword [esp + 4], ecx
jmp 0x41b1b8
mov eax, dword [ebp + 8]
pshufd xmm2, xmm0, 0xff
movd edi, xmm1
pshufd xmm1, xmm1, 0x55
mov dword [esp + 0xc], 0
movd dword [esp + 0x10], xmm2
pshufd xmm2, xmm0, 0xee
movd edx, xmm1
movd dword [esp + 0x40], xmm2
cmp ebx, 4
jae 0x41b095
xor esi, esi
mov dword [esp + 4], 0
xor eax, eax
mov ecx, eax
or ecx, 1
cmp ecx, ebx
jae 0x41b0b2
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x18], eax
mov dword [esp + 8], esi
xor ebx, ebx
add ecx, eax
mov eax, dword [ebp + 8]
movzx esi, word [eax + ecx]
mov eax, dword [esp + 0x18]
lea ecx, [eax*8]
xor eax, eax
shld eax, esi, cl
shl esi, cl
test cl, 0x20
mov ecx, dword [esp + 4]
cmovne eax, esi
cmovne esi, ebx
mov ebx, dword [esp + 0x50]
or dword [esp + 8], esi
mov esi, dword [esp + 8]
or ecx, eax
mov eax, dword [esp + 0x18]
or eax, 2
cmp eax, ebx
mov dword [esp + 8], esi
jae 0x41b0c2
mov esi, dword [esp + 0xc]
mov dword [esp + 4], ecx
mov ecx, eax
xor ebx, ebx
shl ecx, 3
add esi, eax
mov eax, dword [ebp + 8]
movzx esi, byte [eax + esi]
xor eax, eax
shld ebx, esi, cl
shl esi, cl
test cl, 0x20
cmovne ebx, esi
cmovne esi, eax
mov eax, dword [ebp + 0xc]
or dword [esp + 4], ebx
mov ebx, dword [esp + 0x50]
or dword [esp + 8], esi
inc eax
mov dword [esp + 0xc], eax
lea ecx, [ebx*8]
mov esi, ebx
mov ebx, 0xff
xor eax, eax
shld eax, ebx, cl
shl ebx, cl
test cl, 0x20
mov ecx, eax
mov eax, 0
cmovne ecx, ebx
cmovne ebx, eax
or ecx, dword [esp + 4]
or ebx, dword [esp + 8]
cmp esi, 7
jne 0x41b2d5
mov edx, dword [esp + 0x40]
mov edi, dword [esp + 0x10]
mov eax, 8
movdqu xmm1, xmmword [esp + 0x20]
movdqa xmm4, xmm0
sub eax, esi
mov esi, ecx
psrlq xmm4, 0x33
xor edi, esi
xor edx, ebx
movd xmm2, edx
movd xmm3, edi
punpcklqdq xmm3, xmm2
movdqa xmm2, xmm0
psllq xmm0, 0xd
shufps xmm2, xmm3, 0x24
movaps xmm3, xmm2
paddq xmm1, xmm2
psllq xmm2, 0x10
psrlq xmm3, 0x30
shufps xmm0, xmm2, 0xe4
shufps xmm4, xmm3, 0xe4
orps xmm0, xmm4
pxor xmm0, xmm1
pshufd xmm1, xmm1, 0x1e
movdqa xmm2, xmm0
movdqa xmm3, xmm0
paddq xmm1, xmm0
psrlq xmm2, 0x2f
psrlq xmm3, 0x2b
movsd xmm3, xmm2
movdqa xmm2, xmm0
psllq xmm0, 0x15
psllq xmm2, 0x11
movsd xmm0, xmm2
pshufd xmm2, xmm1, 0x55
orpd xmm0, xmm3
pshufd xmm3, xmm1, 0xff
movd edx, xmm3
xorpd xmm0, xmm1
movupd xmmword [esp + 0x30], xmm0
movd dword [esp + 0x2c], xmm1
pshufd xmm1, xmm1, 0xee
xor edx, esi
mov esi, dword [esp + 0xc]
movd dword [esp + 0x28], xmm2
movd edi, xmm1
pshufd xmm1, xmm0, 0xff
mov dword [esp + 0x24], edx
xor edi, ebx
movd dword [esp + 0x10], xmm1
pshufd xmm1, xmm0, 0xee
mov dword [esp + 0x20], edi
movd dword [esp + 0x40], xmm1
jmp 0x41b2e4
mov eax, dword [esp + 0x10]
mov esi, dword [esp + 0xc]
jmp 0x41b4b3
xor eax, eax
mov ecx, 1
mov dword [esp + 0xc], esi
sub ecx, eax
mov ebx, ecx
and ecx, 0xfffffff8
and ebx, 7
cmp eax, ecx
jae 0x41b414
movdqu xmm2, xmmword [esp + 0x20]
movdqa xmm1, xmmword [0x5472d0]
nop dword [eax]
pshufd xmm3, xmm0, 0xee
movapd xmm4, xmm0
movdqa xmm5, xmm0
add eax, 8
pxor xmm3, xmm1
psrlq xmm5, 0x30
shufps xmm4, xmm3, 0xc7
movapd xmm3, xmm0
shufps xmm3, xmm4, 0x24
movdqa xmm4, xmm0
psllq xmm0, 0xd
paddq xmm2, xmm3
psrlq xmm4, 0x33
psllq xmm3, 0x10
shufpd xmm0, xmm3, 2
movsd xmm5, xmm4
pshufd xmm3, xmm2, 0x1e
orpd xmm0, xmm5
xorpd xmm0, xmm2
movapd xmm2, xmm0
movapd xmm4, xmm0
paddq xmm3, xmm0
psrlq xmm2, 0x2f
psrlq xmm4, 0x2b
movsd xmm4, xmm2
movdqa xmm2, xmm0
psllq xmm0, 0x15
psllq xmm2, 0x11
movsd xmm0, xmm2
pshufd xmm2, xmm3, 0xee
movd edi, xmm2
orpd xmm0, xmm4
pshufd xmm2, xmm3, 0x1c
xor edi, 0xff
xorpd xmm0, xmm3
cmp eax, ecx
movd xmm4, edi
movss xmm2, xmm4
jb 0x41b310
pshufd xmm1, xmm3, 0x55
movd eax, xmm3
movups xmmword [esp + 0x30], xmm0
mov esi, ebx
mov dword [esp + 8], 0
movd ecx, xmm1
mov dword [esp + 0x2c], eax
xor eax, eax
pshufd xmm1, xmm3, 0xff
mov dword [esp + 0x28], ecx
xor ecx, ecx
cmp ebx, 4
mov ebx, 0xff
movd edx, xmm1
pshufd xmm1, xmm0, 0xff
pshufd xmm0, xmm0, 0xee
setae al
cmovb ebx, ecx
movd dword [esp + 0x10], xmm1
movd dword [esp + 0x40], xmm0
shl eax, 2
jmp 0x41b422
mov esi, ebx
xor ebx, ebx
mov dword [esp + 8], 0
xor eax, eax
mov ecx, eax
mov dword [esp + 0x50], esi
or ecx, 1
cmp ecx, esi
jae 0x41b46d
mov dword [esp + 4], ebx
lea ecx, [eax*8]
mov ebx, 0xff
xor esi, esi
shld esi, ebx, cl
shl ebx, cl
test cl, 0x20
mov ecx, 0
cmovne esi, ebx
cmovne ebx, ecx
mov ecx, dword [esp + 8]
or eax, 2
or dword [esp + 4], ebx
mov ebx, dword [esp + 4]
or ecx, esi
cmp eax, dword [esp + 0x50]
jb 0x41b477
jmp 0x41b4ab
mov ecx, dword [esp + 8]
cmp eax, dword [esp + 0x50]
jae 0x41b4ab
shl eax, 3
mov dword [esp + 4], ebx
mov dword [esp + 8], ecx
mov ebx, 0xff
xor esi, esi
mov ecx, eax
shld esi, ebx, cl
shl ebx, cl
test al, 0x20
mov eax, 0
mov ecx, dword [esp + 8]
cmovne esi, ebx
cmovne ebx, eax
or dword [esp + 4], ebx
mov ebx, dword [esp + 4]
or ecx, esi
mov esi, dword [esp + 0xc]
mov eax, dword [esp + 0x10]
shl esi, 0x18
movdqu xmm0, xmmword [esp + 0x28]
movd xmm3, edi
movd xmm5, edx
mov dword [esp + 0x10], 0
or esi, ecx
mov ecx, dword [esp + 0x40]
punpckldq xmm3, xmm5
xor eax, esi
movd xmm1, eax
movdqa xmm5, xmm0
xor ecx, ebx
psrlq xmm5, 0x33
movd xmm2, ecx
movd xmm4, ecx
punpckldq xmm2, xmm1
punpcklqdq xmm1, xmm4
punpcklqdq xmm2, xmm3
shufps xmm1, xmm0, 0xe2
movaps xmm4, xmm1
paddq xmm2, xmm0
psllq xmm1, 0x10
psllq xmm0, 0xd
pshufd xmm3, xmm2, 0xff
psrlq xmm4, 0x30
movsd xmm0, xmm1
movdqa xmm1, xmm2
movd eax, xmm3
movsd xmm5, xmm4
orpd xmm0, xmm5
movd xmm3, eax
shufps xmm1, xmm3, 0x4e
xorpd xmm0, xmm2
shufps xmm1, xmm2, 0x42
movapd xmm2, xmm0
movapd xmm3, xmm0
psrlq xmm2, 0x2b
psrlq xmm3, 0x2f
paddq xmm1, xmm0
movsd xmm3, xmm2
movdqa xmm2, xmm0
psllq xmm0, 0x11
movd edx, xmm1
psllq xmm2, 0x15
xor edx, ebx
movsd xmm0, xmm2
pshufd xmm2, xmm1, 0xff
movd eax, xmm2
pshufd xmm2, xmm1, 0x55
orpd xmm0, xmm3
movd xmm3, edx
movd ecx, xmm2
xor eax, 0xff
xorpd xmm0, xmm1
xor ecx, esi
movd xmm2, eax
movd xmm4, ecx
shufpd xmm1, xmm2, 1
punpcklqdq xmm4, xmm3
movapd xmm3, xmm0
shufps xmm1, xmm0, 0xe2
shufps xmm3, xmm4, 0x24
movaps xmm4, xmm0
paddq xmm1, xmm3
psrlq xmm4, 0x33
pshufd xmm2, xmm1, 0xff
movd eax, xmm2
movaps xmm2, xmm0
psrlq xmm2, 0x30
movd xmm3, eax
movsd xmm4, xmm2
movaps xmm2, xmm0
psllq xmm0, 0xd
psllq xmm2, 0x10
movsd xmm0, xmm2
movdqa xmm2, xmm1
orpd xmm0, xmm4
shufps xmm2, xmm3, 0x4e
xorpd xmm0, xmm1
shufps xmm2, xmm1, 0x42
movapd xmm1, xmm0
movapd xmm3, xmm0
paddq xmm2, xmm0
psrlq xmm1, 0x2b
psrlq xmm3, 0x2f
movsd xmm3, xmm1
movdqa xmm1, xmm0
psllq xmm0, 0x11
psllq xmm1, 0x15
movsd xmm0, xmm1
pshufd xmm1, xmm2, 0xff
movd eax, xmm1
orpd xmm0, xmm3
movdqa xmm1, xmm2
movd xmm3, eax
xorpd xmm0, xmm2
shufps xmm1, xmm3, 0x4e
movapd xmm4, xmm0
shufps xmm1, xmm2, 0x42
psrlq xmm4, 0x33
paddq xmm1, xmm0
pshufd xmm2, xmm1, 0xff
movd eax, xmm2
movdqa xmm2, xmm0
psrlq xmm2, 0x30
movd xmm3, eax
movsd xmm4, xmm2
movdqa xmm2, xmm0
psllq xmm0, 0xd
psllq xmm2, 0x10
movsd xmm0, xmm2
movdqa xmm2, xmm1
orpd xmm0, xmm4
shufps xmm2, xmm3, 0x4e
xorpd xmm0, xmm1
shufps xmm2, xmm1, 0x42
movapd xmm1, xmm0
movapd xmm3, xmm0
paddq xmm2, xmm0
psrlq xmm1, 0x2b
psrlq xmm3, 0x2f
movsd xmm3, xmm1
movdqa xmm1, xmm0
psllq xmm0, 0x11
psllq xmm1, 0x15
movsd xmm0, xmm1
pshufd xmm1, xmm2, 0xff
movd eax, xmm1
orpd xmm0, xmm3
movdqa xmm1, xmm2
movd xmm3, eax
xorpd xmm0, xmm2
shufps xmm1, xmm3, 0x4e
movapd xmm3, xmm0
shufps xmm1, xmm2, 0x42
movapd xmm2, xmm0
psrlq xmm3, 0x33
psrlq xmm2, 0x30
paddq xmm1, xmm0
movsd xmm3, xmm2
movdqa xmm2, xmm0
psllq xmm0, 0xd
psllq xmm2, 0x10
movsd xmm0, xmm2
orpd xmm0, xmm3
xorpd xmm0, xmm1
movapd xmm2, xmm0
movapd xmm3, xmm0
movapd xmm4, xmm0
psrlq xmm2, 0x2b
psrlq xmm3, 0x2f
psllq xmm4, 0x11
movsd xmm3, xmm2
movapd xmm2, xmm0
psllq xmm2, 0x15
movsd xmm4, xmm2
orpd xmm4, xmm3
movapd xmm2, xmm4
shufpd xmm2, xmm1, 1
xorpd xmm4, xmm2
paddq xmm2, xmm0
pshufd xmm0, xmm2, 0xee
movd edi, xmm4
movd eax, xmm0
pshufd xmm0, xmm2, 0xff
movd ecx, xmm0
xor edi, ecx
xor edi, eax
mov eax, dword [esp + 0x14]
mov ecx, edi
shr ecx, 0x19
movd xmm0, ecx
mov ecx, dword [ebp + 0xc]
mov edx, dword [eax]
mov eax, dword [eax + 4]
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
movdqa xmmword [esp + 0x50], xmm0
mov dword [esp + 4], eax
mov dword [esp + 0xc], edx
and edi, dword [esp + 4]
movdqu xmm0, xmmword [edx + edi]
movdqa xmmword [esp + 0x40], xmm0
pcmpeqb xmm0, xmmword [esp + 0x50]
pmovmskb esi, xmm0
test esi, esi
je 0x41b820
lea eax, [esi - 1]
mov dword [esp + 8], edi
and eax, esi
jmp 0x41b7e2
mov edi, dword [esp + 8]
mov eax, esi
sub ax, 1
and eax, esi
cmp si, 1
jb 0x41b820
tzcnt ebx, esi
mov esi, eax
add ebx, edi
and ebx, dword [esp + 4]
mov eax, ebx
neg eax
lea eax, [eax + eax*2]
cmp dword [edx + eax*8 - 0x10], ecx
jne 0x41b7d0
lea edi, [edx + eax*8]
push ecx
push dword [edi - 0x14]
push dword [ebp + 8]
call sub.VCRUNTIME140.dll_memcmp
mov edx, dword [esp + 0x18]
mov ecx, dword [ebp + 0xc]
add esp, 0xc
test eax, eax
jne 0x41b7d0
jmp 0x41b84e
movdqa xmm1, xmmword [esp + 0x40]
pcmpeqd xmm0, xmm0
pcmpeqb xmm1, xmm0
pmovmskb eax, xmm1
test eax, eax
jne 0x41b903
mov eax, dword [esp + 0x10]
lea edi, [edi + eax + 0x10]
add eax, 0x10
mov dword [esp + 0x10], eax
jmp 0x41b7a3
shl ebx, 3
mov dword [esp + 8], edi
pcmpeqd xmm1, xmm1
lea eax, [ebx + ebx*2]
sar eax, 3
imul edi, eax, 0xaaaaaaab
mov eax, edx
lea ecx, [edi - 0x10]
movdqu xmm2, xmmword [eax + edi]
mov dword [esp + 0x40], edi
and ecx, dword [esp + 4]
pcmpeqb xmm2, xmm1
movdqu xmm0, xmmword [edx + ecx]
pmovmskb esi, xmm2
pcmpeqb xmm0, xmm1
psllw xmm0, 7
pmovmskb edx, xmm0
test edx, edx
je 0x41b89e
bsr bx, dx
xor ebx, 0xf
jmp 0x41b8a2
mov bx, 0x10
mov eax, dword [esp + 8]
or esi, 0x10000
lea edx, [eax - 0x10]
tzcnt eax, esi
add ebx, eax
mov al, 0x80
cmp bx, 0xf
ja 0x41b8c6
mov eax, dword [esp + 0x14]
inc dword [eax + 8]
mov al, 0xff
mov edi, dword [esp + 0xc]
mov esi, dword [esp + 0x40]
mov byte [edi + esi], al
mov byte [ecx + edi + 0x10], al
mov eax, dword [esp + 0x14]
dec dword [eax + 0xc]
mov eax, dword [esp + 8]
movq xmm0, qword [edx]
movq xmm1, qword [edx + 8]
mov ecx, dword [eax - 0x18]
mov eax, dword [eax - 0x14]
movq qword [esp + 0x28], xmm1
movq qword [esp + 0x20], xmm0
cmp ecx, 0x80000000
jne 0x41b90f
mov eax, dword [esp + 0x1c]
mov dword [eax], 0x80000000
jmp 0x41b937
mov edx, dword [esp + 0x2c]
mov esi, dword [esp + 0x1c]
movq xmm0, qword [esp + 0x24]
test ecx, ecx
mov dword [esi + 8], edx
movq qword [esi], xmm0
je 0x41b937
push eax
push 0
push dword [0x5b93c8]
call dword [sym.imp.kernel32.dll_HeapFree]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret