Function at 0x42a270
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 0x42a296
pop edi
pop esi
pop ebx
add esp, 0xc
jmp 0x42a583
mov eax, dword [esi + 0x6af90]
test eax, eax
je 0x42a554
mov edx, eax
push ebp
mov ecx, ebx
mov dword [esp + 0x18], ecx
cmp eax, 3
jb 0x42a30c
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 0x42a384
cmp ecx, dword [esi + 0x6af98]
jae 0x42a384
mov eax, dword [esi + 0x6af84]
mov ecx, dword [esp + 0x14]
sub eax, ecx
cmp eax, 0x7efa
ja 0x42a384
cmp dword [esi + 0x6afa0], edx
jbe 0x42a351
mov dword [esi + 0x6afa0], edx
mov edx, ecx
mov ecx, esi
call fcn.0042a8c6
mov ecx, dword [esi + 0x6af90]
mov ebx, eax
cmp ebx, ecx
mov ebp, ecx
cmova ebx, ecx
cmp ebx, 3
jne 0x42a384
mov eax, dword [esi + 0x6af84]
sub eax, dword [esi + 0x6af88]
cmp eax, 0x1000
jbe 0x42a384
push 2
pop ebx
mov eax, dword [esi + 0x6af80]
cmp eax, 3
jb 0x42a48e
cmp ebx, eax
ja 0x42a48e
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.0042b040
mov edx, dword [esi + 0x6af80]
mov ebp, 0x7fff
pop ecx
xor ecx, ecx
mov dword [esp + 0x18], 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 0x42a433
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 0x42a3da
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 0x42a515
mov eax, dword [esi + 0x6af74]
test eax, eax
js 0x42a46e
lea edx, [esi + 0x1af70]
add edx, eax
jmp 0x42a470
mov edx, edi
sub ecx, eax
push edi
push ecx
mov ecx, esi
call fcn.0042b191
pop ecx
pop ecx
mov ecx, dword [esi + 0x6af84]
mov dword [esi + 0x6af74], ecx
jmp 0x42a515
cmp dword [esp + 0x10], 0
je 0x42a4f5
mov eax, dword [esi + 0x6af84]
xor edx, edx
mov ecx, esi
movzx eax, byte [eax + esi + 0x1af6f]
push eax
call fcn.0042b040
pop ecx
test eax, eax
je 0x42a4e7
mov ecx, dword [esi + 0x6af74]
test ecx, ecx
js 0x42a4c6
lea edx, [esi + 0x1af70]
add edx, ecx
jmp 0x42a4c8
mov edx, edi
mov eax, dword [esi + 0x6af84]
sub eax, ecx
mov ecx, esi
push edi
push eax
call fcn.0042b191
mov eax, dword [esi + 0x6af84]
pop ecx
pop ecx
mov dword [esi + 0x6af74], eax
inc dword [esi + 0x6af84]
dec dword [esi + 0x6af90]
jmp 0x42a50b
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 0x42a52e
mov ecx, esi
call fcn.0042a7a3
mov ecx, dword [esi + 0x6af84]
mov eax, dword [esi + 0x6af90]
mov edx, eax
test eax, eax
jne 0x42a2a7
test ebp, ebp
pop ebp
je 0x42a554
movzx eax, byte [ecx + esi + 0x1af6f]
mov ecx, esi
push eax
call fcn.0042b040
pop ecx
mov ecx, dword [esi + 0x6af74]
test ecx, ecx
js 0x42a566
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.0042b191
pop ecx
pop ecx
pop edi
pop esi
pop ebx
add esp, 0xc
ret
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 0x42a767
cmp eax, 3
jb 0x42a5ed
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 0x42a62a
mov eax, dword [esi + 0x6af84]
sub eax, ebp
cmp eax, 0x7efa
ja 0x42a62a
mov eax, dword [esi + 0x6af90]
cmp dword [esi + 0x6afa0], eax
jbe 0x42a614
mov dword [esi + 0x6afa0], eax
mov edx, ebp
mov ecx, esi
call fcn.0042a8c6
mov ecx, dword [esi + 0x6af90]
mov edi, eax
cmp edi, ecx
cmova edi, ecx
mov ecx, dword [esi + 0x6af84]
cmp edi, 3
jb 0x42a6f4
sub ecx, dword [esi + 0x6af88]
lea eax, [edi - 3]
mov edx, ecx
mov ecx, esi
push eax
call fcn.0042b040
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 0x42a6c3
cmp ecx, 3
jb 0x42a6c3
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 0x42a66d
jmp 0x42a711
add dword [esi + 0x6af84], edi
mov edi, ebx
mov edx, dword [esi + 0x6af84]
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
jmp 0x42a71d
movzx eax, byte [ecx + esi + 0x1af70]
xor edx, edx
push eax
mov ecx, esi
call fcn.0042b040
dec dword [esi + 0x6af90]
pop ecx
mov dword [esp + 0x10], eax
inc dword [esi + 0x6af84]
mov edx, dword [esi + 0x6af84]
cmp dword [esp + 0x10], ebx
je 0x42a754
mov eax, dword [esi + 0x6af74]
test eax, eax
js 0x42a737
lea ecx, [esi + 0x1af70]
add ecx, eax
jmp 0x42a739
mov ecx, ebx
sub edx, eax
push ebx
push edx
mov edx, ecx
mov ecx, esi
call fcn.0042b191
mov eax, dword [esi + 0x6af84]
pop ecx
pop ecx
mov dword [esi + 0x6af74], eax
cmp dword [esi + 0x6af90], 0x106
jae 0x42a767
mov ecx, esi
call fcn.0042a7a3
mov eax, dword [esi + 0x6af90]
test eax, eax
jne 0x42a59f
mov ecx, dword [esi + 0x6af74]
test ecx, ecx
js 0x42a787
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.0042b191
pop ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
pop ecx
ret