Function at 0x594170
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x10
call fcn.0066af60
push ebx
mov ebx, dword [esp + 0x18]
push ebp
mov ebp, dword [esp + 0x20]
push esi
push edi
mov edi, dword [esp + 0x2c]
lea ebx, [ebx - 1]
mov ecx, dword [ebp + 4]
shr ebx, 0x1f
dec ebx
mov eax, dword [edi + 4]
xor eax, ecx
mov dword [esp + 0x24], ebx
and eax, ebx
xor ecx, eax
movd xmm0, ebx
mov dword [ebp + 4], ecx
xor dword [edi + 4], eax
mov eax, dword [esp + 0x30]
pshufd xmm3, xmm0, 0
lea edx, [eax - 1]
cmp edx, 9
ja case.default.0x5941bc
jmp dword [edx*4 + 0x5943b8]
mov ebx, 0xa
lea ecx, [eax - 0xa]
cmp eax, ebx
jle 0x5942b4
cmp ecx, 4
jb 0x59428a
mov esi, dword [edi]
mov eax, dword [ebp]
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], esi
lea eax, [esi + 0x28]
mov dword [esp + 0x2c], eax
lea esi, [esi + edx*4]
mov eax, dword [esp + 0x10]
add eax, 0x28
mov dword [esp + 0x14], eax
lea eax, [edx*4]
add eax, dword [esp + 0x10]
cmp dword [esp + 0x2c], eax
mov edx, dword [esp + 0x14]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x30]
ja 0x59421f
cmp esi, edx
jae 0x59428a
cmp dword [esp + 0x2c], edi
ja 0x594229
cmp esi, edi
jae 0x59428a
cmp dword [esp + 0x2c], ebp
ja 0x594233
cmp esi, ebp
jae 0x59428a
mov esi, dword [esp + 0x18]
cmp edx, edi
ja 0x59423f
cmp esi, edi
jae 0x59428a
cmp edx, ebp
ja 0x594247
cmp esi, ebp
jae 0x59428a
and ecx, 0x80000003
jns 0x594254
dec ecx
or ecx, 0xfffffffc
inc ecx
mov esi, dword [esp + 0x10]
mov edx, eax
sub edx, ecx
mov ecx, dword [esp + 0x1c]
movups xmm2, xmmword [ecx + ebx*4]
movups xmm1, xmmword [esi + ebx*4]
movaps xmm0, xmm2
pxor xmm0, xmm1
pand xmm0, xmm3
pxor xmm1, xmm0
pxor xmm2, xmm0
movups xmmword [esi + ebx*4], xmm1
movups xmmword [ecx + ebx*4], xmm2
add ebx, 4
cmp ebx, edx
jl 0x594260
cmp ebx, eax
jge 0x5942b4
nop
mov eax, dword [ebp]
mov ecx, dword [eax + ebx*4]
lea edx, [eax + ebx*4]
mov eax, dword [edi]
mov esi, dword [eax + ebx*4]
xor esi, ecx
and esi, dword [esp + 0x24]
xor ecx, esi
mov dword [edx], ecx
mov eax, dword [edi]
xor dword [eax + ebx*4], esi
inc ebx
cmp ebx, dword [esp + 0x30]
jl 0x594290
mov ebx, dword [esp + 0x24]
mov eax, dword [edi]
mov esi, dword [ebp]
mov edx, dword [eax + 0x24]
mov ecx, dword [esi + 0x24]
xor edx, ecx
and edx, ebx
xor ecx, edx
mov dword [esi + 0x24], ecx
mov eax, dword [edi]
xor dword [eax + 0x24], edx
mov eax, dword [edi]
mov esi, dword [ebp]
mov edx, dword [eax + 0x20]
mov ecx, dword [esi + 0x20]
xor edx, ecx
and edx, ebx
xor ecx, edx
mov dword [esi + 0x20], ecx
mov eax, dword [edi]
xor dword [eax + 0x20], edx
mov eax, dword [edi]
mov esi, dword [ebp]
mov edx, dword [eax + 0x1c]
mov ecx, dword [esi + 0x1c]
xor edx, ecx
and edx, ebx
xor ecx, edx
mov dword [esi + 0x1c], ecx
mov eax, dword [edi]
xor dword [eax + 0x1c], edx
mov eax, dword [edi]
mov esi, dword [ebp]
mov edx, dword [eax + 0x18]
mov ecx, dword [esi + 0x18]
xor edx, ecx
and edx, ebx
xor ecx, edx
mov dword [esi + 0x18], ecx
mov eax, dword [edi]
xor dword [eax + 0x18], edx
mov eax, dword [edi]
mov esi, dword [ebp]
mov edx, dword [eax + 0x14]
mov ecx, dword [esi + 0x14]
xor edx, ecx
and edx, ebx
xor ecx, edx
mov dword [esi + 0x14], ecx
mov eax, dword [edi]
xor dword [eax + 0x14], edx
mov eax, dword [edi]
mov esi, dword [ebp]
mov edx, dword [eax + 0x10]
mov ecx, dword [esi + 0x10]
xor edx, ecx
and edx, ebx
xor ecx, edx
mov dword [esi + 0x10], ecx
mov eax, dword [edi]
xor dword [eax + 0x10], edx
mov eax, dword [edi]
mov esi, dword [ebp]
mov edx, dword [eax + 0xc]
mov ecx, dword [esi + 0xc]
xor edx, ecx
and edx, ebx
xor ecx, edx
mov dword [esi + 0xc], ecx
mov eax, dword [edi]
xor dword [eax + 0xc], edx
mov eax, dword [edi]
mov esi, dword [ebp]
mov edx, dword [eax + 8]
mov ecx, dword [esi + 8]
xor edx, ecx
and edx, ebx
xor ecx, edx
mov dword [esi + 8], ecx
mov eax, dword [edi]
xor dword [eax + 8], edx
mov eax, dword [edi]
mov esi, dword [ebp]
mov edx, dword [eax + 4]
mov ecx, dword [esi + 4]
xor edx, ecx
and edx, ebx
xor ecx, edx
mov dword [esi + 4], ecx
mov eax, dword [edi]
xor dword [eax + 4], edx
mov eax, dword [edi]
mov esi, dword [ebp]
mov ecx, dword [eax]
mov edx, dword [esi]
xor ecx, edx
and ecx, ebx
xor edx, ecx
mov dword [esi], edx
mov eax, dword [edi]
pop edi
pop esi
pop ebp
xor dword [eax], ecx
pop ebx
add esp, 0x10
ret