Function at 0x423410
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ecx
mov edx, dword [ebp + 0xc]
push esi
mov esi, dword [ebp + 8]
push edi
test edx, edx
jne 0x42343b
mov eax, dword [0x557544]
push dword [eax + 8]
mov eax, dword [0x557548]
push esi
mov eax, dword [eax + 0x7c]
call eax
mov edx, eax
add esp, 8
mov dword [ebp + 0xc], edx
cmp byte [0x873573], 0
je 0x4236a7
cmp dword [0x5574c4], 0
je 0x423547
mov eax, edx
cdq
and edx, 3
lea ecx, [edx + eax]
xor edx, edx
sar ecx, 2
cmp dword [0x873594], edx
je 0x4234d3
test ecx, ecx
jle case.0x4236bf.31
cmp ecx, 8
jb 0x4234b1
mov eax, ecx
and eax, 0x80000007
jns 0x423486
dec eax
or eax, 0xfffffff8
inc eax
movaps xmm1, xmmword [0x440380]
mov edi, ecx
sub edi, eax
movups xmm0, xmmword [esi]
add edx, 8
pandn xmm0, xmm1
movups xmmword [esi], xmm0
movups xmm0, xmmword [esi + 0x10]
pandn xmm0, xmm1
movups xmmword [esi + 0x10], xmm0
add esi, 0x20
cmp edx, edi
jl 0x423491
cmp edx, ecx
jge case.0x4236bf.31
sub ecx, edx
nop dword [eax + eax]
not dword [esi]
lea esi, [esi + 4]
sub ecx, 1
jne 0x4234c0
mov eax, dword [ebp + 0xc]
pop edi
pop esi
mov esp, ebp
pop ebp
ret
test ecx, ecx
jle case.0x4236bf.31
cmp ecx, 8
jb 0x423526
mov eax, ecx
xor edx, edx
and eax, 0x80000007
jns 0x4234f0
dec eax
or eax, 0xfffffff8
inc eax
movaps xmm2, xmmword [0x440340]
mov edi, ecx
sub edi, eax
nop dword [eax + eax]
movups xmm0, xmmword [esi]
add edx, 8
movaps xmm1, xmm2
pxor xmm1, xmm0
movups xmmword [esi], xmm1
movups xmm0, xmmword [esi + 0x10]
movaps xmm1, xmm2
pxor xmm1, xmm0
movups xmmword [esi + 0x10], xmm1
add esi, 0x20
cmp edx, edi
jl 0x423500
cmp edx, ecx
jge case.0x4236bf.31
sub ecx, edx
xor dword [esi], 0xffff00
lea esi, [esi + 4]
sub ecx, 1
jne 0x423530
mov eax, dword [ebp + 0xc]
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov eax, dword [0x557544]
cmp dword [eax + 0x10], 0xf4240
jle 0x4235d3
mov eax, edx
cdq
and edx, 3
lea ecx, [edx + eax]
xor edx, edx
sar ecx, 2
test ecx, ecx
jle case.0x4236bf.31
cmp ecx, 8
jb 0x4235b0
mov eax, ecx
and eax, 0x80000007
jns 0x42357e
dec eax
or eax, 0xfffffff8
inc eax
movaps xmm1, xmmword [0x440380]
mov edi, ecx
sub edi, eax
nop dword [eax]
movups xmm0, xmmword [esi]
add edx, 8
pandn xmm0, xmm1
movups xmmword [esi], xmm0
movups xmm0, xmmword [esi + 0x10]
pandn xmm0, xmm1
movups xmmword [esi + 0x10], xmm0
add esi, 0x20
cmp edx, edi
jl 0x423590
cmp edx, ecx
jge case.0x4236bf.31
sub ecx, edx
nop word [eax + eax]
not dword [esi]
lea esi, [esi + 4]
sub ecx, 1
jne 0x4235c0
mov eax, dword [ebp + 0xc]
pop edi
pop esi
mov esp, ebp
pop ebp
ret
cmp dword [0x873554], 0x18
jne 0x42362b
mov eax, 0x55555556
imul edx
mov edi, edx
shr edi, 0x1f
add edi, edx
test edi, edi
jle case.0x4236bf.31
movzx eax, word [esi]
lea esi, [esi + 3]
mov word [ebp - 4], ax
movsx eax, byte [esi - 1]
mov word [ebp - 2], ax
mov ecx, dword [ebp - 4]
xor ecx, 0xffff
movzx eax, cx
mov dword [ebp - 4], ecx
sar ecx, 0x10
mov word [esi - 3], ax
mov byte [esi - 1], cl
sub edi, 1
jne 0x4235f2
mov eax, dword [ebp + 0xc]
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov eax, edx
cdq
and edx, 3
lea ecx, [edx + eax]
xor edx, edx
sar ecx, 2
test ecx, ecx
jle case.0x4236bf.31
cmp ecx, 8
jb 0x423680
mov eax, ecx
and eax, 0x80000007
jns 0x423654
dec eax
or eax, 0xfffffff8
inc eax
movaps xmm1, xmmword [0x440340]
mov edi, ecx
sub edi, eax
nop
movups xmm0, xmmword [esi]
add edx, 8
pxor xmm0, xmm1
movups xmmword [esi], xmm0
movups xmm0, xmmword [esi + 0x10]
pxor xmm0, xmm1
movups xmmword [esi + 0x10], xmm0
add esi, 0x20
cmp edx, edi
jl 0x423660
cmp edx, ecx
jge case.0x4236bf.31
sub ecx, edx
nop word [eax + eax]
xor dword [esi], 0xffff00
lea esi, [esi + 4]
sub ecx, 1
jne 0x423690
mov eax, dword [ebp + 0xc]
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov eax, dword [0x873554]
add eax, 0x20
cmp eax, 0x40
ja case.0x4236bf.31
movzx eax, byte [eax + 0x4238cc]
jmp dword [eax*4 + 0x4238b8]
mov eax, edx
cdq
sub eax, edx
mov ecx, eax
sar ecx, 1
test ecx, ecx
jle case.0x4236bf.31
mov edx, 0x7fff
nop dword [eax]
movsx eax, word [esi]
lea esi, [esi + 2]
neg eax
cmp eax, 0x7fff
cmovg eax, edx
mov word [esi - 2], ax
sub ecx, 1
jne 0x4236e0
mov eax, dword [ebp + 0xc]
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov eax, 0x55555556
imul edx
mov edi, edx
shr edi, 0x1f
add edi, edx
test edi, edi
jle case.0x4236bf.31
mov edx, 0x7fffff
nop dword [eax]
movzx eax, word [esi]
lea esi, [esi + 3]
mov word [ebp - 4], ax
movsx eax, byte [esi - 1]
mov word [ebp - 2], ax
mov ecx, dword [ebp - 4]
neg ecx
cmp ecx, edx
cmovg ecx, edx
movzx eax, cx
mov dword [ebp - 4], ecx
sar ecx, 0x10
mov word [esi - 3], ax
mov byte [esi - 1], cl
sub edi, 1
jne 0x423720
mov eax, dword [ebp + 0xc]
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov eax, edx
cdq
and edx, 3
lea ecx, [edx + eax]
sar ecx, 2
test ecx, ecx
jle case.0x4236bf.31
nop
mov eax, dword [esi]
cmp eax, 0x80000000
jne 0x423781
mov dword [esi], 0x7fffff00
jmp 0x423785
neg eax
mov dword [esi], eax
add esi, 4
sub ecx, 1
jne 0x423770
mov eax, dword [ebp + 0xc]
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov eax, edx
cdq
and edx, 3
lea ecx, [edx + eax]
xor edx, edx
sar ecx, 2
test ecx, ecx
jle case.0x4236bf.31
movaps xmm2, xmmword [0x44cba0]
cmp ecx, 8
jb 0x42384f
cmp dword [0x87dcec], 2
jl 0x42384f
mov eax, ecx
and eax, 0x80000007
jns 0x4237d7
dec eax
or eax, 0xfffffff8
inc eax
movaps xmm3, xmmword [0x440360]
mov edi, ecx
movaps xmm4, xmmword [0x440370]
sub edi, eax
movaps xmm5, xmmword [0x440330]
movaps xmm6, xmmword [0x440350]
movups xmm0, xmmword [esi]
add edx, 8
movaps xmm1, xmm4
xorps xmm0, xmm2
mulps xmm0, xmm3
cvttps2dq xmm0, xmm0
pmaxsd xmm1, xmm0
movaps xmm0, xmm5
pminsd xmm0, xmm1
cvtdq2ps xmm0, xmm0
movaps xmm1, xmm4
mulps xmm0, xmm6
movups xmmword [esi], xmm0
movups xmm0, xmmword [esi + 0x10]
xorps xmm0, xmm2
mulps xmm0, xmm3
cvttps2dq xmm0, xmm0
pmaxsd xmm1, xmm0
movaps xmm0, xmm5
pminsd xmm0, xmm1
cvtdq2ps xmm0, xmm0
mulps xmm0, xmm6
movups xmmword [esi + 0x10], xmm0
add esi, 0x20
cmp edx, edi
jl 0x4237f7
cmp edx, ecx
jge case.0x4236bf.31
movss xmm3, dword [0x440324]
sub ecx, edx
movss xmm1, dword [0x4402d8]
mov edx, 0xff800000
nop word [eax + eax]
movss xmm0, dword [esi]
xorps xmm0, xmm2
mulss xmm0, xmm3
cvttss2si eax, xmm0
cmp eax, 0x7fffff
jle 0x42388d
mov eax, 0x7fffff
jmp 0x423895
cmp eax, 0xff800000
cmovl eax, edx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm1
movss dword [esi], xmm0
add esi, 4
sub ecx, 1
jne 0x423870
mov eax, dword [ebp + 0xc]
pop edi
pop esi
mov esp, ebp
pop ebp
ret