Function at 0x40e874
Capabilities:
Encode data using xor
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3b8
push esi
push edi
push 0x12
pop eax
mov byte [ebp - 0x29], al
xor edi, edi
mov dword [ebp - 0xf8], edx
xor eax, eax
mov dword [ebp - 0xfc], ecx
mov dword [ebp - 0x38], 0x27f9c308
mov dword [ebp - 0x34], 0x79550df1
mov dword [ebp - 0x30], 0xf7b28d4d
mov word [ebp - 0x2c], 0xf8f2
mov byte [ebp - 0x2a], 0xf7
mov dword [ebp - 0x28], 0x87d322f1
mov dword [ebp - 0x24], 0x9226317a
mov dword [ebp - 0x44], 0x7373656d
mov dword [ebp - 0x40], 0x656761
mov byte [ebp + eax - 0x3b8], al
inc eax
cmp eax, 0x100
jb 0x40e8d0
push 7
pop ecx
xor esi, esi
push ebx
xor edx, edx
mov bl, byte [ebp + esi - 0x3b8]
mov eax, esi
div ecx
movzx ecx, bl
push 7
movzx eax, byte [ebp + edx - 0x44]
add eax, edi
add ecx, eax
movzx edi, cl
pop ecx
mov al, byte [ebp + edi - 0x3b8]
mov byte [ebp + esi - 0x3b8], al
inc esi
mov byte [ebp + edi - 0x3b8], bl
cmp esi, 0x100
jb 0x40e8e5
xor ebx, ebx
xor edi, edi
xor esi, esi
lea eax, [edi + 1]
movzx edi, al
mov cl, byte [ebp + edi - 0x3b8]
movzx edx, cl
lea eax, [edx + ebx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x3b8]
mov byte [ebp + edi - 0x3b8], al
mov byte [ebp + ebx - 0x3b8], cl
movzx eax, byte [ebp + edi - 0x3b8]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x3b8]
xor al, byte [ebp + esi - 0x38]
mov byte [ebp + esi - 0x218], al
inc esi
cmp esi, 0x18
jb 0x40e928
mov esi, str.identifier_removed
mov byte [ebp - 0x200], 0
lea edi, [ebp - 0x34]
mov dword [ebp - 0xf0], 0x5d974a8d
push 0x15
pop eax
movsd dword es:[edi], dword [esi]
mov byte [ebp - 0xb3], al
mov eax, dword [0x4355a0]
or eax, 0xbe1fde64
mov dword [ebp - 0xec], 0x85e41eaf
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0xe8], 0xd280f017
mov dword [ebp - 0xe4], 0x821be24a
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0xe0], 0xd21c1675
mov dword [ebp - 0xdc], 0x8a4b9cb0
mov dword [ebp - 0xd8], 0x655f0598
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0xd4], 0x37d9104e
mov dword [ebp - 0xd0], 0x16c4e9c6
mov dword [ebp - 0xcc], 0x1e3ad4f9
movsw word es:[edi], word [esi]
mov dword [ebp - 0xc8], 0x8ba68c1a
mov dword [ebp - 0xc4], 0x339ac9b5
mov dword [ebp - 0xc0], 0xa1df6190
movsb byte es:[edi], byte [esi]
xor edi, edi
mov dword [ebp - 0xbc], 0x905175ac
mov dword [ebp - 0xb8], 0x9e477e5a
xor eax, eax
mov byte [ebp - 0xb4], 0x38
mov dword [ebp - 0xb2], 0x6ec299ff
mov dword [ebp - 0xae], 0xea964990
mov dword [ebp - 0xaa], 0x5f7c251c
mov dword [ebp - 0xa6], 0x6d40748f
mov dword [ebp - 0xa2], 0x5c9ed631
mov dword [ebp - 0x9e], 0x1ddb3843
mov dword [ebp - 0x9a], 0x9c8d423b
mov dword [ebp - 0x96], 0x3bde924
mov dword [ebp - 0x92], 0xd86ab8ec
mov dword [ebp - 0x8e], 0x90ecfae7
mov dword [ebp - 0x8a], 0xe8a873e7
mov dword [ebp - 0x86], 0x84c9cc01
mov dword [ebp - 0x82], 0x28fc8a0a
mov dword [ebp - 0x7e], 0x9d107462
mov dword [ebp - 0x7a], 0xecc23872
mov dword [ebp - 0x76], 0x1474c249
mov dword [ebp - 0x72], 0x42d4b96f
mov dword [ebp - 0x6e], 0x7fc45e05
mov dword [ebp - 0x6a], 0x21e764ee
mov dword [ebp - 0x66], 0xcca98f81
mov dword [ebp - 0x62], 0xb6d5de08
mov dword [ebp - 0x5e], 0x56e5bff9
mov dword [ebp - 0x5a], 0xea60619d
mov dword [ebp - 0x56], 0x23c8fb06
mov dword [ebp - 0x52], 0xc650facb
mov dword [ebp - 0x4e], 0xf00393d2
mov dword [ebp - 0x4a], 0x13f1c253
mov word [ebp - 0x46], 0x68b7
mov byte [ebp + eax - 0x1fc], al
inc eax
cmp eax, 0x100
jb 0x40eb2f
xor esi, esi
xor edx, edx
mov bl, byte [ebp + esi - 0x1fc]
push 0x12
mov eax, esi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x34]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x1fc]
mov byte [ebp + esi - 0x1fc], al
inc esi
mov byte [ebp + edi - 0x1fc], bl
cmp esi, 0x100
jb 0x40eb40
xor ebx, ebx
xor edi, edi
xor esi, esi
lea eax, [edi + 1]
movzx edi, al
mov cl, byte [ebp + edi - 0x1fc]
movzx edx, cl
lea eax, [edx + ebx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x1fc]
mov byte [ebp + edi - 0x1fc], al
mov byte [ebp + ebx - 0x1fc], cl
movzx eax, byte [ebp + edi - 0x1fc]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x1fc]
xor al, byte [ebp + esi - 0xf0]
mov byte [ebp + esi - 0x368], al
inc esi
cmp esi, 0xac
jb 0x40eb83
mov esi, str.SrchIndexerPlugin
mov byte [ebp - 0x2bc], 0
lea edi, [ebp - 0x34]
mov dword [ebp - 0x18], 0x7d76c577
mov dword [ebp - 0x14], 0x63270218
mov dword [ebp - 0x10], 0x962c9d4c
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0xc], 0xd156dedf
mov dword [ebp - 8], 0x29aacaaf
mov dword [ebp - 4], 0x6fe11892
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
xor edi, edi
xor eax, eax
mov byte [ebp + eax - 0x1fc], al
inc eax
cmp eax, 0x100
jb 0x40ec1c
xor esi, esi
xor edx, edx
mov bl, byte [ebp + esi - 0x1fc]
push 0x11
mov eax, esi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x34]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x1fc]
mov byte [ebp + esi - 0x1fc], al
inc esi
mov byte [ebp + edi - 0x1fc], bl
cmp esi, 0x100
jb 0x40ec2d
and dword [ebp - 0x1c], 0
xor edi, edi
mov ebx, dword [ebp - 0x3c]
xor esi, esi
lea eax, [edi + 1]
xor ebx, 0x532cfffe
movzx edi, al
mov eax, dword [ebp - 0x1c]
mov cl, byte [ebp + edi - 0x1fc]
movzx edx, cl
add eax, edx
movzx eax, al
mov dword [ebp - 0x1c], eax
mov al, byte [ebp + eax - 0x1fc]
mov byte [ebp + edi - 0x1fc], al
mov eax, dword [ebp - 0x1c]
mov byte [ebp + eax - 0x1fc], cl
movzx eax, byte [ebp + edi - 0x1fc]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x1fc]
xor al, byte [ebp + esi - 0x18]
mov byte [ebp + esi - 0x234], al
inc esi
cmp esi, 0x18
jb 0x40ec75
push 7
pop eax
mov dword [0x4355a0], ebx
mov byte [ebp - 0x21c], 0
mov dword [ebp - 0x18], 0x3cebd257
mov dword [ebp - 0x14], 0x4e4a30c4
mov dword [ebp - 0x10], 0xf1b0d03e
mov dword [ebp - 0xc], 0x1cdeeef2
mov dword [ebp - 8], 0x9cdd3597
mov byte [ebp - 4], 0x55
mov byte [ebp - 3], al
mov word [ebp - 2], 0x9226
call fcn.0040cdec
push 0x12
pop eax
mov ecx, eax
lea edi, [ebp - 0x2b8]
mov al, byte [0x435514]
mov esi, 0x42f758
rep movsd dword es:[edi], dword [esi]
xor edx, edx
movsw word es:[edi], word [esi]
cmp al, byte [ebp - 0x2b8]
jne 0x40ed59
test al, al
je 0x40ed59
cmp byte [ebp + edx - 0x2b8], 0
je 0x40ed59
mov al, byte [edx + 0x435515]
inc edx
cmp al, byte [ebp + edx - 0x2b8]
je 0x40ed3b
movzx eax, byte [ebp + edx - 0x2b8]
movzx ecx, byte [edx + 0x435514]
sub ecx, eax
cmp ecx, 0x5d4
jae 0x40ed80
xor ebx, 0xc486bda4
mov dword [0x4355a0], ebx
jmp 0x40ed96
push ecx
sub ebx, 0x4979c5b0
push ecx
mov dword [0x4355a0], ebx
call fcn.0040da87
add esp, 8
xor edi, edi
mov dword [ebp - 0x44], 0x7373656d
mov dword [ebp - 0x40], 0x656761
xor eax, eax
mov byte [ebp + eax - 0x1fc], al
inc eax
cmp eax, 0x100
jb 0x40eda8
xor esi, esi
xor edx, edx
mov bl, byte [ebp + esi - 0x1fc]
push 7
mov eax, esi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x44]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x1fc]
mov byte [ebp + esi - 0x1fc], al
inc esi
mov byte [ebp + edi - 0x1fc], bl
cmp esi, 0x100
jb 0x40edb9
xor ebx, ebx
xor edi, edi
xor esi, esi
lea eax, [edi + 1]
movzx edi, al
mov cl, byte [ebp + edi - 0x1fc]
movzx edx, cl
lea eax, [edx + ebx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x1fc]
mov byte [ebp + edi - 0x1fc], al
mov byte [ebp + ebx - 0x1fc], cl
movzx eax, byte [ebp + edi - 0x1fc]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x1fc]
xor al, byte [ebp + esi - 0x18]
mov byte [ebp + esi - 0x250], al
inc esi
cmp esi, 0x18
jb 0x40edfc
and dword [ebp - 0x3c], 0
lea ecx, [ebp - 0x218]
mov byte [ebp - 0x238], 0
call fcn.0040b5df
lea ecx, [ebp - 0x368]
mov ebx, eax
call fcn.0040b5df
lea ecx, [ebp - 0x234]
mov edi, eax
call fcn.0040b5df
mov esi, eax
lea edx, [ebp - 0x250]
push esi
push edi
push ebx
push dword [ebp + 0x10]
push 2
pop ecx
call fcn.0040a2e6
call eax
mov ecx, ebx
call fcn.0040b8e6
push eax
push 0
push ebx
call fcn.0040b587
mov ecx, edi
call fcn.0040b8e6
push eax
push 0
push edi
call fcn.0040b587
mov ecx, esi
call fcn.0040b8e6
push eax
push 0
push esi
call fcn.0040b587
add esp, 0x34
mov ecx, ebx
call fcn.0040a2d2
mov ecx, edi
call fcn.0040a2d2
mov ecx, esi
call fcn.0040a2d2
call fcn.0040d626
cmp byte [0x435514], 0
mov esi, dword [0x4355a0]
je 0x40ef0c
mov edi, 0x435514
call fcn.0040cf7f
add esi, 0x1bec54f5
inc edi
mov dword [0x4355a0], esi
cmp byte [edi], 0
jne 0x40eef5
mov edx, dword [ebp + 8]
mov ecx, dword [ebp + 0x10]
mov dword [ebp - 0x1c], esi
call fcn.0040ba5f
mov edx, esi
mov ecx, 0x42d610
call fcn.0040d278
cmp byte [str.destination_address_required], 0
je 0x40ef49
mov eax, str.destination_address_required
and esi, 0x3146dfa9
inc eax
mov dword [0x4355a0], esi
cmp byte [eax], 0
jne 0x40ef34
mov dword [ebp - 0x1c], esi
push 5
pop ecx
mov esi, 0x42ec04
mov dword [ebp - 0x18], 0xcc70dc9a
lea edi, [ebp - 0x38]
mov dword [ebp - 0x14], 0xb59db058
rep movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x10], 0x197808a2
mov dword [ebp - 0xc], 0xf60b5a62
mov dword [ebp - 8], 0x4647ea3f
movsw word es:[edi], word [esi]
xor edi, edi
mov dword [ebp - 4], 0x4eb7fd1e
xor eax, eax
mov byte [ebp + eax - 0x1fc], al
inc eax
cmp eax, 0x100
jb 0x40ef86
xor esi, esi
xor edx, edx
mov bl, byte [ebp + esi - 0x1fc]
push 0x15
mov eax, esi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x38]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x1fc]
mov byte [ebp + esi - 0x1fc], al
inc esi
mov byte [ebp + edi - 0x1fc], bl
cmp esi, 0x100
jb 0x40ef97
mov ebx, dword [ebp - 0x1c]
lea edi, [ebp - 0x30]
mov esi, 0x42d7fc
xor edx, edx
and dword [ebp - 0x40], edx
and dword [ebp - 0xf4], edx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
mov edi, dword [ebp - 0x40]
lea eax, [edi + 1]
movzx edi, al
mov al, byte [ebp + edi - 0x1fc]
mov byte [ebp - 0x1d], al
movzx eax, al
mov dword [ebp - 0x40], eax
add eax, edx
cmp byte [ebp - 0x30], 0x6f
movzx eax, al
mov dword [ebp - 0x1c], eax
jne 0x40f039
mov al, 0x6f
xor esi, esi
test al, al
je 0x40f036
cmp byte [ebp + esi - 0x30], 0
je 0x40f036
call fcn.0040d84d
mov al, byte [esi + 0x42fb21]
inc esi
cmp al, byte [ebp + esi - 0x30]
je 0x40f019
mov eax, dword [ebp - 0x1c]
mov al, byte [ebp + eax - 0x1fc]
xor esi, esi
mov byte [ebp + edi - 0x1fc], al
push ecx
push ecx
call fcn.0040dae0
and ebx, 0xa5a3be03
inc esi
pop ecx
pop ecx
mov ecx, ebx
mov dword [0x4355a0], ebx
cmp byte [esi + 0x42fb20], 0
jne 0x40f049
mov edx, dword [ebp - 0x1c]
cmp esi, 0x280
mov al, byte [ebp - 0x1d]
mov ebx, 0xdf8a976c
mov byte [ebp + edx - 0x1fc], al
mov eax, 0x71f2ba22
cmovne ebx, eax
movzx eax, byte [ebp + edi - 0x1fc]
add eax, dword [ebp - 0x40]
or ebx, ecx
mov ecx, dword [ebp - 0xf4]
and ebx, 0x2b901dfc
movzx eax, al
mov dword [0x4355a0], ebx
mov al, byte [ebp + eax - 0x1fc]
xor al, byte [ebp + ecx - 0x18]
mov byte [ebp + ecx - 0x26c], al
inc ecx
mov dword [ebp - 0xf4], ecx
cmp ecx, 0x18
jb 0x40eff1
mov esi, dword [ebp + 0xc]
lea eax, [ebp - 0x3c]
mov ecx, dword [ebp - 0xfc]
lea edx, [ebp - 0x26c]
push esi
push eax
push dword [ebp + 0x10]
mov byte [ebp - 0x254], 0
push dword [ebp - 0xf8]
call fcn.00412443
add esp, 0x10
mov edi, eax
pop ebx
test edi, edi
jne 0x40f119
mov edx, dword [ebp - 0x3c]
cmp edx, 0x28
jbe 0x40f119
test esi, esi
je 0x40f119
mov ecx, esi
call fcn.00408b63
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
mov eax, edi
pop edi
pop esi
leave
ret