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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x188
push esi
push edi
mov dword [ebp - 0x40], 0x42
lea edi, [ebp - 0x3c]
mov dword [ebp - 0x3c], 0x52
xorps xmm1, xmm1
mov dword [ebp - 0x38], 0x27
mov esi, 0x401b38
mov dword [ebp - 0x34], 0xc79
movups xmm0, xmmword [ebp - 0x40]
push 0x16
movsd dword es:[edi], dword [esi]
psubd xmm1, xmm0
mov dword [ebp - 0x2c], ecx
movaps xmm0, xmm1
mov dword [ebp - 0x24], 0xec3ef701
psrldq xmm0, 8
movsd dword es:[edi], dword [esi]
paddd xmm1, xmm0
movups xmm0, xmm1
mov dword [ebp - 0x20], 0x54d96277
psrldq xmm0, 4
paddd xmm1, xmm0
mov dword [ebp - 0x1c], 0x41706e13
movsd dword es:[edi], dword [esi]
movd eax, xmm1
mov dword [ebp - 0x18], 0x7ded8013
mov dword [ebp - 0x14], 0x5a3b1fa0
movsw word es:[edi], word [esi]
add eax, 0xe38
mov dword [ebp - 0x28], eax
pop eax
mov dword [ebp - 0x50], eax
movsb byte es:[edi], byte [esi]
mov byte [ebp - 0xe], al
xor edi, edi
mov word [ebp - 0x10], 0x50fa
xor eax, eax
mov byte [ebp - 0xd], 0x27
mov byte [ebp + eax - 0x150], al
inc eax
cmp eax, 0x100
jb 0x40d9d9
xor esi, esi
xor edx, edx
mov dword [ebp - 8], 0xe
mov eax, esi
mov cl, byte [ebp + esi - 0x150]
div dword [ebp - 8]
mov byte [ebp - 1], cl
movzx ecx, cl
movzx eax, byte [ebp + edx - 0x3c]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x150]
mov byte [ebp + esi - 0x150], al
inc esi
mov al, byte [ebp - 1]
mov byte [ebp + edi - 0x150], al
cmp esi, 0x100
jb 0x40d9ea
and dword [ebp - 0xc], 0
xor edi, edi
xor esi, esi
lea eax, [edi + 1]
movzx edi, al
mov eax, dword [ebp - 0xc]
mov cl, byte [ebp + edi - 0x150]
movzx edx, cl
add eax, edx
movzx eax, al
mov dword [ebp - 0xc], eax
mov al, byte [ebp + eax - 0x150]
mov byte [ebp + edi - 0x150], al
mov eax, dword [ebp - 0xc]
mov byte [ebp + eax - 0x150], cl
movzx eax, byte [ebp + edi - 0x150]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x150]
xor al, byte [ebp + esi - 0x24]
mov byte [ebp + esi - 0x16c], al
inc esi
cmp esi, 0x18
jb 0x40da3a
mov edx, dword [0x44a324]
lea edi, [ebp - 0x3c]
mov esi, 0x401b48
mov byte [ebp - 0x154], 0
push 0x66
add edx, 0x37b96c79
mov dword [ebp - 0xc], 0x349d1fd4
mov ecx, 0x1b3e
mov eax, 0x401f9c
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
pop esi
add ecx, esi
inc eax
cmp ecx, 0x2447
ja 0x40dad8
movsx esi, byte [eax]
test esi, esi
jne 0x40dac4
jmp 0x40dae7
push ecx
call fcn.0040cec2
add esp, 4
and edx, 0xd3496b1f
lea eax, [edx - 0x27f4f4f9]
xor edi, edi
imul edx, eax, 0x44ba1e25
xor eax, eax
mov byte [ebp + eax - 0x150], al
inc eax
cmp eax, 0x100
jb 0x40daf7
push 0x4e
mov esi, 0xc9
mov eax, 0x401e30
pop ecx
add esi, ecx
lea eax, [eax + 2]
cmp esi, 0x20aa
ja 0x40db29
movzx ecx, word [eax]
test ecx, ecx
jne 0x40db13
jmp 0x40db38
imul edx, edx, 0x1fd6bf69
push ecx
call fcn.0040cec2
add esp, 4
lea eax, [edx + 0x44020da4]
or eax, 0x4084890f
mov dword [0x44a324], eax
call fcn.0040cdc6
xor esi, esi
xor edx, edx
mov dword [ebp - 8], 0xb
mov eax, esi
mov cl, byte [ebp + esi - 0x150]
div dword [ebp - 8]
mov byte [ebp - 1], cl
movzx ecx, cl
movzx eax, byte [ebp + edx - 0x3c]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x150]
mov byte [ebp + esi - 0x150], al
inc esi
mov al, byte [ebp - 1]
mov byte [ebp + edi - 0x150], al
cmp esi, 0x100
jb 0x40db4f
and dword [ebp - 8], 0
xor edi, edi
xor esi, esi
lea eax, [edi + 1]
movzx edi, al
mov eax, dword [ebp - 8]
mov cl, byte [ebp + edi - 0x150]
movzx edx, cl
add eax, edx
movzx eax, al
mov dword [ebp - 8], eax
mov al, byte [ebp + eax - 0x150]
mov byte [ebp + edi - 0x150], al
mov eax, dword [ebp - 8]
mov byte [ebp + eax - 0x150], cl
movzx eax, byte [ebp + edi - 0x150]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x150]
xor al, byte [ebp + esi - 0xc]
mov byte [ebp + esi - 0x4c], al
inc esi
cmp esi, 4
jb 0x40db9f
mov eax, dword [ebp - 0x28]
lea ecx, [ebp - 0x4c]
add eax, eax
mov byte [ebp - 0x48], 0
mov dword [ebp - 0x28], eax
lea eax, [ebp - 0x28]
push eax
push dword [ebp - 0x2c]
call fcn.0041d4e5
mov edx, eax
lea ecx, [ebp - 0x16c]
call fcn.0041d4c4
call eax
test eax, eax
jne 0x40ddd0
push 5
pop ecx
mov esi, 0x401b54
mov eax, dword [0x44a324]
lea edi, [ebp - 0x44]
mov dword [ebp - 0x24], 0x54cce646
rep movsd dword es:[edi], dword [esi]
sub eax, 0x70fa2fb9
mov dword [ebp - 0x20], 0x7c6b1b13
mov dword [ebp - 8], eax
mov dword [ebp - 0x1c], 0xc402542e
movsw word es:[edi], word [esi]
mov dword [ebp - 0x18], 0x68762a8a
mov dword [ebp - 0x14], 0xb619f55b
mov dword [ebp - 0x10], 0x5a56f5f8
movsb byte es:[edi], byte [esi]
xor edi, edi
xor eax, eax
mov byte [ebp + eax - 0x150], al
inc eax
cmp eax, 0x100
jb 0x40dc71
xor esi, esi
xor edx, edx
mov cl, byte [ebp + esi - 0x150]
mov eax, esi
mov byte [ebp - 1], cl
div dword [ebp - 0x50]
movzx ecx, cl
movzx eax, byte [ebp + edx - 0x44]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x150]
mov byte [ebp + esi - 0x150], al
inc esi
mov al, byte [ebp - 1]
mov byte [ebp + edi - 0x150], al
cmp esi, 0x100
jb 0x40dc82
mov al, byte [0x44a290]
mov ecx, 0x44a290
jmp 0x40dcdc
sub al, 0x30
cmp al, 9
ja 0x40ddd4
inc ecx
mov al, byte [ecx]
test al, al
jne 0x40dccf
mov eax, dword [ebp - 8]
and dword [ebp - 8], 0
or eax, 0xf1bfc486
xor edi, edi
mov dword [0x44a324], eax
xor esi, esi
lea eax, [edi + 1]
movzx edi, al
mov eax, dword [ebp - 8]
mov cl, byte [ebp + edi - 0x150]
movzx edx, cl
add eax, edx
movzx eax, al
mov dword [ebp - 8], eax
mov al, byte [ebp + eax - 0x150]
mov byte [ebp + edi - 0x150], al
mov eax, dword [ebp - 8]
mov byte [ebp + eax - 0x150], cl
movzx eax, byte [ebp + edi - 0x150]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x150]
xor al, byte [ebp + esi - 0x24]
mov byte [ebp + esi - 0x188], al
inc esi
cmp esi, 0x18
jb 0x40dcf5
mov dword [ebp - 0x40], 0x1a
lea ecx, [ebp - 0x188]
mov dword [ebp - 0x3c], 0x47
xorps xmm1, xmm1
mov dword [ebp - 0x38], 0x2e
mov dword [ebp - 0x34], 0xffffff71
movups xmm0, xmmword [ebp - 0x40]
mov byte [ebp - 0x170], 0
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.0043430e
mov esi, eax
mov ecx, esi
call fcn.004348f7
add eax, eax
push eax
push esi
push dword [ebp - 0x2c]
call fcn.004341ae
mov ecx, esi
call fcn.004348f7
push eax
push edi
push esi
call fcn.0043423a
add esp, 0x18
mov ecx, esi
call fcn.0041d467
pop edi
pop esi
leave
ret
mov eax, dword [ebp - 8]
and eax, 0xddbd7391
jmp 0x40dce3