Function at 0x40e300
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x304
mov eax, dword [0x4c6184]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
xor ecx, ecx
mov eax, 1
push esi
lea esp, [esp]
mov edx, eax
and dl, 0x80
movsx edx, dl
mov byte [ebp + ecx - 0x304], al
mov byte [ebp + ecx - 0x205], al
mov byte [ebp + eax - 0x104], cl
inc ecx
neg edx
sbb edx, edx
and edx, 0x11b
lea esi, [eax + eax]
xor edx, esi
xor eax, edx
cmp eax, 1
jne 0x40e320
xor ecx, ecx
mov edx, eax
and dl, 0x80
movsx edx, dl
neg edx
sbb edx, edx
mov byte [ecx + 0x4cf9d8], al
and edx, 0x11b
add eax, eax
inc ecx
xor eax, edx
cmp ecx, 0x1e
jb 0x40e356
xor eax, eax
lea ebx, [ebx]
test al, al
je 0x40e39c
movzx ecx, al
movzx edx, byte [ebp + ecx - 0x104]
lea ecx, [ebp - 0x205]
sub ecx, edx
movzx edx, byte [ecx]
jmp 0x40e39e
xor edx, edx
lea ecx, [edx + edx]
xor ecx, edx
add ecx, ecx
xor ecx, edx
add ecx, ecx
xor ecx, edx
add ecx, ecx
xor edx, ecx
mov ecx, edx
xor ecx, 0x6300
sar ecx, 8
xor ecx, edx
mov byte [eax + 0x4cfaf8], cl
mov byte [eax*4 + 0x4ce9d9], cl
mov byte [eax*4 + 0x4ce9d8], cl
mov byte [eax*4 + 0x4ceddb], cl
mov byte [eax*4 + 0x4cedd8], cl
mov byte [eax*4 + 0x4cf1db], cl
mov byte [eax*4 + 0x4cf1da], cl
mov byte [eax*4 + 0x4cf5da], cl
mov byte [eax*4 + 0x4cf5d9], cl
test cl, cl
je 0x40e413
movzx edx, cl
movzx edx, byte [ebp + edx - 0x104]
movzx edx, byte [ebp + edx - 0x2eb]
jmp 0x40e415
xor edx, edx
mov byte [eax*4 + 0x4ce9db], dl
mov byte [eax*4 + 0x4cedda], dl
mov byte [eax*4 + 0x4cf1d9], dl
mov byte [eax*4 + 0x4cf5d8], dl
test cl, cl
je 0x40e44a
movzx ecx, cl
movzx edx, byte [ebp + ecx - 0x104]
movzx ecx, byte [ebp + edx - 0x303]
jmp 0x40e44c
xor ecx, ecx
mov byte [eax*4 + 0x4ce9da], cl
mov byte [eax*4 + 0x4cedd9], cl
mov byte [eax*4 + 0x4cf1d8], cl
mov byte [eax*4 + 0x4cf5db], cl
movzx esi, al
lea ecx, [esi*8]
xor ecx, esi
add ecx, ecx
add ecx, ecx
xor ecx, esi
add ecx, ecx
mov edx, ecx
sar edx, 8
xor dl, cl
xor dl, 5
je 0x40e4bd
lea ecx, [esi*8]
xor ecx, esi
add ecx, ecx
add ecx, ecx
xor ecx, esi
add ecx, ecx
mov edx, ecx
sar edx, 8
movzx edx, dl
movzx ecx, cl
xor edx, ecx
xor edx, 5
movzx edx, byte [ebp + edx - 0x104]
lea ecx, [ebp - 0x205]
sub ecx, edx
mov bl, byte [ecx]
jmp 0x40e4bf
xor bl, bl
mov byte [eax + 0x4cf9f8], bl
test bl, bl
je 0x40e4de
movzx edx, bl
movzx ecx, byte [ebp + edx - 0x104]
movzx edx, byte [ebp + ecx - 0x29c]
jmp 0x40e4e0
xor edx, edx
movzx ecx, bl
mov byte [eax*4 + 0x4cd9da], dl
mov byte [eax*4 + 0x4cddd9], dl
mov byte [eax*4 + 0x4ce1d8], dl
mov byte [eax*4 + 0x4ce5db], dl
mov byte [ecx*4 + 0x4cc9da], dl
mov byte [ecx*4 + 0x4ccdd9], dl
mov byte [ecx*4 + 0x4cd1d8], dl
mov byte [ecx*4 + 0x4cd5db], dl
test bl, bl
je 0x40e531
movzx edx, byte [ebp + ecx - 0x104]
movzx edx, byte [ebp + edx - 0x23d]
jmp 0x40e533
xor edx, edx
mov byte [eax*4 + 0x4cd9d8], dl
mov byte [eax*4 + 0x4cdddb], dl
mov byte [eax*4 + 0x4ce1da], dl
mov byte [eax*4 + 0x4ce5d9], dl
mov byte [ecx*4 + 0x4cc9d8], dl
mov byte [ecx*4 + 0x4ccddb], dl
mov byte [ecx*4 + 0x4cd1da], dl
mov byte [ecx*4 + 0x4cd5d9], dl
test bl, bl
je 0x40e581
movzx edx, byte [ebp + ecx - 0x104]
movzx edx, byte [ebp + edx - 0x216]
jmp 0x40e583
xor edx, edx
mov byte [eax*4 + 0x4cd9d9], dl
mov byte [eax*4 + 0x4cddd8], dl
mov byte [eax*4 + 0x4ce1db], dl
mov byte [eax*4 + 0x4ce5da], dl
mov byte [ecx*4 + 0x4cc9d9], dl
mov byte [ecx*4 + 0x4ccdd8], dl
mov byte [ecx*4 + 0x4cd1db], dl
mov byte [ecx*4 + 0x4cd5da], dl
test bl, bl
je 0x40e5d1
movzx edx, byte [ebp + ecx - 0x104]
movzx edx, byte [ebp + edx - 0x225]
jmp 0x40e5d3
xor edx, edx
mov byte [eax*4 + 0x4cd9db], dl
mov byte [eax*4 + 0x4cddda], dl
mov byte [eax*4 + 0x4ce1d9], dl
mov byte [eax*4 + 0x4ce5d8], dl
inc eax
mov byte [ecx*4 + 0x4cc9db], dl
mov byte [ecx*4 + 0x4ccdda], dl
mov byte [ecx*4 + 0x4cd1d9], dl
mov byte [ecx*4 + 0x4cd5d8], dl
cmp eax, 0x100
jl 0x40e380
mov ecx, dword [ebp - 4]
pop esi
xor ecx, ebp
pop ebx
call fcn.00486a8b
mov esp, ebp
pop ebp
ret