Function at 0x10053634
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0xc
push ebx
push esi
push edi
mov esi, ecx
xor edi, edi
push 2
mov dword [esp + 0x14], edi
mov dword [esp + 0x10], edi
cmp dword [esi + 4], 3
pop ebx
jg 0x1005365a
pop edi
pop esi
pop ebx
add esp, 0xc
jmp 0x1005393f
mov eax, dword [esi + 0x6af90]
test eax, eax
je 0x10053912
mov edx, eax
push ebp
mov ecx, ebx
mov dword [esp + 0x18], ecx
cmp eax, 3
jb 0x100536d0
mov edx, dword [esi + 0x6af84]
mov eax, dword [esi + 0x6af7c]
shl eax, 5
movzx ecx, byte [edx + esi + 0x1af72]
xor ecx, eax
and ecx, 0x7fff
and edx, 0x7fff
mov dword [esi + 0x6af7c], ecx
mov eax, dword [esi + ecx*4 + 0x4af70]
mov dword [esi + edx*4 + 0x2af70], eax
mov ecx, dword [esi + 0x6af7c]
mov dword [esp + 0x14], eax
mov eax, dword [esi + 0x6af84]
mov dword [esi + ecx*4 + 0x4af70], eax
mov ecx, ebx
mov eax, dword [esi + 0x6af90]
mov edx, eax
cmp dword [esp + 0x14], 0
mov ebp, eax
mov dword [esi + 0x6af80], ebx
mov ebx, dword [esi + 0x6af88]
push 2
mov dword [esp + 0x1c], ebx
pop ebx
je 0x10053749
cmp ecx, dword [esi + 0x6af98]
jae 0x10053749
mov eax, dword [esi + 0x6af84]
mov ecx, dword [esp + 0x14]
sub eax, ecx
cmp eax, 0x7efa
ja 0x10053749
cmp dword [esi + 0x6afa0], edx
jbe 0x10053715
mov dword [esi + 0x6afa0], edx
mov edx, ecx
mov ecx, esi
call fcn.10054439
mov ecx, dword [esi + 0x6af90]
mov ebx, eax
cmp ebx, ecx
jbe 0x1005372c
mov ebx, ecx
mov ebp, ecx
cmp ebx, 3
jne 0x10053749
mov eax, dword [esi + 0x6af84]
sub eax, dword [esi + 0x6af88]
cmp eax, 0x1000
jbe 0x10053749
push 2
pop ebx
mov eax, dword [esi + 0x6af80]
cmp eax, 3
jb 0x10053850
cmp ebx, eax
ja 0x10053850
mov edx, dword [esi + 0x6af84]
add eax, 0xfffffffd
push eax
mov ecx, esi
lea ebx, [edx - 3]
sub edx, dword [esp + 0x1c]
add ebx, ebp
dec edx
call fcn.10053492
mov edx, dword [esi + 0x6af80]
xor ecx, ecx
inc ecx
mov dword [esp + 0x18], eax
sub ecx, edx
mov ebp, 0x7fff
add dword [esi + 0x6af90], ecx
lea ecx, [edx - 2]
mov dword [esi + 0x6af80], ecx
mov edx, dword [esi + 0x6af84]
inc edx
mov dword [esi + 0x6af84], edx
cmp edx, ebx
ja 0x100537f7
movzx ecx, byte [edx + esi + 0x1af72]
mov eax, dword [esi + 0x6af7c]
shl eax, 5
xor ecx, eax
and ecx, ebp
and edx, ebp
mov dword [esi + 0x6af7c], ecx
mov edi, dword [esi + ecx*4 + 0x4af70]
mov dword [esi + edx*4 + 0x2af70], edi
mov ecx, dword [esi + 0x6af7c]
mov eax, dword [esi + 0x6af84]
mov dword [esp + 0x14], edi
mov dword [esi + ecx*4 + 0x4af70], eax
mov edx, dword [esi + 0x6af84]
sub dword [esi + 0x6af80], 1
jne 0x1005379e
xor edi, edi
lea ecx, [edx + 1]
mov ebp, edi
mov dword [esi + 0x6af84], ecx
push 2
mov dword [esp + 0x14], ebp
pop ebx
cmp dword [esp + 0x18], edi
je 0x100538d4
mov eax, dword [esi + 0x6af74]
test eax, eax
js 0x10053832
lea edx, [esi + 0x1af70]
add edx, eax
jmp 0x10053834
mov edx, edi
sub ecx, eax
push edi
push ecx
mov ecx, esi
call fcn.10053d1b
mov ecx, dword [esi + 0x6af84]
mov dword [esi + 0x6af74], ecx
jmp 0x100538d4
cmp dword [esp + 0x10], 0
je 0x100538b4
mov eax, dword [esi + 0x6af84]
xor edx, edx
mov ecx, esi
movzx eax, byte [eax + esi + 0x1af6f]
push eax
call fcn.10053492
test eax, eax
je 0x100538a6
mov ecx, dword [esi + 0x6af74]
test ecx, ecx
js 0x10053887
lea edx, [esi + 0x1af70]
add edx, ecx
jmp 0x10053889
mov edx, edi
mov eax, dword [esi + 0x6af84]
sub eax, ecx
mov ecx, esi
push edi
push eax
call fcn.10053d1b
mov eax, dword [esi + 0x6af84]
mov dword [esi + 0x6af74], eax
inc dword [esi + 0x6af84]
dec dword [esi + 0x6af90]
jmp 0x100538ca
xor eax, eax
inc eax
inc dword [esi + 0x6af84]
mov dword [esp + 0x10], eax
lea eax, [ebp - 1]
mov dword [esi + 0x6af90], eax
mov ebp, dword [esp + 0x10]
mov ecx, dword [esi + 0x6af84]
cmp dword [esi + 0x6af90], 0x106
jae 0x100538ed
mov ecx, esi
call fcn.10053bf5
mov ecx, dword [esi + 0x6af84]
mov eax, dword [esi + 0x6af90]
mov edx, eax
test eax, eax
jne 0x1005366b
test ebp, ebp
pop ebp
je 0x10053912
movzx eax, byte [ecx + esi + 0x1af6f]
mov ecx, esi
push eax
call fcn.10053492
mov ecx, dword [esi + 0x6af74]
test ecx, ecx
js 0x10053924
lea edi, [esi + 0x1af70]
add edi, ecx
mov eax, dword [esi + 0x6af84]
mov edx, edi
sub eax, ecx
mov ecx, esi
push 1
push eax
call fcn.10053d1b
pop edi
pop esi
pop ebx
add esp, 0xc
ret
push ecx
push ecx
push ebx
push ebp
push esi
mov esi, ecx
xor ebp, ebp
mov ecx, ebp
mov ebx, ebp
push edi
mov dword [esp + 0x10], ecx
mov dword [esi + 0x6af80], 2
lea edi, [esi + 0x6af84]
jmp 0x10053b1d
cmp eax, 3
jb 0x100539b7
mov edx, dword [edi]
mov eax, dword [esi + 0x6af7c]
shl eax, 5
movzx ecx, byte [edx + esi + 0x1af72]
xor ecx, eax
and ecx, 0x7fff
and edx, 0x7fff
mov dword [esi + 0x6af7c], ecx
mov eax, dword [esi + ecx*4 + 0x4af70]
mov dword [esi + edx*4 + 0x2af70], eax
mov ecx, dword [esi + 0x6af7c]
mov dword [esp + 0x10], eax
mov eax, dword [edi]
mov dword [esi + ecx*4 + 0x4af70], eax
mov ecx, dword [esp + 0x10]
test ecx, ecx
je 0x100539f1
mov eax, dword [edi]
sub eax, ecx
cmp eax, 0x7efa
ja 0x100539f1
mov eax, dword [esi + 0x6af90]
cmp dword [esi + 0x6afa0], eax
jbe 0x100539da
mov dword [esi + 0x6afa0], eax
mov edx, ecx
mov ecx, esi
call fcn.10054439
mov ebx, eax
mov eax, dword [esi + 0x6af90]
cmp ebx, eax
jbe 0x100539f1
mov ebx, eax
mov ecx, dword [edi]
cmp ebx, 3
jb 0x10053ab7
sub ecx, dword [esi + 0x6af88]
lea eax, [ebx - 3]
mov edx, ecx
mov ecx, esi
push eax
call fcn.10053492
mov ecx, dword [esi + 0x6af90]
sub ecx, ebx
mov dword [esp + 0x14], eax
mov dword [esi + 0x6af90], ecx
cmp ebx, dword [esi + 0x6af98]
ja 0x10053a80
cmp ecx, 3
jb 0x10053a80
dec ebx
inc dword [edi]
mov edx, dword [edi]
mov eax, dword [esi + 0x6af7c]
shl eax, 5
movzx ecx, byte [edx + esi + 0x1af72]
and edx, 0x7fff
xor ecx, eax
and ecx, 0x7fff
mov dword [esi + 0x6af7c], ecx
mov eax, dword [esi + ecx*4 + 0x4af70]
mov dword [esi + edx*4 + 0x2af70], eax
mov ecx, dword [esi + 0x6af7c]
mov dword [esp + 0x10], eax
mov eax, dword [edi]
mov dword [esi + ecx*4 + 0x4af70], eax
sub ebx, 1
jne 0x10053a2f
jmp 0x10053ad3
add dword [edi], ebx
mov dl, 1
mov eax, dword [edi]
mov ebx, ebp
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
mov ecx, esi
mov dword [esi + 0x6af7c], eax
call fcn.10052293
jmp 0x10053ad5
movzx eax, byte [ecx + esi + 0x1af70]
xor edx, edx
push eax
mov ecx, esi
call fcn.10053492
dec dword [esi + 0x6af90]
mov dword [esp + 0x14], eax
inc dword [edi]
mov ecx, dword [edi]
cmp dword [esp + 0x14], ebp
je 0x10053b06
mov eax, dword [esi + 0x6af74]
test eax, eax
js 0x10053af1
lea edx, [esi + 0x1af70]
add edx, eax
jmp 0x10053af3
mov edx, ebp
sub ecx, eax
push ebp
push ecx
mov ecx, esi
call fcn.10053d1b
mov eax, dword [edi]
mov dword [esi + 0x6af74], eax
cmp dword [esi + 0x6af90], 0x106
jae 0x10053b19
mov ecx, esi
call fcn.10053bf5
mov ecx, dword [esp + 0x10]
mov eax, dword [esi + 0x6af90]
test eax, eax
jne 0x10053966
mov ecx, dword [esi + 0x6af74]
test ecx, ecx
js 0x10053b3d
lea ebp, [esi + 0x1af70]
add ebp, ecx
mov eax, dword [edi]
mov edx, ebp
sub eax, ecx
mov ecx, esi
push 1
push eax
call fcn.10053d1b
pop edi
pop esi
pop ebp
pop ebx
pop ecx
pop ecx
ret