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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x17c
push ebx
push esi
push edi
mov dword [ebp - 0x40], ecx
lea edi, [ebp - 0x60]
push 7
pop ecx
mov esi, 0x42ce6c
mov dword [ebp - 0x38], 0x92566c47
rep movsd dword es:[edi], dword [esi]
xor ecx, ecx
mov dword [ebp - 0x34], 0xcdf5b3ff
mov dword [ebp - 0x30], 0x355f664a
mov eax, ecx
mov dword [ebp - 0x2c], 0x2c1c5fd1
movsw word es:[edi], word [esi]
mov dword [ebp - 0x28], 0xa49b8cef
mov edi, ecx
mov dword [ebp - 0x24], 0x11c9f47c
mov byte [ebp + eax - 0x160], al
inc eax
cmp eax, 0x100
jb 0x404bd5
mov esi, ecx
xor edx, edx
mov bl, byte [ebp + esi - 0x160]
push 0x1d
mov eax, esi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x60]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x160]
mov byte [ebp + esi - 0x160], al
inc esi
mov byte [ebp + edi - 0x160], bl
cmp esi, 0x100
jb 0x404be6
mov ebx, dword [str.PjSH_]
push str.SrchIndexerSchema
push ecx
mov ecx, ebx
call fcn.00404591
pop ecx
pop ecx
push 7
pop ecx
mov esi, 0x42ce90
lea edi, [ebp - 0x60]
rep movsd dword es:[edi], dword [esi]
push 0x53
pop ecx
xor edx, edx
movsw word es:[edi], word [esi]
xor esi, esi
cmp cx, word [ebp - 0x60]
jne 0x404c74
mov eax, esi
test cx, cx
je 0x404c74
cmp word [ebp + eax - 0x60], si
je 0x404c74
inc edx
lea eax, [edx + edx]
movzx ecx, word [eax + str.SrchIndexerSchema]
cmp cx, word [ebp + eax - 0x60]
je 0x404c56
movzx eax, byte [ebp + edx*2 - 0x60]
movzx ecx, byte [edx*2 + str.SrchIndexerSchema]
sub ecx, eax
cmp ecx, 0x16c4
jne 0x404c96
imul ebx, ebx, 0x612398eb
mov dword [ebp - 0x1c], ebx
jmp 0x404cae
or ebx, 0x28810ea7
push 0x42d2a0
push ecx
mov ecx, ebx
mov dword [ebp - 0x1c], ebx
call fcn.00404591
pop ecx
pop ecx
mov ebx, esi
mov edi, esi
lea eax, [edi + 1]
movzx edi, al
mov cl, byte [ebp + edi - 0x160]
movzx edx, cl
lea eax, [edx + ebx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x160]
mov byte [ebp + edi - 0x160], al
mov byte [ebp + ebx - 0x160], cl
movzx eax, byte [ebp + edi - 0x160]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x160]
xor al, byte [ebp + esi - 0x38]
mov byte [ebp + esi - 0x17c], al
inc esi
cmp esi, 0x18
jb 0x404cb2
push 5
pop ecx
mov esi, 0x42ceb0
mov dword [ebp - 0x18], 0xf6dbf0ae
lea edi, [ebp - 0x34]
mov dword [ebp - 0x14], 0xfbbe0841
rep movsd dword es:[edi], dword [esi]
xor edx, edx
mov dword [ebp - 0x10], 0x6dbbefb2
mov byte [ebp - 0x164], dl
mov eax, edx
mov dword [ebp - 0xc], 0x47fd66a
movsb byte es:[edi], byte [esi]
mov dword [ebp - 8], 0x2c9ec8af
mov edi, edx
mov dword [ebp - 4], 0x64dc7aba
mov byte [ebp + eax - 0x160], al
inc eax
cmp eax, 0x100
jb 0x404d46
mov esi, edx
xor edx, edx
mov bl, byte [ebp + esi - 0x160]
push 0x14
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 - 0x160]
mov byte [ebp + esi - 0x160], al
inc esi
mov byte [ebp + edi - 0x160], bl
cmp esi, 0x100
jb 0x404d57
call fcn.004045e1
mov ebx, dword [ebp - 0x1c]
xor eax, eax
mov esi, eax
add ebx, 0x61960915
inc esi
cmp byte [esi + 0x42d3a4], al
jne 0x404da0
mov edi, dword [ebp - 0x40]
mov dword [str.PjSH_], ebx
cmp edi, esi
jae 0x404e02
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x3c], ebx
mov edx, ebx
mov ecx, ebx
call fcn.004047d2
mov ebx, dword [ebp - 0x3c]
cmp edi, 0x1c94
jne 0x404de2
call fcn.004045e1
imul ebx, dword [ebp - 0x1c], 0x324d4d1d
or ebx, 0xd3accbc5
mov dword [ebp - 0x1c], ebx
mov dword [str.PjSH_], ebx
call fcn.004045e1
inc edi
mov eax, ebx
mov dword [ebp - 0x3c], eax
cmp edi, esi
jb 0x404dc2
xor eax, eax
mov ebx, eax
mov edi, eax
mov esi, eax
lea eax, [edi + 1]
movzx edi, al
mov cl, byte [ebp + edi - 0x160]
movzx edx, cl
lea eax, [edx + ebx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x160]
mov byte [ebp + edi - 0x160], al
mov byte [ebp + ebx - 0x160], cl
movzx eax, byte [ebp + edi - 0x160]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x160]
xor al, byte [ebp + esi - 0x18]
mov byte [ebp + esi - 0x5c], al
inc esi
cmp esi, 0x18
jb 0x404e08
mov esi, str.SrchSamplePI
mov dword [ebp - 0x18], 0x5a26c340
lea edi, [ebp - 0x2c]
mov dword [ebp - 0x14], 0x7cbdd4f9
xor ecx, ecx
mov dword [ebp - 0x10], 0x2fa76ceb
mov byte [ebp - 0x44], cl
mov eax, ecx
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0xc], 0xbf245a54
mov dword [ebp - 8], 0xbdde3673
mov dword [ebp - 4], 0x894f6cd0
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
mov edi, ecx
mov byte [ebp + eax - 0x160], al
inc eax
cmp eax, 0x100
jb 0x404e94
mov esi, ecx
xor edx, edx
mov bl, byte [ebp + esi - 0x160]
push 0xc
mov eax, esi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x2c]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x160]
mov byte [ebp + esi - 0x160], al
inc esi
mov byte [ebp + edi - 0x160], bl
cmp esi, 0x100
jb 0x404ea5
xor eax, eax
mov ebx, eax
mov edi, eax
mov esi, eax
lea eax, [edi + 1]
movzx edi, al
mov cl, byte [ebp + edi - 0x160]
movzx edx, cl
lea eax, [edx + ebx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x160]
mov byte [ebp + edi - 0x160], al
mov byte [ebp + ebx - 0x160], cl
movzx eax, byte [ebp + edi - 0x160]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x160]
xor al, byte [ebp + esi - 0x18]
mov byte [ebp + esi - 0x38], al
inc esi
cmp esi, 0x18
jb 0x404eea
mov eax, dword fs:[0x30]
lea ecx, [ebp - 0x3c]
push ecx
xor ebx, ebx
lea edx, [ebp - 0x17c]
push ebx
mov byte [ebp - 0x20], bl
xor ecx, ecx
push ebx
push dword [eax + 0xa8]
inc ecx
push dword [eax + 0xa4]
call fcn.0040a2e6
call eax
lea ecx, [ebp - 0x5c]
call fcn.0040b628
push dword [ebp - 0x3c]
mov esi, eax
lea edx, [ebp - 0x38]
push esi
push dword [ebp - 0x40]
push 2
pop ecx
call fcn.0040a2e6
call eax
mov ecx, esi
call fcn.0040b8f4
push eax
push ebx
push esi
call fcn.0040b587
add esp, 0x18
mov ecx, esi
call fcn.0040a2d2
pop edi
pop esi
pop ebx
leave
ret