Function at 0x10014180
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ecx
mov ecx, dword [ebp + 8]
mov eax, dword [ebp + 0x10]
push ebx
push esi
mov ecx, dword [ecx + 0xc]
push edi
mov edi, eax
mov edx, dword [ecx + 0x28]
mov ecx, dword [ebp + 0x14]
movsx esi, byte [edx + ecx]
mov ecx, dword [ebp + 0xc]
mov ebx, dword [ecx + 0x438]
test esi, esi
jns 0x100141c1
neg esi
mov dword [ebp + 0xc], 0
mov edx, 1
lea ecx, [esi - 1]
shl edx, cl
mov dword [ebp - 4], edx
jmp 0x100141d3
xor edx, edx
lea ecx, [esi - 1]
mov dword [ebp - 4], edx
mov edx, 1
shl edx, cl
mov dword [ebp + 0xc], edx
mov dword [ebp + 0x14], 0xffffffff
cmp esi, 0x20
jge 0x100141eb
or edx, 0xffffffff
mov ecx, esi
shl edx, cl
not edx
mov dword [ebp + 0x14], edx
cmp esi, 8
jg 0x100142ab
mov ecx, dword [ebp + 8]
xor esi, esi
mov ecx, dword [ecx + 0x83c]
mov edx, dword [ecx + 0xc0]
test ebx, ebx
je 0x100145d8
cmp ebx, 0x20
jb 0x10014283
lea ecx, [ebx - 1]
add ecx, edx
cmp eax, ecx
ja 0x10014225
lea ecx, [eax - 2]
lea ecx, [ecx + ebx*2]
cmp ecx, edx
jae 0x10014283
mov ecx, ebx
and ecx, 0xffffffe0
nop word [eax + eax]
movq xmm0, qword [edx]
add esi, 0x20
punpcklbw xmm0, xmm0
psraw xmm0, 8
movups xmmword [edi], xmm0
movq xmm0, qword [edx + 8]
punpcklbw xmm0, xmm0
psraw xmm0, 8
movups xmmword [edi + 0x10], xmm0
movq xmm0, qword [edx + 0x10]
punpcklbw xmm0, xmm0
psraw xmm0, 8
movups xmmword [edi + 0x20], xmm0
movq xmm0, qword [edx + 0x18]
add edx, 0x20
punpcklbw xmm0, xmm0
psraw xmm0, 8
movups xmmword [edi + 0x30], xmm0
add edi, 0x40
cmp esi, ecx
jb 0x10014230
cmp esi, ebx
jae 0x100145d8
mov eax, ebx
sub eax, esi
nop
movsx cx, byte [edx]
lea edi, [edi + 2]
lea edx, [edx + 1]
mov word [edi - 2], cx
sub eax, 1
jne 0x10014290
mov eax, dword [ebp + 0x10]
jmp 0x100145d8
cmp esi, 0x10
jg 0x100143dd
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0x83c]
mov ecx, dword [edx + 0x58]
mov esi, dword [edx + 0xc0]
cmp ecx, dword [edx + 0x5c]
je 0x100143bc
xor edx, edx
test ebx, ebx
je 0x100145d8
cmp ebx, 0x20
jb 0x10014389
lea ecx, [ebx - 1]
lea ecx, [esi + ecx*2]
cmp eax, ecx
ja 0x100142fa
lea ecx, [eax - 2]
lea ecx, [ecx + ebx*2]
cmp ecx, esi
jae 0x10014389
movaps xmm3, xmmword [0x1007f8f0]
mov ecx, ebx
mov dword [ebp + 8], 8
and ecx, 0xffffffe0
movd xmm2, dword [ebp + 8]
movups xmm1, xmmword [esi]
add edx, 0x20
movaps xmm0, xmm1
psraw xmm0, xmm2
psllw xmm1, xmm2
pand xmm0, xmm3
por xmm0, xmm1
movups xmm1, xmmword [esi + 0x10]
movups xmmword [edi], xmm0
movaps xmm0, xmm1
psraw xmm0, xmm2
psllw xmm1, xmm2
pand xmm0, xmm3
por xmm0, xmm1
movups xmm1, xmmword [esi + 0x20]
movups xmmword [edi + 0x10], xmm0
movaps xmm0, xmm1
psraw xmm0, xmm2
psllw xmm1, xmm2
pand xmm0, xmm3
por xmm0, xmm1
movups xmm1, xmmword [esi + 0x30]
add esi, 0x40
movups xmmword [edi + 0x20], xmm0
movaps xmm0, xmm1
psraw xmm0, xmm2
psllw xmm1, xmm2
pand xmm0, xmm3
por xmm0, xmm1
movups xmmword [edi + 0x30], xmm0
add edi, 0x40
cmp edx, ecx
jb 0x10014312
cmp edx, ebx
jae 0x100145d8
mov eax, ebx
sub esi, edi
sub eax, edx
movzx edx, word [esi + edi]
lea edi, [edi + 2]
mov ecx, edx
shl edx, 8
sar ecx, 8
movzx ecx, cl
or ecx, edx
mov word [edi - 2], cx
sub eax, 1
jne 0x10014397
mov eax, dword [ebp + 0x10]
jmp 0x100145d8
test ebx, ebx
je 0x100145d8
mov edx, ebx
mov cx, word [esi]
lea edi, [edi + 2]
mov word [edi - 2], cx
lea esi, [esi + 2]
sub edx, 1
jne 0x100143c6
jmp 0x100145d8
cmp esi, 0x20
jg 0x10014750
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0x83c]
mov ecx, dword [edx + 0x58]
mov esi, dword [edx + 0xc0]
mov dword [ebp + 8], esi
cmp ecx, dword [edx + 0x5c]
je 0x100145c0
xor edx, edx
test ebx, ebx
je 0x100145d8
cmp ebx, 0x10
jb 0x1001458a
lea ecx, [ebx - 1]
lea ecx, [esi + ecx*4]
cmp eax, ecx
ja 0x1001442f
lea ecx, [eax - 2]
lea ecx, [ecx + ebx*2]
cmp ecx, esi
jae 0x1001458a
movaps xmm4, xmmword [0x1007f8f0]
mov ecx, ebx
movaps xmm6, xmmword [0x1007f980]
and ecx, 0xfffffff0
mov dword [ebp + 8], 0x18
movd xmm3, dword [ebp + 8]
mov dword [ebp + 8], 8
movd xmm5, dword [ebp + 8]
nop word [eax + eax]
movups xmm1, xmmword [esi]
add edx, 0x10
movaps xmm0, xmm1
psrad xmm0, xmm3
psrad xmm1, xmm5
pshuflw xmm0, xmm0, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm2, xmm0, 0xd8
movq xmm0, xmm4
pand xmm2, xmm0
pshuflw xmm0, xmm1, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
movq xmm0, xmm6
pand xmm1, xmm0
por xmm2, xmm1
movups xmm1, xmmword [esi + 0x10]
movq qword [edi], xmm2
movaps xmm0, xmm1
psrad xmm0, xmm3
psrad xmm1, xmm5
pshuflw xmm0, xmm0, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm2, xmm0, 0xd8
movq xmm0, xmm4
pand xmm2, xmm0
pshuflw xmm0, xmm1, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
movq xmm0, xmm6
pand xmm1, xmm0
por xmm2, xmm1
movups xmm1, xmmword [esi + 0x20]
movq qword [edi + 8], xmm2
movaps xmm0, xmm1
psrad xmm0, xmm3
psrad xmm1, xmm5
pshuflw xmm0, xmm0, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm2, xmm0, 0xd8
movq xmm0, xmm4
pand xmm2, xmm0
pshuflw xmm0, xmm1, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
movq xmm0, xmm6
pand xmm1, xmm0
por xmm2, xmm1
movups xmm1, xmmword [esi + 0x30]
add esi, 0x40
movq qword [edi + 0x10], xmm2
movaps xmm0, xmm1
psrad xmm0, xmm3
psrad xmm1, xmm5
pshuflw xmm0, xmm0, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm2, xmm0, 0xd8
movq xmm0, xmm4
pand xmm2, xmm0
pshuflw xmm0, xmm1, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
movq xmm0, xmm6
pand xmm1, xmm0
por xmm2, xmm1
movq qword [edi + 0x18], xmm2
add edi, 0x20
cmp edx, ecx
jb 0x10014460
mov dword [ebp + 8], esi
cmp edx, ebx
jae 0x100145d8
mov eax, ebx
sub eax, edx
mov esi, dword [esi]
lea edi, [edi + 2]
add dword [ebp + 8], 4
mov edx, esi
mov ecx, esi
sar edx, 0x18
sar ecx, 8
xor edx, ecx
sar esi, 8
movzx ecx, dl
xor ecx, esi
mov esi, dword [ebp + 8]
mov word [edi - 2], cx
sub eax, 1
jne 0x10014592
mov eax, dword [ebp + 0x10]
jmp 0x100145d8
test ebx, ebx
je 0x100145d8
mov edx, ebx
mov cx, word [esi]
lea edi, [edi + 2]
mov word [edi - 2], cx
lea esi, [esi + 4]
sub edx, 1
jne 0x100145c6
mov edi, dword [ebp - 4]
xor edx, edx
test edi, edi
je 0x100146a7
test ebx, ebx
je 0x10014747
mov esi, dword [ebp + 0x14]
cmp ebx, 0x20
jb 0x1001467c
mov ecx, ebx
and ecx, 0xffffffe0
mov dword [ebp + 8], ecx
movsx ecx, si
movd xmm0, ecx
movsx ecx, di
punpcklwd xmm0, xmm0
pshufd xmm2, xmm0, 0
movd xmm0, ecx
mov ecx, dword [ebp + 8]
punpcklwd xmm0, xmm0
pshufd xmm1, xmm0, 0
movups xmm0, xmmword [eax]
add edx, 0x20
paddw xmm0, xmm1
pand xmm0, xmm2
psubw xmm0, xmm1
movups xmmword [eax], xmm0
movups xmm0, xmmword [eax + 0x10]
paddw xmm0, xmm1
pand xmm0, xmm2
psubw xmm0, xmm1
movups xmmword [eax + 0x10], xmm0
movups xmm0, xmmword [eax + 0x20]
paddw xmm0, xmm1
pand xmm0, xmm2
psubw xmm0, xmm1
movups xmmword [eax + 0x20], xmm0
movups xmm0, xmmword [eax + 0x30]
paddw xmm0, xmm1
pand xmm0, xmm2
psubw xmm0, xmm1
movups xmmword [eax + 0x30], xmm0
add eax, 0x40
cmp edx, ecx
jb 0x10014624
cmp edx, ebx
jae 0x10014747
sub ebx, edx
mov cx, word [eax]
lea eax, [eax + 2]
add cx, di
and cx, si
sub cx, di
mov word [eax - 2], cx
sub ebx, 1
jne 0x10014686
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
test ebx, ebx
je 0x10014747
mov esi, dword [ebp + 0x14]
cmp ebx, 0x20
jb 0x10014729
movsx ecx, si
mov edi, ebx
xor edx, edx
and edi, 0xffffffe0
movd xmm0, ecx
mov ecx, dword [ebp + 0xc]
punpcklwd xmm0, xmm0
movsx ecx, cx
pshufd xmm1, xmm0, 0
movd xmm0, ecx
punpcklwd xmm0, xmm0
pshufd xmm2, xmm0, 0
movups xmm0, xmmword [eax]
add edx, 0x20
pand xmm0, xmm1
psubw xmm0, xmm2
movups xmmword [eax], xmm0
movups xmm0, xmmword [eax + 0x10]
pand xmm0, xmm1
psubw xmm0, xmm2
movups xmmword [eax + 0x10], xmm0
movups xmm0, xmmword [eax + 0x20]
pand xmm0, xmm1
psubw xmm0, xmm2
movups xmmword [eax + 0x20], xmm0
movups xmm0, xmmword [eax + 0x30]
pand xmm0, xmm1
psubw xmm0, xmm2
movups xmmword [eax + 0x30], xmm0
add eax, 0x40
cmp edx, edi
jb 0x100146e1
cmp edx, ebx
jae 0x10014747
sub ebx, edx
mov edx, dword [ebp + 0xc]
mov cx, word [eax]
lea eax, [eax + 2]
and cx, si
sub cx, dx
mov word [eax - 2], cx
sub ebx, 1
jne 0x10014732
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
pop esi
mov eax, 0xffffffe5
pop ebx
mov esp, ebp
pop ebp
ret