Function at 0x4e7ba0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x68
mov eax, dword [0x641a90]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov edi, ecx
mov dword [ebp - 0x18], 1
push 3
mov dword [ebp - 0x3c], edi
mov dword [ebp - 0x10], 0xffffffff
movzx eax, word [edi + 0x44aa]
mov dword [ebp - 0x14], eax
neg eax
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], 1
call fcn.004ca860
cmp dword [edi + 0x24610], 0
je 0x4e7c02
push str.PPG_interpolation..._n
call fcn.00592f31
add eax, 0x40
push eax
call fcn.0059320e
add esp, 8
movzx eax, word [edi + 0x44a8]
mov ecx, 3
sub eax, ecx
mov dword [ebp - 0x1c], ecx
cmp eax, ecx
jle 0x4e7e12
movzx esi, word [edi + 0x44aa]
mov eax, dword [edi + 0x388]
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 edx, dword [ebp - 0x28]
add ecx, ecx
lea eax, [esi - 3]
shr edx, cl
and edx, 3
mov dword [ebp - 0x28], edx
cmp ebx, eax
jge 0x4e7df9
jmp 0x4e7c70
imul esi, dword [ebp - 0x1c]
mov ecx, 1
mov eax, dword [edi + 0x44c0]
mov dword [ebp - 0x44], 0
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x30], 0
add esi, ebx
lea ebx, [eax + esi*8]
movzx eax, word [ebx + edx*2]
mov dword [ebp - 0x2c], ebx
mov dword [ebp - 0x34], eax
jmp 0x4e7ca4
mov ebx, dword [ebp - 0x2c]
shl ecx, 3
mov eax, ecx
neg eax
movzx edi, word [ecx + ebx + 2]
movzx esi, word [eax + ebx + 2]
add eax, edx
movzx edx, word [ebx + eax*2]
mov eax, dword [ebp - 0x28]
add eax, ecx
movzx ecx, word [ebx + eax*2]
mov eax, dword [ebp - 0x34]
mov ebx, dword [ebp - 0x30]
add eax, esi
add eax, edi
add eax, eax
sub eax, edx
sub edx, dword [ebp - 0x34]
sub eax, ecx
mov dword [ebp - 0x50], edx
sub ecx, dword [ebp - 0x34]
mov dword [ebp + ebx - 0x58], eax
mov eax, esi
sub eax, edi
mov dword [ebp - 0x48], ecx
mov dword [ebp - 0x4c], eax
sar eax, 0x1f
mov dword [ebp - 0x38], eax
mov eax, edx
sar eax, 0x1f
mov edx, ecx
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x20]
sar edx, 0x1f
lea ecx, [eax + eax*2]
mov eax, dword [ebp - 0x2c]
shl ecx, 3
sub eax, ecx
movzx eax, word [eax + 2]
sub eax, esi
mov dword [ebp - 0x20], eax
mov ebx, eax
mov eax, dword [ebp - 0x2c]
sar ebx, 0x1f
movzx esi, word [ecx + eax + 2]
mov ecx, edx
xor ecx, dword [ebp - 0x48]
sub esi, edi
mov eax, dword [ebp - 0x40]
mov edi, esi
xor eax, dword [ebp - 0x50]
add ecx, eax
sar edi, 0x1f
mov eax, dword [ebp - 0x38]
xor eax, dword [ebp - 0x4c]
add ecx, eax
mov eax, ebx
sub ecx, dword [ebp - 0x40]
sub ecx, dword [ebp - 0x38]
xor eax, dword [ebp - 0x20]
sub ecx, edx
lea edx, [ecx + ecx*2]
mov ecx, edi
xor ecx, esi
add ecx, eax
sub ecx, ebx
sub ecx, edi
lea eax, [edx + ecx*2]
mov ecx, dword [ebp - 0x30]
mov edx, dword [ebp - 0x28]
mov dword [ebp + ecx - 0x60], eax
mov eax, dword [ebp - 0x44]
inc eax
mov dword [ebp - 0x44], eax
shl eax, 2
mov dword [ebp - 0x30], eax
mov ecx, dword [ebp + eax - 0x18]
mov dword [ebp - 0x20], ecx
test ecx, ecx
jg 0x4e7ca1
mov ecx, dword [ebp - 0x60]
xor eax, eax
cmp ecx, dword [ebp - 0x5c]
mov edx, dword [ebp - 0x2c]
setg al
lea esi, [eax*4]
mov eax, dword [ebp + esi - 0x18]
mov esi, dword [ebp + esi - 0x58]
sar esi, 2
lea ecx, [eax*8]
mov eax, edx
movzx ebx, word [ecx + edx + 2]
sub eax, ecx
movzx ecx, word [eax + 2]
cmp bx, cx
jae 0x4e7dc0
mov edi, ecx
mov ecx, ebx
jmp 0x4e7dc2
mov edi, ebx
cmp esi, edi
mov eax, edi
cmovl eax, esi
cmp ecx, eax
jg 0x4e7dd4
cmp esi, edi
mov ecx, edi
cmovl ecx, esi
mov edi, dword [ebp - 0x3c]
mov ebx, dword [ebp - 0x24]
mov word [edx + 2], cx
add ebx, 2
mov edx, dword [ebp - 0x28]
movzx esi, word [edi + 0x44aa]
mov dword [ebp - 0x24], ebx
lea eax, [esi - 3]
cmp ebx, eax
jl 0x4e7c70
mov ecx, dword [ebp - 0x1c]
movzx eax, word [edi + 0x44a8]
inc ecx
sub eax, 3
mov dword [ebp - 0x1c], ecx
cmp ecx, eax
jl 0x4e7c22
movzx eax, word [edi + 0x44a8]
mov ecx, 1
dec eax
mov dword [ebp - 0x1c], ecx
cmp eax, ecx
jle 0x4e7f33
lea ebx, [ebx]
mov ebx, dword [edi + 0x388]
mov edx, ecx
and edx, 7
mov esi, ebx
lea ecx, [edx*4]
shr esi, cl
and esi, 1
inc esi
mov dword [ebp - 0x20], esi
lea eax, [esi - 1]
and eax, 1
lea ecx, [eax + edx*2]
add ecx, ecx
shr ebx, cl
movzx ecx, word [edi + 0x44aa]
and ebx, 3
lea eax, [ecx - 1]
cmp esi, eax
jge 0x4e7f1c
nop
imul ecx, dword [ebp - 0x1c]
mov eax, dword [edi + 0x44c0]
add ecx, esi
lea edi, [eax + ecx*8]
mov eax, 1
lea ecx, [ebp - 0x18]
mov dword [ebp - 0x24], ecx
lea ebx, [ebx]
lea ecx, [eax*4]
lea edx, [eax*8]
lea eax, [ecx + ebx]
movzx esi, word [edi + eax*2]
mov eax, ebx
sub eax, ecx
movzx eax, word [edi + eax*2]
add esi, eax
mov eax, edi
sub eax, edx
movzx eax, word [eax + 2]
sub esi, eax
movzx eax, word [edx + edi + 2]
sub esi, eax
movzx eax, word [edi + 2]
lea eax, [esi + eax*2]
sar eax, 1
cmp eax, 0xffff
jge 0x4e7ed8
test eax, eax
jns 0x4e7ed8
xor ecx, ecx
jmp 0x4e7ee2
mov ecx, 0xffff
cmp eax, ecx
cmovl ecx, eax
mov eax, 2
mov word [edi + ebx*2], cx
sub eax, ebx
mov ebx, eax
mov eax, dword [ebp - 0x24]
add eax, 4
mov dword [ebp - 0x24], eax
mov eax, dword [eax]
test eax, eax
jg 0x4e7e90
mov edi, dword [ebp - 0x3c]
mov esi, dword [ebp - 0x20]
add esi, 2
mov dword [ebp - 0x20], esi
movzx ecx, word [edi + 0x44aa]
lea eax, [ecx - 1]
cmp esi, eax
jl 0x4e7e70
mov ecx, dword [ebp - 0x1c]
movzx eax, word [edi + 0x44a8]
inc ecx
dec eax
mov dword [ebp - 0x1c], ecx
cmp ecx, eax
jl 0x4e7e30
movzx eax, word [edi + 0x44a8]
mov ecx, 1
dec eax
mov dword [ebp - 0x1c], ecx
cmp eax, ecx
jle 0x4e8118
jmp 0x4e7f50
mov esi, dword [edi + 0x388]
mov edx, ecx
and edx, 7
mov edi, esi
mov ebx, 2
lea ecx, [edx*4 + 2]
shr edi, cl
and edi, 1
inc edi
mov eax, edi
mov dword [ebp - 0x34], edi
and eax, 1
lea ecx, [eax + edx*2]
mov edx, dword [ebp - 0x3c]
add ecx, ecx
shr esi, cl
and esi, 3
movzx ecx, word [edx + 0x44aa]
sub ebx, esi
mov dword [ebp - 0x24], ebx
lea eax, [ecx - 1]
cmp edi, eax
jge 0x4e80fe
mov esi, dword [ebp - 0x14]
lea eax, [ebx + ebx]
inc esi
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x64], esi
jmp 0x4e7fb0
imul ecx, dword [ebp - 0x1c]
mov eax, dword [edx + 0x44c0]
mov dword [ebp - 0x20], 0
add ecx, edi
lea ebx, [eax + ecx*8]
mov dword [ebp - 0x40], ebx
test esi, esi
jle 0x4e80a1
movzx edi, word [ebx + 2]
mov dword [ebp - 0x38], edi
mov dword [ebp - 0x44], 0
lea eax, [edi + edi]
mov dword [ebp - 0x28], eax
jmp 0x4e7ff0
mov eax, dword [ebp - 0x24]
lea ecx, [esi*4]
sub eax, ecx
movzx edx, word [ebx + eax*2]
mov eax, dword [ebp - 0x24]
add eax, ecx
mov dword [ebp - 0x48], edx
movzx ecx, word [ebx + eax*2]
mov eax, edx
sub eax, ecx
mov dword [ebp - 0x68], ecx
mov dword [ebp - 0x50], eax
lea ecx, [esi*8]
sar eax, 0x1f
mov dword [ebp - 0x4c], eax
mov eax, ebx
movzx ebx, word [ecx + ebx + 2]
sub eax, ecx
movzx eax, word [eax + 2]
mov edx, eax
mov dword [ebp - 0x2c], eax
mov eax, ebx
sub edx, edi
sub eax, dword [ebp - 0x38]
mov edi, edx
mov esi, eax
sar edi, 0x1f
sar esi, 0x1f
mov ecx, esi
xor ecx, eax
mov eax, edi
xor eax, edx
mov edx, dword [ebp - 0x44]
add ecx, eax
mov eax, dword [ebp - 0x4c]
xor eax, dword [ebp - 0x50]
add ecx, eax
mov eax, dword [ebp - 0x48]
sub eax, dword [ebp - 0x2c]
sub ecx, edi
sub ecx, dword [ebp - 0x4c]
sub eax, ebx
add eax, dword [ebp - 0x28]
sub ecx, esi
add eax, dword [ebp - 0x68]
mov ebx, dword [ebp - 0x40]
mov edi, dword [ebp - 0x38]
mov dword [ebp + edx - 0x58], eax
mov eax, dword [ebp - 0x20]
inc eax
mov dword [ebp + edx - 0x60], ecx
mov dword [ebp - 0x20], eax
shl eax, 2
mov dword [ebp - 0x44], eax
mov esi, dword [ebp + eax - 0x14]
add esi, dword [ebp + eax - 0x18]
test esi, esi
jg 0x4e7ff0
mov edi, dword [ebp - 0x34]
mov edx, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x5c]
mov esi, dword [ebp - 0x60]
cmp esi, ecx
je 0x4e80ba
xor eax, eax
cmp esi, ecx
setg al
mov eax, dword [ebp + eax*4 - 0x58]
sar eax, 1
jmp 0x4e80c3
mov eax, dword [ebp - 0x58]
add eax, dword [ebp - 0x54]
sar eax, 2
cmp eax, 0xffff
jge 0x4e80d2
test eax, eax
jns 0x4e80d2
xor ecx, ecx
jmp 0x4e80dc
mov ecx, 0xffff
cmp eax, ecx
cmovl ecx, eax
mov eax, dword [ebp - 0x30]
add edi, 2
mov esi, dword [ebp - 0x64]
mov dword [ebp - 0x34], edi
mov word [eax + ebx], cx
movzx ecx, word [edx + 0x44aa]
lea eax, [ecx - 1]
cmp edi, eax
jl 0x4e7fb0
mov edi, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x1c]
inc ecx
mov dword [ebp - 0x1c], ecx
movzx eax, word [edi + 0x44a8]
dec eax
cmp ecx, eax
jl 0x4e7f50
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.005920c1
mov esp, ebp
pop ebp
ret