Function at 0x49e770
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x24
mov dword [ebp - 4], edi
mov dword [ebp - 0xc], esi
mov dword [ebp - 8], ebx
mov eax, dword [ebp + 8]
mov ebx, dword [ebp + 0x14]
mov eax, dword [eax + 8]
cmp eax, 5
jl 0x49ebec
cmp eax, 0x11
jg 0x49ead8
mov eax, dword [ebp + 0x10]
movzx edx, byte [eax + 0x15d]
test dl, 0x20
je 0x49e824
mov ecx, dword [ebp + 8]
mov eax, dword [ebp + 0xc]
mov ecx, dword [ecx]
cmp eax, 1
je 0x49ebfb
mov eax, dword [ebp + 0xc]
mov edx, eax
shr edx, 0x1f
add edx, eax
sar edx, 1
test edx, edx
mov dword [ebp - 0x14], edx
jle 0x49eac9
mov esi, dword [ebp + 0xc]
mov dword [ebp - 0x24], ebx
mov dword [ebp - 0x20], ecx
xor edx, edx
lea eax, [esi + ebx]
mov dword [ebp - 0x18], eax
lea edi, [esi + ecx]
xor esi, esi
xor eax, eax
mov dword [ebp - 0x1c], edi
mov edi, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 0x10], esi
movzx esi, byte [edx + edi]
mov edi, dword [ebp - 0x1c]
movzx ebx, byte [eax + edi - 1]
mov byte [edx + ecx], bl
movzx ecx, byte [eax + edi - 1]
xor esi, ebx
mov ebx, dword [ebp - 0x18]
xor ecx, esi
mov esi, dword [ebp - 0x10]
mov byte [esi + ebx - 1], cl
dec esi
dec eax
inc edx
cmp edx, dword [ebp - 0x14]
jl 0x49e7ec
jmp 0x49eac9
mov eax, dword [ebp + 0xc]
cmp eax, 1
je 0x49ec05
mov eax, dword [ebp + 0xc]
cmp eax, 2
je 0x49ea3e
mov eax, dword [ebp + 0xc]
cmp eax, 4
jne 0x49e8d1
mov eax, dword [ebp + 8]
mov esi, dword [eax]
mov edx, esi
and edx, 3
jne 0x49e858
mov eax, dword [esi]
jmp 0x49e87a
and esi, 0xfffffffc
test edx, edx
je 0x49e86d
mov eax, dword [esi + 4]
mov ecx, edx
neg ecx
shl ecx, 3
shl eax, cl
jmp 0x49e86f
xor eax, eax
mov esi, dword [esi]
shl edx, 3
mov ecx, edx
shr esi, cl
or eax, esi
mov esi, ebx
and esi, 3
jne 0x49e888
mov dword [ebx], eax
jmp 0x49eac9
and ebx, 0xfffffffc
lea edi, [esi*8]
mov ecx, edi
mov edx, 0xffffffff
shl edx, cl
test esi, esi
je 0x49e8c0
mov ecx, dword [ebx + 4]
mov dword [ebp - 0x24], edx
and ecx, edx
mov dword [ebp - 0x20], ecx
neg esi
shl esi, 3
mov ecx, esi
mov esi, dword [ebp - 0x20]
mov edx, eax
shr edx, cl
or esi, edx
mov edx, dword [ebp - 0x24]
mov dword [ebx + 4], esi
not edx
and edx, dword [ebx]
mov ecx, edi
shl eax, cl
or edx, eax
mov dword [ebx], edx
jmp 0x49eac9
mov eax, dword [ebp + 0xc]
cmp eax, 8
jne 0x49ea28
mov eax, dword [ebp + 8]
mov eax, dword [eax]
test al, 3
jne 0x49e8f3
mov edx, dword [eax]
mov esi, dword [eax + 4]
mov dword [ebp - 0x10], edx
jmp 0x49e97c
mov edx, eax
and edx, 0xfffffff8
mov dword [ebp - 0x20], edx
and eax, 7
je 0x49e934
mov esi, dword [edx + 8]
mov dword [ebp - 0x24], esi
mov esi, dword [edx + 0xc]
mov edi, eax
neg edi
lea ecx, [edi*8 + 0x40]
cmp ecx, 0x1f
ja 0x49e926
mov edx, dword [ebp - 0x24]
shld esi, edx, cl
shl edx, cl
mov dword [ebp - 0x10], edx
jmp 0x49e939
mov esi, dword [ebp - 0x24]
shl esi, cl
mov dword [ebp - 0x10], 0
jmp 0x49e939
xor esi, esi
mov dword [ebp - 0x10], esi
mov edi, dword [ebp - 0x20]
mov edx, dword [edi]
mov dword [ebp - 0x24], edx
mov edx, dword [edi + 4]
shl eax, 3
cmp eax, 0x1f
ja 0x49e960
mov edi, dword [ebp - 0x24]
mov ecx, eax
shrd edi, edx, cl
mov eax, edx
shr eax, cl
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x20], eax
jmp 0x49e970
mov dword [ebp - 0x20], 0
mov ecx, eax
mov eax, edx
shr eax, cl
mov dword [ebp - 0x24], eax
or esi, dword [ebp - 0x20]
mov eax, dword [ebp - 0x10]
or eax, dword [ebp - 0x24]
mov dword [ebp - 0x10], eax
test bl, 3
jne 0x49e98e
mov eax, dword [ebp - 0x10]
mov dword [ebx], eax
mov dword [ebx + 4], esi
jmp 0x49eac9
mov edx, ebx
and edx, 0xfffffff8
and ebx, 7
lea ecx, [ebx*8]
mov eax, 0xffffffff
shl eax, cl
mov dword [ebp - 0x14], ecx
test ebx, ebx
je 0x49e9ff
mov ecx, dword [edx + 0xc]
mov dword [ebp - 0x1c], esi
mov esi, dword [edx + 8]
mov dword [ebp - 0x24], ecx
and esi, eax
mov dword [ebp - 0x20], esi
mov esi, dword [ebp - 0x1c]
neg ebx
lea ecx, [ebx*8 + 0x40]
cmp ecx, 0x1f
ja 0x49e9df
mov ebx, dword [ebp - 0x10]
shrd ebx, esi, cl
mov dword [ebp - 0x18], ebx
mov edi, esi
shr edi, cl
mov dword [ebp - 0x1c], edi
jmp 0x49e9ed
mov dword [ebp - 0x1c], 0
mov ebx, esi
shr ebx, cl
mov dword [ebp - 0x18], ebx
mov ecx, dword [ebp - 0x20]
or ecx, dword [ebp - 0x18]
mov ebx, dword [ebp - 0x24]
or ebx, dword [ebp - 0x1c]
mov dword [edx + 8], ecx
mov dword [edx + 0xc], ebx
mov ecx, dword [ebp - 0x14]
not eax
and eax, dword [edx]
cmp ecx, 0x1f
ja 0x49ea15
mov ebx, dword [ebp - 0x10]
shld esi, ebx, cl
shl ebx, cl
jmp 0x49ea1c
mov esi, dword [ebp - 0x10]
shl esi, cl
xor ebx, ebx
or eax, ebx
mov dword [edx], eax
mov dword [edx + 4], esi
jmp 0x49eac9
push dword [ebp + 0xc]
mov eax, dword [ebp + 8]
push dword [eax]
push ebx
call fcn.004e26a0
add esp, 0xc
jmp 0x49eac9
mov eax, dword [ebp + 8]
mov edx, dword [eax]
mov esi, edx
and esi, 0xfffffffe
and edx, 1
je 0x49ea60
movsx eax, word [esi + 2]
mov edi, edx
neg edi
lea ecx, [edi*8 + 0x10]
shl eax, cl
jmp 0x49ea62
xor eax, eax
movzx esi, word [esi]
shl edx, 3
mov ecx, edx
shr esi, cl
mov edi, 0xffffffff
or eax, esi
mov esi, ebx
and esi, 0xfffffffe
and ebx, 1
lea edx, [ebx*8]
mov ecx, edx
shl edi, cl
test ebx, ebx
je 0x49eab9
movzx ecx, word [esi + 2]
mov dword [ebp - 0x24], edi
and ecx, edi
mov dword [ebp - 0x20], ecx
movzx edi, ax
neg ebx
lea ecx, [ebx*8 + 0x10]
shr edi, cl
mov ebx, dword [ebp - 0x20]
shl ebx, 0x10
shl edi, 0x10
or edi, ebx
shr edi, 0x10
mov word [esi + 2], di
mov edi, dword [ebp - 0x24]
movzx ebx, word [esi]
not edi
and ebx, edi
mov ecx, edx
shl eax, cl
or ebx, eax
mov word [esi], bx
mov ebx, dword [ebp - 8]
mov esi, dword [ebp - 0xc]
mov edi, dword [ebp - 4]
xor eax, eax
mov esp, ebp
pop ebp
ret
cmp eax, 0x19
jl 0x49ebec
cmp eax, 0x1f
jle 0x49eb07
cmp eax, 0x32
jl 0x49eaf5
cmp eax, 0x34
jle 0x49eb07
jmp 0x49ebec
cmp eax, 0x28
jl 0x49ebec
cmp eax, 0x30
jg 0x49ebec
mov edx, dword [eax*4 + 0x4fbe9c]
mov eax, dword [ebp + 0x10]
movsx esi, byte [eax + 0x148]
cmp edx, 0xffffffff
je 0x49eb49
mov eax, dword [ebp + 8]
mov eax, dword [eax]
lea ecx, [esi*4]
mov edi, esi
shl edi, 5
sub edi, ecx
mov edx, dword [edi + edx*4 + 0x4fbf80]
test edx, edx
je 0x49eb5b
push ebx
push 0
push eax
call edx
add esp, 0xc
cmp eax, 1
je 0x49eb87
mov ebx, dword [ebp - 8]
mov esi, dword [ebp - 0xc]
mov edi, dword [ebp - 4]
mov eax, 0x5f
mov esp, ebp
pop ebp
ret
mov edx, dword [ebp + 0xc]
cmp edx, 4
jne 0x49eb69
mov eax, dword [eax]
mov dword [ebx], eax
jmp 0x49eb87
mov edi, dword [ebp + 0xc]
mov edx, dword [eax]
mov dword [ebx], edx
mov ecx, dword [eax + 4]
mov dword [ebx + 4], ecx
cmp edi, 8
je 0x49eb87
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]
movzx edx, byte [eax + 0x15d]
test dl, 0x20
je 0x49ebec
test esi, esi
je 0x49ebaa
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
cmp eax, 0x34
je 0x49ebaa
cmp eax, 0x32
jne 0x49ebec
mov edx, dword [ebp + 0xc]
mov eax, edx
shr eax, 0x1f
add eax, edx
sar eax, 1
test eax, eax
jle 0x49ebec
mov edx, dword [ebp + 0xc]
mov dword [ebp - 0x24], eax
xor esi, esi
add edx, ebx
xor ecx, ecx
mov dword [ebp - 0x20], edx
mov edi, dword [ebp - 0x20]
movzx edx, byte [ebx]
movzx eax, byte [ecx + edi - 1]
xor edx, eax
mov dword [ebp - 0x1c], edx
mov byte [ebx], al
mov al, byte [ebp - 0x1c]
mov edx, edi
inc ebx
xor byte [ecx + edx - 1], al
dec ecx
inc esi
cmp esi, dword [ebp - 0x24]
jl 0x49ebc9
mov ebx, dword [ebp - 8]
mov esi, dword [ebp - 0xc]
mov edi, dword [ebp - 4]
xor eax, eax
mov esp, ebp
pop ebp
ret
movzx eax, byte [ecx]
mov byte [ebx], al
jmp 0x49eac9
mov esi, dword [ebp + 8]
mov edi, dword [esi]
movzx eax, byte [edi]
mov byte [ebx], al
jmp 0x49eac9