Function at 0x54cb00
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x7c
mov eax, dword [0x7ce4e4]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
mov edi, dword [ebp + 0xc]
mov eax, edi
sub eax, esi
mov dword [ebp - 0x50], edi
cmp eax, 0x339
jl 0x54cbbf
mov ecx, dword [ebp + 0x14]
mov ebx, dword [ebp + 0x10]
test ebx, ebx
jle 0x54cc4d
push ecx
push edi
lea eax, [ebp - 0x5c]
push esi
push eax
call fcn.0054c680
mov eax, ebx
mov ecx, edi
sub ecx, dword [ebp - 0x58]
add esp, 0x10
sar eax, 2
sar ebx, 1
add ebx, eax
mov eax, 0x51eb851f
imul ecx
mov ecx, dword [ebp - 0x5c]
mov eax, 0x51eb851f
sar edx, 3
sub ecx, esi
mov edi, edx
shr edi, 0x1f
add edi, edx
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, edi
mov eax, dword [ebp + 0x14]
push eax
push ebx
jge 0x54cb98
mov edi, dword [ebp - 0x5c]
push edi
push esi
call fcn.0054cb00
mov esi, dword [ebp - 0x58]
mov edi, dword [ebp - 0x50]
jmp 0x54cbaa
push dword [ebp - 0x50]
mov eax, dword [ebp - 0x58]
push eax
call fcn.0054cb00
mov edi, dword [ebp - 0x5c]
mov dword [ebp - 0x50], edi
mov ecx, dword [ebp + 0x14]
mov eax, edi
sub eax, esi
add esp, 0x10
cmp eax, 0x339
jge 0x54cb31
cmp esi, edi
je 0x54cede
lea eax, [esi + 0x19]
mov dword [ebp - 0x54], eax
cmp eax, edi
je 0x54cede
mov ecx, 0x19
mov edi, esi
sub ecx, esi
mov dword [ebp - 0x48], edi
mov dword [ebp - 0x58], ecx
movups xmm0, xmmword [eax]
mov ebx, eax
lea ecx, [ebp - 0x40]
push esi
movups xmmword [ebp - 0x7c], xmm0
movups xmmword [ebp - 0x20], xmm0
movq xmm0, qword [eax + 0x10]
mov al, byte [eax + 0x18]
mov byte [ebp - 0x41], al
mov byte [ebp - 8], al
lea eax, [ebp - 0x20]
push eax
movq qword [ebp - 0x68], xmm0
movq qword [ebp - 0x10], xmm0
call fcn.0054d0c0
test al, al
je 0x54ce65
mov eax, dword [ebp - 0x58]
add eax, edi
push eax
lea eax, [esi + 0x19]
push esi
push eax
call fcn.005c0660
movups xmm0, xmmword [ebp - 0x7c]
mov al, byte [ebp - 0x41]
add esp, 0xc
movups xmmword [esi], xmm0
movq xmm0, qword [ebp - 0x68]
movq qword [esi + 0x10], xmm0
mov byte [esi + 0x18], al
jmp 0x54cec6
mov ebx, edi
mov eax, 0x51eb851f
sub ebx, esi
imul ebx
mov dword [ebp - 0x58], ebx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, eax
mov dword [ebp - 0x54], eax
sar edx, 1
test edx, edx
jle 0x54cdd0
dec eax
mov ecx, eax
mov dword [ebp - 0x6c], eax
imul eax, edx, 0x19
sar ecx, 1
mov dword [ebp - 0x60], ecx
add eax, esi
movups xmm0, xmmword [eax - 0x19]
sub eax, 0x19
dec edx
mov dword [ebp - 0x64], eax
mov ebx, edx
mov dword [ebp - 0x48], edx
mov edi, edx
mov dword [ebp - 0x4c], ebx
movups xmmword [ebp - 0x18], xmm0
movups xmmword [ebp - 0x3c], xmm0
movq xmm0, qword [eax + 0x10]
mov al, byte [eax + 0x18]
movq qword [ebp - 0x74], xmm0
movq qword [ebp - 0x2c], xmm0
mov byte [ebp - 0x41], al
mov byte [ebp - 0x24], al
cmp edx, ecx
jge 0x54cd11
nop dword [eax]
add edi, edi
lea eax, [edi + 2]
imul ecx, eax, 0x19
add ecx, esi
lea eax, [ecx - 0x19]
push eax
push ecx
lea ecx, [ebp - 0x40]
call fcn.0054d0c0
movzx eax, al
xor eax, 1
imul ecx, ebx, 0x19
inc eax
add edi, eax
imul eax, edi, 0x19
mov ebx, edi
movups xmm0, xmmword [eax + esi]
movups xmmword [ecx + esi], xmm0
movq xmm0, qword [eax + esi + 0x10]
movq qword [ecx + esi + 0x10], xmm0
mov al, byte [eax + esi + 0x18]
mov byte [ecx + esi + 0x18], al
mov ecx, dword [ebp - 0x60]
cmp edi, ecx
jl 0x54ccc0
mov edx, dword [ebp - 0x48]
mov dword [ebp - 0x4c], edi
cmp ebx, ecx
jne 0x54cd45
mov eax, dword [ebp - 0x54]
test al, 1
jne 0x54cd45
imul eax, eax, 0x19
imul ecx, ebx, 0x19
mov ebx, dword [ebp - 0x6c]
mov dword [ebp - 0x4c], ebx
movups xmm0, xmmword [eax + esi - 0x19]
movups xmmword [ecx + esi], xmm0
movq xmm0, qword [eax + esi - 9]
movq qword [ecx + esi + 0x10], xmm0
mov al, byte [eax + esi - 1]
mov byte [ecx + esi + 0x18], al
cmp edx, ebx
jge 0x54cd99
nop dword [eax]
lea edi, [ebx - 1]
sar edi, 1
lea eax, [ebp - 0x3c]
imul ebx, edi, 0x19
lea ecx, [ebp - 0x40]
push eax
add ebx, esi
push ebx
call fcn.0054d0c0
mov edx, dword [ebp - 0x48]
test al, al
je 0x54cd96
imul ecx, dword [ebp - 0x4c], 0x19
movups xmm0, xmmword [ebx]
movups xmmword [ecx + esi], xmm0
movq xmm0, qword [ebx + 0x10]
movq qword [ecx + esi + 0x10], xmm0
mov al, byte [ebx + 0x18]
mov ebx, edi
mov byte [ecx + esi + 0x18], al
mov dword [ebp - 0x4c], ebx
cmp edx, edi
jl 0x54cd50
jmp 0x54cd99
mov ebx, dword [ebp - 0x4c]
movups xmm0, xmmword [ebp - 0x18]
mov cl, byte [ebp - 0x41]
imul eax, ebx, 0x19
movups xmmword [eax + esi], xmm0
movq xmm0, qword [ebp - 0x74]
movq qword [eax + esi + 0x10], xmm0
mov byte [eax + esi + 0x18], cl
mov eax, dword [ebp - 0x64]
mov ecx, dword [ebp - 0x60]
test edx, edx
jg 0x54cc84
mov ebx, dword [ebp - 0x58]
mov edi, dword [ebp - 0x50]
mov ecx, dword [ebp + 0x14]
mov eax, dword [ebp - 0x54]
cmp eax, 2
jl 0x54cede
add edi, 0xffffffe7
nop dword [eax]
mov eax, 0x51eb851f
imul ebx
mov ebx, edi
sar edx, 3
sub ebx, esi
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, 2
jl 0x54ce49
movups xmm0, xmmword [edi]
mov al, byte [edi + 0x18]
mov byte [ebp - 0x24], al
movups xmmword [ebp - 0x3c], xmm0
push ecx
movq xmm0, qword [edi + 0x10]
movq qword [ebp - 0x2c], xmm0
movups xmm0, xmmword [esi]
movups xmmword [edi], xmm0
movq xmm0, qword [esi + 0x10]
movq qword [edi + 0x10], xmm0
mov al, byte [esi + 0x18]
mov byte [edi + 0x18], al
lea eax, [ebp - 0x3c]
push eax
mov eax, 0x51eb851f
imul ebx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
push eax
push 0
push esi
call fcn.0054c9d0
add esp, 0x14
mov ecx, dword [ebp + 0x14]
sub edi, 0x19
cmp ebx, 0x32
jge 0x54cde0
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.005be209
mov esp, ebp
pop ebp
ret
push dword [ebp - 0x48]
lea eax, [ebp - 0x20]
push eax
lea ecx, [ebp - 0x40]
call fcn.0054d0c0
test al, al
je 0x54ceac
nop dword [eax + eax]
movups xmm0, xmmword [edi]
lea ecx, [ebp - 0x40]
movups xmmword [ebx], xmm0
movq xmm0, qword [edi + 0x10]
movq qword [ebx + 0x10], xmm0
mov al, byte [edi + 0x18]
mov byte [ebx + 0x18], al
mov ebx, edi
sub edi, 0x19
lea eax, [ebp - 0x20]
push edi
push eax
call fcn.0054d0c0
test al, al
jne 0x54ce80
movups xmm0, xmmword [ebp - 0x7c]
mov al, byte [ebp - 0x41]
mov edi, dword [ebp - 0x48]
movups xmmword [ebx], xmm0
movq xmm0, qword [ebp - 0x68]
movq qword [ebx + 0x10], xmm0
mov byte [ebx + 0x18], al
mov eax, dword [ebp - 0x54]
add edi, 0x19
add eax, 0x19
mov dword [ebp - 0x48], edi
mov dword [ebp - 0x54], eax
cmp eax, dword [ebp - 0x50]
jne 0x54cbe4
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.005be209
mov esp, ebp
pop ebp
ret