Function at 0x42f430
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 0x42f893
cmp eax, 0x11
jg 0x42f795
mov eax, dword [ebp + 0x10]
test byte [eax + 0x16d], 0x20
je 0x42f4df
mov eax, dword [ebp + 8]
cmp dword [ebp + 0xc], 1
mov ecx, dword [eax]
je 0x42f8a2
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 0x42f786
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 0x42f4a7
jmp 0x42f786
cmp dword [ebp + 0xc], 1
je 0x42f8ac
cmp dword [ebp + 0xc], 2
je 0x42f702
cmp dword [ebp + 0xc], 4
jne 0x42f588
mov eax, dword [ebp + 8]
mov esi, dword [eax]
mov edx, esi
and edx, 3
jne 0x42f50d
mov eax, dword [esi]
jmp 0x42f531
and esi, 0xfffffffc
test edx, edx
je 0x42f524
lea ecx, [edx*8]
neg ecx
mov eax, dword [esi + 4]
shl eax, cl
jmp 0x42f526
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 0x42f53f
mov dword [ebx], eax
jmp 0x42f786
mov esi, 0xffffffff
lea edi, [edx*8]
mov ecx, edi
and ebx, 0xfffffffc
shl esi, cl
test edx, edx
je 0x42f577
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 0x42f786
cmp dword [ebp + 0xc], 8
jne 0x42f6ec
mov eax, dword [ebp + 8]
mov eax, dword [eax]
test al, 3
jne 0x42f5a8
mov edx, dword [eax]
mov dword [ebp - 0x10], edx
mov edx, dword [eax + 4]
jmp 0x42f634
mov edx, eax
and edx, 0xfffffff8
mov dword [ebp - 0x20], edx
and eax, 7
je 0x42f5ec
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 0x42f5de
mov esi, dword [ebp - 0x24]
shld edx, esi, cl
shl esi, cl
mov dword [ebp - 0x10], esi
jmp 0x42f5f1
mov edx, dword [ebp - 0x24]
mov dword [ebp - 0x10], 0
shl edx, cl
jmp 0x42f5f1
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 0x42f618
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 0x42f628
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 0x42f646
mov eax, dword [ebp - 0x10]
mov dword [ebx], eax
mov dword [ebx + 4], edx
jmp 0x42f786
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 0x42f6b9
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 0x42f695
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 0x42f6a5
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 0x42f6d3
mov ecx, dword [ebp - 0x18]
mov ebx, dword [ebp - 0x10]
shld edx, ebx, cl
shl ebx, cl
jmp 0x42f6dd
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 0x42f786
mov eax, dword [ebp + 8]
push dword [ebp + 0xc]
push dword [eax]
push ebx
call fcn.004b2b50
add esp, 0xc
jmp 0x42f786
mov eax, dword [ebp + 8]
mov edx, dword [eax]
mov esi, edx
and esi, 0xfffffffe
and edx, 1
je 0x42f725
lea ecx, [edx*8]
neg ecx
add ecx, 0x10
movsx eax, word [esi + 2]
shl eax, cl
jmp 0x42f727
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 0x42f776
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 0x42f893
cmp eax, 0x1f
jle 0x42f7c4
cmp eax, 0x32
jl 0x42f7b2
cmp eax, 0x34
jle 0x42f7c4
jmp 0x42f893
cmp eax, 0x28
jl 0x42f893
cmp eax, 0x30
jg 0x42f893
mov edx, dword [eax*4 + 0x4d3d5c]
cmp edx, 0xffffffff
mov eax, dword [ebp + 0x10]
movsx esi, byte [eax + 0x158]
je 0x42f8bb
mov edi, esi
lea ecx, [esi*4]
shl edi, 5
sub edi, ecx
mov eax, dword [ebp + 8]
mov edx, dword [edi + edx*4 + 0x4d3f20]
test edx, edx
mov eax, dword [eax]
je 0x42f81c
push ebx
push 0
push eax
call edx
add esp, 0xc
cmp eax, 1
je 0x42f83e
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 0x42f83e
mov edx, dword [eax + 4]
mov dword [ebx + 4], edx
cmp dword [ebp + 0xc], 8
je 0x42f83e
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 0x42f893
test esi, esi
je 0x42f85e
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
cmp eax, 0x34
je 0x42f85e
cmp eax, 0x32
jne 0x42f893
mov edx, dword [ebp + 0xc]
mov eax, edx
shr eax, 0x1f
add eax, edx
sar eax, 1
test eax, eax
jle 0x42f893
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 0x42f87b
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 0x42f786
mov esi, dword [ebp + 8]
mov edi, dword [esi]
movzx eax, byte [edi]
mov byte [ebx], al
jmp 0x42f786
mov eax, 0x5f
mov ebx, dword [ebp - 0xc]
mov esi, dword [ebp - 4]
mov esp, ebp
pop ebp
ret