Function at 0x1012c500
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x4c
call fcn.10175fd0
mov eax, dword [0x1024ee80]
xor eax, esp
mov dword [esp + 0x48], eax
push ebx
mov ebx, dword [esp + 0x54]
push ebp
push esi
push edi
mov al, byte [ebx]
lea edx, [ebx + 0x10]
mov edi, dword [esp + 0x68]
lea esi, [ebx + 0x20]
mov ecx, dword [ebx + 0x2c]
mov byte [esp + 0x13], al
test byte [esp + 0x13], 0x40
mov eax, dword [ebx + 0x28]
mov dword [esp + 0x24], ebx
mov dword [esp + 0x2c], edi
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], ecx
mov dword [esp + 0x14], edx
jne 0x1012c564
push ecx
push edx
push ebx
call eax
mov eax, dword [esi + 4]
add esp, 0xc
add dword [esi], 1
adc eax, 0
mov dword [esi + 4], eax
jmp 0x1012c568
mov dword [esp + 0x14], edx
movzx eax, byte [esp + 0x13]
mov edx, 0xf
and eax, 7
xor ecx, ecx
sub edx, eax
mov byte [ebx], al
mov dword [esp + 0x44], edx
cmp edx, 0xf
jae 0x1012c5a3
movzx eax, byte [ebx + edx]
or ecx, eax
mov byte [ebx + edx], 0
inc edx
shl ecx, 8
cmp edx, 0xf
jb 0x1012c584
lea edx, [ebx + 0x10]
lea esi, [ebx + 0x20]
mov dword [esp + 0x14], edx
jmp 0x1012c5a7
mov edx, dword [esp + 0x14]
movzx eax, byte [ebx + 0xf]
mov ebp, dword [esp + 0x6c]
or ecx, eax
mov byte [ebx + 0xf], 1
cmp ecx, ebp
je 0x1012c5cf
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
mov ecx, dword [esp + 0x48]
xor ecx, esp
call fcn.10175bf0
add esp, 0x4c
ret
lea eax, [ebp + 0xf]
or eax, 8
shr eax, 3
add dword [esi], eax
adc dword [esi + 4], 0
cmp dword [esi + 4], 0x20000000
jb 0x1012c606
ja 0x1012c5ee
cmp dword [esi], 0
jbe 0x1012c606
pop edi
pop esi
pop ebp
mov eax, 0xfffffffe
pop ebx
mov ecx, dword [esp + 0x48]
xor ecx, esp
call fcn.10175bf0
add esp, 0x4c
ret
mov esi, dword [esp + 0x64]
cmp ebp, 0x10
jb 0x1012c6a6
mov eax, ebp
lea ecx, [ebx + 0x18]
shr eax, 4
mov dword [esp + 0x18], eax
nop
mov eax, dword [esi]
xor dword [edx], eax
mov eax, dword [esi + 4]
xor dword [edx + 4], eax
push dword [esp + 0x20]
mov eax, dword [esi + 8]
xor dword [ecx], eax
mov eax, dword [esi + 0xc]
xor dword [ecx + 4], eax
push edx
push edx
call dword [esp + 0x28]
push dword [esp + 0x2c]
lea eax, [esp + 0x58]
push eax
push ebx
call dword [esp + 0x34]
add esp, 0x18
mov eax, 8
dec eax
add byte [eax + ebx + 8], 1
jne 0x1012c661
test eax, eax
jne 0x1012c655
mov eax, dword [esi + 4]
sub ebp, 0x10
mov ecx, dword [esp + 0x48]
xor ecx, dword [esi]
xor eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x14]
mov dword [edi], ecx
mov ecx, dword [esp + 0x50]
mov dword [edi + 4], eax
xor ecx, dword [esi + 8]
mov eax, dword [esi + 0xc]
add esi, 0x10
xor eax, dword [esp + 0x54]
mov dword [edi + 8], ecx
lea ecx, [ebx + 0x18]
mov dword [edi + 0xc], eax
add edi, 0x10
sub dword [esp + 0x18], 1
jne 0x1012c620
mov dword [esp + 0x6c], ebp
mov dword [esp + 0x2c], edi
mov dword [esp + 0x28], esi
lea eax, [ebx + 0x18]
mov dword [esp + 0x18], eax
test ebp, ebp
je 0x1012c838
mov ecx, dword [esp + 0x14]
mov ebx, ebp
mov edx, esi
mov al, byte [edx]
lea edx, [edx + 1]
xor byte [ecx], al
lea ecx, [ecx + 1]
sub ebx, 1
jne 0x1012c6c1
mov ebx, dword [esp + 0x20]
mov edx, dword [esp + 0x14]
push ebx
push edx
push edx
call dword [esp + 0x28]
push ebx
mov ebx, dword [esp + 0x34]
lea eax, [esp + 0x58]
push eax
push ebx
call dword [esp + 0x34]
add esp, 0x18
xor edx, edx
cmp ebp, 8
jb 0x1012c80a
lea ecx, [ebp - 1]
lea eax, [esp + ebp + 0x47]
add ecx, edi
cmp edi, eax
ja 0x1012c715
lea eax, [esp + 0x48]
cmp ecx, eax
jae 0x1012c80a
lea eax, [ebp - 1]
add eax, esi
cmp edi, eax
ja 0x1012c726
cmp ecx, esi
jae 0x1012c80a
cmp ebp, 0x40
jb 0x1012c7eb
mov ebx, esi
mov ecx, ebp
sub ebx, edi
and ecx, 0x3f
mov dword [esp + 0x18], ebx
mov eax, ebp
mov ebp, dword [esp + 0x18]
lea ebx, [esp + 0x48]
sub ebx, edi
mov dword [esp + 0x40], ecx
mov dword [esp + 0x30], ebx
sub eax, ecx
lea ebx, [esp + 0x58]
mov dword [esp + 0x3c], eax
sub ebx, edi
lea ecx, [esi + 0x30]
mov esi, dword [esp + 0x30]
lea eax, [edi + 0x10]
mov dword [esp + 0x34], ebx
lea ebx, [esp + 0x68]
sub ebx, edi
mov edi, dword [esp + 0x34]
mov dword [esp + 0x38], ebx
nop dword [eax + eax]
movups xmm0, xmmword [ecx - 0x30]
mov ebx, dword [esp + 0x38]
lea ecx, [ecx + 0x40]
movups xmm1, xmmword [esp + edx + 0x48]
add edx, 0x40
lea eax, [eax + 0x40]
xorps xmm1, xmm0
movups xmmword [eax - 0x50], xmm1
movups xmm0, xmmword [eax + ebp - 0x40]
movups xmm1, xmmword [esi + eax - 0x40]
xorps xmm1, xmm0
movups xmmword [eax - 0x40], xmm1
movups xmm0, xmmword [ecx - 0x50]
movups xmm1, xmmword [edi + eax - 0x40]
xorps xmm1, xmm0
movups xmmword [eax - 0x30], xmm1
movups xmm1, xmmword [ebx + eax - 0x40]
mov ebx, dword [esp + 0x24]
movups xmm0, xmmword [ecx - 0x40]
xorps xmm1, xmm0
movups xmmword [eax - 0x20], xmm1
cmp edx, dword [esp + 0x3c]
jb 0x1012c780
cmp dword [esp + 0x40], 8
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 0x2c]
mov ebp, dword [esp + 0x6c]
jb 0x1012c80a
mov eax, ebp
and eax, 0xfffffff8
movq xmm1, qword [esi + edx]
movq xmm0, qword [esp + edx + 0x48]
xorps xmm1, xmm0
movq qword [edi + edx], xmm1
add edx, 8
cmp edx, eax
jb 0x1012c7f0
lea eax, [ebx + 0x18]
mov dword [esp + 0x18], eax
cmp edx, ebp
jae 0x1012c838
lea eax, [esp + 0x48]
sub esi, eax
sub edi, eax
nop dword [eax]
lea ecx, [esp + 0x48]
add ecx, edx
inc edx
mov al, byte [ecx + esi]
xor al, byte [ecx]
mov byte [ecx + edi], al
cmp edx, ebp
jb 0x1012c820
lea esi, [ebx + 0x18]
jmp 0x1012c83c
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x44]
lea edi, [ebx + 0x18]
mov ebp, dword [esp + 0x14]
cmp ecx, 0x10
jae 0x1012c864
mov eax, 0x10
sub eax, ecx
push eax
lea eax, [ecx + ebx]
push 0
push eax
call fcn.101778a0
add esp, 0xc
mov esi, edi
push dword [esp + 0x20]
lea eax, [esp + 0x4c]
push eax
push ebx
call dword [esp + 0x28]
mov eax, dword [esp + 0x54]
add esp, 0xc
xor dword [ebp], eax
mov eax, dword [esp + 0x4c]
xor dword [ebp + 4], eax
mov eax, dword [esp + 0x50]
xor dword [esi], eax
mov eax, dword [esp + 0x54]
xor dword [esi + 4], eax
mov al, byte [esp + 0x13]
mov ecx, dword [esp + 0x58]
pop edi
pop esi
mov byte [ebx], al
xor eax, eax
pop ebp
pop ebx
xor ecx, esp
call fcn.10175bf0
add esp, 0x4c
ret