Function at 0x10098ad0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0xc
push ebx
push esi
push edi
mov edi, ecx
mov ebx, 8
mov dword [esp + 0x14], edi
cmp dword [edi + 0x2cb8], 2
mov dword [edi + 0x2cb0], 0
jne 0x10098b5f
mov eax, dword [edi + 0x38]
mov ecx, ebx
mov esi, dword [edi + 0x3c]
sub ecx, eax
shr esi, cl
inc eax
lea ecx, [edi + 0x38]
shr esi, 0x17
mov dword [edi + 0x38], eax
call fcn.1000d5d2
and esi, 1
je 0x10098b55
mov eax, dword [edi + 0x80]
test eax, eax
jne 0x10098b2c
pop edi
mov ecx, 1
pop esi
mov eax, ecx
pop ebx
add esp, 0xc
ret
sub dword [edi + 0x88], eax
lea ecx, [edi + 0x10]
push eax
push dword [edi + 0x7c]
sbb dword [edi + 0x8c], 0
call fcn.1000cb5d
xor ecx, ecx
test al, al
pop edi
sete cl
pop esi
mov eax, ecx
pop ebx
add esp, 0xc
ret
mov dword [edi + 0x2cb8], 0
mov ecx, ebx
mov ebx, dword [edi + 0x3c]
sub ecx, dword [edi + 0x38]
push ebp
lea ebp, [edi + 0x38]
shr ebx, cl
shr ebx, 0x10
and ebx, 0xff
cmp dword [edi + 0x2ca0], 0x25
jae 0x10098b93
mov eax, 0x100d9284
mov dword [esp + 0x10], 0x100d92b4
mov ecx, 0x100d9274
jmp 0x10098ba5
mov eax, 0x100d92a4
mov dword [esp + 0x10], 0x100d92f0
mov ecx, 0x100d9294
cmp dword [edi + 0x2cac], 0
mov edx, 0xff
cmove eax, ecx
xor esi, esi
mov dword [esp + 0x14], eax
mov cl, byte [eax]
mov eax, dword [esp + 0x10]
sar edx, cl
not edx
mov eax, dword [eax]
xor eax, ebx
test eax, edx
je 0x10098bf2
mov ebp, dword [esp + 0x14]
mov edi, dword [esp + 0x10]
mov cl, byte [esi + ebp + 1]
inc esi
mov edx, 0xff
sar edx, cl
not edx
mov eax, dword [edi + esi*4]
xor eax, ebx
test eax, edx
jne 0x10098bd4
mov edi, dword [esp + 0x18]
lea ebp, [edi + 0x38]
mov eax, dword [esp + 0x14]
movzx eax, byte [esi + eax]
add dword [ebp], eax
cmp dword [ebp], 8
jb 0x10098c35
mov eax, dword [ebp + 8]
cmp eax, dword [ebp + 0xc]
jb 0x10098c17
lea ecx, [ebp + 8]
call fcn.10006825
mov dl, al
jmp 0x10098c1d
mov dl, byte [eax]
inc eax
mov dword [ebp + 8], eax
mov ecx, dword [ebp + 4]
add dword [ebp], 0xfffffff8
shl ecx, 8
movzx eax, dl
or ecx, eax
cmp dword [ebp], 8
mov dword [ebp + 4], ecx
jae 0x10098c03
cmp esi, 9
jb 0x10098d22
jne 0x10098c63
inc dword [edi + 0x2cb8]
mov eax, dword [edi + 0x80]
test eax, eax
je 0x10098df3
sub dword [edi + 0x88], eax
push eax
push dword [edi + 0x7c]
jmp 0x10098e0a
mov dword [edi + 0x2cb8], 0
mov ecx, edi
cmp esi, 0xe
jne 0x10098cca
push 0x100d9130
call fcn.100981f0
mov esi, dword [ebp + 4]
mov ecx, 8
lea ebx, [eax + 5]
mov eax, dword [ebp]
sub ecx, eax
add eax, 0xf
shr esi, cl
mov ecx, ebp
shr esi, 9
and esi, 0x7fff
mov dword [ebp], eax
call fcn.1000d5d2
add esi, 0x7fff
mov dword [edi + 0x80], ebx
mov dword [edi + 0x7c], esi
test ebx, ebx
je 0x10098df3
sub dword [edi + 0x88], ebx
push ebx
push esi
jmp 0x10098e0a
mov eax, dword [edi + 0x78]
mov ebx, esi
sub eax, esi
inc eax
and eax, 3
push 0x100d90f8
mov ebp, dword [edi + eax*4 + 0x68]
call fcn.100981f0
lea esi, [eax + 2]
cmp esi, 0x101
jne 0x10098d04
cmp ebx, 0xa
jne 0x10098d04
xor dword [edi + 0x2cac], 1
xor eax, eax
pop ebp
pop edi
pop esi
pop ebx
add esp, 0xc
ret
cmp ebp, 0x100
jb 0x10098d0d
inc esi
mov eax, dword [edi + 0x2cc8]
dec eax
cmp ebp, eax
jb 0x10098dd5
inc esi
jmp 0x10098dd5
mov edx, dword [edi + 0x2ca0]
mov ecx, 8
add edx, esi
mov dword [edi + 0x2cb8], 0
mov eax, edx
shr eax, 4
sub edx, eax
mov dword [edi + 0x2ca0], edx
mov edx, 2
sub ecx, dword [ebp]
mov ebx, dword [ebp + 4]
shr ebx, cl
shr ebx, 0xc
lea ebp, [edx + 0xa]
and ebx, 0xfff
xor eax, eax
inc edx
sub ebx, eax
mov ecx, ebp
sub ecx, edx
mov eax, dword [edx*4 + 0x100d91dc]
sub eax, dword [edx*4 + 0x100d91d8]
shl eax, cl
cmp ebx, eax
jae 0x10098d61
add dword [edi + 0x38], edx
lea ecx, [edi + 0x38]
mov dword [esp + 0x18], edx
call fcn.1000d5d2
mov eax, dword [esp + 0x18]
mov ecx, ebp
sub ecx, eax
shr ebx, cl
add ebx, dword [eax*4 + 0x100d91d8]
and ebx, 0xff
mov ebp, dword [edi + ebx*4 + 0x494]
dec ebx
cmp ebx, 0xffffffff
je 0x10098dd2
dec dword [edi + ebp*4 + 0x1494]
mov eax, dword [edi + ebx*4 + 0x494]
inc dword [edi + eax*4 + 0x1494]
mov dword [edi + ebx*4 + 0x498], eax
mov dword [edi + ebx*4 + 0x494], ebp
add esi, 2
mov eax, dword [edi + 0x78]
mov dword [edi + eax*4 + 0x68], ebp
mov eax, dword [edi + 0x78]
inc eax
mov dword [edi + 0x80], esi
and eax, 3
mov dword [edi + 0x7c], ebp
mov dword [edi + 0x78], eax
test esi, esi
jne 0x10098e02
pop ebp
pop edi
mov ecx, 1
pop esi
mov eax, ecx
pop ebx
add esp, 0xc
ret
sub dword [edi + 0x88], esi
push esi
push ebp
sbb dword [edi + 0x8c], 0
lea ecx, [edi + 0x10]
call fcn.1000cb5d
xor ecx, ecx
test al, al
pop ebp
pop edi
sete cl
pop esi
mov eax, ecx
pop ebx
add esp, 0xc
ret