Function at 0x42a620
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x24
mov eax, dword [ebp + 8]
mov dword [ebp - 0xc], ebx
mov dword [ebp - 8], edi
mov eax, dword [eax + 8]
cmp eax, 5
mov dword [ebp - 4], esi
mov ebx, dword [ebp + 0x14]
jl 0x42aa83
cmp eax, 0x11
jg 0x42a985
mov eax, dword [ebp + 0x10]
test byte [eax + 0x16d], 0x20
je 0x42a6cf
mov eax, dword [ebp + 8]
cmp dword [ebp + 0xc], 1
mov ecx, dword [eax]
je 0x42aa92
mov eax, dword [ebp + 0xc]
mov edx, eax
shr edx, 0x1f
add edx, eax
sar edx, 1
mov dword [ebp - 0x14], edx
test edx, edx
jle 0x42a976
mov esi, dword [ebp + 0xc]
xor edx, edx
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x24], ecx
lea eax, [esi + ebx]
mov dword [ebp - 0x18], eax
lea edi, [esi + ecx]
xor esi, esi
mov dword [ebp - 0x1c], edi
xor eax, eax
mov edi, dword [ebp - 0x24]
mov dword [ebp - 0x10], esi
mov ecx, dword [ebp - 0x20]
movzx esi, byte [edx + edi]
mov edi, dword [ebp - 0x1c]
movzx ebx, byte [eax + edi - 1]
xor esi, ebx
mov byte [edx + ecx], bl
inc edx
movzx ecx, byte [eax + edi - 1]
dec eax
mov ebx, dword [ebp - 0x18]
xor ecx, esi
mov esi, dword [ebp - 0x10]
mov byte [esi + ebx - 1], cl
dec esi
cmp edx, dword [ebp - 0x14]
jl 0x42a697
jmp 0x42a976
cmp dword [ebp + 0xc], 1
je 0x42aa9c
cmp dword [ebp + 0xc], 2
je 0x42a8f2
cmp dword [ebp + 0xc], 4
jne 0x42a778
mov eax, dword [ebp + 8]
mov esi, dword [eax]
mov edx, esi
and edx, 3
jne 0x42a6fd
mov eax, dword [esi]
jmp 0x42a721
and esi, 0xfffffffc
test edx, edx
je 0x42a714
lea ecx, [edx*8]
neg ecx
mov eax, dword [esi + 4]
shl eax, cl
jmp 0x42a716
xor eax, eax
shl edx, 3
mov ecx, edx
mov esi, dword [esi]
shr esi, cl
or eax, esi
mov edx, ebx
and edx, 3
jne 0x42a72f
mov dword [ebx], eax
jmp 0x42a976
mov esi, 0xffffffff
lea edi, [edx*8]
mov ecx, edi
and ebx, 0xfffffffc
shl esi, cl
test edx, edx
je 0x42a767
shl edx, 3
neg edx
mov ecx, dword [ebx + 4]
and ecx, esi
mov dword [ebp - 0x20], ecx
mov ecx, edx
mov edx, eax
shr edx, cl
mov dword [ebp - 0x24], esi
mov esi, dword [ebp - 0x20]
or esi, edx
mov dword [ebx + 4], esi
mov esi, dword [ebp - 0x24]
not esi
mov ecx, edi
and esi, dword [ebx]
shl eax, cl
or esi, eax
mov dword [ebx], esi
jmp 0x42a976
cmp dword [ebp + 0xc], 8
jne 0x42a8dc
mov eax, dword [ebp + 8]
mov eax, dword [eax]
test al, 3
jne 0x42a798
mov edx, dword [eax]
mov dword [ebp - 0x10], edx
mov edx, dword [eax + 4]
jmp 0x42a824
mov edx, eax
and edx, 0xfffffff8
mov dword [ebp - 0x20], edx
and eax, 7
je 0x42a7dc
mov esi, edx
lea ecx, [eax*8]
neg ecx
add ecx, 0x40
mov edx, dword [esi + 8]
cmp ecx, 0x1f
mov dword [ebp - 0x24], edx
mov edx, dword [esi + 0xc]
ja 0x42a7ce
mov esi, dword [ebp - 0x24]
shld edx, esi, cl
shl esi, cl
mov dword [ebp - 0x10], esi
jmp 0x42a7e1
mov edx, dword [ebp - 0x24]
mov dword [ebp - 0x10], 0
shl edx, cl
jmp 0x42a7e1
xor edx, edx
mov dword [ebp - 0x10], edx
mov edi, dword [ebp - 0x20]
shl eax, 3
cmp eax, 0x1f
mov esi, dword [edi]
mov dword [ebp - 0x24], esi
mov esi, dword [edi + 4]
ja 0x42a808
mov ecx, eax
mov eax, esi
mov edi, dword [ebp - 0x24]
shrd edi, esi, cl
shr eax, cl
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x20], eax
jmp 0x42a818
mov ecx, eax
mov eax, esi
shr eax, cl
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x10]
or eax, dword [ebp - 0x24]
or edx, dword [ebp - 0x20]
mov dword [ebp - 0x10], eax
test bl, 3
jne 0x42a836
mov eax, dword [ebp - 0x10]
mov dword [ebx], eax
mov dword [ebx + 4], edx
jmp 0x42a976
mov eax, ebx
and ebx, 7
and eax, 0xfffffff8
mov dword [ebp - 0x14], eax
mov eax, 0xffffffff
lea ecx, [ebx*8]
mov dword [ebp - 0x18], ecx
shl eax, cl
test ebx, ebx
je 0x42a8a9
mov ecx, dword [ebp - 0x14]
shl ebx, 3
neg ebx
add ebx, 0x40
mov esi, dword [ecx + 0xc]
mov edi, dword [ecx + 8]
and edi, eax
mov dword [ebp - 0x1c], esi
cmp ebx, 0x1f
ja 0x42a885
mov ecx, ebx
mov ebx, edx
mov esi, dword [ebp - 0x10]
shrd esi, edx, cl
shr ebx, cl
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x24], ebx
jmp 0x42a895
mov ecx, ebx
mov ebx, edx
shr ebx, cl
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x20], ebx
mov esi, dword [ebp - 0x14]
mov ecx, edi
mov ebx, dword [ebp - 0x1c]
or ecx, dword [ebp - 0x20]
or ebx, dword [ebp - 0x24]
mov dword [esi + 8], ecx
mov dword [esi + 0xc], ebx
mov ecx, dword [ebp - 0x14]
not eax
and eax, dword [ecx]
cmp dword [ebp - 0x18], 0x1f
ja 0x42a8c3
mov ecx, dword [ebp - 0x18]
mov ebx, dword [ebp - 0x10]
shld edx, ebx, cl
shl ebx, cl
jmp 0x42a8cd
mov ecx, dword [ebp - 0x18]
xor ebx, ebx
mov edx, dword [ebp - 0x10]
shl edx, cl
mov ecx, dword [ebp - 0x14]
or eax, ebx
mov dword [ecx], eax
mov dword [ecx + 4], edx
jmp 0x42a976
mov eax, dword [ebp + 8]
push dword [ebp + 0xc]
push dword [eax]
push ebx
call fcn.004ae0f0
add esp, 0xc
jmp 0x42a976
mov eax, dword [ebp + 8]
mov edx, dword [eax]
mov esi, edx
and esi, 0xfffffffe
and edx, 1
je 0x42a915
lea ecx, [edx*8]
neg ecx
add ecx, 0x10
movsx eax, word [esi + 2]
shl eax, cl
jmp 0x42a917
xor eax, eax
shl edx, 3
mov edi, 0xffffffff
mov ecx, edx
movzx esi, word [esi]
shr esi, cl
or eax, esi
mov esi, ebx
and ebx, 1
and esi, 0xfffffffe
lea edx, [ebx*8]
mov ecx, edx
shl edi, cl
test ebx, ebx
je 0x42a966
shl ebx, 3
neg ebx
add ebx, 0x10
movzx ecx, word [esi + 2]
and ecx, edi
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x20], ecx
mov ecx, ebx
movzx edi, ax
shr edi, cl
mov ebx, dword [ebp - 0x20]
or ebx, edi
mov edi, dword [ebp - 0x24]
mov word [esi + 2], bx
not edi
mov ecx, edx
movzx ebx, word [esi]
shl eax, cl
and ebx, edi
or ebx, eax
mov word [esi], bx
xor eax, eax
mov ebx, dword [ebp - 0xc]
mov esi, dword [ebp - 4]
mov edi, dword [ebp - 8]
mov esp, ebp
pop ebp
ret
cmp eax, 0x19
jl 0x42aa83
cmp eax, 0x1f
jle 0x42a9b4
cmp eax, 0x32
jl 0x42a9a2
cmp eax, 0x34
jle 0x42a9b4
jmp 0x42aa83
cmp eax, 0x28
jl 0x42aa83
cmp eax, 0x30
jg 0x42aa83
mov edx, dword [eax*4 + 0x4cf17c]
cmp edx, 0xffffffff
mov eax, dword [ebp + 0x10]
movsx esi, byte [eax + 0x158]
je 0x42aaab
mov edi, esi
lea ecx, [esi*4]
shl edi, 5
sub edi, ecx
mov eax, dword [ebp + 8]
mov edx, dword [edi + edx*4 + 0x4cf340]
test edx, edx
mov eax, dword [eax]
je 0x42aa0c
push ebx
push 0
push eax
call edx
add esp, 0xc
cmp eax, 1
je 0x42aa2e
mov eax, 0x5f
mov ebx, dword [ebp - 0xc]
mov esi, dword [ebp - 4]
mov edi, dword [ebp - 8]
mov esp, ebp
pop ebp
ret
cmp dword [ebp + 0xc], 4
mov edx, dword [eax]
mov dword [ebx], edx
je 0x42aa2e
mov edx, dword [eax + 4]
mov dword [ebx + 4], edx
cmp dword [ebp + 0xc], 8
je 0x42aa2e
mov edx, dword [eax + 8]
mov dword [ebx + 8], edx
mov eax, dword [eax + 0xc]
mov dword [ebx + 0xc], eax
mov eax, dword [ebp + 0x10]
test byte [eax + 0x16d], 0x20
je 0x42aa83
test esi, esi
je 0x42aa4e
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
cmp eax, 0x34
je 0x42aa4e
cmp eax, 0x32
jne 0x42aa83
mov edx, dword [ebp + 0xc]
mov eax, edx
shr eax, 0x1f
add eax, edx
sar eax, 1
test eax, eax
jle 0x42aa83
mov edx, dword [ebp + 0xc]
xor esi, esi
mov dword [ebp - 0x24], eax
xor ecx, ecx
lea edi, [edx + ebx]
movzx eax, byte [ebx]
inc esi
movzx edx, byte [ecx + edi - 1]
xor eax, edx
mov byte [ebx], dl
inc ebx
xor byte [ecx + edi - 1], al
dec ecx
cmp esi, dword [ebp - 0x24]
jl 0x42aa6b
xor eax, eax
mov ebx, dword [ebp - 0xc]
mov esi, dword [ebp - 4]
mov edi, dword [ebp - 8]
mov esp, ebp
pop ebp
ret
movzx eax, byte [ecx]
mov byte [ebx], al
jmp 0x42a976
mov esi, dword [ebp + 8]
mov edi, dword [esi]
movzx eax, byte [edi]
mov byte [ebx], al
jmp 0x42a976
mov eax, 0x5f
mov ebx, dword [ebp - 0xc]
mov esi, dword [ebp - 4]
mov esp, ebp
pop ebp
ret