Function at 0x10195b85
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x30
mov edx, dword [ebp + 0x14]
mov eax, 0xff000000
push ebx
mov ebx, dword [ebp + 0x10]
or edx, eax
push edi
mov edi, dword [ebp + 8]
or ebx, eax
xor eax, eax
mov dword [ebp - 4], eax
cmp dword [edi + 0x14], eax
jne 0x10195bcb
push dword [ebp + 0x18]
mov eax, 0xffffff
mov byte [edi + 0x28], 1
and edx, eax
and ebx, eax
push edx
push ebx
push dword [ebp + 0xc]
push dword [edi + 0x10]
call fcn.102ce363
jmp 0x101962e1
mov eax, ebx
shr eax, 0x10
movzx ecx, al
movzx eax, bl
shl eax, 0x10
or ecx, eax
mov eax, ebx
push esi
mov esi, 0xff00ff00
and eax, esi
or ecx, eax
mov eax, edx
shr eax, 0x10
mov dword [ebp + 0x10], ecx
movzx ecx, al
movzx eax, dl
and edx, esi
mov esi, dword [ebp + 0xc]
shl eax, 0x10
or ecx, eax
or ecx, edx
cmp byte [ebp + 0x18], 0
mov dword [ebp + 0x14], ecx
je 0x10195c11
mov eax, dword [esi + 8]
sub eax, dword [esi]
jmp 0x10195c17
mov eax, dword [esi + 0xc]
sub eax, dword [esi + 4]
test eax, eax
je 0x101962e0
movsd xmm0, qword [0x10341e30]
movd xmm1, eax
cvtdq2pd xmm1, xmm1
shr eax, 0x1f
push ecx
push ecx
addsd xmm1, qword [eax*8 + 0x10335e70]
divsd xmm0, xmm1
movsd qword [esp], xmm0
call fcn.101971c9
mov dword [ebp + 0xc], eax
test eax, eax
jne 0x10195c61
push 1
push ebx
push esi
push edi
call fcn.10195a10
jmp 0x101962e0
mov ecx, dword [esi]
mov eax, dword [esi + 8]
mov edx, dword [esi + 4]
sub eax, ecx
add ecx, dword [edi + 8]
mov dword [ebp - 0x28], eax
mov eax, dword [esi + 0xc]
sub eax, edx
mov dword [ebp - 0x14], ecx
add edx, dword [edi + 0xc]
mov dword [ebp - 0x24], eax
lea eax, [ebp - 0x30]
push eax
push edi
mov dword [ebp - 0x30], ecx
mov dword [ebp - 0x10], edx
mov dword [ebp - 0x2c], edx
call fcn.10194f6b
mov edi, dword [ebp - 0x28]
test edi, edi
jle 0x101962e0
mov esi, dword [ebp - 0x24]
mov dword [ebp - 0xc], esi
test esi, esi
jle 0x101962e0
mov ebx, dword [ebp + 8]
mov ecx, ebx
call fcn.10196fa2
mov ecx, dword [ebx]
imul ecx, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x30]
add ecx, edx
lea ebx, [eax + ecx*4]
mov ecx, dword [ebp + 0x10]
mov eax, ecx
mov dword [ebp - 8], ebx
shr eax, 0x18
cmp al, 0xff
jne 0x10195f2f
mov eax, dword [ebp + 0x14]
shr eax, 0x18
cmp al, 0xff
jne 0x10195f2f
cmp byte [ebp + 0x18], 0
mov eax, 0x10000
je 0x10195e2e
sub edx, dword [ebp - 0x14]
mov ecx, eax
imul edx, dword [ebp + 0xc]
push 4
cmp edx, eax
mov eax, edi
cmovl ecx, edx
mov dword [ebp + 0x18], ecx
xor ecx, ecx
pop edx
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.100dcabd
mov dword [ebp - 0xc], eax
pop ecx
test eax, eax
je 0x101962e0
mov eax, 0x10000
mov ecx, edi
sub eax, dword [ebp + 0x18]
cdq
idiv dword [ebp + 0xc]
cmp eax, edi
cmovl ecx, eax
mov dword [ebp - 0x18], ecx
test ecx, ecx
jle 0x10195de4
mov ecx, dword [ebp + 0x10]
mov eax, 0xff00ff
mov edx, dword [ebp + 0x14]
mov ebx, ecx
mov esi, edx
shr ebx, 8
and ebx, eax
shr esi, 8
and ecx, eax
mov dword [ebp - 0x14], ebx
and esi, eax
mov dword [ebp + 0x10], ecx
sub esi, ebx
and edx, eax
mov ebx, dword [ebp - 0xc]
sub edx, ecx
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp + 0x18]
mov dword [ebp - 0x10], esi
xor esi, esi
mov edi, dword [ebp - 0x10]
mov dword [ebp - 4], edx
mov edx, ecx
sar edx, 8
mov ecx, edx
imul ecx, edi
add ecx, 0x800080
sar ecx, 8
add ecx, eax
mov eax, edx
imul eax, dword [ebp - 4]
imul edx, edi
shl ecx, 8
add eax, 0x800080
sar eax, 8
add edx, 0x800080
add eax, dword [ebp + 0x10]
xor ecx, eax
sar edx, 8
mov eax, dword [ebp - 0x14]
and ecx, 0xff00ff
add edx, eax
shl edx, 8
xor ecx, edx
mov dword [ebx + esi*4], ecx
mov ecx, dword [ebp + 0x18]
add ecx, dword [ebp + 0xc]
inc esi
mov dword [ebp + 0x18], ecx
cmp esi, dword [ebp - 0x18]
jl 0x10195d7f
mov ebx, dword [ebp - 8]
mov edi, dword [ebp - 0x28]
mov dword [ebp - 4], esi
mov esi, dword [ebp - 0x24]
mov edx, dword [ebp - 4]
cmp edx, edi
jge 0x10195dfd
mov eax, dword [ebp + 0x14]
mov ecx, edi
mov edi, dword [ebp - 0xc]
sub ecx, edx
lea edi, [edi + edx*4]
rep stosd dword es:[edi], eax
mov edi, dword [ebp - 0x28]
mov eax, edi
shl eax, 2
mov dword [ebp + 0x18], eax
test esi, esi
jle 0x10195e26
mov edi, dword [ebp + 8]
push eax
push dword [ebp - 0xc]
push ebx
call fcn.1027ad2a
mov eax, dword [edi]
add esp, 0xc
lea ebx, [ebx + eax*4]
mov eax, dword [ebp + 0x18]
sub esi, 1
jne 0x10195e0c
push dword [ebp - 0xc]
jmp 0x101960f4
mov edx, dword [ebp - 0x2c]
mov ebx, eax
sub edx, dword [ebp - 0x10]
imul edx, dword [ebp + 0xc]
cmp edx, eax
cmovl ebx, edx
sub eax, ebx
mov dword [ebp + 0x18], ebx
cdq
idiv dword [ebp + 0xc]
mov ebx, dword [ebp - 8]
mov edx, esi
cmp eax, esi
cmovl edx, eax
mov dword [ebp - 0x14], edx
test edx, edx
jle 0x10195f00
mov eax, ecx
mov edx, 0xff00ff
shr eax, 8
and ecx, edx
and eax, edx
mov dword [ebp + 0x10], ecx
mov dword [ebp - 0xc], eax
mov eax, dword [ebp + 0x14]
mov esi, eax
shr esi, 8
and eax, edx
and esi, edx
sub esi, dword [ebp - 0xc]
sub eax, ecx
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x14]
mov dword [ebp - 8], esi
mov esi, dword [ebp + 8]
mov dword [ebp - 4], eax
mov ecx, dword [ebp + 0x18]
sar ecx, 8
mov eax, ecx
imul eax, dword [ebp - 8]
add eax, 0x800080
sar eax, 8
add eax, dword [ebp - 0xc]
shl eax, 8
mov dword [ebp - 0x10], eax
mov eax, ecx
imul eax, dword [ebp - 0x18]
imul ecx, dword [ebp - 8]
add eax, 0x800080
sar eax, 8
add ecx, 0x800080
add eax, dword [ebp + 0x10]
xor dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x10]
sar ecx, 8
and eax, edx
add ecx, dword [ebp - 0xc]
shl ecx, 8
xor eax, ecx
test edi, edi
jle 0x10195ee9
mov ecx, edi
mov edi, ebx
rep stosd dword es:[edi], eax
mov edi, dword [ebp - 0x28]
mov eax, dword [ebp + 0x18]
add eax, dword [ebp + 0xc]
sub dword [ebp - 0x14], 1
mov dword [ebp + 0x18], eax
mov eax, dword [esi]
lea ebx, [ebx + eax*4]
jne 0x10195e91
mov esi, dword [ebp - 0x24]
mov eax, dword [ebp - 4]
cmp eax, esi
jge 0x101962e0
sub esi, eax
test edi, edi
jle 0x10195f1d
mov eax, dword [ebp + 0x14]
mov ecx, edi
mov edi, ebx
rep stosd dword es:[edi], eax
mov edi, dword [ebp - 0x28]
mov eax, dword [ebp + 8]
mov eax, dword [eax]
lea ebx, [ebx + eax*4]
sub esi, 1
jne 0x10195f0d
jmp 0x101962e0
cmp byte [ebp + 0x18], 0
mov eax, 0x10000
je 0x101960ff
sub edx, dword [ebp - 0x14]
mov ecx, eax
imul edx, dword [ebp + 0xc]
push 4
cmp edx, eax
mov eax, edi
cmovl ecx, edx
mov dword [ebp + 0x18], ecx
xor ecx, ecx
pop edx
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.100dcabd
mov dword [ebp - 0x10], eax
pop ecx
test eax, eax
je 0x101962e0
mov eax, 0x10000
mov ecx, edi
sub eax, dword [ebp + 0x18]
cdq
idiv dword [ebp + 0xc]
cmp eax, edi
cmovl ecx, eax
mov eax, 0xff00ff
mov dword [ebp - 0x1c], ecx
test ecx, ecx
jle 0x10196030
mov ecx, dword [ebp + 0x10]
mov ebx, ecx
mov edx, dword [ebp + 0x14]
and ecx, eax
mov edi, dword [ebp + 0xc]
mov esi, edx
shr ebx, 8
and edx, eax
and ebx, eax
shr esi, 8
and esi, eax
mov dword [ebp - 0x14], ebx
mov eax, dword [ebp - 0x14]
sub esi, ebx
sub edx, ecx
mov dword [ebp - 0x18], esi
mov ebx, esi
xor esi, esi
mov dword [ebp + 0x10], ecx
mov ecx, dword [ebp + 0x18]
mov dword [ebp - 4], edx
mov edx, ecx
sar edx, 8
mov ecx, edx
imul ecx, ebx
add ecx, 0x800080
sar ecx, 8
add ecx, eax
mov eax, edx
imul eax, dword [ebp - 4]
imul edx, ebx
shl ecx, 8
add eax, 0x800080
sar eax, 8
add edx, 0x800080
add eax, dword [ebp + 0x10]
xor ecx, eax
sar edx, 8
mov eax, dword [ebp - 0x14]
and ecx, 0xff00ff
add edx, eax
shl edx, 8
xor ecx, edx
mov edx, dword [ebp - 0x10]
mov dword [edx + esi*4], ecx
mov ecx, dword [ebp + 0x18]
add ecx, edi
inc esi
mov dword [ebp + 0x18], ecx
cmp esi, dword [ebp - 0x1c]
jl 0x10195fc9
mov ebx, dword [ebp - 8]
mov edi, dword [ebp - 0x28]
mov dword [ebp - 4], esi
mov esi, dword [ebp - 0x24]
mov edx, dword [ebp - 4]
cmp edx, edi
jge 0x10196049
mov eax, dword [ebp + 0x14]
mov ecx, edi
mov edi, dword [ebp - 0x10]
sub ecx, edx
lea edi, [edi + edx*4]
rep stosd dword es:[edi], eax
mov edi, dword [ebp - 0x28]
test esi, esi
jle 0x101960f1
test edi, edi
jle 0x101960da
mov eax, dword [ebp - 0x10]
mov edx, edi
sub eax, ebx
mov dword [ebp + 0xc], ebx
mov edi, ebx
mov dword [ebp + 0x10], eax
mov dword [ebp + 0x18], edx
mov ebx, eax
mov ecx, dword [ebx + edi]
mov eax, ecx
shr eax, 0x18
mov dword [ebp + 0xc], ecx
cmp eax, 0xff
jne 0x10196083
mov dword [edi], ecx
jmp 0x101960c6
test eax, eax
je 0x101960c6
mov ecx, dword [edi]
mov esi, 0xff
sub esi, eax
mov edx, ecx
and edx, 0xff00ff
mov eax, ecx
imul edx, esi
shr eax, 8
and eax, 0xffff00ff
shr ecx, 8
imul eax, esi
shr edx, 8
xor edx, eax
mov eax, 0xff00ff
and ecx, eax
and edx, eax
imul ecx, esi
xor edx, ecx
add edx, dword [ebp + 0xc]
mov dword [edi], edx
mov edx, dword [ebp + 0x18]
add edi, 4
sub edx, 1
mov dword [ebp + 0x18], edx
jne 0x1019606d
mov ebx, dword [ebp - 8]
mov esi, dword [ebp - 0xc]
mov edi, dword [ebp - 0x28]
mov eax, dword [ebp + 8]
sub esi, 1
mov dword [ebp - 0xc], esi
mov eax, dword [eax]
lea ebx, [ebx + eax*4]
mov dword [ebp - 8], ebx
jne 0x10196051
push dword [ebp - 0x10]
call fcn.102a9552
pop ecx
jmp 0x101962e0
mov edx, dword [ebp - 0x2c]
mov ebx, eax
sub edx, dword [ebp - 0x10]
imul edx, dword [ebp + 0xc]
cmp edx, eax
cmovl ebx, edx
sub eax, ebx
mov dword [ebp + 0x18], ebx
cdq
idiv dword [ebp + 0xc]
mov ebx, dword [ebp - 8]
mov edx, esi
cmp eax, esi
cmovl edx, eax
mov eax, 0xff00ff
mov dword [ebp - 0x10], edx
xor edx, edx
cmp dword [ebp - 0x10], edx
jle 0x10196245
mov edx, ecx
and ecx, eax
shr edx, 8
and edx, eax
mov dword [ebp + 0x10], ecx
mov dword [ebp - 0x14], edx
mov edx, dword [ebp + 0x14]
mov esi, edx
shr esi, 8
and edx, eax
and esi, eax
mov eax, dword [ebp - 0x10]
sub esi, dword [ebp - 0x14]
sub edx, ecx
mov dword [ebp - 0x1c], edx
mov edx, ecx
mov dword [ebp - 0xc], esi
mov dword [ebp - 0x20], eax
mov ecx, dword [ebp + 0x18]
sar ecx, 8
mov esi, ecx
mov eax, ecx
imul esi, dword [ebp - 0xc]
imul eax, dword [ebp - 0x1c]
imul ecx, dword [ebp - 0xc]
add esi, 0x800080
sar esi, 8
add eax, 0x800080
add esi, dword [ebp - 0x14]
add ecx, 0x800080
sar eax, 8
shl esi, 8
add eax, edx
sar ecx, 8
xor esi, eax
add ecx, dword [ebp - 0x14]
mov eax, 0xff00ff
shl ecx, 8
and esi, eax
xor esi, ecx
xor ecx, ecx
mov dword [ebp - 0x18], esi
mov dword [ebp - 8], ecx
test edi, edi
jle 0x1019621f
mov edx, esi
shr edx, 0x18
mov dword [ebp - 4], edx
cmp edx, 0xff
jne 0x101961ce
mov dword [ebx + ecx*4], esi
jmp 0x10196214
test edx, edx
je 0x10196214
mov ecx, dword [ebx + ecx*4]
mov esi, 0xff
sub esi, edx
mov edx, ecx
and edx, eax
mov eax, ecx
imul edx, esi
shr eax, 8
and eax, 0xffff00ff
shr ecx, 8
imul eax, esi
shr edx, 8
xor edx, eax
mov eax, 0xff00ff
and ecx, eax
and edx, eax
imul ecx, esi
mov esi, dword [ebp - 0x18]
xor edx, ecx
mov ecx, dword [ebp - 8]
add edx, esi
mov dword [ebx + ecx*4], edx
mov edx, dword [ebp - 4]
inc ecx
mov dword [ebp - 8], ecx
cmp ecx, edi
jl 0x101961c1
mov edx, dword [ebp + 0x10]
mov eax, dword [ebp + 0x18]
add eax, dword [ebp + 0xc]
sub dword [ebp - 0x10], 1
mov dword [ebp + 0x18], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax]
lea ebx, [ebx + eax*4]
jne 0x10196164
mov esi, dword [ebp - 0x24]
mov eax, 0xff00ff
mov edx, dword [ebp - 0x20]
cmp edx, esi
jge 0x101962e0
sub esi, edx
mov dword [ebp - 0xc], esi
xor edx, edx
mov dword [ebp + 0x18], edx
test edi, edi
jle 0x101962c7
mov ecx, dword [ebp + 0x14]
mov esi, ecx
shr esi, 0x18
mov dword [ebp + 0xc], esi
cmp esi, 0xff
jne 0x10196273
mov dword [ebx + edx*4], ecx
jmp 0x101962bc
test esi, esi
je 0x101962bc
mov ecx, dword [ebx + edx*4]
mov esi, 0xff
sub esi, dword [ebp + 0xc]
mov edx, ecx
and edx, eax
mov eax, ecx
imul edx, esi
shr eax, 8
and eax, 0xffff00ff
shr ecx, 8
imul eax, esi
shr edx, 8
xor edx, eax
mov eax, 0xff00ff
and ecx, eax
and edx, eax
imul ecx, esi
mov esi, dword [ebp + 0x18]
xor edx, ecx
mov ecx, dword [ebp + 0x14]
add edx, ecx
mov dword [ebx + esi*4], edx
mov edx, esi
mov esi, dword [ebp + 0xc]
inc edx
mov dword [ebp + 0x18], edx
cmp edx, edi
jl 0x10196266
mov esi, dword [ebp - 0xc]
mov eax, dword [ebp + 8]
sub esi, 1
mov dword [ebp - 0xc], esi
mov eax, dword [eax]
lea ebx, [ebx + eax*4]
mov eax, 0xff00ff
jne 0x10196252
pop esi
pop edi
pop ebx
mov esp, ebp
pop ebp
ret 0x14