Function at 0x420170
Capabilities:
Encode data using xor

Disassembly:
push ebx
push ebp
push esi
mov esi, ecx
xor ebp, ebp
mov dword [esi + 0x83a0], ebp
call fcn.00427ac0
mov ebx, eax
cmp dword [esi + 0x83a8], 2
jne 0x4201bf
push 1
mov ecx, esi
call fcn.00427aa0
cmp ebx, 0x8000
jb 0x4201b7
mov eax, dword [esi + 0x55ac]
mov ecx, dword [esi + 0x55a8]
push eax
push ecx
mov ecx, esi
call fcn.0041f120
pop esi
pop ebp
pop ebx
ret
shl ebx, 1
mov dword [esi + 0x83a8], ebp
mov eax, dword [esi + 0x839c]
add eax, 3
mov dword [0x44730c], eax
mov dword [0x4472c4], eax
mov eax, dword [esi + 0x8390]
push edi
shr ebx, 8
xor edi, edi
cmp eax, 0x25
mov edx, 0xff
jae 0x420227
mov ecx, dword [0x4472c0]
mov eax, dword [0x447284]
sar edx, cl
xor eax, ebx
not edx
test eax, edx
je 0x42021e
lea ecx, [ecx]
mov ecx, dword [edi*4 + 0x4472c4]
mov eax, dword [edi*4 + 0x447288]
inc edi
mov edx, 0xff
sar edx, cl
xor eax, ebx
not edx
test eax, edx
jne 0x420200
mov ecx, dword [edi*4 + 0x4472c0]
jmp 0x420265
mov ecx, dword [0x447300]
mov eax, dword [0x447248]
sar edx, cl
xor eax, ebx
not edx
test eax, edx
je 0x42025e
lea esp, [esp]
mov ecx, dword [edi*4 + 0x447304]
mov eax, dword [edi*4 + 0x44724c]
inc edi
mov edx, 0xff
sar edx, cl
xor eax, ebx
not edx
test eax, edx
jne 0x420240
mov ecx, dword [edi*4 + 0x447300]
push ecx
mov ecx, esi
call fcn.00427aa0
cmp edi, 9
jb 0x42039a
jne 0x42029f
mov ebx, dword [esi + 0x83a8]
mov edx, dword [esi + 0x55ac]
mov eax, dword [esi + 0x55a8]
push edx
inc ebx
push eax
mov ecx, esi
mov dword [esi + 0x83a8], ebx
call fcn.0041f120
pop edi
pop esi
pop ebp
pop ebx
ret
cmp edi, 0xe
mov dword [esi + 0x83a8], ebp
jne 0x4202fe
push 0x447078
push 0x447050
push 3
mov ecx, esi
call fcn.00427ac0
push eax
mov ecx, esi
call fcn.0041f190
mov ebx, eax
mov ecx, esi
add ebx, 5
call fcn.00427ac0
mov edi, eax
or edi, 0x10000
push 0xf
mov ecx, esi
shr edi, 1
call fcn.00427aa0
push ebx
push edi
mov ecx, esi
mov dword [esi + 0x55ac], ebx
mov dword [esi + 0x55a8], edi
call fcn.0041f120
pop edi
pop esi
pop ebp
pop ebx
ret
mov ecx, dword [esi + 0x55a4]
sub ecx, edi
inc ecx
push 0x44701c
and ecx, 3
push 0x446ff0
mov ebx, edi
mov edi, dword [esi + ecx*4 + 0x5594]
push 2
mov ecx, esi
call fcn.00427ac0
push eax
mov ecx, esi
call fcn.0041f190
add eax, 2
cmp eax, 0x101
jne 0x420351
cmp ebx, 0xa
jne 0x420351
mov eax, dword [esi + 0x839c]
pop edi
xor eax, 1
mov dword [esi + 0x839c], eax
pop esi
pop ebp
pop ebx
ret
cmp edi, 0x100
jbe 0x42035a
inc eax
cmp edi, dword [esi + 0x83b8]
jb 0x420363
inc eax
mov edx, dword [esi + 0x55a4]
mov dword [esi + edx*4 + 0x5594], edi
mov ecx, dword [esi + 0x55a4]
inc ecx
and ecx, 3
push eax
mov dword [esi + 0x55a4], ecx
push edi
mov ecx, esi
mov dword [esi + 0x55ac], eax
mov dword [esi + 0x55a8], edi
call fcn.0041f120
pop edi
pop esi
pop ebp
pop ebx
ret
mov edx, dword [esi + 0x8390]
lea eax, [edx + edi]
mov ecx, eax
push 0x447178
shr ecx, 4
sub eax, ecx
push 0x447158
push 5
mov ecx, esi
mov dword [esi + 0x83a8], ebp
mov dword [esi + 0x8390], eax
call fcn.00427ac0
push eax
mov ecx, esi
call fcn.0041f190
and eax, 0xff
mov ecx, dword [esi + eax*4 + 0x5b84]
dec eax
cmp eax, 0xffffffff
je 0x420406
dec dword [esi + ecx*4 + 0x6b84]
mov edx, dword [esi + eax*4 + 0x5b84]
inc dword [esi + edx*4 + 0x6b84]
mov dword [esi + eax*4 + 0x5b88], edx
mov dword [esi + eax*4 + 0x5b84], ecx
mov edx, dword [esi + 0x55a4]
add edi, 2
inc ecx
mov dword [esi + edx*4 + 0x5594], ecx
mov eax, dword [esi + 0x55a4]
inc eax
push edi
and eax, 3
mov dword [esi + 0x55a8], ecx
push ecx
mov ecx, esi
mov dword [esi + 0x55a4], eax
mov dword [esi + 0x55ac], edi
call fcn.0041f120
pop edi
pop esi
pop ebp
pop ebx
ret