Function at 0x100da630
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x50
push ebx
push ebp
mov ebp, dword [esp + 0x5c]
movzx eax, word [ebp + 0x66b6]
push esi
push edi
mov ecx, 1
mov dword [esp + 0x50], eax
neg eax
push 3
push ebp
mov dword [esp + 0x54], ecx
mov dword [esp + 0x5c], 0xffffffff
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], ecx
call fcn.100d9b00
add esp, 8
cmp dword [ebp + 0xbc], 0
je 0x100da68b
push str.PPG_interpolation..._n
call fcn.1005a8d7
add eax, 0x40
push eax
call fcn.1015203d
add esp, 8
movzx eax, word [ebp + 0x66b4]
mov ebx, 3
sub eax, ebx
cmp eax, ebx
mov dword [esp + 0x10], ebx
jle 0x100da8ba
movzx eax, word [ebp + 0x66b6]
lea esp, [esp]
mov esi, dword [ebp + 0x65b0]
mov edi, ebx
and edi, 7
mov edx, esi
lea ecx, [edi*4 + 2]
shr edx, cl
and edx, 1
add edx, 3
mov ecx, edx
and ecx, 1
lea ecx, [ecx + edi*2]
add ecx, ecx
shr esi, cl
lea ecx, [eax - 3]
mov dword [esp + 0x1c], edx
and esi, 3
cmp edx, ecx
mov dword [esp + 0x18], esi
jge 0x100da8a3
mov edi, edi
mov esi, dword [esp + 0x18]
imul eax, ebx
add eax, edx
mov edx, dword [ebp + 0x66e0]
lea ecx, [edx + eax*8]
movzx esi, word [ecx + esi*2]
xor edx, edx
mov dword [esp + 0x14], edx
mov eax, 1
mov dword [esp + 0x20], esi
jmp 0x100da720
lea esi, [eax*8]
movzx ebp, word [esi + ecx + 2]
mov edi, esi
neg edi
movzx ebx, word [edi + ecx + 2]
mov dword [esp + 0x24], ebp
mov ebp, dword [esp + 0x18]
add esi, ebp
add edi, ebp
movzx ebp, word [ecx + esi*2]
movzx edi, word [ecx + edi*2]
mov esi, dword [esp + 0x20]
add esi, ebx
add esi, dword [esp + 0x24]
lea eax, [eax + eax*2]
add esi, esi
sub esi, edi
sub esi, ebp
mov dword [esp + edx + 0x44], esi
mov esi, edi
sub esi, dword [esp + 0x20]
add eax, eax
mov edi, esi
sar edi, 0x1f
mov dword [esp + 0x2c], edi
mov edi, ebp
sub edi, dword [esp + 0x20]
add eax, eax
mov dword [esp + 0x34], edi
sar edi, 0x1f
mov dword [esp + 0x30], edi
add eax, eax
mov edi, ebx
sub edi, dword [esp + 0x24]
mov ebp, edi
sar ebp, 0x1f
mov dword [esp + 0x28], ebp
mov ebp, ecx
sub ebp, eax
movzx eax, word [eax + ecx + 2]
sub eax, dword [esp + 0x24]
movzx ebp, word [ebp + 2]
mov dword [esp + 0x38], eax
sar eax, 0x1f
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x28]
xor eax, edi
mov edi, dword [esp + 0x2c]
xor edi, esi
mov esi, dword [esp + 0x30]
add eax, edi
mov edi, esi
xor edi, dword [esp + 0x34]
sub ebp, ebx
add eax, edi
sub eax, dword [esp + 0x28]
mov edi, dword [esp + 0x24]
sub eax, dword [esp + 0x2c]
xor edi, dword [esp + 0x38]
sub eax, esi
mov ebx, ebp
sar ebx, 0x1f
mov esi, ebx
xor esi, ebp
add esi, edi
sub esi, ebx
sub esi, dword [esp + 0x24]
lea eax, [eax + eax*2]
lea eax, [eax + esi*2]
mov dword [esp + edx + 0x3c], eax
mov eax, dword [esp + 0x14]
inc eax
lea edx, [eax*4]
mov dword [esp + 0x14], eax
mov eax, dword [esp + edx + 0x4c]
test eax, eax
jg 0x100da720
mov edx, dword [esp + 0x40]
xor eax, eax
cmp dword [esp + 0x3c], edx
mov edi, ecx
setg al
mov edx, dword [esp + eax*4 + 0x4c]
mov eax, dword [esp + eax*4 + 0x44]
add edx, edx
add edx, edx
add edx, edx
movzx esi, word [edx + ecx + 2]
sub edi, edx
movzx edx, word [edi + 2]
sar eax, 2
mov edi, eax
cmp si, dx
jae 0x100da860
movzx edx, dx
cmp eax, edx
jl 0x100da851
mov edi, edx
movzx esi, si
cmp esi, edi
jg 0x100da878
cmp eax, edx
jl 0x100da87a
mov eax, edx
jmp 0x100da87a
movzx esi, si
cmp eax, esi
jl 0x100da869
mov edi, esi
movzx edx, dx
cmp edx, edi
jle 0x100da874
mov eax, edx
jmp 0x100da87a
cmp eax, esi
jl 0x100da87a
mov eax, esi
mov ebp, dword [esp + 0x64]
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x10]
mov word [ecx + 2], ax
movzx eax, word [ebp + 0x66b6]
add edx, 2
lea ecx, [eax - 3]
cmp edx, ecx
mov dword [esp + 0x1c], edx
jl 0x100da6f0
movzx ecx, word [ebp + 0x66b4]
inc ebx
sub ecx, 3
cmp ebx, ecx
mov dword [esp + 0x10], ebx
jl 0x100da6b0
movzx edx, word [ebp + 0x66b4]
mov esi, 1
dec edx
cmp edx, esi
mov dword [esp + 0x10], esi
jle 0x100da9d0
mov edx, dword [ebp + 0x65b0]
mov eax, esi
and eax, 7
lea ecx, [eax*4]
mov edi, edx
shr edi, cl
and edi, 1
inc edi
lea ecx, [edi - 1]
and ecx, 1
lea ecx, [ecx + eax*2]
movzx eax, word [ebp + 0x66b6]
add ecx, ecx
shr edx, cl
lea ecx, [eax - 1]
and edx, 3
cmp edi, ecx
jge 0x100da9bb
nop
mov ecx, dword [ebp + 0x66e0]
imul eax, esi
add eax, edi
lea esi, [esp + 0x4c]
lea eax, [ecx + eax*8]
mov ecx, 1
mov dword [esp + 0x2c], esi
jmp 0x100da930
lea esi, [ecx*4]
add ecx, ecx
mov ebx, edx
sub ebx, esi
movzx ebx, word [eax + ebx*2]
add esi, edx
movzx esi, word [eax + esi*2]
add ecx, ecx
add ebx, esi
add ecx, ecx
mov esi, eax
sub esi, ecx
movzx ecx, word [ecx + eax + 2]
movzx esi, word [esi + 2]
sub ebx, esi
sub ebx, ecx
movzx ecx, word [eax + 2]
lea ecx, [ebx + ecx*2]
sar ecx, 1
cmp ecx, 0xffff
jge 0x100da97f
test ecx, ecx
jge 0x100da977
xor ecx, ecx
jmp 0x100da984
cmp ecx, 0xffff
jl 0x100da984
mov ecx, 0xffff
mov word [eax + edx*2], cx
mov ecx, 2
sub ecx, edx
mov edx, ecx
mov ecx, dword [esp + 0x2c]
add ecx, 4
mov dword [esp + 0x2c], ecx
mov ecx, dword [ecx]
test ecx, ecx
jg 0x100da930
movzx eax, word [ebp + 0x66b6]
mov esi, dword [esp + 0x10]
add edi, 2
lea ecx, [eax - 1]
cmp edi, ecx
jl 0x100da910
movzx edx, word [ebp + 0x66b4]
inc esi
dec edx
cmp esi, edx
mov dword [esp + 0x10], esi
jl 0x100da8d3
movzx eax, word [ebp + 0x66b4]
mov esi, 1
dec eax
cmp eax, esi
mov dword [esp + 0x10], esi
jle 0x100dabaa
lea esp, [esp]
mov eax, dword [ebp + 0x65b0]
mov edx, esi
and edx, 7
mov edi, eax
lea ecx, [edx*4 + 2]
shr edi, cl
mov ebx, 2
and edi, 1
inc edi
mov ecx, edi
and ecx, 1
lea ecx, [ecx + edx*2]
add ecx, ecx
shr eax, cl
mov dword [esp + 0x1c], edi
and eax, 3
sub ebx, eax
movzx eax, word [ebp + 0x66b6]
lea edx, [eax - 1]
cmp edi, edx
mov dword [esp + 0x18], ebx
jge 0x100dab95
lea ebx, [ebx]
mov ecx, dword [ebp + 0x66e0]
imul eax, esi
mov edx, dword [esp + 0x50]
add eax, edi
lea esi, [ecx + eax*8]
xor ecx, ecx
inc edx
cmp edx, ecx
mov dword [esp + 0x14], ecx
jle 0x100dab31
movzx eax, word [esi + 2]
add eax, eax
mov dword [esp + 0x24], eax
jmp 0x100daa70
lea edi, [edx*4]
movzx ebp, word [esi + 2]
mov eax, ebx
sub eax, edi
movzx eax, word [esi + eax*2]
add edi, ebx
movzx ebx, word [esi + edi*2]
mov dword [esp + 0x20], ebx
mov edi, eax
sub edi, ebx
add edx, edx
add edx, edx
add edx, edx
mov ebx, edi
sar ebx, 0x1f
mov dword [esp + 0x38], ebx
mov ebx, esi
sub ebx, edx
movzx ebx, word [ebx + 2]
movzx edx, word [edx + esi + 2]
mov dword [esp + 0x30], ebx
sub ebx, ebp
sub eax, dword [esp + 0x30]
mov ebp, ebx
sar ebp, 0x1f
mov dword [esp + 0x2c], ebp
movzx ebp, word [esi + 2]
mov dword [esp + 0x28], edx
sub eax, dword [esp + 0x28]
sub edx, ebp
add eax, dword [esp + 0x24]
mov ebp, edx
add eax, dword [esp + 0x20]
sar ebp, 0x1f
mov dword [esp + 0x34], ebp
xor ebp, edx
mov edx, dword [esp + 0x2c]
xor edx, ebx
add ebp, edx
mov edx, dword [esp + 0x38]
mov ebx, edx
xor ebx, edi
add ebp, ebx
sub ebp, dword [esp + 0x2c]
mov ebx, dword [esp + 0x18]
sub ebp, edx
sub ebp, dword [esp + 0x34]
mov dword [esp + ecx + 0x44], eax
mov eax, dword [esp + 0x14]
inc eax
mov dword [esp + ecx + 0x3c], ebp
lea ecx, [eax*4]
mov edx, dword [esp + ecx + 0x50]
add edx, dword [esp + ecx + 0x4c]
mov dword [esp + 0x14], eax
test edx, edx
jg 0x100daa70
mov ebp, dword [esp + 0x64]
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0x40]
cmp dword [esp + 0x3c], eax
je 0x100dab4c
xor ecx, ecx
cmp dword [esp + 0x3c], eax
setg cl
mov eax, dword [esp + ecx*4 + 0x44]
sar eax, 1
jmp 0x100dab59
mov edx, dword [esp + 0x44]
mov eax, dword [esp + 0x48]
add eax, edx
sar eax, 2
cmp eax, 0xffff
jge 0x100dab6f
test eax, eax
jge 0x100dab68
xor eax, eax
jmp 0x100dab74
cmp eax, 0xffff
jl 0x100dab74
mov eax, 0xffff
mov word [esi + ebx*2], ax
movzx eax, word [ebp + 0x66b6]
mov esi, dword [esp + 0x10]
add edi, 2
lea ecx, [eax - 1]
cmp edi, ecx
mov dword [esp + 0x1c], edi
jl 0x100daa40
movzx edx, word [ebp + 0x66b4]
inc esi
dec edx
cmp esi, edx
mov dword [esp + 0x10], esi
jl 0x100da9f0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x50
ret