Function at 0x1002eaa0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x48
mov edx, ecx
push ebx
push esi
push edi
cmp dword [edx + 0x8874], 0
mov dword [ebp - 8], edx
jne 0x1002ef20
mov esi, dword [edx + 0x8870]
test esi, esi
je 0x1002ef20
mov ecx, dword [esi + 0x855c]
xorps xmm1, xmm1
mov eax, dword [edx + 0x10]
neg ecx
mov edi, dword [edx + 4]
sbb ecx, ecx
mov dword [ebp - 0x34], eax
xor eax, eax
mov dword [ebp - 0x48], edi
and ecx, 3
mov dword [ebp - 0x30], 0
cmp dword [edx + 0xc], 4
mov dword [ebp - 0x10], ecx
sete al
xor ebx, ebx
add eax, 3
mov dword [ebp - 0x24], ebx
add eax, dword [edx + 0x18]
mov dword [ebp - 0x18], eax
mov eax, dword [edx + 0x80ac]
mov dword [ebp - 0x44], eax
mov eax, dword [edx + 0x80a8]
mov dword [ebp - 0xc], eax
mov eax, dword [esi + 0x879c]
lea esi, [edi - 1]
and esi, 0xf
mov dword [ebp - 0x14], eax
add esi, 0x101f08e0
mov dword [ebp - 0x28], esi
mov eax, dword [ebp - 0x34]
cmp eax, 1
jne 0x1002eb8c
mov eax, dword [edx + 0x14]
xor esi, esi
shr eax, 3
mov dword [ebp - 0x2c], eax
test edi, edi
je 0x1002ee92
mov ebx, dword [ebp - 0xc]
add ebx, dword [ebp - 0x18]
movzx edx, byte [ebx]
mov eax, esi
add ebx, dword [ebp - 0x2c]
and eax, 0xf
add edx, 0xffffff80
shl edx, cl
mov ecx, dword [ebp - 0x24]
movzx ecx, byte [eax + ecx + 0x101f08e0]
mov eax, esi
and eax, 0xfffffff0
inc esi
shl eax, 4
add ecx, eax
mov eax, dword [ebp - 0x14]
mov dword [eax + ecx*4], edx
mov ecx, dword [ebp - 0x10]
cmp esi, edi
jb 0x1002eb51
mov ebx, dword [ebp - 0x24]
jmp 0x1002ee8f
cmp eax, 2
jne 0x1002ec09
mov edx, dword [edx + 0x14]
xor esi, esi
mov ecx, dword [ebp - 0xc]
shr edx, 4
mov dword [ebp - 0x24], ecx
test edi, edi
je 0x1002ee8f
mov eax, dword [ebp - 8]
add edx, edx
mov dword [ebp - 0x2c], edx
mov eax, dword [eax + 0x8870]
movzx eax, byte [eax + 0x808c]
mov dword [ebp - 0x20], eax
nop
mov edx, dword [ebp - 0x18]
movzx edx, word [ecx + edx*2]
mov ecx, eax
mov eax, esi
sub edx, 0x8000
and eax, 0xf
sar edx, cl
mov ecx, dword [ebp - 0x10]
shl edx, cl
movzx ecx, byte [eax + ebx + 0x101f08e0]
mov eax, esi
and eax, 0xfffffff0
inc esi
shl eax, 4
add ecx, eax
mov eax, dword [ebp - 0x14]
mov dword [eax + ecx*4], edx
mov ecx, dword [ebp - 0x24]
add ecx, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x24], ecx
cmp esi, edi
jb 0x1002ebc0
jmp 0x1002ee8f
cmp eax, 3
jne 0x1002ec81
mov eax, dword [edx + 0x8870]
xor esi, esi
mov ecx, dword [edx + 0x14]
shr ecx, 4
mov al, byte [eax + 0x808c]
mov byte [ebp - 1], al
mov eax, dword [ebp - 0xc]
mov dword [ebp - 0x24], eax
test edi, edi
je 0x1002ee92
movzx edx, byte [ebp - 1]
add ecx, ecx
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x20], ecx
nop
mov ecx, dword [ebp - 0x18]
movsx edx, word [eax + ecx*2]
mov eax, esi
mov cl, byte [ebp - 0x2c]
and eax, 0xf
sar edx, cl
mov ecx, dword [ebp - 0x10]
shl edx, cl
movzx ecx, byte [eax + ebx + 0x101f08e0]
mov eax, esi
and eax, 0xfffffff0
inc esi
shl eax, 4
add ecx, eax
mov eax, dword [ebp - 0x14]
mov dword [eax + ecx*4], edx
mov eax, dword [ebp - 0x24]
add eax, dword [ebp - 0x20]
mov dword [ebp - 0x24], eax
cmp esi, edi
jb 0x1002ec40
jmp 0x1002ee8f
cmp eax, 4
jne 0x1002ecec
mov edx, dword [edx + 0x14]
xor esi, esi
mov eax, dword [ebp - 0xc]
shr edx, 4
mov dword [ebp - 0x24], eax
test edi, edi
je 0x1002ee8f
add edx, edx
mov dword [ebp - 0x2c], edx
mov edx, dword [ebp - 0x18]
movsx edx, word [eax + edx*2]
mov eax, edx
and edx, 0x7fff
sar eax, 0x1f
xor edx, eax
sub edx, eax
mov eax, esi
and eax, 0xf
shl edx, cl
movzx ecx, byte [eax + ebx + 0x101f08e0]
mov eax, esi
and eax, 0xfffffff0
inc esi
shl eax, 4
add ecx, eax
mov eax, dword [ebp - 0x14]
mov dword [eax + ecx*4], edx
mov eax, dword [ebp - 0x24]
add eax, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x10]
mov dword [ebp - 0x24], eax
cmp esi, edi
jb 0x1002eca1
jmp 0x1002ee8f
cmp eax, 6
jne 0x1002ed62
mov edx, dword [edx + 0x14]
xor esi, esi
mov ecx, dword [ebp - 0xc]
shr edx, 5
mov dword [ebp - 0x24], ecx
test edi, edi
je 0x1002ee8f
mov eax, dword [ebp - 8]
shl edx, 2
mov dword [ebp - 0x2c], edx
mov eax, dword [eax + 0x8870]
movzx eax, byte [eax + 0x808c]
mov dword [ebp - 0x20], eax
mov edx, dword [ebp - 0x18]
mov edx, dword [ecx + edx*4]
mov ecx, eax
sar edx, cl
mov eax, esi
mov ecx, dword [ebp - 0x10]
and eax, 0xf
shl edx, cl
movzx ecx, byte [eax + ebx + 0x101f08e0]
mov eax, esi
and eax, 0xfffffff0
inc esi
shl eax, 4
add ecx, eax
mov eax, dword [ebp - 0x14]
mov dword [eax + ecx*4], edx
mov ecx, dword [ebp - 0x24]
add ecx, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x24], ecx
cmp esi, edi
jb 0x1002ed20
jmp 0x1002ee8f
cmp eax, 7
jne 0x1002ef29
mov esi, dword [edx + 0x8870]
mov eax, dword [edx + 0x14]
shr eax, 5
mov dl, byte [esi + 0x808d]
mov byte [ebp - 1], dl
mov edx, dword [ebp - 0xc]
mov dword [ebp - 0x24], edx
xor edx, edx
mov dword [ebp - 0x2c], edx
test edi, edi
je 0x1002ee8f
movzx esi, byte [esi + 0x808c]
mov dword [ebp - 0x1c], 0x16
sub dword [ebp - 0x1c], esi
mov dword [ebp - 0x20], 0x17
sub dword [ebp - 0x20], esi
shl eax, 2
mov dword [ebp - 0x3c], esi
mov dword [ebp - 0x40], eax
nop word [eax + eax]
mov eax, dword [ebp - 0x18]
mov esi, dword [ebp - 0x24]
movss xmm0, dword [esi + eax*4]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x1002eddb
xor esi, esi
jmp 0x1002ee5b
movss dword [ebp - 0x38], xmm0
mov esi, dword [ebp - 0x38]
mov edx, esi
mov eax, esi
and edx, 0x7fffff
sar eax, 0x17
or edx, 0x800000
movzx ecx, al
test al, al
jne 0x1002ee04
xor edx, 0x800000
inc ecx
movsx eax, byte [ebp - 1]
add eax, 0xffffff81
add eax, ecx
cmp eax, 1
jg 0x1002ee2b
jge 0x1002ee1d
mov ecx, 1
sub ecx, eax
sar edx, cl
mov eax, edx
and eax, 0x800000
neg eax
sbb eax, eax
and eax, 1
mov ecx, dword [ebp - 0x1c]
and edx, 0x7fffff
sar esi, 0x1f
mov dword [ebp - 0x38], esi
mov esi, 1
shl esi, cl
mov ecx, dword [ebp - 0x20]
add esi, edx
mov edx, dword [ebp - 0x2c]
sar esi, cl
mov ecx, dword [ebp - 0x3c]
shl eax, cl
mov ecx, dword [ebp - 0x10]
add esi, eax
xor esi, dword [ebp - 0x38]
sub esi, dword [ebp - 0x38]
mov eax, edx
shl esi, cl
and eax, 0xf
movzx ecx, byte [eax + ebx + 0x101f08e0]
mov eax, edx
and eax, 0xfffffff0
inc edx
shl eax, 4
add ecx, eax
mov dword [ebp - 0x2c], edx
mov eax, dword [ebp - 0x14]
mov dword [eax + ecx*4], esi
mov eax, dword [ebp - 0x40]
add dword [ebp - 0x24], eax
mov ecx, dword [ebp - 0x10]
cmp edx, edi
jb 0x1002edc0
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 0x30]
inc eax
mov dword [ebp - 0x30], eax
cmp eax, dword [ebp - 0x44]
jae 0x1002eeaa
mov eax, dword [ebp - 0xc]
add eax, dword [edx + 0x80b0]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 8]
mov edx, edi
mov eax, dword [eax + 0x861c]
shl eax, 4
cmp edi, eax
jae 0x1002ef04
mov eax, dword [ebp - 0x28]
mov esi, edi
mov edi, dword [ebp - 0x14]
shl esi, 4
dec esi
movzx eax, byte [eax]
and esi, 0xffffff00
add esi, eax
mov eax, edx
and eax, 0xf
movzx ecx, byte [eax + ebx + 0x101f08e0]
mov eax, edx
and eax, 0xfffffff0
inc edx
shl eax, 4
add ecx, eax
mov eax, dword [edi + esi*4]
mov dword [edi + ecx*4], eax
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x861c]
shl eax, 4
cmp edx, eax
jb 0x1002eed3
mov edi, dword [ebp - 0x48]
add dword [ebp - 0x28], 0x10
add ebx, 0x10
mov ecx, dword [ebp - 0x10]
mov edx, dword [ebp - 8]
mov dword [ebp - 0x24], ebx
cmp ebx, 0x100
jb 0x1002eb30
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
pop esi
or eax, 0xffffffff
pop ebx
mov esp, ebp
pop ebp
ret