Function at 0x49c3a0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x70
mov eax, dword [0x79a200]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov esi, dword [ebp + 8]
mov eax, 1
mov dword [ebp - 0x18], eax
push edi
push 3
movzx eax, word [esi + 0x66b6]
mov dword [ebp - 0x70], eax
mov dword [ebp - 0x14], eax
neg eax
push esi
mov dword [ebp - 0x38], esi
mov dword [ebp - 0x10], 0xffffffff
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], 1
call fcn.004863f0
add esp, 8
cmp dword [esi + 0xbc], 0
je 0x49c40d
push str.PPG_interpolation..._n
push 2
call fcn.006a8221
add esp, 4
push eax
call fcn.0040dea0
add esp, 8
movzx eax, word [esi + 0x66b4]
mov ecx, 3
mov edx, eax
mov dword [ebp - 0x1c], ecx
sub eax, ecx
cmp eax, ecx
jle 0x49c649
movzx edi, word [esi + 0x66b6]
lea eax, [edi - 3]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x4c]
mov dword [ebp - 0x30], eax
mov eax, dword [esi + 0x65b0]
mov edx, ecx
and edx, 7
mov dword [ebp - 0x28], eax
mov ebx, eax
lea ecx, [edx*4 + 2]
shr ebx, cl
and ebx, 1
add ebx, 3
mov eax, ebx
mov dword [ebp - 0x24], ebx
and eax, 1
lea ecx, [eax + edx*2]
mov eax, dword [ebp - 0x28]
add ecx, ecx
shr eax, cl
and eax, 3
mov dword [ebp - 0x28], eax
cmp ebx, dword [ebp - 0x20]
jge 0x49c62e
lea edx, [eax + eax]
movzx ecx, di
mov dword [ebp - 0x44], edx
nop word [eax + eax]
mov eax, dword [esi + 0x66e0]
movzx ecx, cx
imul ecx, dword [ebp - 0x1c]
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x30], 0
add ecx, ebx
lea edi, [eax + ecx*8]
mov ecx, 1
movzx eax, word [edx + edi]
mov dword [ebp - 0x34], edi
mov dword [ebp - 0x2c], ecx
mov dword [ebp - 0x60], eax
shl ecx, 3
mov eax, ecx
neg eax
movzx edx, word [ecx + edi + 2]
mov dword [ebp - 0x50], edx
movzx esi, word [eax + edi + 2]
add eax, dword [ebp - 0x28]
movzx ebx, word [edi + eax*2]
mov eax, dword [ebp - 0x28]
add eax, ecx
movzx ecx, word [edi + eax*2]
mov eax, dword [ebp - 0x60]
add eax, edx
mov edi, dword [ebp - 0x30]
add eax, esi
add eax, eax
sub eax, ebx
sub ebx, dword [ebp - 0x60]
sub eax, ecx
mov dword [ebp - 0x5c], ebx
sub ecx, dword [ebp - 0x60]
mov dword [ebp + edi - 0x6c], eax
mov eax, esi
sub eax, edx
mov edi, dword [ebp - 0x34]
mov dword [ebp - 0x54], eax
mov edx, ecx
sar eax, 0x1f
mov dword [ebp - 0x3c], eax
mov eax, ebx
sar eax, 0x1f
mov dword [ebp - 0x64], eax
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x58], ecx
sar edx, 0x1f
lea ecx, [eax + eax*2]
mov eax, edi
shl ecx, 3
sub eax, ecx
mov ecx, dword [ebp - 0x3c]
xor ecx, dword [ebp - 0x54]
movzx ebx, word [eax + 2]
sub ebx, esi
mov eax, ebx
sar eax, 0x1f
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x2c]
lea eax, [eax + eax*2]
movzx edi, word [edi + eax*8 + 2]
mov eax, edx
xor eax, dword [ebp - 0x58]
sub edi, dword [ebp - 0x50]
add ecx, eax
mov eax, dword [ebp - 0x64]
mov esi, edi
xor eax, dword [ebp - 0x5c]
add ecx, eax
sar esi, 0x1f
sub ecx, edx
mov eax, esi
sub ecx, dword [ebp - 0x64]
xor eax, edi
sub ecx, dword [ebp - 0x3c]
mov edi, dword [ebp - 0x34]
lea edx, [ecx + ecx*2]
mov ecx, dword [ebp - 0x40]
xor ecx, ebx
add ecx, eax
sub ecx, esi
sub ecx, dword [ebp - 0x40]
lea eax, [edx + ecx*2]
mov ecx, dword [ebp - 0x30]
mov dword [ebp + ecx - 0x4c], eax
mov eax, dword [ebp - 0x20]
inc eax
mov dword [ebp - 0x20], eax
shl eax, 2
mov dword [ebp - 0x30], eax
mov ecx, dword [ebp + eax - 0x18]
test ecx, ecx
mov dword [ebp - 0x2c], ecx
jg 0x49c4c2
mov ecx, dword [ebp - 0x4c]
xor edx, edx
mov eax, dword [ebp - 0x48]
mov esi, edi
cmp ecx, eax
mov dword [ebp - 0x2c], eax
mov eax, 4
mov dword [ebp - 0x30], ecx
cmovg edx, eax
mov eax, dword [ebp + edx - 0x18]
mov edx, dword [ebp + edx - 0x6c]
sar edx, 2
lea ecx, [eax*8]
mov eax, esi
movzx ebx, word [ecx + esi + 2]
sub eax, ecx
movzx eax, word [eax + 2]
cmp bx, ax
jae 0x49c5ee
mov edi, eax
mov ecx, ebx
jmp 0x49c5f2
mov edi, ebx
mov ecx, eax
cmp edx, edi
mov eax, edx
cmovge eax, edi
cmp ecx, eax
jg 0x49c604
cmp edx, edi
mov ecx, edi
cmovl ecx, edx
mov ebx, dword [ebp - 0x24]
mov edx, dword [ebp - 0x44]
add ebx, 2
mov word [esi + 2], cx
mov esi, dword [ebp - 0x38]
mov dword [ebp - 0x24], ebx
movzx edi, word [esi + 0x66b6]
mov ecx, edi
lea eax, [edi - 3]
mov dword [ebp - 0x20], eax
cmp ebx, eax
jl 0x49c490
movzx edx, word [esi + 0x66b4]
mov ecx, dword [ebp - 0x1c]
inc ecx
mov dword [ebp - 0x1c], ecx
lea eax, [edx - 3]
cmp ecx, eax
jl 0x49c441
jmp 0x49c655
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x4c]
mov dword [ebp - 0x30], eax
movzx eax, dx
mov ecx, 1
dec eax
mov dword [ebp - 0x1c], ecx
movzx edi, dx
cmp eax, ecx
jle 0x49c775
nop dword [eax]
mov edi, dword [esi + 0x65b0]
mov edx, ecx
and edx, 7
mov eax, edi
lea ecx, [edx*4]
shr eax, cl
and eax, 1
lea ecx, [eax + edx*2]
add ecx, ecx
lea ebx, [eax + 1]
shr edi, cl
movzx ecx, word [esi + 0x66b6]
and edi, 3
mov dword [ebp - 0x20], ebx
lea eax, [ecx - 1]
cmp ebx, eax
jge 0x49c75a
nop dword [eax + eax]
mov eax, dword [esi + 0x66e0]
movzx ecx, cx
imul ecx, dword [ebp - 0x1c]
add ecx, ebx
lea ebx, [eax + ecx*8]
mov eax, 1
lea ecx, [ebp - 0x18]
mov dword [ebp - 0x24], ecx
nop dword [eax]
lea ecx, [eax*4]
mov dword [ebp - 0x44], edi
lea edx, [eax*8]
lea eax, [ecx + edi]
movzx esi, word [ebx + eax*2]
mov eax, edi
sub eax, ecx
movzx eax, word [ebx + eax*2]
add esi, eax
mov eax, ebx
sub eax, edx
movzx eax, word [eax + 2]
sub esi, eax
movzx eax, word [edx + ebx + 2]
sub esi, eax
movzx eax, word [ebx + 2]
lea eax, [esi + eax*2]
sar eax, 1
cmp eax, 0xffff
jge 0x49c71c
xor ecx, ecx
test eax, eax
cmovs eax, ecx
jmp 0x49c721
mov eax, 0xffff
mov word [ebx + edi*2], ax
mov edi, 2
mov eax, dword [ebp - 0x24]
sub edi, dword [ebp - 0x44]
add eax, 4
mov dword [ebp - 0x24], eax
mov eax, dword [eax]
test eax, eax
jg 0x49c6d0
mov esi, dword [ebp - 0x38]
mov ebx, dword [ebp - 0x20]
add ebx, 2
mov dword [ebp - 0x20], ebx
movzx eax, word [esi + 0x66b6]
mov ecx, eax
dec eax
cmp ebx, eax
jl 0x49c6b0
movzx edx, word [esi + 0x66b4]
mov ecx, dword [ebp - 0x1c]
inc ecx
mov dword [ebp - 0x1c], ecx
lea eax, [edx - 1]
cmp ecx, eax
jl 0x49c670
mov edi, edx
movzx eax, di
mov ecx, 1
dec eax
mov dword [ebp - 0x28], ecx
cmp eax, ecx
jle 0x49c959
movzx edi, word [esi + 0x66b6]
lea eax, [edi - 1]
mov dword [ebp - 0x24], eax
nop word [eax + eax]
mov esi, dword [esi + 0x65b0]
mov edx, ecx
and edx, 7
mov ebx, esi
lea ecx, [edx*4 + 2]
shr ebx, cl
and ebx, 1
inc ebx
mov eax, ebx
mov dword [ebp - 0x3c], ebx
and eax, 1
lea ecx, [eax + edx*2]
mov edx, 2
add ecx, ecx
shr esi, cl
and esi, 3
sub edx, esi
mov esi, dword [ebp - 0x38]
mov dword [ebp - 0x34], edx
cmp ebx, dword [ebp - 0x24]
jge 0x49c942
movzx ecx, di
nop word [eax + eax]
mov eax, dword [esi + 0x66e0]
mov esi, dword [ebp - 0x70]
movzx ecx, cx
inc esi
imul ecx, dword [ebp - 0x28]
mov dword [ebp - 0x24], 0
add ecx, ebx
lea edi, [eax + ecx*8]
mov dword [ebp - 0x40], edi
test esi, esi
jle 0x49c8e2
movzx eax, word [edi + 2]
mov dword [ebp - 0x44], eax
add eax, eax
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x20], 0
nop dword [eax + eax]
mov eax, dword [ebp - 0x34]
lea ecx, [esi*4]
add eax, ecx
sub edx, ecx
movzx ecx, word [edi + eax*2]
movzx edx, word [edi + edx*2]
mov eax, edx
mov dword [ebp - 0x50], ecx
sub eax, ecx
mov dword [ebp - 0x58], edx
mov dword [ebp - 0x1c], eax
lea ecx, [esi*8]
sar eax, 0x1f
mov dword [ebp - 0x5c], eax
mov eax, edi
movzx edi, word [ecx + edi + 2]
sub eax, ecx
mov ecx, edi
sub ecx, dword [ebp - 0x44]
movzx ebx, word [eax + 2]
mov eax, ecx
sar eax, 0x1f
mov edx, ebx
sub edx, dword [ebp - 0x44]
xor ecx, eax
mov esi, edx
sar esi, 0x1f
xor edx, esi
add ecx, edx
mov edx, dword [ebp - 0x5c]
xor dword [ebp - 0x1c], edx
add ecx, dword [ebp - 0x1c]
sub ecx, eax
mov eax, dword [ebp - 0x58]
sub eax, ebx
sub ecx, esi
sub eax, edi
sub ecx, edx
mov edx, dword [ebp - 0x20]
add eax, dword [ebp - 0x54]
add eax, dword [ebp - 0x50]
mov edi, dword [ebp - 0x40]
mov dword [ebp + edx - 0x6c], eax
mov eax, dword [ebp - 0x24]
inc eax
mov dword [ebp + edx - 0x4c], ecx
mov edx, dword [ebp - 0x34]
mov dword [ebp - 0x24], eax
shl eax, 2
mov dword [ebp - 0x20], eax
mov esi, dword [ebp + eax - 0x14]
add esi, dword [ebp + eax - 0x18]
test esi, esi
jg 0x49c830
mov ecx, dword [ebp - 0x48]
mov esi, dword [ebp - 0x4c]
mov ebx, dword [ebp - 0x3c]
mov dword [ebp - 0x2c], ecx
mov dword [ebp - 0x30], esi
jmp 0x49c8e8
mov ecx, dword [ebp - 0x2c]
mov esi, dword [ebp - 0x30]
cmp esi, ecx
je 0x49c900
xor eax, eax
cmp esi, ecx
mov ecx, 4
cmovg eax, ecx
mov eax, dword [ebp + eax - 0x6c]
sar eax, 1
jmp 0x49c909
mov eax, dword [ebp - 0x6c]
add eax, dword [ebp - 0x68]
sar eax, 2
cmp eax, 0xffff
jge 0x49c919
xor ecx, ecx
test eax, eax
cmovs eax, ecx
jmp 0x49c91e
mov eax, 0xffff
mov esi, dword [ebp - 0x38]
add ebx, 2
mov word [edi + edx*2], ax
mov dword [ebp - 0x3c], ebx
movzx edi, word [esi + 0x66b6]
mov ecx, edi
lea eax, [edi - 1]
mov dword [ebp - 0x24], eax
cmp ebx, eax
jl 0x49c7f0
mov ecx, dword [ebp - 0x28]
movzx eax, word [esi + 0x66b4]
inc ecx
dec eax
mov dword [ebp - 0x28], ecx
cmp ecx, eax
jl 0x49c7a0
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0068d76f
mov esp, ebp
pop ebp
ret