Function at 0x10105050
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0xd8
call fcn.101ebae0
mov eax, dword [0x102ab2c0]
xor eax, esp
mov dword [esp + 0xd4], eax
mov ecx, dword [esp + 0xdc]
mov eax, dword [esp + 0xe0]
mov edx, dword [esp + 0xe8]
push ebx
mov ebx, dword [esp + 0xe8]
push esi
mov esi, dword [ecx + 0x64]
push edi
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], ecx
mov edi, dword [esi + 0xc8]
mov dword [esp + 0x28], ebx
mov dword [esp + 0x38], edx
mov dword [esp + 0x3c], esi
lea eax, [edi + 0x10]
mov dword [esp + 0x20], edi
cmp edx, eax
je 0x101050ca
pop edi
pop esi
or eax, 0xffffffff
pop ebx
mov ecx, dword [esp + 0xd4]
xor ecx, esp
call fcn.101ebfaa
add esp, 0xd8
ret
lea eax, [esp + 0x40]
mov dword [esi + 0x20], 0
neg eax
lea edx, [esp + 0x40]
and eax, 0xf
lea ecx, [esi + 0xd0]
add edx, eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x30], edx
push ebp
lea eax, [edx + 0x30]
mov dword [esp + 0x30], eax
lea eax, [esi + 0x20]
lea ebp, [edx + 0x40]
mov dword [esp + 0x28], ebp
push eax
push esi
cmp edi, 0x40
ja 0x101054ba
push 0x80
push 0x10237350
push edx
mov dword [esp + 0x4c], 0x80
call fcn.10159ef0
push dword [esp + 0x48]
lea eax, [esi + 0xd0]
push eax
call fcn.1015a5b0
mov eax, dword [esp + 0x4c]
movups xmm0, xmmword [esi + 0x94]
mov dword [esi + 0x70], 0
push dword [esp + 0x3c]
movups xmmword [eax], xmm0
mov dword [esi + 0xa8], 0xd
mov dword [esi + 0xac], 0
mov dword [esi + 0xb0], edi
mov dword [esi + 0xb4], 0
call fcn.10017450
add esp, 0x20
xor esi, esi
test eax, eax
je 0x1010536c
test edi, edi
je 0x10105497
mov eax, dword [esp + 0x14]
cmp edi, 0x10
jb 0x10105331
lea edx, [edi - 1]
lea ecx, [eax - 1]
add edx, ebp
add ecx, edi
cmp eax, edx
ja 0x101051ad
cmp ecx, ebp
jae 0x10105331
lea edx, [ebx - 1]
add edx, edi
cmp eax, edx
ja 0x101051be
cmp ecx, ebx
jae 0x10105331
cmp ebp, edx
ja 0x101051cf
lea ecx, [edi - 1]
add ecx, ebp
cmp ecx, ebx
jae 0x10105331
mov ecx, edi
mov edx, eax
and ecx, 0xfffffff0
mov edi, ebx
mov dword [esp + 0x10], ecx
sub edx, ebp
lea ecx, [eax + 8]
sub edi, ebp
mov dword [esp + 0x18], ecx
lea ecx, [ebp + 4]
mov ebp, ebx
sub ebp, eax
mov eax, edx
movd xmm2, dword [ebx + esi]
lea ecx, [ecx + 0x10]
movd xmm1, dword [ecx - 0x14]
xorps xmm0, xmm0
punpcklbw xmm2, xmm0
punpcklwd xmm2, xmm0
punpcklbw xmm1, xmm0
punpcklwd xmm1, xmm0
mov edx, dword [esp + 0x18]
xorps xmm2, xmm1
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm0, xmm0, 0xd8
andps xmm0, xmmword [0x10237410]
packuswb xmm0, xmm0
movd dword [ecx - 0x14], xmm0
movd xmm1, dword [ecx - 0x10]
movd dword [edx - 8], xmm0
xorps xmm0, xmm0
movd xmm2, dword [ecx + edi - 0x10]
punpcklbw xmm2, xmm0
punpcklwd xmm2, xmm0
punpcklbw xmm1, xmm0
punpcklwd xmm1, xmm0
xorps xmm2, xmm1
add dword [esp + 0x18], 0x10
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm0, xmm0, 0xd8
andps xmm0, xmmword [0x10237410]
packuswb xmm0, xmm0
movd dword [ecx - 0x10], xmm0
movd xmm1, dword [ecx - 0xc]
movd dword [eax + ecx - 0x10], xmm0
xorps xmm0, xmm0
movd xmm2, dword [edx + ebp]
punpcklbw xmm2, xmm0
punpcklbw xmm1, xmm0
punpcklwd xmm2, xmm0
punpcklwd xmm1, xmm0
xorps xmm2, xmm1
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm0, xmm0, 0xd8
andps xmm0, xmmword [0x10237410]
packuswb xmm0, xmm0
movd dword [ecx - 0xc], xmm0
movd xmm1, dword [ecx - 8]
movd dword [edx], xmm0
xorps xmm0, xmm0
movd xmm2, dword [ebx + esi + 0xc]
add esi, 0x10
punpcklbw xmm2, xmm0
punpcklbw xmm1, xmm0
punpcklwd xmm2, xmm0
punpcklwd xmm1, xmm0
xorps xmm2, xmm1
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm0, xmm0, 0xd8
andps xmm0, xmmword [0x10237410]
packuswb xmm0, xmm0
movd dword [ecx - 8], xmm0
movd dword [edx + 4], xmm0
mov edx, esi
cmp esi, dword [esp + 0x10]
jb 0x101051f0
mov edi, dword [esp + 0x24]
mov ebp, dword [esp + 0x28]
mov eax, dword [esp + 0x14]
cmp edx, edi
jae 0x10105497
mov edx, ebx
lea ecx, [esi + ebp]
sub edx, ebp
sub eax, ebp
mov dword [esp + 0x10], edx
mov ebx, eax
mov edx, edi
mov dword [esp + 0x1c], eax
sub edx, esi
mov esi, edi
mov edi, dword [esp + 0x10]
nop
movzx eax, byte [ecx + edi]
lea ecx, [ecx + 1]
xor byte [ecx - 1], al
movzx eax, byte [ecx - 1]
mov byte [ebx + ecx - 1], al
sub edx, 1
jne 0x10105350
jmp 0x10105493
test edi, edi
je 0x10105497
mov eax, dword [esp + 0x14]
cmp edi, 0x40
jb 0x1010544f
lea edx, [eax - 1]
xor esi, esi
lea ecx, [edi - 1]
add edx, edi
add ecx, ebp
cmp ebp, edx
ja 0x10105399
cmp ecx, eax
jae 0x1010544f
lea edx, [ebx - 1]
add edx, edi
cmp ebp, edx
ja 0x101053aa
cmp ecx, ebx
jae 0x1010544f
cmp eax, edx
ja 0x101053bb
lea ecx, [eax - 1]
add ecx, edi
cmp ecx, ebx
jae 0x1010544f
mov ecx, edi
lea edx, [eax + 0x20]
and ecx, 0xffffffc0
mov edi, eax
mov dword [esp + 0x10], ecx
sub edi, ebp
lea ecx, [ebp + 0x10]
mov ebp, ebx
sub ebp, eax
movups xmm2, xmmword [ebx + esi]
lea eax, [edi + ecx]
movups xmm0, xmmword [ecx - 0x10]
lea edx, [edx + 0x40]
movups xmmword [ecx - 0x10], xmm2
lea ecx, [ecx + 0x40]
movaps xmm1, xmm2
xorps xmm1, xmm0
movups xmm0, xmmword [ecx - 0x40]
movups xmmword [edx - 0x60], xmm1
movups xmm2, xmmword [eax + ebp]
movaps xmm1, xmm2
xorps xmm1, xmm0
movups xmmword [eax], xmm1
movups xmmword [ecx - 0x40], xmm2
movups xmm2, xmmword [edx + ebp - 0x40]
movups xmm0, xmmword [ecx - 0x30]
movaps xmm1, xmm2
xorps xmm1, xmm0
movups xmmword [edx - 0x40], xmm1
movups xmmword [ecx - 0x30], xmm2
movups xmm2, xmmword [ebx + esi + 0x30]
add esi, 0x40
mov eax, esi
movaps xmm1, xmm2
movups xmm0, xmmword [ecx - 0x20]
movups xmmword [ecx - 0x20], xmm2
xorps xmm1, xmm0
movups xmmword [edx - 0x30], xmm1
cmp esi, dword [esp + 0x10]
jb 0x101053d2
mov edi, dword [esp + 0x24]
mov ebp, dword [esp + 0x28]
cmp eax, edi
jae 0x10105497
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x2c]
lea ebx, [esi + ebp]
sub ecx, eax
mov dword [esp + 0x24], edi
sub eax, ebp
mov dword [esp + 0x10], ecx
mov ebp, edi
mov dword [esp + 0x1c], eax
sub ebp, esi
mov esi, ecx
nop dword [eax]
lea ecx, [eax + ebx]
mov al, byte [ebx]
mov dl, byte [esi + ecx]
lea ebx, [ebx + 1]
xor al, dl
mov byte [ebx - 1], dl
mov byte [ecx], al
mov eax, dword [esp + 0x1c]
sub ebp, 1
jne 0x10105470
mov esi, dword [esp + 0x24]
mov ebp, dword [esp + 0x28]
mov ebx, dword [esp + 0x2c]
mov edi, esi
lea eax, [esi + ebp]
neg edi
and edi, 0xf
push edi
push 0
push eax
call fcn.101eec70
lea eax, [edi + esi]
add esp, 0xc
add ebp, eax
lea ecx, [eax + 0x20]
jmp 0x10105599
push 0x40
push 0x10237350
push edx
mov dword [esp + 0x4c], 0x40
call fcn.10159ef0
push dword [esp + 0x48]
lea eax, [esi + 0xd0]
push eax
call fcn.1015a5b0
push 0x10
lea eax, [esi + 0x94]
mov dword [esi + 0x20], 1
push eax
lea eax, [esi + 0xd0]
mov dword [esi + 0x70], 0
push eax
call fcn.1015a720
push dword [esp + 0x48]
mov dword [esp + 0x5c], ebp
mov dword [esi + 0xa8], 0xd
mov dword [esi + 0xac], 0
mov dword [esi + 0xb0], edi
mov dword [esi + 0xb4], 0
call fcn.10017450
add esp, 0x2c
test eax, eax
je 0x10105558
lea eax, [esi + 0x20]
push eax
push esi
mov esi, dword [esp + 0x1c]
push edi
push ebx
push esi
call fcn.10159ef0
push edi
push esi
push dword [esp + 0x34]
call fcn.1015a720
jmp 0x10105576
push edi
lea eax, [esi + 0xd0]
push ebx
push eax
call fcn.1015a720
lea eax, [esi + 0x20]
push eax
push esi
push edi
push ebx
push dword [esp + 0x30]
call fcn.10159ef0
add esp, 0x20
mov eax, edi
neg eax
and eax, 0xf
push eax
push 0x10237350
push dword [esp + 0x20]
call fcn.1015a720
add esp, 0xc
mov esi, edi
mov ecx, 0x10
mov edi, dword [esp + 0x14]
lea eax, [ebx + esi]
add edi, esi
mov dword [esp + 0x10], eax
mov esi, dword [esp + 0x40]
push ecx
movups xmm0, xmmword [esi + 0xa8]
lea ebx, [esi + 0xd0]
movups xmmword [ebp], xmm0
mov ebp, dword [esp + 0x34]
push ebp
push ebx
call fcn.1015a720
push dword [esp + 0x44]
push dword [esp + 0x44]
call fcn.1003f070
push dword [esp + 0x34]
call fcn.10017450
mov ecx, eax
lea eax, [esi + 0x84]
test ecx, ecx
cmove eax, ebp
push eax
push ebx
call fcn.1015a540
push dword [esp + 0x40]
mov dword [esi + 0xc8], 0xffffffff
call fcn.10017450
add esp, 0x24
test eax, eax
je 0x10105632
movups xmm0, xmmword [esi + 0x84]
movups xmmword [edi], xmm0
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0xe4]
pop ebp
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.101ebfaa
add esp, 0xd8
ret
push 0x10
push dword [esp + 0x14]
push ebp
call fcn.10089b30
add esp, 0xc
test eax, eax
je 0x10105615
mov ecx, dword [esp + 0x3c]
sub edi, ecx
add edi, 0x10
lea eax, [ecx - 0x10]
push eax
push 0
push edi
call fcn.101eec70
add esp, 0xc
or eax, 0xffffffff
jmp 0x10105619