Function at 0x40e7ef
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xc
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
mov eax, dword [0x454f38]
and eax, 0x11081008
lea eax, [eax + eax - 0x32bb6097]
mov dword [0x4534d4], eax
add word [0x44864e], 0xffc0
mov eax, dword [0x457be0]
dec eax
mov dword [0x457be0], eax
and eax, 0xe8fe53dc
add dword [0x44d1c8], eax
cmp ecx, esi
je 0x40e865
imul ax, word [0x44570c], 0xbfff
mov word [0x44570c], ax
cmp edi, ecx
je 0x40e8cb
push edi
push ecx
mov ebx, ecx
call fcn.00413655
add esp, 8
test eax, eax
mov edi, esi
jne 0x40eb45
jmp 0x40e8cf
mov esi, ecx
or dword [0x454ff0], 0x7be1622b
mov eax, dword [0x450c78]
or eax, 0x2f08beed
mov ecx, dword [0x44e5b8]
lea edx, [ecx - 1]
mov dword [0x44e5b8], edx
cmp eax, ecx
jg 0x40e8a5
mov eax, dword [0x44fea0]
shl eax, 9
add eax, 0x3fb892e2
or eax, 0xc5572914
mov dword [0x455564], eax
add dword [0x451fa0], 0xffafafd5
add word [0x448e60], 0x474d
imul ax, word [0x44570c], 0xbfff
mov word [0x44570c], ax
mov ebx, esi
jmp 0x40e8cf
mov edi, esi
mov ebx, ecx
mov eax, dword [0x455654]
shl eax, 8
movsx ecx, word [0x447d1e]
lea edx, [ecx + 1]
mov word [0x447d1e], dx
and eax, ecx
imul eax, dword [0x4521c0]
mov dword [0x4521c0], eax
mov eax, dword [edi + 4]
mov esi, eax
test esi, esi
jle 0x40e90c
lea eax, [esi - 1]
mov ecx, dword [edi + 8]
cmp dword [ecx + esi*4 - 4], 0
je 0x40e8f9
mov eax, 0x877a2b42
add eax, dword [0x4514f8]
or dword [0x4596c0], eax
push esi
push ebx
call fcn.0040888b
add esp, 8
test eax, eax
jne 0x40eb45
and word [0x44a492], 0x5a9
mov ecx, dword [edi + 8]
mov eax, 0x8a71c98f
or eax, dword [0x4597f4]
xor eax, 0x758e3670
mov dword [0x45069c], eax
mov ebx, dword [ebx + 8]
or dword [0x452714], 0x8aa00100
mov edx, dword [0x453e18]
movzx edi, word [0x447ed0]
lea edx, [edi + edx*4]
mov word [0x447ed0], dx
test esi, esi
jle 0x40eb39
dec esi
xor edi, edi
mov edx, 0xffffffff
xor ebp, ebp
mov dword [esp], ecx
mov dword [esp + 8], edx
movzx edx, word [0x446c4c]
dec edx
mov word [0x446c4c], dx
movsx edx, dx
mov dword [0x450d50], edx
add dword [ebx + edi], ebp
mov edx, dword [0x4507c8]
lea ecx, [edx + 1]
mov dword [0x4507c8], ecx
movzx ecx, word [0x444448]
lea ecx, [edx + ecx + 0x125b]
mov word [0x444448], cx
mov eax, dword [ebx + edi]
mov dword [esp + 4], eax
mov edx, dword [0x44fe58]
or edx, 0x8496
xor edx, 0x4221
movzx eax, word [0x446e60]
or eax, edx
mov word [0x446e60], ax
mov ecx, dword [esp]
mov eax, dword [ecx + edi]
add dword [ebx + edi], eax
mov eax, dword [0x455cf4]
movzx edx, word [0x445a7a]
lea eax, [eax + edx + 0x4b83]
mov edx, dword [esp + 8]
mov word [0x445a7a], ax
mov eax, dword [ebx + edi]
cmp eax, dword [ecx + edi]
sbb eax, eax
and eax, 1
cmp dword [esp + 4], ebp
mov ebp, eax
adc ebp, 0
mov eax, dword [0x452890]
mov ecx, 0x660efca
add eax, ecx
xor eax, dword [0x44daf8]
xor eax, 0x827ff79f
mov dword [0x44daf8], eax
add edi, 4
inc edx
cmp edx, esi
jl 0x40e989
mov esi, ebx
test ebp, ebp
mov ebx, edx
je 0x40eb39
add esi, edi
inc ebx
mov eax, dword [0x4539c4]
xor dword [0x4584e8], eax
mov ecx, dword [esp + 0x20]
cmp ebx, dword [ecx + 4]
jl 0x40eaca
imul eax, dword [0x453904], 0xd04684ba
xor dword [0x451fe8], eax
lea eax, [ebx + 1]
push eax
push ecx
mov esi, ecx
call fcn.0040888b
add esp, 8
test eax, eax
jne 0x40eb45
mov eax, dword [0x453b10]
mov ecx, 0x20021a08
and eax, ecx
xor eax, 0xf7ff1fdf
mov dword [0x44d390], eax
mov esi, dword [esi + 8]
add esi, edi
imul eax, dword [0x4542a8], 0x59d34ea5
mov dword [0x4542a8], eax
imul eax, dword [0x44e298], 0x20202820
mov dword [0x44e298], eax
mov ecx, dword [esi]
add ecx, ebp
mov dword [esi], ecx
mov eax, dword [0x45507c]
cmp eax, 0xc676522a
jl 0x40eaf7
xor dword [0x455ad4], 0x43111b
mov ecx, dword [esi]
cmp ecx, ebp
sbb edx, edx
imul eax, dword [0x44ee60], 0x9bbbe6f
mov dword [0x44ee60], eax
mov eax, dword [0x451370]
shl eax, 0xa
add eax, 0x21d31b0a
cmp eax, 0xc82fff
jg 0x40eb28
or dword [0x44bde0], 0x7bf77deb
and edx, 1
inc ebx
add edi, 4
cmp ecx, ebp
mov ebp, edx
jb 0x40ea65
or dword [0x452ee0], 0x5307a728
xor eax, eax
add esp, 0xc
pop esi
pop edi
pop ebx
pop ebp
ret