Function at 0x42340a
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [esp + 4]
sub esp, 0x94
push ebx
push ebp
mov ebp, ecx
xor ebx, ebx
push esi
mov dword [eax], ebx
mov dword [eax + 4], ebx
mov esi, dword [ebp]
test esi, 0xfffffffc
jne 0x42343c
and esi, 3
mov dword [ebp + 4], 1
or esi, eax
mov dword [ebp], esi
jmp 0x4234bb
push edi
and esi, 0xfffffffc
mov dword [esp + 0x18], ebp
push eax
push esi
push ebp
mov dword [esp + 0x20], esi
mov edi, ebx
mov dword [esp + 0x30], esi
call dword [ebp + 8]
add esp, 0xc
mov ecx, eax
jmp 0x4234b2
mov eax, dword [esp + 0x14]
mov edx, eax
sar ecx, 0x1f
and ecx, 1
mov dword [esp + 0x1c], eax
mov eax, dword [eax + ecx*4]
lea ebx, [ecx + ebx*2]
and eax, 0xfffffffc
mov dword [esp + 0x14], eax
je 0x4234c7
mov ecx, dword [eax]
and ecx, 3
mov dword [esp + 0x20], ecx
je 0x42348a
mov esi, eax
or edi, 0xffffffff
push dword [esp + 0xa8]
inc edi
push eax
push ebp
mov dword [esp + edi*4 + 0x30], eax
call dword [ebp + 8]
add esp, 0xc
mov ecx, eax
cmp dword [esp + 0x20], 0
mov eax, dword [esp + 0x1c]
cmove eax, dword [esp + 0x18]
mov dword [esp + 0x18], eax
test ecx, ecx
jne 0x42345b
mov eax, dword [esp + 0x14]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x94
ret 4
mov ecx, ebx
and ecx, 1
mov eax, dword [edx + ecx*4]
and eax, 3
or eax, dword [esp + 0xa8]
mov dword [edx + ecx*4], eax
mov edx, ebx
mov ecx, edi
shr edx, cl
movzx eax, dl
imul eax, eax, 0xfffffffe
not eax
xor eax, dword [esi]
test al, 3
je 0x42351c
test edi, edi
js 0x423634
mov edx, dword [esp + edi*4 + 0x24]
movzx eax, bl
and eax, 1
shr ebx, 1
add eax, eax
mov ecx, dword [edx]
sub ecx, eax
dec ecx
xor ecx, dword [edx]
and ecx, 3
xor dword [edx], ecx
sub edi, 1
jns 0x4234f8
jmp 0x423634
and edx, 0xffffff01
mov al, dl
mov dword [esp + 0x1c], edx
xor al, 1
mov byte [esp + 0x13], al
test edi, edi
jle 0x423559
mov edx, dword [esp + edi*4 + 0x24]
movzx eax, bl
and eax, 1
shr ebx, 1
add eax, eax
mov ecx, dword [edx]
sub ecx, eax
dec ecx
xor ecx, dword [edx]
and ecx, 3
xor dword [edx], ecx
dec edi
test edi, edi
jg 0x423532
mov edx, dword [esp + 0x1c]
mov al, byte [esp + 0x13]
mov edi, dword [esp + 0x28]
movzx edx, dl
imul ebx, edx, 0xfffffffe
movzx ecx, al
mov eax, dword [edi]
and eax, 3
not ebx
and ebx, 3
mov dword [esp + 0x14], ebx
cmp eax, ebx
jne 0x4235a4
mov eax, dword [esp + 0x24]
mov ebx, dword [eax + edx*4]
mov eax, dword [esi + edx*4]
and ebx, 0xfffffffc
xor eax, dword [edi + ecx*4]
and eax, 3
xor eax, dword [edi + ecx*4]
mov dword [esi + edx*4], eax
and dword [esi], 0xfffffffc
mov eax, dword [edi + ecx*4]
and eax, 3
or eax, esi
mov dword [edi + ecx*4], eax
and dword [edi], 0xfffffffc
jmp 0x423616
mov ebx, dword [edi + ecx*4]
and ebx, 0xfffffffc
mov eax, dword [ebx + edx*4]
xor eax, dword [edi + ecx*4]
and eax, 3
xor eax, dword [ebx + edx*4]
mov dword [edi + ecx*4], eax
mov eax, dword [esi + edx*4]
xor eax, dword [ebx + ecx*4]
and eax, 3
xor eax, dword [ebx + ecx*4]
mov dword [esi + edx*4], eax
mov eax, dword [ebx + edx*4]
and eax, 3
or eax, edi
mov dword [ebx + edx*4], eax
mov eax, dword [ebx + ecx*4]
mov edx, dword [esp + 0x14]
and eax, 3
or eax, esi
xor edx, 2
mov dword [ebx + ecx*4], eax
xor ecx, ecx
mov eax, dword [ebx]
and eax, 3
cmp eax, dword [esp + 0x14]
mov eax, dword [esi]
cmove ecx, edx
and eax, 0xfffffffc
or ecx, eax
mov dword [esi], ecx
xor ecx, ecx
mov eax, dword [ebx]
and eax, 3
cmp eax, edx
mov eax, dword [edi]
cmove ecx, dword [esp + 0x14]
and eax, 0xfffffffc
or ecx, eax
mov dword [edi], ecx
and dword [ebx], 0xfffffffc
mov edx, dword [esp + 0x18]
xor ecx, ecx
push 4
pop edi
mov eax, dword [edx]
and eax, 0xfffffffc
cmp esi, eax
cmovne ecx, edi
mov eax, dword [ecx + edx]
and eax, 3
or eax, ebx
mov dword [ecx + edx], eax
inc dword [ebp + 4]
mov eax, dword [esp + 0xa8]
jmp 0x4234ba