Function at 0x66ca70
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x4c
push esi
mov esi, ecx
mov dword [ebp - 0x28], esi
cmp dword [esi + 0x10], 1
jne 0x66ca8f
cmp dword [esi + 0x5c], 7
jne 0x66ca8f
xor eax, eax
pop esi
mov esp, ebp
pop ebp
ret
cmp dword [esi + 0x8874], 0
push ebx
push edi
jne 0x66cc26
mov eax, dword [esi + 0x8870]
test eax, eax
je 0x66cc26
mov edx, dword [esi + 0x855c]
mov ecx, dword [esi + 0x8614]
mov eax, dword [esi + 0x85b8]
neg edx
mov eax, dword [eax + 0x24]
sbb edx, edx
lea ecx, [ecx - 1]
shl ecx, 4
sub eax, ecx
inc eax
and edx, 3
mov ebx, 0x10
cmp eax, ebx
cmovb ebx, eax
mov eax, dword [esi + 0x85b8]
mov dword [ebp - 0x10], ebx
mov edi, dword [eax + 0x1c]
mov ebx, dword [eax + 0x20]
inc edi
mov dword [ebp - 0x18], edx
mov dword [ebp - 0x4c], edi
cmp ecx, ebx
jbe 0x66caf9
xor ebx, ebx
jmp 0x66cafc
and ebx, 0xf
mov ecx, dword [eax + 0x18]
mov dword [ebp - 0xc], ecx
xor ecx, ecx
cmp dword [esi + 0xc], 4
mov dword [ebp - 8], ebx
sete cl
add ecx, 3
add ecx, dword [esi + 0x18]
mov dword [ebp - 0x24], ecx
mov ecx, dword [esi + 0x8870]
mov ecx, dword [ecx + 0x86dc]
mov dword [ebp - 0x1c], ecx
mov cl, byte [esi + 0x808c]
mov byte [ebp - 1], cl
mov cl, byte [esi + 0x808d]
mov byte [ebp - 2], cl
mov ecx, dword [eax + 0x28]
mov eax, dword [eax + 0x2c]
mov dword [ebp - 0x20], ecx
mov ecx, dword [esi + 0x8614]
add eax, 0xffffffc0
shl ecx, 6
add ecx, eax
mov eax, dword [esi + 0xc]
mov dword [ebp - 0x14], ecx
cmp eax, 7
je 0x66cb63
cmp eax, 4
jne 0x66d0d2
mov eax, dword [esi + 0x10]
cmp eax, 1
jne 0x66cc2f
mov esi, eax
test edx, edx
jne 0x66cb79
xor eax, eax
jmp 0x66cb80
lea ecx, [edx - 1]
mov eax, esi
shl eax, cl
lea ecx, [edx + 7]
shl esi, cl
add esi, eax
mov dword [ebp - 0x30], esi
cmp ebx, dword [ebp - 0x10]
jae 0x66cc26
mov edx, dword [ebp - 0xc]
mov eax, ebx
shl eax, 4
mov dword [ebp - 0x2c], eax
mov edi, edi
mov ecx, dword [ebp - 0x14]
mov esi, edx
mov ecx, dword [ecx + ebx*4]
mov dword [ebp - 0x34], ecx
cmp edx, edi
jae 0x66cc13
mov ebx, dword [ebp - 0x2c]
mov eax, esi
and eax, 0xf
movzx ecx, byte [eax + ebx + 0x725ab8]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add ecx, eax
mov eax, dword [ebp - 0x1c]
mov edx, dword [eax + ecx*4]
add edx, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x18]
sar edx, cl
test edx, edx
jns 0x66cbdf
xor edx, edx
jmp 0x66cbed
cmp edx, 0xff
mov eax, 0xff
cmovg edx, eax
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x28]
mov eax, dword [eax + esi*4]
add eax, dword [ecx + 0x80a8]
mov ecx, dword [ebp - 0x24]
add eax, dword [ebp - 0x34]
inc esi
mov byte [eax + ecx], dl
cmp esi, edi
jb 0x66cbb2
mov ebx, dword [ebp - 8]
mov eax, dword [ebp - 0x2c]
mov edx, dword [ebp - 0xc]
inc ebx
add eax, 0x10
mov dword [ebp - 8], ebx
mov dword [ebp - 0x2c], eax
cmp ebx, dword [ebp - 0x10]
jb 0x66cba0
pop edi
pop ebx
xor eax, eax
pop esi
mov esp, ebp
pop ebp
ret
cmp eax, 2
jne 0x66cd05
lea esi, [eax - 1]
test edx, edx
jne 0x66cc43
xor eax, eax
jmp 0x66cc4a
lea ecx, [edx - 1]
mov eax, esi
shl eax, cl
lea ecx, [edx + 0xf]
shl esi, cl
add esi, eax
mov dword [ebp - 0x30], esi
cmp ebx, dword [ebp - 0x10]
jae 0x66cc26
mov edx, dword [ebp - 0xc]
mov eax, ebx
shl eax, 4
mov dword [ebp - 0x2c], eax
mov ecx, dword [ebp - 0x14]
mov esi, edx
mov ecx, dword [ecx + ebx*4]
mov dword [ebp - 0x38], ecx
cmp edx, edi
jae 0x66cce9
movzx eax, byte [ebp - 1]
mov ebx, dword [ebp - 0x2c]
mov dword [ebp - 0x34], eax
mov eax, esi
and eax, 0xf
movzx ecx, byte [eax + ebx + 0x725ab8]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add ecx, eax
mov eax, dword [ebp - 0x1c]
mov edx, dword [eax + ecx*4]
add edx, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x18]
sar edx, cl
mov ecx, dword [ebp - 0x34]
shl edx, cl
test edx, edx
jns 0x66ccb3
xor edx, edx
jmp 0x66ccc1
cmp edx, 0xffff
mov eax, 0xffff
cmovg edx, eax
mov eax, dword [ebp - 0x20]
inc esi
mov ecx, dword [eax + esi*4 - 4]
add ecx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x28]
add ecx, dword [ebp - 0x24]
mov eax, dword [eax + 0x80a8]
mov word [eax + ecx*2], dx
cmp esi, edi
jb 0x66cc81
mov ebx, dword [ebp - 8]
mov eax, dword [ebp - 0x2c]
mov edx, dword [ebp - 0xc]
inc ebx
add eax, 0x10
mov dword [ebp - 8], ebx
mov dword [ebp - 0x2c], eax
cmp ebx, dword [ebp - 0x10]
jb 0x66cc64
pop edi
pop ebx
xor eax, eax
pop esi
mov esp, ebp
pop ebp
ret
cmp eax, 3
jne 0x66cdee
test edx, edx
jne 0x66cd17
mov dword [ebp - 0x2c], edx
jmp 0x66cd27
lea ecx, [edx - 1]
mov eax, 1
shl eax, cl
mov ecx, dword [ebp - 0x14]
mov dword [ebp - 0x2c], eax
cmp ebx, dword [ebp - 0x10]
jae 0x66cc26
mov edx, dword [ebp - 0xc]
mov eax, ebx
shl eax, 4
mov dword [ebp - 0x30], eax
jmp 0x66cd40
mov ecx, dword [ecx + ebx*4]
mov esi, edx
mov dword [ebp - 0x34], ecx
cmp edx, edi
jae 0x66cdcf
movzx eax, byte [ebp - 1]
mov ebx, dword [ebp - 0x30]
mov dword [ebp - 0x38], eax
lea ebx, [ebx]
mov eax, esi
and eax, 0xf
movzx ecx, byte [eax + ebx + 0x725ab8]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add ecx, eax
mov eax, dword [ebp - 0x1c]
mov edx, dword [eax + ecx*4]
add edx, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x18]
sar edx, cl
mov ecx, dword [ebp - 0x38]
shl edx, cl
cmp edx, 0xffff8000
jge 0x66cd99
mov edx, 0xffff8000
jmp 0x66cda7
cmp edx, 0x7fff
mov eax, 0x7fff
cmovg edx, eax
mov eax, dword [ebp - 0x20]
inc esi
mov ecx, dword [eax + esi*4 - 4]
add ecx, dword [ebp - 0x34]
mov eax, dword [ebp - 0x28]
add ecx, dword [ebp - 0x24]
mov eax, dword [eax + 0x80a8]
mov word [eax + ecx*2], dx
cmp esi, edi
jb 0x66cd60
mov ebx, dword [ebp - 8]
mov eax, dword [ebp - 0x30]
mov edx, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x14]
inc ebx
add eax, 0x10
mov dword [ebp - 8], ebx
mov dword [ebp - 0x30], eax
cmp ebx, dword [ebp - 0x10]
jb 0x66cd40
pop edi
pop ebx
xor eax, eax
pop esi
mov esp, ebp
pop ebp
ret
cmp eax, 4
jne 0x66ceaa
test edx, edx
jne 0x66ce00
mov dword [ebp - 0x2c], edx
jmp 0x66ce10
lea ecx, [edx - 1]
mov eax, 1
shl eax, cl
mov ecx, dword [ebp - 0x14]
mov dword [ebp - 0x2c], eax
cmp ebx, dword [ebp - 0x10]
jae 0x66cc26
mov edx, dword [ebp - 0xc]
mov eax, ebx
shl eax, 4
mov dword [ebp - 0x30], eax
mov ecx, dword [ecx + ebx*4]
mov esi, edx
mov dword [ebp - 0x38], ecx
cmp edx, edi
jae 0x66ce8f
mov ebx, dword [ebp - 0x30]
mov eax, esi
and eax, 0xf
movzx ecx, byte [eax + ebx + 0x725ab8]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add ecx, eax
mov eax, dword [ebp - 0x1c]
inc esi
mov edx, dword [eax + ecx*4]
add edx, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x18]
sar edx, cl
mov eax, edx
sar eax, 0x1f
and edx, 0x7fff
xor edx, eax
sub edx, eax
mov eax, dword [ebp - 0x20]
mov ecx, dword [eax + esi*4 - 4]
add ecx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x28]
add ecx, dword [ebp - 0x24]
mov eax, dword [eax + 0x80a8]
mov word [eax + ecx*2], dx
cmp esi, edi
jb 0x66ce33
mov ebx, dword [ebp - 8]
mov eax, dword [ebp - 0x30]
mov edx, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x14]
inc ebx
add eax, 0x10
mov dword [ebp - 8], ebx
mov dword [ebp - 0x30], eax
cmp ebx, dword [ebp - 0x10]
jb 0x66ce24
pop edi
pop ebx
xor eax, eax
pop esi
mov esp, ebp
pop ebp
ret
cmp eax, 6
jne 0x66cf70
test edx, edx
jne 0x66cebc
mov dword [ebp - 0x2c], edx
jmp 0x66cecc
lea ecx, [edx - 1]
mov eax, 1
shl eax, cl
mov ecx, dword [ebp - 0x14]
mov dword [ebp - 0x2c], eax
cmp ebx, dword [ebp - 0x10]
jae 0x66cc26
mov edx, dword [ebp - 0xc]
mov eax, ebx
shl eax, 4
mov dword [ebp - 0x30], eax
mov ecx, dword [ecx + ebx*4]
mov esi, edx
mov dword [ebp - 0x34], ecx
cmp edx, edi
jae 0x66cf51
movzx eax, byte [ebp - 1]
mov ebx, dword [ebp - 0x30]
mov dword [ebp - 0x38], eax
jmp 0x66cf00
mov eax, esi
and eax, 0xf
movzx ecx, byte [eax + ebx + 0x725ab8]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add ecx, eax
mov eax, dword [ebp - 0x1c]
inc esi
mov edx, dword [eax + ecx*4]
add edx, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x20]
sar edx, cl
mov ecx, dword [ebp - 0x38]
shl edx, cl
mov ecx, dword [eax + esi*4 - 4]
add ecx, dword [ebp - 0x34]
mov eax, dword [ebp - 0x28]
add ecx, dword [ebp - 0x24]
mov eax, dword [eax + 0x80a8]
mov dword [eax + ecx*4], edx
cmp esi, edi
jb 0x66cf00
mov ebx, dword [ebp - 8]
mov eax, dword [ebp - 0x30]
mov edx, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x14]
inc ebx
add eax, 0x10
mov dword [ebp - 8], ebx
mov dword [ebp - 0x30], eax
cmp ebx, dword [ebp - 0x10]
jb 0x66cee0
pop edi
pop ebx
xor eax, eax
pop esi
mov esp, ebp
pop ebp
ret
cmp eax, 7
jne 0x66d0d2
mov eax, 1
test edx, edx
jne 0x66cf87
mov dword [ebp - 0x2c], edx
jmp 0x66cf91
lea ecx, [edx - 1]
mov esi, eax
shl esi, cl
mov dword [ebp - 0x2c], esi
cmp ebx, dword [ebp - 0x10]
jae 0x66cc26
mov ecx, ebx
shl ecx, 4
mov dword [ebp - 0x30], ecx
mov ecx, dword [ebp - 0xc]
mov edx, dword [ebp - 0x14]
mov esi, ecx
mov edx, dword [edx + ebx*4]
mov dword [ebp - 0x48], edx
mov edx, dword [ebp - 0x18]
mov dword [ebp - 0x34], ecx
cmp ecx, edi
jae 0x66d0b0
movzx ecx, byte [ebp - 1]
mov ebx, eax
movsx eax, byte [ebp - 2]
mov dword [ebp - 0x3c], eax
mov eax, 0x17
shl ebx, cl
sub eax, ecx
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x40], eax
lea ebx, [ebx]
mov ecx, dword [ebp - 0x30]
mov eax, esi
and eax, 0xf
movzx ecx, byte [eax + ecx + 0x725ab8]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add ecx, eax
mov eax, dword [ebp - 0x1c]
lea esi, [ebx - 1]
mov eax, dword [eax + ecx*4]
add eax, dword [ebp - 0x2c]
mov ecx, edx
sar eax, cl
mov ecx, eax
sar ecx, 0x1f
mov edx, ecx
xor edx, eax
sub edx, ecx
mov dword [ebp - 0x44], ecx
mov ecx, dword [ebp - 0x38]
mov edi, edx
shr edi, cl
and esi, edx
or esi, ebx
test edi, edi
jne 0x66d02e
xor esi, ebx
mov edi, 1
mov eax, 0x7f
sub eax, dword [ebp - 0x3c]
add edi, eax
cmp esi, ebx
jge 0x66d058
lea esp, [esp]
cmp edi, 1
jle 0x66d0ca
test esi, esi
jle 0x66d0ca
add esi, esi
dec edi
cmp esi, ebx
jl 0x66d040
xor esi, ebx
mov ecx, dword [ebp - 0x40]
mov eax, dword [ebp - 0x44]
mov edx, dword [ebp - 0x18]
shl esi, cl
shl edi, 0x17
and eax, 0x80000000
or esi, edi
mov edi, dword [ebp - 0x4c]
or esi, eax
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x44], esi
mov esi, dword [ebp - 0x34]
movss xmm0, dword [ebp - 0x44]
mov ecx, dword [eax + esi*4]
add ecx, dword [ebp - 0x48]
mov eax, dword [ebp - 0x28]
add ecx, dword [ebp - 0x24]
mov eax, dword [eax + 0x80a8]
inc esi
movss dword [eax + ecx*4], xmm0
mov dword [ebp - 0x34], esi
cmp esi, edi
jb 0x66cfe0
mov ebx, dword [ebp - 8]
mov ecx, dword [ebp - 0xc]
mov eax, 1
add dword [ebp - 0x30], 0x10
inc ebx
mov dword [ebp - 8], ebx
cmp ebx, dword [ebp - 0x10]
jb 0x66cfa5
pop edi
pop ebx
xor eax, eax
pop esi
mov esp, ebp
pop ebp
ret
cmp esi, ebx
jge 0x66d058
xor edi, edi
jmp 0x66d05a
pop edi
pop ebx
or eax, 0xffffffff
pop esi
mov esp, ebp
pop ebp
ret