Function at 0x1007b4c0
Capabilities:
Encode data using xor

Disassembly:
push ecx
push ebx
push ebp
push esi
mov esi, ecx
push edi
xor edi, edi
mov eax, dword [esi + 0x2cb0]
mov dword [esi + 0x2ca8], edi
cmp eax, 2
jne 0x1007b500
push 1
call fcn.1007c810
test eax, eax
je 0x1007b4fa
mov eax, dword [esi + 0x78]
mov ecx, dword [esi + 0x74]
push eax
push ecx
mov ecx, esi
call fcn.1007b310
pop edi
pop esi
pop ebp
pop ebx
pop ecx
ret
mov dword [esi + 0x2cb0], edi
mov eax, dword [esi + 0x38]
mov ecx, 8
sub ecx, eax
mov eax, dword [esi + 0x3c]
shr eax, cl
mov ecx, dword [esi + 0x2c98]
shr eax, 0x10
and eax, 0xff
cmp ecx, 0x25
mov ecx, dword [esi + 0x2ca4]
jae 0x1007b53d
cmp ecx, edi
mov ebx, 0x100c08b4
jne 0x1007b536
mov ebx, 0x100c08a4
mov edx, 0x100c08e4
jmp 0x1007b550
cmp ecx, edi
mov ebx, 0x100c08d4
jne 0x1007b54b
mov ebx, 0x100c08c4
mov edx, 0x100c0920
mov cl, byte [ebx]
mov ebp, 0xff
sar ebp, cl
mov ecx, dword [edx]
xor ecx, eax
not ebp
test ecx, ebp
je 0x1007b57c
mov cl, byte [edi + ebx + 1]
inc edi
mov ebp, 0xff
add edx, 4
sar ebp, cl
mov ecx, eax
xor ecx, dword [edx]
not ebp
test ecx, ebp
jne 0x1007b563
mov ecx, dword [esi + 0x38]
xor edx, edx
mov dl, byte [edi + ebx]
add ecx, edx
mov eax, ecx
mov dword [esi + 0x38], ecx
cmp eax, 8
jb 0x1007b5da
lea ebx, [esi + 0x40]
mov ebp, 0xfffffff8
mov eax, dword [ebx]
mov ecx, dword [ebx + 4]
cmp eax, ecx
jb 0x1007b5ae
mov ecx, ebx
call fcn.10004b74
mov byte [esp + 0x10], al
jmp 0x1007b5b7
mov cl, byte [eax]
inc eax
mov byte [esp + 0x10], cl
mov dword [ebx], eax
mov edx, dword [esi + 0x3c]
mov eax, dword [esp + 0x10]
mov ecx, dword [esi + 0x38]
and eax, 0xff
shl edx, 8
add ecx, ebp
or edx, eax
mov eax, ecx
mov dword [esi + 0x3c], edx
cmp eax, 8
mov dword [esi + 0x38], ecx
jae 0x1007b598
cmp edi, 9
jb 0x1007b6a5
jne 0x1007b607
mov edi, dword [esi + 0x2cb0]
mov ecx, dword [esi + 0x78]
mov edx, dword [esi + 0x74]
inc edi
push ecx
push edx
mov ecx, esi
mov dword [esi + 0x2cb0], edi
call fcn.1007b310
pop edi
pop esi
pop ebp
pop ebx
pop ecx
ret
cmp edi, 0xe
mov dword [esi + 0x2cb0], 0
jne 0x1007b64a
push 0x100c0760
mov ecx, esi
call fcn.1007b3f0
mov edi, eax
push 0xf
mov ecx, esi
add edi, 5
call fcn.1007c810
add eax, 0x7fff
push edi
push eax
mov ecx, esi
mov dword [esi + 0x78], edi
mov dword [esi + 0x74], eax
call fcn.1007b310
pop edi
pop esi
pop ebp
pop ebx
pop ecx
ret
mov eax, dword [esi + 0x70]
push 0x100c0728
sub eax, edi
mov ecx, esi
inc eax
mov ebp, edi
and eax, 3
mov ebx, dword [esi + eax*4 + 0x60]
call fcn.1007b3f0
add eax, 2
mov edi, eax
cmp edi, 0x101
jne 0x1007b68e
cmp ebp, 0xa
jne 0x1007b68e
mov eax, dword [esi + 0x2ca4]
pop edi
xor eax, 1
mov dword [esi + 0x2ca4], eax
pop esi
pop ebp
xor eax, eax
pop ebx
pop ecx
ret
cmp ebx, 0x100
jb 0x1007b697
inc edi
mov ecx, dword [esi + 0x2cc0]
dec ecx
cmp ebx, ecx
jb 0x1007b719
inc edi
jmp 0x1007b719
mov edx, dword [esi + 0x2c98]
push 0x100c0808
mov dword [esi + 0x2cb0], 0
lea eax, [edx + edi]
mov ecx, eax
shr ecx, 4
sub eax, ecx
mov ecx, esi
mov dword [esi + 0x2c98], eax
call fcn.1007b3f0
and eax, 0xff
mov ebx, dword [esi + eax*4 + 0x48c]
dec eax
cmp eax, 0xffffffff
je 0x1007b716
mov ebp, dword [esi + ebx*4 + 0x148c]
dec ebp
mov dword [esi + ebx*4 + 0x148c], ebp
mov ecx, dword [esi + eax*4 + 0x48c]
mov edx, dword [esi + ecx*4 + 0x148c]
inc edx
mov dword [esi + ecx*4 + 0x148c], edx
mov dword [esi + eax*4 + 0x490], ecx
mov dword [esi + eax*4 + 0x48c], ebx
add edi, 2
mov edx, dword [esi + 0x70]
push edi
push ebx
mov ecx, esi
mov dword [esi + edx*4 + 0x60], ebx
mov eax, dword [esi + 0x70]
inc eax
mov dword [esi + 0x78], edi
and eax, 3
mov dword [esi + 0x74], ebx
mov dword [esi + 0x70], eax
call fcn.1007b310
pop edi
pop esi
pop ebp
pop ebx
pop ecx
ret