Function at 0x10072cc0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14
push ebx
push esi
push edi
mov edi, ecx
mov dword [ebp - 8], 0
cmp dword [edi + 0x88], 0
mov dword [edi + 0x78], 2
je 0x10072fbb
mov ebx, 0x7efa
jmp 0x10072cf0
cmp dword [edi], 0
jne 0x10072fbb
mov edx, dword [edi + 0x7c]
mov eax, dword [edi + 0x54]
movzx ecx, byte [edx + eax + 2]
and edx, 0x7fff
mov eax, dword [edi + 0x74]
shl eax, 5
xor ecx, eax
mov eax, dword [edi + 0x5c]
and ecx, 0x3fff
mov dword [edi + 0x74], ecx
movzx ecx, word [eax + ecx*2]
mov eax, dword [edi + 0x58]
mov esi, ecx
mov word [eax + edx*2], cx
mov edx, dword [edi + 0x74]
mov ecx, dword [edi + 0x5c]
mov ax, word [edi + 0x7c]
mov word [ecx + edx*2], ax
test esi, esi
je 0x10072e8f
mov edx, dword [edi + 0x7c]
mov eax, edx
sub eax, esi
cmp eax, 0x7efa
ja 0x10072e8f
mov eax, dword [edi + 0x8c]
mov ecx, dword [edi + 0x78]
mov dword [ebp - 0xc], eax
mov eax, dword [edi + 0x54]
add eax, edx
mov dword [ebp - 8], ecx
cmp ebx, edx
lea ecx, [edx - 0x7efa]
sbb edx, edx
and edx, ecx
lea ebx, [eax + 0x102]
mov ecx, dword [ebp - 8]
mov dword [ebp - 0x14], edx
mov dword [ebp - 0x10], ebx
mov dl, byte [ecx + eax - 1]
mov byte [ebp - 1], dl
mov dl, byte [ecx + eax]
mov byte [ebp - 2], dl
cmp ecx, dword [edi + 0x94]
jb 0x10072da3
shr dword [ebp - 0xc], 2
jmp 0x10072da3
mov ecx, dword [ebp - 8]
mov edx, dword [edi + 0x54]
mov bl, byte [ebp - 2]
add edx, esi
cmp byte [edx + ecx], bl
jne 0x10072e5f
mov bl, byte [ebp - 1]
cmp byte [edx + ecx - 1], bl
mov ebx, dword [ebp - 0x10]
jne 0x10072e5f
mov cl, byte [edx]
cmp cl, byte [eax]
jne 0x10072e5f
mov cl, byte [edx + 1]
cmp cl, byte [eax + 1]
jne 0x10072e5f
add eax, 2
add edx, 2
mov cl, byte [eax + 1]
inc eax
cmp cl, byte [edx + 1]
jne 0x10072e2e
mov cl, byte [eax + 1]
inc eax
cmp cl, byte [edx + 2]
jne 0x10072e2e
mov cl, byte [eax + 1]
inc eax
cmp cl, byte [edx + 3]
jne 0x10072e2e
mov cl, byte [eax + 1]
inc eax
cmp cl, byte [edx + 4]
jne 0x10072e2e
mov cl, byte [eax + 1]
inc eax
cmp cl, byte [edx + 5]
jne 0x10072e2e
mov cl, byte [eax + 1]
inc eax
cmp cl, byte [edx + 6]
jne 0x10072e2e
mov cl, byte [eax + 1]
inc eax
cmp cl, byte [edx + 7]
jne 0x10072e2e
mov cl, byte [eax + 1]
inc eax
add edx, 8
cmp cl, byte [edx]
jne 0x10072e2e
cmp eax, ebx
jb 0x10072de0
mov edx, eax
sub eax, ebx
lea ecx, [eax + 0x102]
lea eax, [ebx - 0x102]
cmp ecx, dword [ebp - 8]
jle 0x10072e5f
mov dword [edi + 0x80], esi
mov dword [ebp - 8], ecx
cmp ecx, dword [edi + 0x98]
jge 0x10072e7b
mov cl, byte [edx - 1]
mov byte [ebp - 1], cl
mov cl, byte [edx]
mov byte [ebp - 2], cl
mov ecx, dword [edi + 0x58]
and esi, 0x7fff
movzx esi, word [ecx + esi*2]
cmp esi, dword [ebp - 0x14]
jbe 0x10072e7b
sub dword [ebp - 0xc], 1
jne 0x10072da0
mov eax, dword [edi + 0x88]
mov esi, dword [ebp - 8]
cmp esi, eax
jbe 0x10072e92
mov esi, eax
mov dword [ebp - 8], esi
jmp 0x10072e92
mov esi, dword [ebp - 8]
mov ecx, dword [edi + 0x7c]
push edi
cmp esi, 3
jb 0x10072f3d
sub ecx, dword [edi + 0x80]
lea edx, [esi - 3]
call fcn.100721f0
sub dword [edi + 0x88], esi
add esp, 4
mov ebx, eax
mov dword [ebp - 0x14], ebx
cmp esi, dword [edi + 0x90]
ja 0x10072f15
mov ebx, dword [ebp - 8]
dec ebx
inc dword [edi + 0x7c]
mov esi, dword [edi + 0x7c]
mov eax, dword [edi + 0x54]
mov ecx, dword [edi + 0x58]
movzx edx, byte [esi + eax + 2]
and esi, 0x7fff
mov eax, dword [edi + 0x74]
shl eax, 5
xor edx, eax
mov eax, dword [edi + 0x5c]
and edx, 0x3fff
mov dword [edi + 0x74], edx
movzx eax, word [eax + edx*2]
mov word [ecx + esi*2], ax
mov edx, dword [edi + 0x74]
mov ecx, dword [edi + 0x5c]
movzx eax, word [edi + 0x7c]
mov word [ecx + edx*2], ax
sub ebx, 1
jne 0x10072ec7
mov dword [ebp - 8], ebx
mov ebx, dword [ebp - 0x14]
jmp 0x10072f56
mov edx, dword [edi + 0x7c]
mov eax, dword [edi + 0x54]
add edx, esi
mov dword [edi + 0x7c], edx
mov dword [ebp - 8], 0
movzx ecx, byte [edx + eax]
mov dword [edi + 0x74], ecx
movzx eax, byte [edx + eax + 1]
shl ecx, 5
xor eax, ecx
mov dword [edi + 0x74], eax
jmp 0x10072f5d
mov eax, dword [edi + 0x54]
movzx edx, byte [eax + ecx]
xor ecx, ecx
call fcn.100721f0
add esp, 4
mov ebx, eax
dec dword [edi + 0x88]
mov edx, dword [edi + 0x7c]
inc edx
mov dword [edi + 0x7c], edx
test ebx, ebx
je 0x10072f84
mov eax, dword [edi + 0x6c]
test eax, eax
js 0x10072f6f
mov ecx, dword [edi + 0x54]
add ecx, eax
jmp 0x10072f71
xor ecx, ecx
push edi
push 0
sub edx, eax
call fcn.10071da0
mov eax, dword [edi + 0x7c]
add esp, 8
mov dword [edi + 0x6c], eax
mov eax, dword [edi + 0x88]
cmp eax, 0x106
jae 0x10072fae
cmp dword [edi + 0x84], 0
jne 0x10072fae
mov ecx, edi
call fcn.10072b10
mov eax, dword [edi + 0x88]
cmp eax, 0x106
jb 0x10072f91
mov ebx, 0x7efa
test eax, eax
jne 0x10072cf0
mov eax, dword [edi + 0x6c]
test eax, eax
js 0x10072fc9
mov ecx, dword [edi + 0x54]
add ecx, eax
jmp 0x10072fcb
xor ecx, ecx
mov edx, dword [edi + 0x7c]
push edi
push 1
sub edx, eax
call fcn.10071da0
add esp, 8
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret