Function at 0x40e300
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x304
mov eax, dword [0x4c9144]
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 + 0x4d2628], 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 + 0x4d2748], cl
mov byte [eax*4 + 0x4d1629], cl
mov byte [eax*4 + 0x4d1628], cl
mov byte [eax*4 + 0x4d1a2b], cl
mov byte [eax*4 + 0x4d1a28], cl
mov byte [eax*4 + 0x4d1e2b], cl
mov byte [eax*4 + 0x4d1e2a], cl
mov byte [eax*4 + 0x4d222a], cl
mov byte [eax*4 + 0x4d2229], 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 + 0x4d162b], dl
mov byte [eax*4 + 0x4d1a2a], dl
mov byte [eax*4 + 0x4d1e29], dl
mov byte [eax*4 + 0x4d2228], 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 + 0x4d162a], cl
mov byte [eax*4 + 0x4d1a29], cl
mov byte [eax*4 + 0x4d1e28], cl
mov byte [eax*4 + 0x4d222b], 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 + 0x4d2648], 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 + 0x4d062a], dl
mov byte [eax*4 + 0x4d0a29], dl
mov byte [eax*4 + 0x4d0e28], dl
mov byte [eax*4 + 0x4d122b], dl
mov byte [ecx*4 + 0x4cf62a], dl
mov byte [ecx*4 + 0x4cfa29], dl
mov byte [ecx*4 + 0x4cfe28], dl
mov byte [ecx*4 + 0x4d022b], 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 + 0x4d0628], dl
mov byte [eax*4 + 0x4d0a2b], dl
mov byte [eax*4 + 0x4d0e2a], dl
mov byte [eax*4 + 0x4d1229], dl
mov byte [ecx*4 + 0x4cf628], dl
mov byte [ecx*4 + 0x4cfa2b], dl
mov byte [ecx*4 + 0x4cfe2a], dl
mov byte [ecx*4 + 0x4d0229], 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 + 0x4d0629], dl
mov byte [eax*4 + 0x4d0a28], dl
mov byte [eax*4 + 0x4d0e2b], dl
mov byte [eax*4 + 0x4d122a], dl
mov byte [ecx*4 + 0x4cf629], dl
mov byte [ecx*4 + 0x4cfa28], dl
mov byte [ecx*4 + 0x4cfe2b], dl
mov byte [ecx*4 + 0x4d022a], 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 + 0x4d062b], dl
mov byte [eax*4 + 0x4d0a2a], dl
mov byte [eax*4 + 0x4d0e29], dl
mov byte [eax*4 + 0x4d1228], dl
inc eax
mov byte [ecx*4 + 0x4cf62b], dl
mov byte [ecx*4 + 0x4cfa2a], dl
mov byte [ecx*4 + 0x4cfe29], dl
mov byte [ecx*4 + 0x4d0228], dl
cmp eax, 0x100
jl 0x40e380
mov ecx, dword [ebp - 4]
pop esi
xor ecx, ebp
pop ebx
call fcn.00487efe
mov esp, ebp
pop ebp
ret