Function at 0x1020c440
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
mov edx, ecx
push esi
mov ecx, dword [edx + 0x2c]
mov esi, dword [ebp + 0x10]
dec ecx
push edi
mov edi, dword [ebp + 8]
mov dword [ebp - 4], edx
mov dword [ebp - 0x10], ecx
cmp ecx, dword [edx + 0x17c]
jl 0x1020c656
xorps xmm3, xmm3
lea esp, [esp]
mov eax, dword [edx + 0x120]
mov eax, dword [eax + ecx*4]
mov dword [ebp - 0xc], eax
movsd xmm1, qword [edi + eax*8]
movsd xmm0, qword [esi + eax*8]
mov eax, dword [edx + 0x110]
ucomisd xmm1, xmm3
mov ecx, dword [eax + ecx*4]
lahf
mov dword [ebp - 8], ecx
test ah, 0x44
jp 0x1020c545
ucomisd xmm0, xmm3
lahf
test ah, 0x44
jp 0x1020c4bf
mov eax, dword [ebp + 0xc]
movsd qword [eax + ecx*8], xmm3
mov eax, dword [ebp + 0x14]
movsd qword [eax + ecx*8], xmm3
jmp 0x1020c643
mov eax, dword [edx + 0x10c]
mov edi, dword [ebp - 0xc]
movsd xmm2, qword [eax + edi*8]
mov eax, dword [edx + 0xe0]
mov edi, dword [ebp - 8]
mov ecx, dword [eax + ecx*4]
mov eax, dword [edx + 0xec]
mulsd xmm2, xmm0
lea edx, [eax + ecx*4]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe4]
mov eax, dword [eax + edi*4]
lea edi, [edx + eax*4]
mov eax, dword [ebp - 4]
mov dword [ebp - 0xc], edi
mov eax, dword [eax + 0xe8]
cmp edx, edi
mov edi, dword [ebp + 8]
lea ecx, [eax + ecx*8]
je 0x1020c535
mov edi, dword [ebp - 0xc]
mov edi, edi
mov eax, dword [edx]
movapd xmm1, xmm2
mulsd xmm1, qword [ecx]
movsd xmm0, qword [esi + eax*8]
add edx, 4
add ecx, 8
subsd xmm0, xmm1
movsd qword [esi + eax*8], xmm0
cmp edx, edi
jne 0x1020c510
mov edi, dword [ebp + 8]
mov eax, dword [ebp - 8]
mov ecx, dword [ebp + 0xc]
movsd qword [ecx + eax*8], xmm3
jmp 0x1020c638
mov esi, dword [ebp - 0xc]
ucomisd xmm0, xmm3
lahf
test ah, 0x44
mov eax, dword [edx + 0x10c]
movsd xmm2, qword [eax + esi*8]
mov eax, dword [edx + 0xe0]
mov esi, dword [ebp - 8]
mov ecx, dword [eax + ecx*4]
mov eax, dword [edx + 0xec]
lea edx, [eax + ecx*4]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0xe4]
mov eax, dword [eax + esi*4]
lea esi, [edx + eax*4]
mov eax, dword [ebp - 4]
mov dword [ebp - 0xc], esi
mov eax, dword [eax + 0xe8]
lea ecx, [eax + ecx*8]
jp 0x1020c5da
cmp edx, esi
mov esi, dword [ebp + 0x10]
mulsd xmm2, xmm1
je 0x1020c5c5
mov esi, dword [ebp - 0xc]
mov edi, edi
mov eax, dword [edx]
movapd xmm1, xmm2
mulsd xmm1, qword [ecx]
movsd xmm0, qword [edi + eax*8]
add edx, 4
add ecx, 8
subsd xmm0, xmm1
movsd qword [edi + eax*8], xmm0
cmp edx, esi
jne 0x1020c5a0
mov esi, dword [ebp + 0x10]
mov eax, dword [ebp - 8]
mov ecx, dword [ebp + 0xc]
movsd qword [ecx + eax*8], xmm2
mov ecx, dword [ebp + 0x14]
movsd qword [ecx + eax*8], xmm3
jmp 0x1020c640
movapd xmm4, xmm2
cmp edx, esi
mov esi, dword [ebp + 0x10]
mulsd xmm4, xmm1
mulsd xmm2, xmm0
je 0x1020c62d
lea ecx, [ecx]
mov eax, dword [edx]
movapd xmm1, xmm4
mulsd xmm1, qword [ecx]
movsd xmm0, qword [edi + eax*8]
add edx, 4
add ecx, 8
subsd xmm0, xmm1
movapd xmm1, xmm2
movsd qword [edi + eax*8], xmm0
mulsd xmm1, qword [ecx - 8]
mov eax, dword [edx - 4]
movsd xmm0, qword [esi + eax*8]
subsd xmm0, xmm1
movsd qword [esi + eax*8], xmm0
cmp edx, dword [ebp - 0xc]
jne 0x1020c5f0
mov eax, dword [ebp - 8]
mov ecx, dword [ebp + 0xc]
movsd qword [ecx + eax*8], xmm4
mov ecx, dword [ebp + 0x14]
movsd qword [ecx + eax*8], xmm2
mov edx, dword [ebp - 4]
mov ecx, dword [ebp - 0x10]
dec ecx
mov dword [ebp - 0x10], ecx
cmp ecx, dword [edx + 0x17c]
jge 0x1020c470
mov ecx, dword [edx + 0x17c]
dec ecx
mov dword [ebp + 8], ecx
js 0x1020c6b3
movsd xmm1, qword [0x1028cdd0]
lea ebx, [ebx]
mov eax, dword [edx + 0x120]
mov esi, dword [ebp + 8]
mov ecx, dword [eax + ecx*4]
mov eax, dword [edx + 0x110]
movsd xmm0, qword [edi + ecx*8]
mov eax, dword [eax + esi*4]
mov esi, dword [ebp + 0xc]
xorpd xmm0, xmm1
movsd qword [esi + eax*8], xmm0
mov esi, dword [ebp + 0x10]
movsd xmm0, qword [esi + ecx*8]
mov ecx, dword [ebp + 0x14]
xorpd xmm0, xmm1
movsd qword [ecx + eax*8], xmm0
mov ecx, dword [ebp + 8]
dec ecx
mov dword [ebp + 8], ecx
jns 0x1020c670
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x10