Function at 0x46f5d7
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
mov ebx, dword [esp + 0x14]
mov dword [ebx + 0x6af80], 2
mov eax, dword [ebx + 0x6af90]
test eax, eax
je 0x46f5a9
xor ebp, ebp
cmp eax, 3
jb 0x46f3f5
mov eax, dword [ebx + 0x6af7c]
mov ecx, dword [ebx + 0x6af84]
shl eax, 5
movzx edx, byte [ecx + ebx + 0x1af72]
and eax, 0x7fe0
xor eax, edx
mov dword [ebx + 0x6af7c], eax
mov ebp, dword [ebx + eax*4 + 0x4af70]
and ecx, 0x7fff
mov dword [ebx + ecx*4 + 0x2af70], ebp
mov eax, dword [ebx + 0x6af7c]
mov ecx, dword [ebx + 0x6af84]
mov dword [ebx + eax*4 + 0x4af70], ecx
test ebp, ebp
je 0x46f4dd
mov eax, dword [ebx + 0x6af84]
sub eax, ebp
cmp eax, 0x7efa
ja 0x46f4dd
mov eax, dword [ebx + 0x6af90]
cmp dword [ebx + 0x6afa0], eax
jbe 0x46f424
mov dword [ebx + 0x6afa0], eax
push ebp
push ebx
call fcn.0046f112
add esp, 8
mov edi, eax
mov eax, dword [ebx + 0x6af90]
cmp edi, eax
cmova edi, eax
cmp edi, 3
jb 0x46f4dd
lea eax, [edi - 3]
mov ecx, dword [ebx + 0x6af84]
sub ecx, dword [ebx + 0x6af88]
push eax
push ecx
push ebx
call fcn.0046ec72
add esp, 0xc
mov esi, eax
mov eax, dword [ebx + 0x6af90]
sub eax, edi
mov dword [ebx + 0x6af90], eax
cmp edi, dword [ebx + 0x6af98]
ja 0x46f567
cmp eax, 3
jb 0x46f567
dec edi
mov eax, dword [ebx + 0x6af7c]
mov ecx, dword [ebx + 0x6af84]
lea edx, [ecx + 1]
mov dword [ebx + 0x6af84], edx
shl eax, 5
movzx ecx, byte [ecx + ebx + 0x1af73]
and eax, 0x7fe0
xor eax, ecx
mov dword [ebx + 0x6af7c], eax
mov ebp, dword [ebx + eax*4 + 0x4af70]
and edx, 0x7fff
mov dword [ebx + edx*4 + 0x2af70], ebp
mov eax, dword [ebx + 0x6af7c]
mov ecx, dword [ebx + 0x6af84]
mov dword [ebx + eax*4 + 0x4af70], ecx
dec edi
jne 0x46f484
jmp 0x46f4ff
mov eax, dword [ebx + 0x6af84]
movzx eax, byte [ebx + eax + 0x1af70]
push eax
push 0
push ebx
call fcn.0046ec72
add esp, 0xc
dec dword [ebx + 0x6af90]
mov esi, eax
inc dword [ebx + 0x6af84]
test esi, esi
je 0x46f541
mov eax, dword [ebx + 0x6af74]
mov ecx, dword [ebx + 0x6af84]
sub ecx, eax
test eax, eax
lea eax, [ebx + eax + 0x1af70]
mov edx, 0
cmovs eax, edx
push 0
push ecx
push eax
push ebx
call fcn.0046e692
add esp, 0x10
mov eax, dword [ebx + 0x6af84]
mov dword [ebx + 0x6af74], eax
mov eax, dword [ebx + 0x6af90]
cmp eax, 0x105
ja 0x46f55d
push ebx
call fcn.0046ef8b
add esp, 4
mov eax, dword [ebx + 0x6af90]
test eax, eax
jne 0x46f3a5
jmp 0x46f5a9
add edi, dword [ebx + 0x6af84]
mov dword [ebx + 0x6af84], edi
movzx eax, byte [ebx + edi + 0x1af70]
mov dword [ebx + 0x6af7c], eax
shl eax, 5
movzx ecx, byte [ebx + edi + 0x1af71]
xor ecx, eax
mov dword [ebx + 0x6af7c], ecx
push str.Call_UPDATE_HASH___MIN_MATCH_3_more_times
push 1
push ebx
call fcn.0046d6e7
add esp, 0xc
jmp 0x46f505
mov eax, dword [ebx + 0x6af74]
mov ecx, dword [ebx + 0x6af84]
xor edx, edx
test eax, eax
lea esi, [ebx + eax + 0x1af70]
cmovs esi, edx
sub ecx, eax
push 1
push ecx
push esi
push ebx
call fcn.0046e692
add esp, 0x10
pop esi
pop edi
pop ebx
pop ebp
ret
push ebp
push ebx
push edi
push esi
push eax
mov edi, dword [esp + 0x18]
cmp dword [edi + 4], 4
jge 0x46f5f2
add esp, 4
pop esi
pop edi
pop ebx
pop ebp
jmp 0x46f383
mov eax, dword [edi + 0x6af90]
test eax, eax
je 0x46f8af
mov esi, 2
mov dword [esp], 0
xor ebp, ebp
cmp eax, 3
jb 0x46f65e
mov eax, dword [edi + 0x6af7c]
mov ecx, dword [edi + 0x6af84]
shl eax, 5
movzx edx, byte [ecx + edi + 0x1af72]
and eax, 0x7fe0
xor eax, edx
mov dword [edi + 0x6af7c], eax
mov ebp, dword [edi + eax*4 + 0x4af70]
and ecx, 0x7fff
mov dword [edi + ecx*4 + 0x2af70], ebp
mov eax, dword [edi + 0x6af7c]
mov ecx, dword [edi + 0x6af84]
mov dword [edi + eax*4 + 0x4af70], ecx
mov dword [edi + 0x6af80], esi
mov ebx, dword [edi + 0x6af88]
mov eax, esi
mov esi, 2
test ebp, ebp
je 0x46f6d5
cmp eax, dword [edi + 0x6af98]
jae 0x46f6d5
mov eax, dword [edi + 0x6af84]
sub eax, ebp
cmp eax, 0x7efa
ja 0x46f6d5
mov eax, dword [edi + 0x6af90]
cmp dword [edi + 0x6afa0], eax
jbe 0x46f6a0
mov dword [edi + 0x6afa0], eax
push ebp
push edi
call fcn.0046f112
add esp, 8
mov esi, eax
mov eax, dword [edi + 0x6af90]
cmp esi, eax
cmova esi, eax
cmp esi, 3
jne 0x46f6d5
mov eax, dword [edi + 0x6af84]
sub eax, dword [edi + 0x6af88]
cmp eax, 0x1001
mov esi, 3
adc esi, 0xffffffff
mov eax, dword [edi + 0x6af80]
cmp eax, 3
jb 0x46f7f2
cmp esi, eax
ja 0x46f7f2
mov ecx, dword [edi + 0x6af84]
mov edx, dword [edi + 0x6af90]
lea esi, [ecx + edx]
add esi, 0xfffffffd
add eax, 0xfffffffd
not ebx
add ebx, ecx
push eax
push ebx
push edi
call fcn.0046ec72
add esp, 0xc
mov ecx, dword [edi + 0x6af80]
mov edx, dword [edi + 0x6af90]
sub edx, ecx
inc edx
mov dword [edi + 0x6af90], edx
add ecx, 0xfffffffe
mov dword [edi + 0x6af80], ecx
mov ebx, dword [edi + 0x6af84]
lea edx, [ebx + 1]
mov dword [edi + 0x6af84], edx
cmp edx, esi
ja 0x46f78d
mov ecx, dword [edi + 0x6af7c]
shl ecx, 5
movzx ebx, byte [ebx + edi + 0x1af73]
and ecx, 0x7fe0
xor ecx, ebx
mov dword [edi + 0x6af7c], ecx
mov ebp, dword [edi + ecx*4 + 0x4af70]
and edx, 0x7fff
mov dword [edi + edx*4 + 0x2af70], ebp
mov ecx, dword [edi + 0x6af7c]
mov edx, dword [edi + 0x6af84]
mov dword [edi + ecx*4 + 0x4af70], edx
mov ecx, dword [edi + 0x6af80]
dec ecx
mov dword [edi + 0x6af80], ecx
jne 0x46f72e
mov ecx, dword [edi + 0x6af84]
inc ecx
mov dword [edi + 0x6af84], ecx
test eax, eax
je 0x46f7d9
mov eax, dword [edi + 0x6af74]
sub ecx, eax
test eax, eax
lea eax, [edi + eax + 0x1af70]
mov edx, 0
cmovs eax, edx
push 0
push ecx
push eax
push edi
call fcn.0046e692
add esp, 0x10
mov eax, dword [edi + 0x6af84]
mov dword [edi + 0x6af74], eax
mov eax, dword [edi + 0x6af90]
mov esi, 2
mov dword [esp], 0
mov bl, 1
jmp 0x46f873
mov eax, dword [edi + 0x6af84]
cmp dword [esp], 0
je 0x46f857
movzx eax, byte [eax + edi + 0x1af6f]
push eax
push 0
push edi
call fcn.0046ec72
add esp, 0xc
mov ecx, dword [edi + 0x6af84]
test eax, eax
je 0x46f84e
mov eax, dword [edi + 0x6af74]
sub ecx, eax
test eax, eax
lea eax, [edi + eax + 0x1af70]
mov edx, 0
cmovs eax, edx
push 0
push ecx
push eax
push edi
call fcn.0046e692
add esp, 0x10
mov ecx, dword [edi + 0x6af84]
mov dword [edi + 0x6af74], ecx
inc ecx
mov dword [edi + 0x6af84], ecx
jmp 0x46f85e
inc eax
mov dword [edi + 0x6af84], eax
mov eax, dword [edi + 0x6af90]
dec eax
mov dword [edi + 0x6af90], eax
xor ebx, ebx
xor ecx, ecx
inc ecx
mov dword [esp], ecx
cmp eax, 0x105
ja 0x46f889
push edi
call fcn.0046ef8b
add esp, 4
mov eax, dword [edi + 0x6af90]
test eax, eax
jne 0x46f60e
test bl, bl
jne 0x46f8af
mov eax, dword [edi + 0x6af84]
movzx eax, byte [eax + edi + 0x1af6f]
push eax
push 0
push edi
call fcn.0046ec72
add esp, 0xc
mov eax, dword [edi + 0x6af74]
mov ecx, dword [edi + 0x6af84]
sub ecx, eax
xor edx, edx
test eax, eax
lea eax, [edi + eax + 0x1af70]
cmovs eax, edx
push 1
push ecx
push eax
push edi
call fcn.0046e692
add esp, 0x14
pop esi
pop edi
pop ebx
pop ebp
ret