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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x104
push ebx
push esi
xor esi, esi
push edi
mov ecx, 0x1103
mov edi, 0x7af6
mov ebx, 0x52a7
mov dword [ebp - 0x5c], 0x7d9a
mov dword [ebp - 0x48], 0x6eb4
mov dword [ebp - 0x54], 0x6e00
mov dword [ebp - 0x58], esi
mov dword [ebp - 0x38], 0x6586
mov dword [ebp - 0x50], 0x77a6
mov dword [ebp - 0x40], 0x4b06
mov dword [ebp - 8], 0x157c
mov dword [ebp - 0x2c], 0x20
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x34], 0xbd
mov dword [ebp - 0x3c], 0x6db5
mov dword [ebp - 0x44], 0x3527
mov dword [ebp - 0x4c], 0x335c
mov eax, 0xac769185
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401b47
cmp dword [ebp + 8], esi
je 0x40223b
mov edx, dword [ebp + 0xc]
test edx, edx
je 0x40223b
mov eax, dword [ebp + 0x10]
lea ecx, [eax + 0x130]
mov eax, dword [eax + 0x54]
xor eax, dword [ecx]
cmp edx, eax
jl 0x40223b
call fcn.004031c0
mov ecx, dword [ebp + 0x10]
mov dword [ecx + 0xc], eax
mov eax, dword [ecx + 0x130]
xor dword [ecx + 0x90], eax
lea ecx, [ecx]
mov eax, 0x84210843
imul edi
add edx, edi
sar edx, 7
mov edi, edx
shr edi, 0x1f
add edi, edx
jne 0x401ba0
mov eax, 0x92492493
imul ebx
add edx, ebx
sar edx, 5
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x401bb5
lea ebx, [ebx]
inc esi
mov eax, esi
and eax, 0x80000003
jns 0x401bdf
dec eax
or eax, 0xfffffffc
inc eax
jne 0x401be5
add esi, esi
jmp 0x401bee
mov eax, esi
cdq
sub eax, edx
sar eax, 1
add esi, eax
cmp esi, 0x44e4
jl 0x401bd0
jmp 0x401c00
mov eax, 0x473c1ab7
imul dword [ebp - 0x5c]
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x5c], eax
jne 0x401c00
jmp 0x401c20
mov eax, 0x3159721f
imul dword [ebp - 0x48]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x48], eax
jne 0x401c20
mov ecx, 0x4972
lea esp, [esp]
mov eax, 0xb30f6353
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401c40
mov ecx, dword [ebp + 0x10]
xor edx, edx
mov edi, dword [ecx + 0x90]
lea eax, [ecx + 0x130]
mov dword [ecx + 0xf4], eax
mov eax, dword [ebp + 0xc]
div edi
mov edx, 0x27
mov esi, eax
mov dword [ecx + 0x50], esi
mov ecx, 0xe73
mov eax, 0x2b
cmp eax, 0x27
cmovl eax, edx
dec ecx
jne 0x401c85
xor ebx, ebx
inc ebx
mov eax, 0x38e38e39
imul ebx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
mov ecx, ebx
lea eax, [eax + eax*8]
sub ecx, eax
jne 0x401cad
add ebx, 2
cmp ebx, 0x743c
jl 0x401c90
mov eax, dword [ebp + 0x10]
imul edi, esi
xor esi, esi
mov dword [eax + 0x128], edi
test edi, edi
mov edi, eax
je 0x401d17
mov ebx, dword [ebp + 8]
lea esp, [esp]
mov eax, dword [edi + 0xf4]
inc esi
mov al, byte [eax]
xor byte [esi + ebx - 1], al
movzx ecx, byte [esi + ebx - 1]
mov eax, dword [edi + 0xf4]
mov dl, byte [eax + 1]
xor dl, cl
mov byte [esi + ebx - 1], dl
mov eax, dword [edi + 0xf4]
mov cl, byte [eax + 2]
xor cl, dl
mov byte [esi + ebx - 1], cl
mov eax, dword [edi + 0xf4]
mov al, byte [eax + 3]
xor al, cl
mov byte [esi + ebx - 1], al
cmp esi, dword [edi + 0x128]
jb 0x401cd0
mov eax, dword [edi + 0x90]
xor esi, esi
dec eax
je 0x401df4
mov ecx, dword [ebp - 0x54]
test ecx, ecx
je 0x401d48
lea ecx, [ecx]
mov eax, 0x82082083
imul ecx
add edx, ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401d30
mov dword [ebp - 0x54], ecx
mov eax, dword [edi + 0x90]
dec eax
push eax
push 1
push edi
call fcn.00403030
add esp, 0xc
mov bl, al
xor ecx, ecx
nop
cmp bl, byte [edi + ecx + 0x14c]
je 0x401d70
inc ecx
cmp ecx, esi
jbe 0x401d60
jmp 0x401d72
xor bl, bl
mov eax, dword [ebp - 0x58]
inc eax
cmp eax, 0x2328
jl 0x401d75
mov ecx, dword [ebp - 0x38]
mov dword [ebp - 0x58], eax
test ecx, ecx
je 0x401d9f
mov eax, 0x8dda5203
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401d87
mov dword [ebp - 0x38], ecx
mov ecx, dword [ebp - 0x50]
test ecx, ecx
je 0x401dbc
mov eax, 0x2fa0be83
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401da6
mov dword [ebp - 0x50], ecx
mov ecx, dword [ebp - 0x40]
test ecx, ecx
je 0x401dd9
mov eax, 0x4bda12f7
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401dc3
mov dword [ebp - 0x40], ecx
test bl, bl
je 0x401de5
mov byte [edi + esi + 0x14c], bl
inc esi
mov eax, dword [edi + 0x90]
dec eax
cmp esi, eax
jb 0x401d26
mov edi, 0x7c04
lea esp, [esp]
mov eax, 0x44d72045
imul edi
sar edx, 5
mov edi, edx
shr edi, 0x1f
add edi, edx
jne 0x401e00
push 0x52
lea eax, [ebp - 0xaf]
push edi
push eax
mov byte [ebp - 0xb0], 0
call fcn.00402eb0
lea eax, [ebp - 0xb0]
push eax
call fcn.004028b0
mov edi, dword [ebp + 0x10]
xorps xmm0, xmm0
add esp, 0x10
mov dword [ebp - 0x28], 0x8005b53e
mov dword [ebp - 0x24], 0xeb4630fa
mov dword [ebp - 0x20], 0xf1419e35
mov dword [ebp - 0x1c], 0xdde9c37c
mov dword [ebp - 0x18], 0x6c480756
movq qword [ebp - 0x14], xmm0
mov byte [ebp - 1], 0
lea ebx, [ebx]
mov eax, 0x634c0635
imul dword [ebp - 8]
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 8], eax
jne 0x401e70
mov ecx, 0x20d8
lea esp, [esp]
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401e90
movq xmm0, qword [ebp - 0x28]
mov eax, dword [ebp - 0x10]
lea ebx, [edi + 0x260]
movq qword [ebx], xmm0
movq xmm0, qword [ebp - 0x20]
movq qword [ebx + 8], xmm0
movq xmm0, qword [ebp - 0x18]
movq qword [ebx + 0x10], xmm0
mov dword [ebx + 0x18], eax
mov al, byte [ebp - 1]
mov byte [ebx + 0x1c], al
mov eax, 0x5078
lea esp, [esp]
dec eax
jne 0x401ee0
mov eax, 0x1b66
mov edx, 0x6a
mov ecx, 0x4b
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x401ef2
lea ebx, [ebx]
xor byte [ebp + eax - 0xb0], 4
inc eax
cmp eax, 0x51
jb 0x401f00
xor ecx, ecx
inc ecx
mov eax, ecx
and eax, 0x80000003
jns 0x401f1f
dec eax
or eax, 0xfffffffc
inc eax
jne 0x401f24
add ecx, 5
cmp ecx, 0x4cf8
jl 0x401f10
mov eax, 0x752
mov edx, 0x50
mov ecx, 0xe5
jmp 0x401f40
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x401f40
mov eax, 0x5d23
mov edx, 0x3f
mov ecx, 0x69
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x401f57
mov edi, 0x6fc9
mov eax, 0x2f149903
imul edi
sar edx, 4
mov edi, edx
shr edi, 0x1f
add edi, edx
jne 0x401f64
mov edi, dword [ebp + 0x10]
xor eax, eax
mov dword [ebp - 8], eax
cmp dword [edi + 0x90], eax
jbe 0x402116
lea edx, [eax + 0x7b]
lea esi, [eax + 0x63]
movzx ebx, byte [edi + eax + 0x14c]
imul ebx, dword [edi + 0x50]
add ebx, dword [ebp + 8]
mov ecx, dword [ebp - 0x2c]
mov eax, 0x2de
cmp ecx, 0x7b
cmovg ecx, edx
dec eax
jne 0x401fa8
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x2c], ecx
inc eax
cmp eax, 0xeb4
jl 0x401fb7
mov ecx, dword [ebp - 0x34]
mov dword [ebp - 0x30], eax
mov eax, 0x7b90
lea ebx, [ebx]
cmp ecx, 0x63
cmovl ecx, esi
dec eax
jne 0x401fd0
mov dword [ebp - 0x34], ecx
mov ecx, dword [ebp - 0x3c]
test ecx, ecx
je 0x401ffb
mov eax, 0xd20d20d3
imul ecx
add edx, ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401fe3
mov dword [ebp - 0x3c], ecx
mov ecx, dword [ebp - 0x44]
mov dword [edi + 0x288], ebx
test ecx, ecx
je 0x402026
jmp 0x402010
mov eax, 0x1b4e81b5
imul ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402010
mov dword [ebp - 0x44], ecx
push 0x52
lea eax, [ebp - 0x103]
push 0
push eax
mov byte [ebp - 0x104], 0
call fcn.00402eb0
push 0x52
lea eax, [ebp - 0x104]
push ebx
push eax
call fcn.00402e80
mov ecx, 0x14
lea esi, [ebp - 0xb0]
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
add esp, 0x18
movsb byte es:[edi], byte [esi]
mov eax, 0x818
dec eax
jne 0x402064
mov edi, dword [ebp + 0x10]
mov eax, dword [edi + 0x288]
call eax
mov ecx, dword [ebp - 0x4c]
test ecx, ecx
je 0x402098
lea esp, [esp]
mov eax, 0x8fb823ef
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402080
mov dword [ebp - 0x4c], ecx
push 0x52
lea eax, [ebp - 0x104]
push eax
push ebx
call fcn.00402e80
xor esi, esi
add esp, 0xc
cmp dword [edi + 0x50], esi
jbe 0x4020f5
mov eax, dword [edi + 0xf4]
inc esi
mov al, byte [eax + 3]
xor byte [esi + ebx - 1], al
movzx ecx, byte [esi + ebx - 1]
mov eax, dword [edi + 0xf4]
mov dl, byte [eax + 2]
xor dl, cl
mov byte [esi + ebx - 1], dl
mov eax, dword [edi + 0xf4]
mov cl, byte [eax + 1]
xor cl, dl
mov byte [esi + ebx - 1], cl
mov eax, dword [edi + 0xf4]
mov al, byte [eax]
xor al, cl
mov byte [esi + ebx - 1], al
cmp esi, dword [edi + 0x50]
jb 0x4020b1
mov eax, dword [ebp - 8]
inc eax
mov edx, 0x7b
mov dword [ebp - 8], eax
lea esi, [edx - 0x18]
cmp eax, dword [edi + 0x90]
jb 0x401f91
lea ebx, [edi + 0x260]
xor ecx, ecx
inc ecx
mov eax, ecx
and eax, 0x80000007
jns 0x402127
dec eax
or eax, 0xfffffff8
inc eax
jne 0x40212c
add ecx, 2
cmp ecx, 0x3fc2
jl 0x402118
call fcn.004031c0
mov esi, eax
mov dword [edi + 0x25c], esi
xor edi, edi
inc edi
mov eax, 0x55555556
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
mov ecx, edi
lea eax, [eax + eax*2]
sub ecx, eax
jne 0x40215c
inc edi
cmp edi, 0x937
jl 0x402143
mov edi, dword [ebp + 0x10]
mov eax, 0x5b7c
mov edx, 0x5a
mov ecx, 0x50
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x402176
lea eax, [esi - 2]
push eax
push dword [edi + 0xc]
call fcn.004010b0
add esp, 8
mov esi, 0x35b1
mov ecx, 0x157c
jmp 0x4021a0
mov eax, 0x151d07eb
imul esi
sar edx, 4
mov esi, edx
shr esi, 0x1f
add esi, edx
jne 0x4021a0
xor eax, eax
xor dword [ebx + eax*4], 0xd1d0a58
inc eax
cmp eax, 5
jb 0x4021b5
mov eax, 0x8fb823ef
imul ecx
add edx, ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4021c2
mov eax, 0x260d
mov edx, 0x83
mov ecx, 0xe0
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x4021e6
mov ebx, 0xebc
mov eax, 0x51eb851f
imul ebx
sar edx, 4
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x4021f3
mov eax, dword [ebp + 0xc]
cdq
and edx, 0xff
lea ebx, [edi + 0x260]
lea esi, [edx + eax]
sar esi, 8
test esi, esi
je 0x40223b
mov edi, dword [ebp + 8]
push ebx
push 0x100
push edi
call fcn.00402f10
add esp, 0xc
add edi, 0x100
dec esi
jne 0x402223
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret