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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x228
push ebx
push esi
push edi
push 6
pop eax
mov dword [ebp - 0x94], ecx
mov dword [ebp - 0x5c], 0x72248d9f
mov dword [ebp - 0x58], 0xb8661c91
mov dword [ebp - 0x54], 0xf54848d
mov dword [ebp - 0x50], 0xa658da19
mov dword [ebp - 0x4c], 0x5921556a
mov dword [ebp - 0x48], 0xa9f223b7
mov dword [ebp - 0x44], 0xf865adef
mov dword [ebp - 0x40], 0x3886057f
mov dword [ebp - 0x3c], 0x7208c2b8
mov word [ebp - 0x38], 0x325a
mov byte [ebp - 0x36], al
mov dword [ebp - 0x35], 0x834da238
mov byte [ebp - 0x31], 0x4f
mov eax, dword [0x44d440]
xor eax, 0xadc63fa0
mov dword [ebp - 0x2c], eax
call fcn.0040cdc3
push 5
pop ecx
mov esi, 0x401500
lea edi, [ebp - 0x24]
rep movsd dword es:[edi], dword [esi]
xor ecx, ecx
mov eax, ecx
movsb byte es:[edi], byte [esi]
mov edi, ecx
mov byte [ebp + eax - 0x1a4], al
inc eax
cmp eax, 0x100
jb 0x40f57a
push 0x14
mov esi, ecx
pop ecx
xor edx, edx
mov bl, byte [ebp + esi - 0x1a4]
mov eax, esi
div ecx
movzx ecx, bl
push 0x14
movzx eax, byte [ebp + edx - 0x24]
add eax, edi
add ecx, eax
movzx edi, cl
pop ecx
mov al, byte [ebp + edi - 0x1a4]
mov byte [ebp + esi - 0x1a4], al
inc esi
mov byte [ebp + edi - 0x1a4], bl
cmp esi, 0x100
jb 0x40f58e
xor esi, esi
mov edx, 0x18f3
push 0x48
mov ebx, esi
mov edi, esi
mov eax, 0x401930
pop ecx
add edx, ecx
lea eax, [eax + 2]
cmp edx, 0x24cf
ja 0x40f5f4
movzx ecx, word [eax]
test ecx, ecx
jne 0x40f5de
jmp 0x40f5f9
call fcn.0040cc17
lea eax, [edi + 1]
movzx edi, al
mov cl, byte [ebp + edi - 0x1a4]
movzx edx, cl
lea eax, [edx + ebx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x1a4]
mov byte [ebp + edi - 0x1a4], al
mov byte [ebp + ebx - 0x1a4], cl
movzx eax, byte [ebp + edi - 0x1a4]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x1a4]
xor al, byte [ebp + esi - 0x5c]
mov byte [ebp + esi - 0x228], al
inc esi
cmp esi, 0x2c
jb 0x40f5f9
mov esi, 0x4016e4
mov dword [ebp - 8], 0xe979f57b
lea edi, [ebp - 0x90]
mov byte [ebp - 4], 0xd1
xor ecx, ecx
mov byte [ebp - 0x1fc], cl
mov eax, ecx
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 - 0x1a4], al
inc eax
cmp eax, 0x100
jb 0x40f66e
mov ebx, dword [ebp - 0x2c]
mov esi, ecx
push 0x48
mov ecx, 0x401930
pop edx
lea eax, [edx - 0x30]
push 9
pop edx
cmp ax, dx
ja 0x40f6a4
add ecx, 2
movzx eax, word [ecx]
mov edx, eax
test ax, ax
jne 0x40f68a
jmp 0x40f6aa
imul ebx, ebx, 0x6f7e8ed
call fcn.0040cc68
mov dl, byte [ebp + esi - 0x1a4]
mov eax, esi
and eax, 7
movzx ecx, dl
and ebx, 0x7110f20a
movzx eax, byte [ebp + eax - 0x90]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x1a4]
mov byte [ebp + esi - 0x1a4], al
inc esi
mov byte [ebp + edi - 0x1a4], dl
cmp esi, 0x100
jb 0x40f682
imul esi, ebx, 0xa09f2733
xor eax, eax
mov edx, eax
mov dword [ebp - 0x28], eax
mov dword [ebp - 0xc], edx
mov edi, eax
jmp 0x40f707
xor eax, eax
mov ecx, 0x401930
inc eax
lea ecx, [ecx + 2]
cmp eax, 0x6b1
je 0x40f732
xor edx, edx
cmp word [ecx], dx
mov edx, dword [ebp - 0xc]
jne 0x40f70c
cmp eax, 0xdb9
jle 0x40f73a
mov ebx, esi
and ebx, 0x8ac6c42a
jmp 0x40f73a
mov ebx, esi
xor ebx, 0x95bc1cfa
lea eax, [edx + 1]
or ebx, 0x4b6e352c
movzx eax, al
mov esi, ebx
mov dword [ebp - 0xc], eax
or ebx, 0x4126ffde
mov dword [ebp - 0x2c], ebx
mov ebx, dword [ebp - 0xc]
mov cl, byte [ebp + eax - 0x1a4]
mov eax, dword [ebp - 0x28]
movzx edx, cl
add eax, edx
movzx eax, al
mov dword [ebp - 0x28], eax
mov al, byte [ebp + eax - 0x1a4]
mov byte [ebp + ebx - 0x1a4], al
mov eax, dword [ebp - 0x28]
mov byte [ebp + eax - 0x1a4], cl
mov eax, ebx
mov ebx, dword [ebp - 0x2c]
movzx eax, byte [ebp + eax - 0x1a4]
add eax, edx
mov edx, dword [ebp - 0xc]
movzx eax, al
mov al, byte [ebp + eax - 0x1a4]
xor al, byte [ebp + edi - 8]
mov byte [ebp + edi - 0x9c], al
inc edi
cmp edi, 5
jb 0x40f705
mov esi, 0x4016f0
mov dword [ebp - 0x24], 0x2f7e3502
lea edi, [ebp - 0x80]
mov dword [ebp - 0x20], 0xf5437027
xor ecx, ecx
mov dword [ebp - 0x1c], 0x88b221b0
mov byte [ebp - 0x97], cl
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x18], 0x7bac4a7e
mov dword [ebp - 0x14], 0x3e34f4a5
mov dword [ebp - 0x10], 0x31aa5907
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov edi, ecx
mov eax, ecx
mov byte [ebp + eax - 0x1a4], al
inc eax
cmp eax, 0x100
jb 0x40f7f6
push 0xb
mov esi, ecx
pop ecx
xor edx, edx
mov bl, byte [ebp + esi - 0x1a4]
mov eax, esi
div ecx
movzx ecx, bl
push 0xb
movzx eax, byte [ebp + edx - 0x80]
add eax, edi
add ecx, eax
movzx edi, cl
pop ecx
mov al, byte [ebp + edi - 0x1a4]
mov byte [ebp + esi - 0x1a4], al
inc esi
mov byte [ebp + edi - 0x1a4], bl
cmp esi, 0x100
jb 0x40f80a
xor eax, eax
mov ebx, eax
mov edi, eax
mov esi, eax
lea eax, [edi + 1]
movzx edi, al
push 0x18
mov cl, byte [ebp + edi - 0x1a4]
movzx edx, cl
lea eax, [edx + ebx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x1a4]
mov byte [ebp + edi - 0x1a4], al
mov byte [ebp + ebx - 0x1a4], cl
movzx eax, byte [ebp + edi - 0x1a4]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x1a4]
xor al, byte [ebp + esi - 0x24]
mov byte [ebp + esi - 0x1c0], al
inc esi
pop eax
cmp esi, eax
jb 0x40f84f
mov esi, 0x4016fc
mov dword [ebp - 8], 0x5cb14e6
lea edi, [ebp - 0x90]
mov byte [ebp - 4], 0x67
xor ecx, ecx
mov byte [ebp - 0x1a8], cl
mov eax, ecx
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
mov edi, ecx
mov byte [ebp + eax - 0x1a4], al
inc eax
cmp eax, 0x100
jb 0x40f8c7
mov esi, ecx
xor edx, edx
mov bl, byte [ebp + esi - 0x1a4]
push 6
mov eax, esi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x90]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x1a4]
mov byte [ebp + esi - 0x1a4], al
inc esi
mov byte [ebp + edi - 0x1a4], bl
cmp esi, 0x100
jb 0x40f8d8
xor eax, eax
mov ebx, eax
mov edi, eax
mov esi, eax
lea eax, [edi + 1]
movzx edi, al
mov cl, byte [ebp + edi - 0x1a4]
movzx edx, cl
lea eax, [ebx + edx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x1a4]
mov byte [ebp + edi - 0x1a4], al
mov byte [ebp + ebx - 0x1a4], cl
movzx eax, byte [ebp + edi - 0x1a4]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x1a4]
xor al, byte [ebp + esi - 8]
mov byte [ebp + esi - 0xa4], al
inc esi
cmp esi, 5
jb 0x40f920
push 0x6f
mov ecx, 0x4018f0
pop edx
lea eax, [edx - 0x30]
push 9
pop edx
cmp ax, dx
ja 0x40f992
add ecx, 2
movzx eax, word [ecx]
mov edx, eax
test ax, ax
jne 0x40f978
jmp 0x40f999
or dword [ebp - 0x2c], 0xeab39bea
call fcn.0040cc17
mov esi, 0x401704
mov dword [ebp - 0x24], 0x8bcd4cd6
lea edi, [ebp - 0x84]
mov dword [ebp - 0x20], 0x2dbf5714
xor ecx, ecx
mov dword [ebp - 0x1c], 0x67553072
mov byte [ebp - 0x9f], cl
mov eax, ecx
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x18], 0x937c90e6
mov dword [ebp - 0x14], 0x2f9d3eab
mov dword [ebp - 0x10], 0x41a4e419
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
mov edi, ecx
mov byte [ebp + eax - 0x1a4], al
inc eax
cmp eax, 0x100
jb 0x40f9e5
mov esi, ecx
xor edx, edx
mov bl, byte [ebp + esi - 0x1a4]
push 0xe
mov eax, esi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x84]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x1a4]
mov byte [ebp + esi - 0x1a4], al
inc esi
mov byte [ebp + edi - 0x1a4], bl
cmp esi, 0x100
jb 0x40f9f6
mov esi, dword [ebp - 0x2c]
xor eax, eax
mov edx, eax
mov ecx, eax
mov ebx, eax
imul eax, esi, 0x3c0e9864
mov dword [ebp - 0x28], eax
mov edi, dword [ebp - 0x28]
lea eax, [ecx + 1]
movzx eax, al
mov ecx, 0x401930
mov dword [ebp - 0x2c], eax
push 0x48
mov al, byte [ebp + eax - 0x1a4]
mov byte [ebp - 0x2d], al
movzx eax, al
mov dword [ebp - 8], eax
add eax, edx
movzx eax, al
mov dword [ebp - 0xc], eax
pop edx
lea eax, [edx - 0x30]
push 9
pop edx
cmp ax, dx
ja 0x40fa90
add ecx, 2
movzx eax, word [ecx]
mov edx, eax
test ax, ax
jne 0x40fa76
jmp 0x40fa98
mov edi, esi
and edi, 0x8972ee2d
and edi, 0x30f8215
mov dword [0x44d440], edi
call fcn.0040cc17
mov edx, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x2c]
push 0x18
mov al, byte [ebp + edx - 0x1a4]
mov byte [ebp + ecx - 0x1a4], al
mov al, byte [ebp - 0x2d]
mov byte [ebp + edx - 0x1a4], al
movzx eax, byte [ebp + ecx - 0x1a4]
add eax, dword [ebp - 8]
movzx eax, al
mov al, byte [ebp + eax - 0x1a4]
xor al, byte [ebp + ebx - 0x24]
mov byte [ebp + ebx - 0x1dc], al
inc ebx
pop eax
cmp ebx, eax
jb 0x40fa4a
xor ecx, ecx
mov dword [ebp - 0x24], 0xf067565f
add edi, 0x602bb15a
mov byte [ebp - 0x1c4], cl
mov dword [ebp - 0xc], edi
mov esi, 0x401714
lea edi, [ebp - 0x80]
mov dword [ebp - 0x20], 0x87bf0785
push 6
pop eax
movsd dword es:[edi], dword [esi]
mov byte [ebp - 0x1b], al
mov eax, ecx
mov byte [ebp - 0x1c], 0x61
mov dword [ebp - 0x1a], 0x317c8946
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x16], 0x16974e11
mov dword [ebp - 0x12], 0x66c446b8
mov word [ebp - 0xe], 0x1fb2
movsd dword es:[edi], dword [esi]
mov edi, ecx
mov byte [ebp + eax - 0x1a4], al
inc eax
cmp eax, 0x100
jb 0x40fb46
mov esi, ecx
xor edx, edx
mov bl, byte [ebp + esi - 0x1a4]
push 0xb
mov eax, esi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x80]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x1a4]
mov byte [ebp + esi - 0x1a4], al
inc esi
mov byte [ebp + edi - 0x1a4], bl
cmp esi, 0x100
jb 0x40fb57
xor eax, eax
mov ebx, eax
mov edi, eax
mov esi, eax
lea eax, [edi + 1]
movzx edi, al
push 0x18
mov cl, byte [ebp + edi - 0x1a4]
movzx edx, cl
lea eax, [ebx + edx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x1a4]
mov byte [ebp + edi - 0x1a4], al
mov byte [ebp + ebx - 0x1a4], cl
movzx eax, byte [ebp + edi - 0x1a4]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x1a4]
xor al, byte [ebp + esi - 0x24]
mov byte [ebp + esi - 0x1f8], al
inc esi
pop eax
cmp esi, eax
jb 0x40fb9c
push 6
pop eax
mov ecx, eax
mov dword [ebp - 8], 0x97a13dc3
mov esi, 0x401720
mov byte [ebp - 4], 0x66
lea edi, [ebp - 0x4c]
xor edx, edx
rep movsd dword es:[edi], dword [esi]
mov byte [ebp - 0x1e0], dl
mov eax, edx
movsb byte es:[edi], byte [esi]
mov edi, edx
mov byte [ebp + eax - 0x1a4], al
inc eax
cmp eax, 0x100
jb 0x40fc15
mov esi, edx
xor edx, edx
mov bl, byte [ebp + esi - 0x1a4]
push 0x18
mov eax, esi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x4c]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x1a4]
mov byte [ebp + esi - 0x1a4], al
inc esi
mov byte [ebp + edi - 0x1a4], bl
cmp esi, 0x100
jb 0x40fc26
xor eax, eax
mov dword [ebp - 0x28], eax
mov edi, eax
mov ebx, eax
lea eax, [edi + 1]
mov edx, 0x1b95
push 0x6f
movzx edi, al
mov eax, 0x4018f0
pop ecx
add edx, ecx
lea eax, [eax + 2]
cmp edx, 0x1138
ja 0x40fc95
movzx ecx, word [eax]
test ecx, ecx
jne 0x40fc7f
jmp 0x40fc9a
call fcn.0040cc68
mov eax, dword [ebp - 0xc]
lea esi, [eax + 0x4ef40c2]
or eax, 0x4ee28de0
mov dword [ebp - 0xc], eax
mov dword [0x44d440], eax
call fcn.0040cc17
mov cl, byte [ebp + edi - 0x1a4]
mov eax, dword [ebp - 0x28]
movzx edx, cl
add eax, edx
movzx eax, al
mov dword [ebp - 0x28], eax
mov al, byte [ebp + eax - 0x1a4]
mov byte [ebp + edi - 0x1a4], al
imul eax, esi, 0x67018e05
mov dword [0x44d4e8], eax
mov eax, dword [ebp - 0x28]
mov byte [ebp + eax - 0x1a4], cl
movzx eax, byte [ebp + edi - 0x1a4]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x1a4]
xor al, byte [ebp + ebx - 8]
mov byte [ebp + ebx - 0x90], al
inc ebx
cmp ebx, 5
jb 0x40fc6c
xor ebx, ebx
mov dword [ebp - 0x20], 0x5e
mov byte [ebp - 0x8b], bl
mov edi, ebx
mov dword [ebp - 0x1c], 0x31
mov eax, ebx
mov dword [ebp - 0x18], 0xc
mov dword [ebp - 0x14], 0x51
mov dword [ebp - 0x10], 0xffffff14
sub edi, dword [ebp + eax*4 - 0x20]
inc eax
cmp eax, 5
jl 0x40fd45
lea ecx, [ebp - 0x9c]
call fcn.0041e657
mov edx, eax
lea ecx, [ebp - 0x228]
call fcn.0041e636
call eax
test eax, eax
jne 0x40ff5f
push 0x6f
mov dword [ebp - 0x74], 0xbf5dbfc7
mov ecx, 0x4018f0
mov dword [ebp - 0x70], 0x27957a85
mov dword [ebp - 0x6c], 0x24cb71ec
mov dword [ebp - 0x68], 0x3754b002
mov dword [ebp - 0x64], 0x32131d41
mov dword [ebp - 0x60], 0x74315dc2
pop edx
lea eax, [edx - 0x30]
push 9
pop edx
cmp ax, dx
ja 0x40fdc2
add ecx, 2
movzx eax, word [ecx]
mov edx, eax
test ax, ax
jne 0x40fda3
mov eax, dword [0x44d4e8]
jmp 0x40fdcc
mov eax, dword [0x44d4e8]
sub eax, 0xe685669
mov dword [ebp - 0xc], eax
mov esi, 0x40173c
lea edi, [ebp - 0x80]
mov eax, ebx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
mov edi, ebx
mov byte [ebp + eax - 0x1a4], al
inc eax
cmp eax, 0x100
jb 0x40fde0
mov esi, ebx
xor edx, edx
mov bl, byte [ebp + esi - 0x1a4]
push 0xa
mov eax, esi
pop ecx
div ecx
movzx ecx, bl
movzx eax, byte [ebp + edx - 0x80]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x1a4]
mov byte [ebp + esi - 0x1a4], al
inc esi
mov byte [ebp + edi - 0x1a4], bl
cmp esi, 0x100
jb 0x40fdf1
xor eax, eax
xor dword [ebp - 0xc], 0x83d5f43f
mov edi, eax
mov esi, eax
mov ebx, eax
lea eax, [edi + 1]
movzx edi, al
push 0x18
mov cl, byte [ebp + edi - 0x1a4]
movzx edx, cl
lea eax, [ebx + edx]
movzx ebx, al
mov al, byte [ebp + ebx - 0x1a4]
mov byte [ebp + edi - 0x1a4], al
mov byte [ebp + ebx - 0x1a4], cl
movzx eax, byte [ebp + edi - 0x1a4]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x1a4]
xor al, byte [ebp + esi - 0x74]
mov byte [ebp + esi - 0x4c], al
inc esi
pop eax
cmp esi, eax
jb 0x40fe3d
mov ebx, dword [ebp - 0xc]
xor edx, edx
mov byte [ebp - 0x34], dl
mov eax, edx
mov dword [ebp - 0x84], 0x22
mov ecx, 0x4018f0
mov dword [ebp - 0x80], 0x53
mov dword [ebp - 0x7c], 0x10
mov dword [ebp - 0x78], 0xffffff7b
inc eax
lea ecx, [ecx + 2]
cmp eax, 0xa1a
jg 0x40feca
cmp word [ecx], dx
jne 0x40feba
cmp eax, 0xfec
jle 0x40fed6
call fcn.0040cc68
xor ebx, 0x6a238a0e
mov dword [0x44d4e8], ebx
imul eax, ebx, 0x25a8e226
mov dword [0x44d440], eax
call fcn.0040cc17
movups xmm0, xmmword [ebp - 0x84]
lea ecx, [ebp - 0x4c]
xorps xmm1, xmm1
psubd xmm1, xmm0
movaps xmm0, xmm1
psrldq xmm0, 8
paddd xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd edi, xmm1
call fcn.004361ab
mov esi, eax
mov ecx, esi
call fcn.004369fb
add eax, eax
push eax
push esi
push dword [ebp - 0x94]
call fcn.00436044
imul eax, dword [0x44d4e8], 0x7ed9908a
mov ecx, esi
mov dword [0x44d440], eax
call fcn.004369fb
push eax
push edi
push esi
call fcn.004360de
add esp, 0x18
jmp 0x40ffc4
lea ecx, [ebp - 0x1c]
push ecx
push eax
lea ecx, [ebp - 0xa4]
call fcn.0041e657
mov edx, eax
lea ecx, [ebp - 0x1c0]
call fcn.0041e636
call eax
lea ecx, [ebp - 0x1dc]
call fcn.004361ab
push dword [ebp - 0x10]
mov esi, eax
lea ecx, [ebp - 0x90]
push dword [ebp - 0x14]
push esi
push dword [ebp - 0x94]
call fcn.0041e657
mov edx, eax
lea ecx, [ebp - 0x1f8]
call fcn.0041e636
call eax
mov ecx, esi
call fcn.004369fb
push eax
push edi
push esi
call fcn.004360de
add esp, 0x1c
mov ecx, esi
call fcn.0041e600
pop edi
pop esi
pop ebx
leave
ret