Function at 0x674450
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x54
push ebx
push ebp
mov ebp, dword [esp + 0x60]
xor eax, eax
push esi
push edi
mov ax, word [ebp + 0x66b2]
mov ecx, 1
mov dword [esp + 0x54], eax
push 3
neg eax
push ebp
mov dword [esp + 0x58], ecx
mov dword [esp + 0x60], 0xffffffff
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], ecx
call fcn.00673900
mov eax, dword [ebp + 0xbc]
add esp, 8
test eax, eax
je 0x6744aa
push str.PPG_interpolation..._n
push 0x779f40
call fcn.006fabb2
add esp, 8
xor eax, eax
mov edi, 3
mov ax, word [ebp + 0x66b0]
mov dword [esp + 0x10], edi
sub eax, edi
cmp eax, edi
jle 0x674700
mov eax, dword [ebp + 0x65ac]
mov esi, edi
and esi, 7
mov edx, eax
lea ecx, [esi*4 + 2]
shr edx, cl
and edx, 1
add edx, 3
mov ecx, edx
mov dword [esp + 0x14], edx
and ecx, 1
lea ecx, [ecx + esi*2]
shl ecx, 1
shr eax, cl
and eax, 3
mov dword [esp + 0x18], eax
xor eax, eax
mov ax, word [ebp + 0x66b2]
lea ecx, [eax - 3]
cmp edx, ecx
jge 0x6746e7
imul eax, edi
add eax, edx
mov edx, dword [ebp + 0x66e0]
mov esi, 1
mov dword [esp + 0x20], 0
lea ecx, [edx + eax*8]
mov edx, dword [esp + 0x18]
xor eax, eax
mov ax, word [ecx + edx*2]
mov dword [esp + 0x1c], eax
mov ebp, dword [esp + 0x18]
lea edi, [esi*8]
xor edx, edx
mov ebx, edi
mov dx, word [edi + ecx + 2]
add ebp, edi
xor edi, edi
xor eax, eax
mov di, word [ecx + ebp*2]
mov ebp, dword [esp + 0x18]
neg ebx
add ebp, ebx
mov ax, word [ebx + ecx + 2]
xor ebx, ebx
mov bx, word [ecx + ebp*2]
mov ebp, dword [esp + 0x1c]
add ebp, eax
mov dword [esp + 0x28], ebx
add ebp, edx
shl ebp, 1
sub ebp, ebx
mov ebx, dword [esp + 0x20]
sub ebp, edi
mov dword [esp + ebx + 0x40], ebp
mov ebp, dword [esp + 0x28]
sub ebp, dword [esp + 0x1c]
mov ebx, ebp
sar ebx, 0x1f
mov dword [esp + 0x34], ebx
mov ebx, dword [esp + 0x1c]
sub edi, ebx
lea ebx, [esi + esi*2]
mov dword [esp + 0x2c], edi
xor esi, esi
sar edi, 0x1f
mov dword [esp + 0x28], edi
mov edi, eax
sub edi, edx
mov dword [esp + 0x30], edi
sar edi, 0x1f
mov dword [esp + 0x24], edi
mov edi, ecx
shl ebx, 3
sub edi, ebx
mov si, word [edi + 2]
xor edi, edi
mov di, word [ebx + ecx + 2]
sub esi, eax
mov eax, esi
sub edi, edx
sar eax, 0x1f
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x38], eax
mov eax, edi
mov ebx, dword [esp + 0x30]
sar eax, 0x1f
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x28]
xor eax, edx
mov edx, dword [esp + 0x24]
xor edx, ebx
add eax, edx
mov edx, dword [esp + 0x34]
mov ebx, edx
xor ebx, ebp
add eax, ebx
mov ebx, dword [esp + 0x24]
sub eax, ebx
mov ebx, dword [esp + 0x28]
sub eax, edx
mov edx, dword [esp + 0x3c]
sub eax, ebx
lea ebx, [eax + eax*2]
mov eax, dword [esp + 0x38]
mov ebp, eax
xor ebp, esi
mov esi, edx
xor esi, edi
add ebp, esi
sub ebp, eax
mov eax, dword [esp + 0x20]
sub ebp, edx
add eax, 4
lea edx, [ebx + ebp*2]
mov dword [esp + 0x20], eax
mov esi, dword [esp + eax + 0x50]
mov dword [esp + eax + 0x44], edx
test esi, esi
jg 0x674536
mov edx, dword [esp + 0x4c]
mov ebp, dword [esp + 0x48]
xor eax, eax
cmp ebp, edx
setg al
mov edi, ecx
mov edx, dword [esp + eax*4 + 0x50]
shl edx, 3
sub edi, edx
mov si, word [edx + ecx + 2]
mov dx, word [edi + 2]
cmp si, dx
jae 0x674693
mov eax, dword [esp + eax*4 + 0x40]
and edx, 0xffff
sar eax, 2
cmp eax, edx
mov edi, eax
jl 0x674681
mov edi, edx
and esi, 0xffff
cmp esi, edi
jg 0x6746ba
cmp eax, edx
jl 0x6746bc
mov eax, edx
jmp 0x6746bc
mov eax, dword [esp + eax*4 + 0x40]
and esi, 0xffff
sar eax, 2
cmp eax, esi
mov edi, eax
jl 0x6746a8
mov edi, esi
and edx, 0xffff
cmp edx, edi
jle 0x6746b6
mov eax, edx
jmp 0x6746bc
cmp eax, esi
jl 0x6746bc
mov eax, esi
mov ebp, dword [esp + 0x68]
mov edx, dword [esp + 0x14]
mov word [ecx + 2], ax
xor eax, eax
mov ax, word [ebp + 0x66b2]
mov edi, dword [esp + 0x10]
add edx, 2
lea ecx, [eax - 3]
mov dword [esp + 0x14], edx
cmp edx, ecx
jl 0x67450d
xor edx, edx
inc edi
mov dx, word [ebp + 0x66b0]
mov dword [esp + 0x10], edi
sub edx, 3
cmp edi, edx
jl 0x6744c6
xor eax, eax
mov edi, 1
mov ax, word [ebp + 0x66b0]
mov dword [esp + 0x10], edi
dec eax
cmp eax, edi
jle 0x67483d
mov edx, dword [ebp + 0x65ac]
mov eax, edi
and eax, 7
mov esi, edx
or ebx, 0xffffffff
lea ecx, [eax*4]
shr esi, cl
and esi, 1
inc esi
mov dword [esp + 0x14], esi
lea ecx, [esi + esi]
sub ebx, ecx
and ebx, 2
lea ecx, [ebx + eax*4]
xor eax, eax
mov ax, word [ebp + 0x66b2]
shr edx, cl
lea ecx, [eax - 1]
and edx, 3
cmp esi, ecx
jge 0x674826
imul eax, edi
mov ecx, dword [ebp + 0x66e0]
add eax, esi
lea esi, [esp + 0x50]
lea eax, [ecx + eax*8]
mov ecx, 1
mov dword [esp + 0x28], esi
lea esi, [ecx*4]
mov edi, edx
sub edi, esi
xor ebx, ebx
add esi, edx
mov bx, word [eax + edi*2]
xor edi, edi
mov di, word [eax + esi*2]
mov esi, eax
shl ecx, 3
add ebx, edi
sub esi, ecx
xor edi, edi
mov di, word [esi + 2]
xor esi, esi
mov si, word [ecx + eax + 2]
sub ebx, edi
xor ecx, ecx
sub ebx, esi
mov cx, word [eax + 2]
lea esi, [ebx + ecx*2]
mov ecx, esi
and ecx, 0xfffffffe
cmp ecx, 0x1fffe
jge 0x6747dc
mov edi, esi
sar edi, 1
test edi, edi
jge 0x6747d0
xor esi, esi
jmp 0x6747e1
cmp ecx, 0x1fffe
jge 0x6747dc
sar esi, 1
jmp 0x6747e1
mov esi, 0xffff
mov ecx, 2
mov word [eax + edx*2], si
sub ecx, edx
mov edx, ecx
mov ecx, dword [esp + 0x28]
add ecx, 4
mov dword [esp + 0x28], ecx
mov ecx, dword [ecx]
test ecx, ecx
jg 0x67477b
mov esi, dword [esp + 0x14]
xor eax, eax
mov ax, word [ebp + 0x66b2]
mov edi, dword [esp + 0x10]
add esi, 2
lea ecx, [eax - 1]
mov dword [esp + 0x14], esi
cmp esi, ecx
jl 0x674760
xor edx, edx
inc edi
mov dx, word [ebp + 0x66b0]
mov dword [esp + 0x10], edi
dec edx
cmp edi, edx
jl 0x67471b
xor eax, eax
mov ebx, 1
mov ax, word [ebp + 0x66b0]
mov dword [esp + 0x10], ebx
dec eax
cmp eax, ebx
jle 0x674a5c
mov eax, dword [ebp + 0x65ac]
mov esi, ebx
and esi, 7
mov edx, eax
mov edi, 2
lea ecx, [esi*4 + 2]
shr edx, cl
and edx, 1
inc edx
mov ecx, edx
mov dword [esp + 0x14], edx
and ecx, 1
lea ecx, [ecx + esi*2]
shl ecx, 1
shr eax, cl
and eax, 3
sub edi, eax
xor eax, eax
mov ax, word [ebp + 0x66b2]
mov dword [esp + 0x18], edi
lea ecx, [eax - 1]
cmp edx, ecx
jge 0x674a45
imul eax, ebx
mov ecx, dword [ebp + 0x66e0]
add eax, edx
lea ebx, [ecx + eax*8]
mov eax, dword [esp + 0x54]
mov dword [esp + 0x1c], ebx
lea esi, [eax + 1]
test esi, esi
jle 0x6749b0
xor ebp, ebp
xor ecx, ecx
mov bp, word [ebx + 2]
mov dword [esp + 0x20], ebp
jmp 0x6748db
mov ebx, dword [esp + 0x1c]
mov edi, dword [esp + 0x18]
lea edx, [esi*4]
xor eax, eax
sub edi, edx
add ecx, 4
shl esi, 3
mov ax, word [ebx + edi*2]
mov edi, dword [esp + 0x18]
add edi, edx
xor edx, edx
mov dword [esp + 0x3c], esi
mov dx, word [ebx + edi*2]
mov edi, eax
sub edi, edx
mov dword [esp + 0x34], edi
sar edi, 0x1f
mov dword [esp + 0x24], edi
mov edi, ebx
sub edi, esi
xor esi, esi
mov si, word [edi + 2]
mov edi, esi
sub eax, esi
sub edi, ebp
mov ebp, dword [esp + 0x3c]
mov dword [esp + 0x38], edi
sar edi, 0x1f
mov dword [esp + 0x28], edi
xor edi, edi
mov di, word [ebx + ebp + 2]
mov ebx, dword [esp + 0x20]
mov dword [esp + 0x30], edi
sub edi, ebx
mov ebp, dword [esp + 0x38]
mov ebx, edi
sar ebx, 0x1f
mov dword [esp + 0x3c], ebx
xor ebx, edi
mov edi, dword [esp + 0x28]
xor edi, ebp
mov ebp, dword [esp + 0x34]
add ebx, edi
mov edi, dword [esp + 0x24]
xor edi, ebp
mov ebp, dword [esp + 0x28]
add ebx, edi
mov edi, dword [esp + 0x24]
sub ebx, ebp
mov ebp, dword [esp + 0x3c]
sub ebx, edi
sub ebx, ebp
mov ebp, dword [esp + 0x30]
sub eax, ebp
mov ebp, dword [esp + 0x20]
mov dword [esp + ecx + 0x44], ebx
lea esi, [ebp + ebp]
add eax, esi
mov esi, dword [esp + ecx + 0x54]
add eax, edx
mov edx, dword [esp + ecx + 0x50]
mov dword [esp + ecx + 0x3c], eax
add esi, edx
test esi, esi
jg 0x6748d3
mov ebp, dword [esp + 0x68]
mov ebx, dword [esp + 0x1c]
mov edi, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x48]
mov esi, dword [esp + 0x4c]
cmp eax, esi
je 0x6749ec
xor ecx, ecx
cmp eax, esi
setg cl
mov eax, dword [esp + ecx*4 + 0x40]
mov ecx, eax
and ecx, 0xfffffffe
cmp ecx, 0x1fffe
jge 0x674a1d
mov esi, eax
sar esi, 1
test esi, esi
jge 0x6749e0
xor eax, eax
jmp 0x674a22
cmp ecx, 0x1fffe
jge 0x674a1d
sar eax, 1
jmp 0x674a22
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x44]
add eax, ecx
mov ecx, eax
and ecx, 0xfffffffc
cmp ecx, 0x3fffc
jge 0x674a1d
mov esi, eax
sar esi, 2
test esi, esi
jge 0x674a10
xor eax, eax
jmp 0x674a22
cmp ecx, 0x3fffc
jge 0x674a1d
sar eax, 2
jmp 0x674a22
mov eax, 0xffff
mov word [ebx + edi*2], ax
xor eax, eax
mov ax, word [ebp + 0x66b2]
mov ebx, dword [esp + 0x10]
add edx, 2
lea ecx, [eax - 1]
mov dword [esp + 0x14], edx
cmp edx, ecx
jl 0x6748a4
xor edx, edx
inc ebx
mov dx, word [ebp + 0x66b0]
mov dword [esp + 0x10], ebx
dec edx
cmp ebx, edx
jl 0x674858
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x54
ret