Function at 0x42dd8f
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 0x42ddb5
pop edi
pop esi
pop ebx
add esp, 0xc
jmp 0x42e0a2
mov eax, dword [esi + 0x6af90]
test eax, eax
je 0x42e073
mov edx, eax
push ebp
mov ecx, ebx
mov dword [esp + 0x18], ecx
cmp eax, 3
jb 0x42de2b
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 0x42dea3
cmp ecx, dword [esi + 0x6af98]
jae 0x42dea3
mov eax, dword [esi + 0x6af84]
mov ecx, dword [esp + 0x14]
sub eax, ecx
cmp eax, 0x7efa
ja 0x42dea3
cmp dword [esi + 0x6afa0], edx
jbe 0x42de70
mov dword [esi + 0x6afa0], edx
mov edx, ecx
mov ecx, esi
call fcn.0042e3d3
mov ecx, dword [esi + 0x6af90]
mov ebx, eax
cmp ebx, ecx
mov ebp, ecx
cmova ebx, ecx
cmp ebx, 3
jne 0x42dea3
mov eax, dword [esi + 0x6af84]
sub eax, dword [esi + 0x6af88]
cmp eax, 0x1000
jbe 0x42dea3
push 2
pop ebx
mov eax, dword [esi + 0x6af80]
cmp eax, 3
jb 0x42dfad
cmp ebx, eax
ja 0x42dfad
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.0042eaa2
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 0x42df52
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 0x42def9
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 0x42e034
mov eax, dword [esi + 0x6af74]
test eax, eax
js 0x42df8d
lea edx, [esi + 0x1af70]
add edx, eax
jmp 0x42df8f
mov edx, edi
sub ecx, eax
push edi
push ecx
mov ecx, esi
call fcn.0042ebf3
pop ecx
pop ecx
mov ecx, dword [esi + 0x6af84]
mov dword [esi + 0x6af74], ecx
jmp 0x42e034
cmp dword [esp + 0x10], 0
je 0x42e014
mov eax, dword [esi + 0x6af84]
xor edx, edx
mov ecx, esi
movzx eax, byte [eax + esi + 0x1af6f]
push eax
call fcn.0042eaa2
pop ecx
test eax, eax
je 0x42e006
mov ecx, dword [esi + 0x6af74]
test ecx, ecx
js 0x42dfe5
lea edx, [esi + 0x1af70]
add edx, ecx
jmp 0x42dfe7
mov edx, edi
mov eax, dword [esi + 0x6af84]
sub eax, ecx
mov ecx, esi
push edi
push eax
call fcn.0042ebf3
mov eax, dword [esi + 0x6af84]
pop ecx
pop ecx
mov dword [esi + 0x6af74], eax
inc dword [esi + 0x6af84]
dec dword [esi + 0x6af90]
jmp 0x42e02a
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 0x42e04d
mov ecx, esi
call fcn.0042e2b0
mov ecx, dword [esi + 0x6af84]
mov eax, dword [esi + 0x6af90]
mov edx, eax
test eax, eax
jne 0x42ddc6
test ebp, ebp
pop ebp
je 0x42e073
movzx eax, byte [ecx + esi + 0x1af6f]
mov ecx, esi
push eax
call fcn.0042eaa2
pop ecx
mov ecx, dword [esi + 0x6af74]
test ecx, ecx
js 0x42e085
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.0042ebf3
pop ecx
pop ecx
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 0x42e277
cmp eax, 3
jb 0x42e11a
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 0x42e153
mov eax, dword [edi]
sub eax, ecx
cmp eax, 0x7efa
ja 0x42e153
mov eax, dword [esi + 0x6af90]
cmp dword [esi + 0x6afa0], eax
jbe 0x42e13d
mov dword [esi + 0x6afa0], eax
mov edx, ecx
mov ecx, esi
call fcn.0042e3d3
mov ecx, dword [esi + 0x6af90]
mov ebx, eax
cmp ebx, ecx
cmova ebx, ecx
mov ecx, dword [edi]
cmp ebx, 3
jb 0x42e20c
sub ecx, dword [esi + 0x6af88]
lea eax, [ebx - 3]
mov edx, ecx
mov ecx, esi
push eax
call fcn.0042eaa2
pop ecx
mov ecx, dword [esi + 0x6af90]
sub ecx, ebx
mov dword [esp + 0x14], eax
mov dword [esi + 0x6af90], ecx
cmp ebx, dword [esi + 0x6af98]
ja 0x42e1e3
cmp ecx, 3
jb 0x42e1e3
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 0x42e192
jmp 0x42e229
add dword [edi], ebx
mov ebx, ebp
mov edx, dword [edi]
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 0x42e22d
movzx eax, byte [ecx + esi + 0x1af70]
xor edx, edx
push eax
mov ecx, esi
call fcn.0042eaa2
dec dword [esi + 0x6af90]
pop ecx
mov dword [esp + 0x14], eax
inc dword [edi]
mov edx, dword [edi]
cmp dword [esp + 0x14], ebp
je 0x42e260
mov eax, dword [esi + 0x6af74]
test eax, eax
js 0x42e247
lea ecx, [esi + 0x1af70]
add ecx, eax
jmp 0x42e249
mov ecx, ebp
sub edx, eax
push ebp
push edx
mov edx, ecx
mov ecx, esi
call fcn.0042ebf3
mov eax, dword [edi]
pop ecx
pop ecx
mov dword [esi + 0x6af74], eax
cmp dword [esi + 0x6af90], 0x106
jae 0x42e273
mov ecx, esi
call fcn.0042e2b0
mov ecx, dword [esp + 0x10]
mov eax, dword [esi + 0x6af90]
test eax, eax
jne 0x42e0c9
mov ecx, dword [esi + 0x6af74]
test ecx, ecx
js 0x42e297
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.0042ebf3
pop ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
pop ecx
pop ecx
ret