Function at 0x10071170
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
push ebx
push esi
push edi
mov edi, ecx
xor ebx, ebx
mov dword [ebp - 0x18], edi
mov dword [ebp - 8], ebx
mov dword [edi + 0x78], 2
cmp dword [edi + 0x88], ebx
je 0x10071442
cmp dword [edi], 0
jne 0x10071442
mov edx, dword [edi + 0x7c]
mov eax, dword [edi + 0x54]
movzx ecx, byte [edx + eax + 2]
mov eax, dword [edi + 0x74]
shl eax, 5
xor ecx, eax
mov eax, dword [edi + 0x64]
and ecx, 0x7fff
mov dword [edi + 0x74], ecx
mov esi, dword [eax + ecx*4]
mov eax, dword [edi + 0x60]
movzx ecx, dx
mov dword [ebp - 0xc], esi
mov dword [eax + ecx*4], esi
mov edx, dword [edi + 0x74]
mov ecx, dword [edi + 0x64]
mov eax, dword [edi + 0x7c]
mov dword [ecx + edx*4], eax
test esi, esi
je 0x1007132b
mov edx, dword [edi + 0x7c]
mov eax, edx
sub eax, esi
cmp eax, 0xffff
ja 0x1007132b
mov eax, dword [edi + 0x8c]
lea ecx, [edx - 0xffff]
mov ebx, dword [edi + 0x78]
mov esi, 0xffff
mov dword [ebp - 0x10], eax
mov eax, dword [edi + 0x54]
mov dword [ebp - 0x14], eax
add eax, edx
cmp esi, edx
mov dword [ebp - 8], ebx
sbb edx, edx
and edx, ecx
lea esi, [eax + 0xfff2]
mov cl, byte [ebx + eax - 1]
mov ch, byte [ebx + eax]
mov dword [ebp - 0x1c], edx
mov byte [ebp - 1], cl
mov byte [ebp - 2], ch
cmp ebx, dword [edi + 0x94]
jb 0x1007123d
shr dword [ebp - 0x10], 2
mov edx, dword [ebp - 0xc]
add edx, dword [ebp - 0x14]
mov edi, dword [ebp - 0x18]
cmp byte [edx + ebx], ch
jne 0x100712f8
cmp byte [edx + ebx - 1], cl
jne 0x100712f8
mov cl, byte [edx]
cmp cl, byte [eax]
jne 0x100712f8
mov cl, byte [edx + 1]
cmp cl, byte [eax + 1]
jne 0x100712f8
add eax, 2
add edx, 2
mov cl, byte [eax + 1]
inc eax
cmp cl, byte [edx + 1]
jne 0x100712c3
mov cl, byte [eax + 1]
inc eax
cmp cl, byte [edx + 2]
jne 0x100712c3
mov cl, byte [eax + 1]
inc eax
cmp cl, byte [edx + 3]
jne 0x100712c3
mov cl, byte [eax + 1]
inc eax
cmp cl, byte [edx + 4]
jne 0x100712c3
mov cl, byte [eax + 1]
inc eax
cmp cl, byte [edx + 5]
jne 0x100712c3
mov cl, byte [eax + 1]
inc eax
cmp cl, byte [edx + 6]
jne 0x100712c3
mov cl, byte [eax + 1]
inc eax
cmp cl, byte [edx + 7]
jne 0x100712c3
mov cl, byte [eax + 1]
inc eax
add edx, 8
cmp cl, byte [edx]
jne 0x100712c3
cmp eax, esi
jb 0x10071275
mov edx, eax
sub eax, esi
lea ecx, [eax + 0xfff2]
lea eax, [esi - 0xfff2]
cmp ecx, ebx
jle 0x100712f8
mov ebx, dword [ebp - 0xc]
mov dword [edi + 0x80], ebx
mov ebx, ecx
mov dword [ebp - 8], ebx
cmp ecx, dword [edi + 0x98]
jge 0x1007131c
mov cl, byte [edx - 1]
mov byte [ebp - 1], cl
mov cl, byte [edx]
mov byte [ebp - 2], cl
mov ecx, dword [ebp - 0xc]
movzx edx, cx
mov ecx, dword [edi + 0x60]
mov edx, dword [ecx + edx*4]
mov dword [ebp - 0xc], edx
cmp edx, dword [ebp - 0x1c]
jbe 0x1007131c
sub dword [ebp - 0x10], 1
mov cl, byte [ebp - 1]
mov ch, byte [ebp - 2]
jne 0x10071240
mov eax, dword [edi + 0x88]
cmp ebx, eax
jbe 0x1007132b
mov ebx, eax
mov dword [ebp - 8], ebx
mov ecx, dword [edi + 0x7c]
push edi
cmp ebx, 3
jb 0x100713cf
sub ecx, dword [edi + 0x80]
lea edx, [ebx - 3]
call fcn.10070610
mov esi, dword [ebp - 8]
add esp, 4
sub dword [edi + 0x88], esi
mov ebx, eax
mov dword [ebp - 0x1c], ebx
cmp esi, dword [edi + 0x90]
ja 0x100713a9
mov ebx, esi
dec ebx
inc dword [edi + 0x7c]
mov ecx, dword [edi + 0x7c]
mov eax, dword [edi + 0x54]
movzx edx, cx
movzx esi, byte [ecx + eax + 2]
mov eax, dword [edi + 0x74]
mov ecx, dword [edi + 0x60]
shl eax, 5
xor esi, eax
mov eax, dword [edi + 0x64]
and esi, 0x7fff
mov dword [edi + 0x74], esi
mov eax, dword [eax + esi*4]
mov dword [ecx + edx*4], eax
mov edx, dword [edi + 0x74]
mov ecx, dword [edi + 0x64]
mov eax, dword [edi + 0x7c]
mov dword [ecx + edx*4], eax
sub ebx, 1
jne 0x10071362
mov dword [ebp - 8], ebx
mov ebx, dword [ebp - 0x1c]
jmp 0x100713e8
mov edx, dword [edi + 0x7c]
mov eax, dword [edi + 0x54]
add edx, esi
mov dword [edi + 0x7c], edx
xor esi, esi
mov dword [ebp - 8], esi
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 0x100713ef
mov eax, dword [edi + 0x54]
movzx edx, byte [eax + ecx]
xor ecx, ecx
call fcn.10070610
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 0x10071416
mov eax, dword [edi + 0x6c]
test eax, eax
js 0x10071401
mov ecx, dword [edi + 0x54]
add ecx, eax
jmp 0x10071403
xor ecx, ecx
push edi
push 0
sub edx, eax
call fcn.100701d0
mov eax, dword [edi + 0x7c]
add esp, 8
mov dword [edi + 0x6c], eax
cmp dword [edi + 0x88], 0xfff6
jae 0x10071432
cmp dword [edi + 0x84], 0
jne 0x10071432
mov ecx, edi
call fcn.10071040
cmp dword [edi + 0x88], 0
mov ebx, dword [ebp - 8]
jne 0x10071196
mov eax, dword [edi + 0x6c]
test eax, eax
js 0x10071450
mov ecx, dword [edi + 0x54]
add ecx, eax
jmp 0x10071452
xor ecx, ecx
mov edx, dword [edi + 0x7c]
push edi
push 1
sub edx, eax
call fcn.100701d0
add esp, 8
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret