Function at 0x5a24b0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x1c
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x30]
test ecx, ecx
je 0x5a2531
test edx, edx
je 0x5a2531
mov esi, dword [ecx + 0xc]
cmp esi, dword [edx + 0xc]
jne 0x5a2545
mov ebx, dword [ecx]
mov eax, dword [ecx + 4]
mov ecx, dword [edx]
mov dword [esp], ecx
mov ecx, dword [edx + 4]
cmp eax, ecx
mov dword [esp + 0x18], ecx
cmovb ecx, eax
test ecx, ecx
mov dword [esp + 4], esi
mov dword [esp + 0x14], eax
je 0x5a2553
xor edx, edx
xor ebp, ebp
nop word cs:[eax + eax]
mov esi, dword [ebx + ebp*4]
mov eax, ebx
mov edi, dword [esp]
mov ebx, dword [edi + ebp*4]
mov edi, esi
sub edi, ebx
xor ebx, esi
xor edi, esi
or edi, ebx
xor edi, esi
mov esi, edi
sar esi, 0x1f
not edi
shr edi, 0x1f
or edi, esi
test ebx, ebx
mov ebx, eax
cmovne edx, edi
inc ebp
cmp ecx, ebp
jne 0x5a2500
jmp 0x5a2555
xor ebx, ebx
test edx, edx
setne bl
xor eax, eax
neg ecx
sbb eax, eax
or eax, ebx
jmp 0x5a2821
xor eax, eax
neg esi
sbb eax, eax
or eax, 1
jmp 0x5a2821
xor edx, edx
mov eax, dword [esp + 0x14]
mov edi, eax
mov esi, dword [esp + 0x18]
sub edi, esi
jae 0x5a257a
mov edi, esi
sub edi, eax
xor ecx, ecx
cmp edi, 8
jae 0x5a258c
mov edi, dword [esp + 4]
mov ebx, dword [esp]
jmp 0x5a26f0
jbe 0x5a25b9
xor ecx, ecx
cmp edi, 8
jae 0x5a25c2
mov edi, dword [esp + 4]
jmp 0x5a2800
lea ecx, [edi - 8]
mov ebp, ecx
shr ebp, 3
inc ebp
mov ebx, ebp
and ebx, 3
cmp ecx, 0x18
mov dword [esp + 8], edi
mov dword [esp + 0xc], ebx
jae 0x5a25fb
pxor xmm0, xmm0
xor ecx, ecx
pxor xmm1, xmm1
mov ebx, dword [esp]
jmp 0x5a2677
mov edi, dword [esp + 4]
jmp 0x5a2818
mov dword [esp], ebx
lea ecx, [edi - 8]
mov ebx, ecx
shr ebx, 3
inc ebx
mov ebp, ebx
and ebp, 3
cmp ecx, 0x18
mov dword [esp + 8], edi
mov dword [esp + 0xc], ebp
mov dword [esp + 0x10], edx
jae 0x5a270b
pxor xmm0, xmm0
xor ecx, ecx
pxor xmm1, xmm1
mov edi, dword [esp + 4]
jmp 0x5a2788
and ebp, 0xfffffffc
mov ebx, dword [esp]
lea edi, [ebx + eax*4]
add edi, 0x70
pxor xmm0, xmm0
xor ecx, ecx
pxor xmm1, xmm1
nop word cs:[eax + eax]
movdqu xmm2, xmmword [edi + ecx*4 - 0x70]
por xmm2, xmm0
movdqu xmm0, xmmword [edi + ecx*4 - 0x60]
por xmm0, xmm1
movdqu xmm1, xmmword [edi + ecx*4 - 0x50]
movdqu xmm3, xmmword [edi + ecx*4 - 0x40]
movdqu xmm4, xmmword [edi + ecx*4 - 0x30]
por xmm4, xmm1
por xmm4, xmm2
movdqu xmm2, xmmword [edi + ecx*4 - 0x20]
por xmm2, xmm3
por xmm2, xmm0
movdqu xmm0, xmmword [edi + ecx*4 - 0x10]
por xmm0, xmm4
movdqu xmm1, xmmword [edi + ecx*4]
por xmm1, xmm2
add ecx, 0x20
add ebp, 0xfffffffc
jne 0x5a2620
mov edi, dword [esp + 8]
and edi, 0xfffffff8
mov dword [esp], edi
mov ebp, dword [esp + 0xc]
test ebp, ebp
je 0x5a26ba
add ecx, eax
lea ecx, [ebx + ecx*4]
add ecx, 0x10
shl ebp, 5
xor edi, edi
nop word cs:[eax + eax]
movdqu xmm2, xmmword [ecx + edi - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [ecx + edi]
por xmm1, xmm2
add edi, 0x20
cmp ebp, edi
jne 0x5a26a0
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd ecx, xmm0
mov edi, dword [esp]
cmp dword [esp + 8], edi
jne 0x5a26e3
mov edi, dword [esp + 4]
jmp 0x5a26f8
add eax, edi
mov edi, dword [esp + 4]
nop dword [eax]
or ecx, dword [ebx + eax*4]
inc eax
cmp esi, eax
jne 0x5a26f0
mov eax, ecx
not eax
dec ecx
and ecx, eax
sar ecx, 0x1f
not ecx
or edx, ecx
jmp 0x5a2818
and ebx, 0xfffffffc
mov ecx, eax
mov eax, dword [esp]
lea ebp, [eax + esi*4]
add ebp, 0x70
mov eax, ecx
pxor xmm0, xmm0
xor ecx, ecx
pxor xmm1, xmm1
mov edi, dword [esp + 4]
nop dword [eax]
movdqu xmm2, xmmword [ebp + ecx*4 - 0x70]
por xmm2, xmm0
movdqu xmm0, xmmword [ebp + ecx*4 - 0x60]
por xmm0, xmm1
movdqu xmm1, xmmword [ebp + ecx*4 - 0x50]
movdqu xmm3, xmmword [ebp + ecx*4 - 0x40]
movdqu xmm4, xmmword [ebp + ecx*4 - 0x30]
por xmm4, xmm1
por xmm4, xmm2
movdqu xmm2, xmmword [ebp + ecx*4 - 0x20]
por xmm2, xmm3
por xmm2, xmm0
movdqu xmm0, xmmword [ebp + ecx*4 - 0x10]
por xmm0, xmm4
movdqu xmm1, xmmword [ebp + ecx*4]
por xmm1, xmm2
add ecx, 0x20
add ebx, 0xfffffffc
jne 0x5a2730
mov edx, dword [esp + 8]
and edx, 0xfffffff8
mov ebx, dword [esp + 0xc]
test ebx, ebx
je 0x5a27ca
add ecx, esi
mov ebp, eax
mov eax, dword [esp]
lea ecx, [eax + ecx*4]
add ecx, 0x10
mov eax, ebp
shl ebx, 5
xor ebp, ebp
nop dword [eax + eax]
movdqu xmm2, xmmword [ecx + ebp - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [ecx + ebp]
por xmm1, xmm2
add ebp, 0x20
cmp ebx, ebp
jne 0x5a27b0
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd ecx, xmm0
cmp dword [esp + 8], edx
jne 0x5a27f0
mov edx, dword [esp + 0x10]
jmp 0x5a2808
add esi, edx
mov ebx, dword [esp]
mov edx, dword [esp + 0x10]
nop dword [eax]
or ecx, dword [ebx + esi*4]
inc esi
cmp eax, esi
jne 0x5a2800
xor esi, esi
xor eax, eax
test ecx, ecx
cmove esi, edx
setne al
or eax, esi
mov edx, eax
mov eax, edx
neg eax
test edi, edi
cmove eax, edx
add esp, 0x1c
pop esi
pop edi
pop ebx
pop ebp
ret