Function at 0x10067dc0
Capabilities:
Encode data using xor

Disassembly:
push ecx
push ebx
push ebp
push esi
mov esi, ecx
xor ebx, ebx
xor ebp, ebp
cmp dword [esi + 4], 3
push edi
lea edi, [ebx + 2]
jg 0x10067de0
pop edi
pop esi
pop ebp
pop ebx
add esp, 4
jmp 0x100680b0
cmp dword [esi + 0x6af90], ebx
je 0x10068078
lea esp, [esp]
cmp dword [esi + 0x6af90], 3
jb 0x10067e45
mov edx, dword [esi + 0x6af84]
mov eax, dword [esi + 0x6af7c]
movzx ecx, byte [edx + esi + 0x1af72]
shl eax, 5
xor ecx, eax
and ecx, 0x7fff
mov dword [esi + 0x6af7c], ecx
mov ebx, dword [esi + ecx*4 + 0x4af70]
and edx, 0x7fff
mov dword [esi + edx*4 + 0x2af70], ebx
mov ecx, dword [esi + 0x6af7c]
mov eax, dword [esi + 0x6af84]
mov dword [esi + ecx*4 + 0x4af70], eax
mov eax, dword [esi + 0x6af88]
mov dword [esi + 0x6af80], edi
mov dword [esp + 0x10], eax
mov edi, 2
test ebx, ebx
je 0x10067ec4
mov eax, dword [esi + 0x6af80]
cmp eax, dword [esi + 0x6af98]
jae 0x10067ec4
mov eax, dword [esi + 0x6af84]
sub eax, ebx
cmp eax, 0x7efa
ja 0x10067ec4
mov eax, dword [esi + 0x6af90]
cmp dword [esi + 0x6afa0], eax
jbe 0x10067e8f
mov dword [esi + 0x6afa0], eax
mov edx, ebx
mov ecx, esi
call fcn.10068450
mov ecx, dword [esi + 0x6af90]
mov edi, eax
cmp edi, ecx
cmova edi, ecx
cmp edi, 3
jne 0x10067ec4
mov ecx, dword [esi + 0x6af84]
sub ecx, dword [esi + 0x6af88]
mov eax, 2
cmp ecx, 0x1000
cmova edi, eax
mov ecx, dword [esi + 0x6af80]
cmp ecx, 3
jb 0x10067fcc
cmp edi, ecx
ja 0x10067fcc
mov edi, dword [esi + 0x6af90]
mov edx, dword [esi + 0x6af84]
add edi, 0xfffffffd
add edi, edx
sub edx, dword [esp + 0x10]
lea eax, [ecx - 3]
push eax
dec edx
mov ecx, esi
call fcn.10068d00
mov edx, dword [esi + 0x6af80]
mov ecx, 1
sub ecx, edx
add esp, 4
add dword [esi + 0x6af90], ecx
lea ecx, [edx - 2]
mov dword [esp + 0x10], eax
mov dword [esi + 0x6af80], ecx
nop
inc dword [esi + 0x6af84]
mov edx, dword [esi + 0x6af84]
cmp edx, edi
ja 0x10067f76
movzx ecx, byte [edx + esi + 0x1af72]
mov eax, dword [esi + 0x6af7c]
shl eax, 5
xor ecx, eax
and ecx, 0x7fff
mov dword [esi + 0x6af7c], ecx
mov ebx, dword [esi + ecx*4 + 0x4af70]
and edx, 0x7fff
mov dword [esi + edx*4 + 0x2af70], ebx
mov ecx, dword [esi + 0x6af7c]
mov eax, dword [esi + 0x6af84]
mov dword [esi + ecx*4 + 0x4af70], eax
dec dword [esi + 0x6af80]
jne 0x10067f20
inc dword [esi + 0x6af84]
mov ecx, dword [esi + 0x6af84]
xor ebp, ebp
lea edi, [ebp + 2]
cmp dword [esp + 0x10], ebp
je 0x10068039
mov eax, dword [esi + 0x6af74]
test eax, eax
js 0x10067fad
lea edx, [esi + 0x1af70]
add edx, eax
jmp 0x10067faf
xor edx, edx
sub ecx, eax
push 0
push ecx
mov ecx, esi
call fcn.10068ee0
mov eax, dword [esi + 0x6af84]
add esp, 8
mov dword [esi + 0x6af74], eax
jmp 0x10068039
test ebp, ebp
je 0x10068028
mov eax, dword [esi + 0x6af84]
xor edx, edx
movzx eax, byte [eax + esi + 0x1af6f]
push eax
mov ecx, esi
call fcn.10068d00
add esp, 4
test eax, eax
je 0x1006802d
mov ecx, dword [esi + 0x6af74]
test ecx, ecx
js 0x10068003
lea edx, [esi + 0x1af70]
add edx, ecx
jmp 0x10068005
xor edx, edx
mov eax, dword [esi + 0x6af84]
sub eax, ecx
push 0
push eax
mov ecx, esi
call fcn.10068ee0
mov eax, dword [esi + 0x6af84]
add esp, 8
mov dword [esi + 0x6af74], eax
jmp 0x1006802d
mov ebp, 1
inc dword [esi + 0x6af84]
dec dword [esi + 0x6af90]
cmp dword [esi + 0x6af90], 0x106
jae 0x1006804c
mov ecx, esi
call fcn.100682f0
cmp dword [esi + 0x6af90], 0
jne 0x10067df0
test ebp, ebp
je 0x10068078
mov eax, dword [esi + 0x6af84]
xor edx, edx
movzx eax, byte [eax + esi + 0x1af6f]
push eax
mov ecx, esi
call fcn.10068d00
add esp, 4
mov ecx, dword [esi + 0x6af74]
test ecx, ecx
js 0x1006808c
lea edx, [esi + 0x1af70]
add edx, ecx
jmp 0x1006808e
xor edx, edx
mov eax, dword [esi + 0x6af84]
sub eax, ecx
push 1
push eax
mov ecx, esi
call fcn.10068ee0
add esp, 8
pop edi
pop esi
pop ebp
pop ebx
pop ecx
ret
push ebx
push esi
mov esi, ecx
push edi
xor ebx, ebx
xor edi, edi
mov dword [esi + 0x6af80], 2
cmp dword [esi + 0x6af90], ebx
je 0x100682c1
push ebp
cmp dword [esi + 0x6af90], 3
jb 0x10068125
mov edx, dword [esi + 0x6af84]
mov eax, dword [esi + 0x6af7c]
movzx ecx, byte [edx + esi + 0x1af72]
shl eax, 5
xor ecx, eax
and ecx, 0x7fff
mov dword [esi + 0x6af7c], ecx
mov ebx, dword [esi + ecx*4 + 0x4af70]
and edx, 0x7fff
mov dword [esi + edx*4 + 0x2af70], ebx
mov ecx, dword [esi + 0x6af7c]
mov eax, dword [esi + 0x6af84]
mov dword [esi + ecx*4 + 0x4af70], eax
test ebx, ebx
je 0x10068162
mov eax, dword [esi + 0x6af84]
sub eax, ebx
cmp eax, 0x7efa
ja 0x10068162
mov eax, dword [esi + 0x6af90]
cmp dword [esi + 0x6afa0], eax
jbe 0x1006814c
mov dword [esi + 0x6afa0], eax
mov edx, ebx
mov ecx, esi
call fcn.10068450
mov ecx, dword [esi + 0x6af90]
mov edi, eax
cmp edi, ecx
cmova edi, ecx
mov ecx, esi
cmp edi, 3
jb 0x1006823e
mov edx, dword [esi + 0x6af84]
sub edx, dword [esi + 0x6af88]
lea eax, [edi - 3]
push eax
call fcn.10068d00
sub dword [esi + 0x6af90], edi
add esp, 4
mov ebp, eax
cmp edi, dword [esi + 0x6af98]
ja 0x100681f7
cmp dword [esi + 0x6af90], 3
jb 0x100681f7
dec edi
nop
inc dword [esi + 0x6af84]
mov edx, dword [esi + 0x6af84]
mov eax, dword [esi + 0x6af7c]
movzx ecx, byte [esi + edx + 0x1af72]
shl eax, 5
xor ecx, eax
and ecx, 0x7fff
mov dword [esi + 0x6af7c], ecx
mov ebx, dword [esi + ecx*4 + 0x4af70]
and edx, 0x7fff
mov dword [esi + edx*4 + 0x2af70], ebx
mov ecx, dword [esi + 0x6af7c]
mov eax, dword [esi + 0x6af84]
mov dword [esi + ecx*4 + 0x4af70], eax
dec edi
jne 0x100681a0
jmp 0x1006825f
add dword [esi + 0x6af84], edi
mov eax, dword [esi + 0x6af84]
push str.Call_UPDATE_HASH___MIN_MATCH_3_more_times
movzx ecx, byte [eax + esi + 0x1af70]
mov dword [esi + 0x6af7c], ecx
movzx eax, byte [eax + esi + 0x1af71]
shl ecx, 5
xor eax, ecx
and eax, 0x7fff
mov dl, 1
mov ecx, esi
xor edi, edi
mov dword [esi + 0x6af7c], eax
call fcn.10069e10
add esp, 4
jmp 0x10068265
mov eax, dword [esi + 0x6af84]
xor edx, edx
movzx eax, byte [eax + esi + 0x1af70]
push eax
call fcn.10068d00
add esp, 4
dec dword [esi + 0x6af90]
mov ebp, eax
inc dword [esi + 0x6af84]
test ebp, ebp
je 0x100682a0
mov ecx, dword [esi + 0x6af74]
test ecx, ecx
js 0x1006827d
lea edx, [esi + 0x1af70]
add edx, ecx
jmp 0x1006827f
xor edx, edx
mov eax, dword [esi + 0x6af84]
sub eax, ecx
push 0
push eax
mov ecx, esi
call fcn.10068ee0
mov eax, dword [esi + 0x6af84]
add esp, 8
mov dword [esi + 0x6af74], eax
cmp dword [esi + 0x6af90], 0x106
jae 0x100682b3
mov ecx, esi
call fcn.100682f0
cmp dword [esi + 0x6af90], 0
jne 0x100680d0
pop ebp
mov ecx, dword [esi + 0x6af74]
test ecx, ecx
js 0x100682d5
lea edx, [esi + 0x1af70]
add edx, ecx
jmp 0x100682d7
xor edx, edx
mov eax, dword [esi + 0x6af84]
sub eax, ecx
push 1
push eax
mov ecx, esi
call fcn.10068ee0
add esp, 8
pop edi
pop esi
pop ebx
ret