Function at 0x100a3651
Capabilities:
Encode data using xor

Disassembly:
push ecx
push esi
mov esi, ecx
cmp dword [esi + 0xb4], 2
mov dword [esi + 0xb0], 0
jne 0x100a368c
push 1
call fcn.100a3570
test eax, eax
je 0x100a3682
push dword [esi + 0x74]
mov ecx, esi
push dword [esi + 0x70]
call fcn.100a2d80
pop esi
pop ecx
ret
mov dword [esi + 0xb4], 0
mov eax, dword [esi + 0x3c]
mov ecx, 8
sub ecx, dword [esi + 0x38]
shr eax, cl
mov ecx, 8
shr eax, 0x10
cmp dword [esi + 0xa0], 0x25
push ebx
push ebp
movzx ebp, al
mov ebx, 0x100ef760
mov eax, 0x100ef790
cmovae ebx, eax
mov eax, dword [esi + 0xac]
add eax, 0x10
add eax, ebx
mov dword [esp + 0xc], eax
movzx edx, byte [ebx]
xor edx, ebp
movzx eax, byte [eax]
sub ecx, eax
push edi
shr edx, cl
xor edi, edi
test edx, edx
je 0x100a36fd
mov edx, dword [esp + 0x10]
sub edx, ebx
movzx eax, byte [edx + ebx + 1]
lea ebx, [ebx + 1]
mov ecx, 8
inc edi
sub ecx, eax
movzx eax, byte [ebx]
xor eax, ebp
shr eax, cl
test eax, eax
jne 0x100a36e2
mov eax, dword [esp + 0x10]
movzx eax, byte [edi + eax]
add dword [esi + 0x38], eax
cmp dword [esi + 0x38], 8
jb 0x100a3742
nop
mov eax, dword [esi + 0x40]
cmp eax, dword [esi + 0x44]
jb 0x100a3724
lea ecx, [esi + 0x40]
call fcn.10006b62
mov dl, al
jmp 0x100a372a
mov dl, byte [eax]
inc eax
mov dword [esi + 0x40], eax
mov ecx, dword [esi + 0x3c]
add dword [esi + 0x38], 0xfffffff8
shl ecx, 8
movzx eax, dl
or ecx, eax
cmp dword [esi + 0x38], 8
mov dword [esi + 0x3c], ecx
jae 0x100a3710
cmp edi, 9
jb 0x100a383c
jne 0x100a378a
inc dword [esi + 0xb4]
mov eax, dword [esi + 0x74]
test eax, eax
je 0x100a38b4
mov edx, dword [esi + 0x6c]
mov ecx, dword [esi + 0x68]
test edx, edx
ja 0x100a3776
jb 0x100a38b4
cmp ecx, eax
jb 0x100a38b4
sub ecx, eax
push eax
push dword [esi + 0x70]
sbb edx, 0
mov dword [esi + 0x68], ecx
mov dword [esi + 0x6c], edx
jmp 0x100a38de
mov dword [esi + 0xb4], 0
mov ecx, esi
cmp edi, 0xe
jne 0x100a37ee
push 0x100ef7d0
call fcn.100a2e70
push 0xf
mov ecx, esi
lea edi, [eax + 5]
call fcn.100a3570
add eax, 0x7fff
mov dword [esi + 0x74], edi
mov dword [esi + 0x70], eax
test edi, edi
je 0x100a38b4
mov edx, dword [esi + 0x6c]
mov ecx, dword [esi + 0x68]
test edx, edx
ja 0x100a37dc
jb 0x100a38b4
cmp ecx, edi
jb 0x100a38b4
sub ecx, edi
push edi
sbb edx, 0
mov dword [esi + 0x68], ecx
mov dword [esi + 0x6c], edx
push eax
jmp 0x100a38de
mov eax, dword [esi + 0x78]
mov ebp, edi
sub eax, edi
inc eax
and eax, 3
push 0x100ef7c0
mov ebx, dword [esi + eax*4 + 0x7c]
call fcn.100a2e70
mov edi, eax
cmp edi, 0xff
jne 0x100a3825
cmp ebp, 0xa
jne 0x100a3825
xor dword [esi + 0xac], 0x10
xor eax, eax
pop edi
pop ebp
pop ebx
pop esi
pop ecx
ret
cmp ebx, 0x100
jb 0x100a3898
mov eax, dword [esi + 0xc0]
inc edi
dec eax
cmp ebx, eax
jb 0x100a3898
inc edi
jmp 0x100a3898
mov ecx, dword [esi + 0xa0]
add ecx, edi
mov dword [esi + 0xb4], 0
mov eax, ecx
shr eax, 4
sub ecx, eax
mov dword [esi + 0xa0], ecx
mov ecx, esi
push 0x100ef800
call fcn.100a2e70
movzx ecx, al
mov ebx, dword [esi + ecx*4 + 0x4c4]
test al, al
je 0x100a3898
dec dword [esi + ebx*4 + 0x14c4]
mov eax, dword [esi + ecx*4 + 0x4c0]
inc dword [esi + eax*4 + 0x14c4]
mov dword [esi + ecx*4 + 0x4c4], eax
mov dword [esi + ecx*4 + 0x4c0], ebx
mov eax, dword [esi + 0x78]
mov dword [esi + eax*4 + 0x7c], ebx
mov eax, dword [esi + 0x78]
inc eax
mov dword [esi + 0x70], ebx
and eax, 3
add edi, 2
mov dword [esi + 0x78], eax
mov dword [esi + 0x74], edi
jne 0x100a38c1
pop edi
pop ebp
mov ecx, 1
pop ebx
mov eax, ecx
pop esi
pop ecx
ret
mov ecx, dword [esi + 0x6c]
mov eax, dword [esi + 0x68]
test ecx, ecx
ja 0x100a38d1
jb 0x100a38b4
cmp eax, edi
jb 0x100a38b4
sub eax, edi
push edi
sbb ecx, 0
mov dword [esi + 0x68], eax
mov dword [esi + 0x6c], ecx
push ebx
lea ecx, [esi + 0x10]
call fcn.1000d37e
xor ecx, ecx
test al, al
pop edi
pop ebp
sete cl
pop ebx
mov eax, ecx
pop esi
pop ecx
ret