Function at 0x463fe8
Capabilities:
Encode data using xor

Disassembly:
push ecx
push ebx
push ebp
push esi
mov esi, ecx
xor ebx, ebx
push edi
mov ebp, ebx
mov edi, ebx
mov dword [esi + 0x6af80], 2
jmp 0x463fac
cmp eax, 3
jb 0x463e25
mov edx, dword [esi + 0x6af84]
mov eax, dword [esi + 0x6af7c]
shl eax, 5
movzx ecx, byte [edx + esi + 0x1af72]
xor ecx, eax
mov eax, 0x7fff
and ecx, eax
and edx, eax
mov dword [esi + 0x6af7c], ecx
mov ebp, dword [esi + ecx*4 + 0x4af70]
mov dword [esi + edx*4 + 0x2af70], ebp
mov ecx, dword [esi + 0x6af7c]
mov eax, dword [esi + 0x6af84]
mov dword [esi + ecx*4 + 0x4af70], eax
test ebp, ebp
je 0x463e62
mov eax, dword [esi + 0x6af84]
sub eax, ebp
cmp eax, 0x7efa
ja 0x463e62
mov eax, dword [esi + 0x6af90]
cmp dword [esi + 0x6afa0], eax
jbe 0x463e4c
mov dword [esi + 0x6afa0], eax
mov edx, ebp
mov ecx, esi
call fcn.00463ade
mov ecx, dword [esi + 0x6af90]
mov edi, eax
cmp edi, ecx
cmova edi, ecx
mov ecx, dword [esi + 0x6af84]
cmp edi, 3
jb 0x463f3e
sub ecx, dword [esi + 0x6af88]
lea eax, [edi - 3]
mov edx, ecx
mov ecx, esi
push eax
call fcn.00463400
pop ecx
mov ecx, dword [esi + 0x6af90]
sub ecx, edi
mov dword [esp + 0x10], eax
mov dword [esi + 0x6af90], ecx
cmp edi, dword [esi + 0x6af98]
ja 0x463f07
cmp ecx, 3
jb 0x463f07
dec edi
inc dword [esi + 0x6af84]
mov edx, dword [esi + 0x6af84]
mov eax, dword [esi + 0x6af7c]
shl eax, 5
movzx ecx, byte [edx + esi + 0x1af72]
xor ecx, eax
mov eax, 0x7fff
and ecx, eax
and edx, eax
mov dword [esi + 0x6af7c], ecx
mov ebp, dword [esi + ecx*4 + 0x4af70]
mov dword [esi + edx*4 + 0x2af70], ebp
mov ecx, dword [esi + 0x6af7c]
mov eax, dword [esi + 0x6af84]
mov dword [esi + ecx*4 + 0x4af70], eax
sub edi, 1
jne 0x463ea5
inc dword [esi + 0x6af84]
mov edx, dword [esi + 0x6af84]
jmp 0x463f38
mov edx, dword [esi + 0x6af84]
add edx, edi
mov edi, ebx
mov dword [esi + 0x6af84], edx
movzx ecx, byte [edx + esi + 0x1af70]
mov dword [esi + 0x6af7c], ecx
movzx eax, byte [edx + esi + 0x1af71]
shl ecx, 5
xor eax, ecx
mov dword [esi + 0x6af7c], eax
mov eax, dword [esp + 0x10]
jmp 0x463f63
movzx eax, byte [ecx + esi + 0x1af70]
xor edx, edx
push eax
mov ecx, esi
call fcn.00463400
dec dword [esi + 0x6af90]
inc dword [esi + 0x6af84]
mov edx, dword [esi + 0x6af84]
pop ecx
test eax, eax
je 0x463f98
mov eax, dword [esi + 0x6af74]
test eax, eax
js 0x463f7b
lea ecx, [esi + 0x1af70]
add ecx, eax
jmp 0x463f7d
mov ecx, ebx
sub edx, eax
push ebx
push edx
mov edx, ecx
mov ecx, esi
call fcn.0046320a
mov eax, dword [esi + 0x6af84]
pop ecx
pop ecx
mov dword [esi + 0x6af74], eax
mov eax, dword [esi + 0x6af90]
cmp eax, 0x106
jae 0x463fb2
mov ecx, esi
call fcn.00463c85
mov eax, dword [esi + 0x6af90]
test eax, eax
jne 0x463dd7
mov ecx, dword [esi + 0x6af74]
test ecx, ecx
js 0x463fcc
lea ebx, [esi + 0x1af70]
add ebx, ecx
mov eax, dword [esi + 0x6af84]
mov edx, ebx
sub eax, ecx
mov ecx, esi
push 1
push eax
call fcn.0046320a
pop ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
pop ecx
ret
sub esp, 0x14
push ebp
push esi
push edi
mov esi, ecx
xor edi, edi
push 2
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], edi
cmp dword [esi + 4], 3
pop ebp
jg 0x46400e
pop edi
pop esi
pop ebp
add esp, 0x14
jmp 0x463dbb
mov ecx, dword [esi + 0x6af90]
mov eax, dword [esi + 0x6af84]
test ecx, ecx
je 0x4642d4
push ebx
mov ebx, eax
mov dword [esp + 0x18], 0x7fff
mov edx, ecx
mov dword [esp + 0x1c], ebp
push 0
pop edi
cmp ecx, 3
jb 0x46408f
mov eax, dword [esi + 0x6af7c]
movzx ecx, byte [ebx + esi + 0x1af72]
shl eax, 5
xor ecx, eax
and ecx, dword [esp + 0x18]
and ebx, dword [esp + 0x18]
mov dword [esi + 0x6af7c], ecx
mov eax, dword [esi + ecx*4 + 0x4af70]
mov dword [esi + ebx*4 + 0x2af70], eax
mov ecx, dword [esi + 0x6af7c]
mov dword [esp + 0x10], eax
mov eax, dword [esi + 0x6af84]
mov dword [esi + ecx*4 + 0x4af70], eax
mov ecx, dword [esi + 0x6af90]
mov edx, ecx
mov eax, dword [esi + 0x6af84]
cmp dword [esp + 0x10], 0
mov ebx, dword [esi + 0x6af88]
push 2
mov dword [esi + 0x6af80], ebp
mov dword [esp + 0x24], ebx
mov ebx, ecx
pop ebp
je 0x464108
mov edi, dword [esp + 0x1c]
cmp edi, dword [esi + 0x6af98]
push 0
pop edi
jae 0x464108
mov ecx, dword [esp + 0x10]
sub eax, ecx
cmp eax, 0x7efa
ja 0x464108
cmp dword [esi + 0x6afa0], edx
jbe 0x4640d5
mov dword [esi + 0x6afa0], edx
mov edx, ecx
mov ecx, esi
call fcn.00463ade
mov ecx, dword [esi + 0x6af90]
mov ebp, eax
cmp ebp, ecx
mov ebx, ecx
cmova ebp, ecx
cmp ebp, 3
jne 0x464108
mov eax, dword [esi + 0x6af84]
sub eax, dword [esi + 0x6af88]
cmp eax, 0x1000
jbe 0x464108
push 2
pop ebp
mov eax, dword [esi + 0x6af80]
cmp eax, 3
jb 0x464215
cmp ebp, eax
ja 0x464215
mov edx, dword [esi + 0x6af84]
add ebx, 0xfffffffd
add ebx, edx
add eax, 0xfffffffd
sub edx, dword [esp + 0x20]
mov ecx, esi
push eax
dec edx
call fcn.00463400
mov edx, dword [esi + 0x6af80]
pop ecx
xor ecx, ecx
mov dword [esp + 0x20], eax
inc ecx
sub ecx, edx
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 0x4641b6
movzx ecx, byte [edx + esi + 0x1af72]
mov eax, dword [esi + 0x6af7c]
shl eax, 5
xor ecx, eax
and ecx, dword [esp + 0x18]
and edx, dword [esp + 0x18]
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 + 0x10], edi
mov dword [esi + ecx*4 + 0x4af70], eax
mov edx, dword [esi + 0x6af84]
sub dword [esi + 0x6af80], 1
jne 0x464159
xor edi, edi
lea eax, [edx + 1]
mov ebx, eax
mov dword [esi + 0x6af84], eax
push 2
mov dword [esp + 0x18], edi
pop ebp
cmp dword [esp + 0x20], edi
je 0x46420a
mov ecx, dword [esi + 0x6af74]
test ecx, ecx
js 0x4641ed
lea edx, [esi + 0x1af70]
add edx, ecx
jmp 0x4641ef
mov edx, edi
sub eax, ecx
mov ecx, esi
push edi
push eax
call fcn.0046320a
mov eax, dword [esi + 0x6af84]
mov ebx, eax
pop ecx
pop ecx
mov dword [esi + 0x6af74], eax
mov ecx, dword [esi + 0x6af90]
jmp 0x4642aa
cmp dword [esp + 0x14], 0
je 0x46428b
mov eax, dword [esi + 0x6af84]
xor edx, edx
mov ecx, esi
movzx eax, byte [eax + esi + 0x1af6f]
push eax
call fcn.00463400
pop ecx
test eax, eax
je 0x464270
mov ecx, dword [esi + 0x6af74]
test ecx, ecx
js 0x46424d
lea edx, [esi + 0x1af70]
add edx, ecx
jmp 0x46424f
mov edx, edi
mov eax, dword [esi + 0x6af84]
sub eax, ecx
mov ecx, esi
push edi
push eax
call fcn.0046320a
mov eax, dword [esi + 0x6af84]
pop ecx
pop ecx
mov dword [esi + 0x6af74], eax
jmp 0x464276
mov eax, dword [esi + 0x6af84]
inc eax
dec dword [esi + 0x6af90]
mov ecx, dword [esi + 0x6af90]
mov dword [esi + 0x6af84], eax
jmp 0x4642a8
inc dword [esi + 0x6af84]
lea ecx, [ebx - 1]
mov eax, dword [esi + 0x6af84]
mov dword [esp + 0x14], 1
mov dword [esi + 0x6af90], ecx
mov ebx, eax
mov edx, ecx
cmp ecx, 0x106
jae 0x4642cb
mov ecx, esi
call fcn.00463c85
mov eax, dword [esi + 0x6af84]
mov ebx, eax
mov ecx, dword [esi + 0x6af90]
mov edx, ecx
test ecx, ecx
jne 0x46402f
pop ebx
cmp dword [esp + 0x10], 0
je 0x4642f4
movzx eax, byte [eax + esi + 0x1af6f]
xor edx, edx
push eax
mov ecx, esi
call fcn.00463400
mov eax, dword [esi + 0x6af84]
pop ecx
mov ecx, dword [esi + 0x6af74]
test ecx, ecx
js 0x464306
lea edi, [esi + 0x1af70]
add edi, ecx
sub eax, ecx
mov edx, edi
push 1
push eax
mov ecx, esi
call fcn.0046320a
pop ecx
pop ecx
pop edi
pop esi
pop ebp
add esp, 0x14
ret