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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xf8
xor edx, edx
push ebx
push esi
push edi
mov ecx, 0x7ee6
mov esi, 0xdd
mov edi, 0x613c
mov ebx, 0x6f6c
mov dword [ebp - 0x70], 0x1a46
mov dword [ebp - 0x6c], 0x1b18
mov dword [ebp - 0x54], 0x6500
mov dword [ebp - 0x44], edx
mov dword [ebp - 0x14], edx
mov dword [ebp - 0x10], 0x2e82
mov dword [ebp - 0x38], edx
mov dword [ebp - 0xc], 0xbc
mov dword [ebp - 0x48], 0x4672
mov dword [ebp - 0x74], 0x7d25
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x3c], edx
mov dword [ebp - 0x5c], edx
mov dword [ebp - 0x68], 0x4965
mov dword [ebp - 0x30], edx
mov dword [ebp - 0x64], edx
mov dword [ebp - 0x4c], 0x25a8
mov dword [ebp - 0x50], 0x25d1
mov dword [ebp - 0x40], edx
mov dword [ebp - 0x58], 0x5bdc
mov dword [ebp - 0x60], 0x45c7
cmp dword [ebp + 8], edx
je 0x4025e0
cmp dword [ebp + 0xc], edx
je 0x4025e0
mov eax, dword [ebp + 0x10]
lea edx, [eax + 0x278]
mov eax, dword [eax + 0x2d4]
xor eax, dword [edx]
cmp dword [ebp + 0xc], eax
jl 0x4025e0
call fcn.00403530
mov edx, dword [ebp + 0x10]
mov ecx, 0x3f
mov dword [edx + 0x2e0], eax
mov eax, 0x3b97
cmp esi, ecx
cmovl esi, ecx
dec eax
jne 0x401de5
mov eax, dword [edx + 0x278]
xor dword [edx + 0x280], eax
mov esi, dword [edx + 0x280]
lea ecx, [edx + 0x278]
mov dword [edx + 0x284], ecx
jmp 0x401e10
mov eax, 0x60f25deb
imul edi
sar edx, 6
mov edi, edx
shr edi, 0x1f
add edi, edx
jne 0x401e10
mov eax, dword [ebp + 0xc]
xor edx, edx
div esi
mov edi, dword [ebp + 0x10]
imul esi, eax
mov dword [edi + 0x288], eax
mov dword [ebp - 8], esi
mov dword [edi + 0x21c], esi
nop
mov eax, 0x6bca1af3
imul ebx
sar edx, 4
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x401e40
xor esi, esi
cmp dword [ebp - 8], esi
jbe 0x401ea7
mov ebx, dword [ebp + 8]
lea ecx, [ecx]
mov eax, dword [edi + 0x284]
inc esi
mov al, byte [eax]
xor byte [esi + ebx - 1], al
movzx ecx, byte [esi + ebx - 1]
mov eax, dword [edi + 0x284]
mov dl, byte [eax + 1]
xor dl, cl
mov byte [esi + ebx - 1], dl
mov eax, dword [edi + 0x284]
mov cl, byte [eax + 2]
xor cl, dl
mov byte [esi + ebx - 1], cl
mov eax, dword [edi + 0x284]
mov al, byte [eax + 3]
xor al, cl
mov byte [esi + ebx - 1], al
cmp esi, dword [edi + 0x21c]
jb 0x401e60
mov eax, dword [edi + 0x280]
mov dword [ebp - 8], 0
dec eax
je 0x4020f5
xor ebx, ebx
xor esi, esi
mov dword [ebp - 0x78], 0xa6
xor edi, edi
mov ecx, dword [ebp - 0x70]
test ecx, ecx
je 0x401ee8
nop
mov eax, 0xad602b59
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401ed0
mov dword [ebp - 0x70], ecx
mov ecx, dword [ebp + 0x10]
mov eax, dword [ecx + 0x280]
dec eax
push eax
push 1
push ecx
call fcn.004033b0
add esp, 0xc
mov byte [ebp - 1], al
xor ecx, ecx
mov edx, dword [ebp + 0x10]
cmp al, byte [edx + ecx + 0x80]
mov edx, dword [ebp - 8]
je 0x401f19
inc ecx
cmp ecx, edx
jbe 0x401f03
jmp 0x401f1d
mov byte [ebp - 1], 0
mov ecx, dword [ebp - 0x6c]
test ecx, ecx
je 0x401f3a
mov eax, 0x2c0b02c1
imul ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401f24
mov dword [ebp - 0x6c], ecx
mov eax, 0x529d
nop
dec eax
jne 0x401f40
mov ecx, dword [ebp - 0x54]
test ecx, ecx
je 0x401f66
lea ebx, [ebx]
mov eax, 0x78787879
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401f50
mov dword [ebp - 0x54], ecx
mov eax, dword [ebp - 0x44]
cmp eax, 0x17cb
jge 0x401f90
mov ecx, 0x17ca
sub ecx, eax
mov eax, 0xcccccccd
mul ecx
shr edx, 3
lea eax, [edx + edx*4]
mov edx, dword [ebp - 0x44]
lea edx, [edx + eax*2]
add edx, 0xa
mov dword [ebp - 0x44], edx
mov edx, dword [ebp - 0x14]
cmp edx, 0x5f9
jge 0x401fcf
jmp 0x401fa0
inc edx
mov dword [ebp - 0x14], edx
mov eax, 0x66666667
imul edx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [ebp - 0x14]
lea ecx, [eax + eax*4]
add ecx, ecx
mov eax, edx
sub eax, ecx
jne 0x401fc7
inc edx
mov dword [ebp - 0x14], edx
cmp edx, 0x5f9
jl 0x401fa0
cmp esi, 0x2c5a
jge 0x401ff8
inc esi
mov eax, 0x55555556
imul esi
mov eax, edx
shr eax, 0x1f
add eax, edx
mov ecx, esi
lea eax, [eax + eax*2]
sub ecx, eax
jne 0x401ff0
inc esi
cmp esi, 0x2c5a
jl 0x401fd7
mov ecx, dword [ebp - 0x10]
test ecx, ecx
je 0x402018
nop
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402000
mov dword [ebp - 0x10], ecx
cmp edi, 0x272a
jge 0x402043
inc edi
mov eax, 0x2aaaaaab
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax + eax*2]
add ecx, ecx
mov eax, edi
sub eax, ecx
jne 0x40203b
inc edi
cmp edi, 0x272a
jl 0x402020
cmp ebx, 0x48fc
jge 0x402080
jmp 0x402050
mov eax, 0x92492493
imul ebx
add edx, ebx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax*8]
sub ecx, eax
mov eax, ebx
sub eax, ecx
jne 0x402077
add ebx, 3
jmp 0x402078
inc ebx
cmp ebx, 0x48fc
jl 0x402050
mov edx, dword [ebp - 0x38]
cmp edx, 0x6f57
jge 0x4020ab
mov ecx, 0x6f56
sub ecx, edx
mov eax, 0xcccccccd
mul ecx
shr edx, 3
lea eax, [edx + edx*4]
mov edx, dword [ebp - 0x38]
lea edx, [edx + eax*2]
add edx, 0xa
mov dword [ebp - 0x38], edx
mov al, byte [ebp - 1]
mov edx, dword [ebp - 8]
test al, al
je 0x4020c0
mov ecx, dword [ebp + 0x10]
inc edx
mov byte [ecx + edx + 0x7f], al
mov dword [ebp - 8], edx
mov ecx, dword [ebp - 0xc]
mov eax, 0x6bdf
jmp 0x4020d0
cmp ecx, 0xa6
cmovl ecx, dword [ebp - 0x78]
dec eax
jne 0x4020d0
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0xc], ecx
mov eax, dword [eax + 0x280]
dec eax
cmp edx, eax
jb 0x401ec8
mov edi, dword [ebp + 0x10]
push 0x3e
lea eax, [ebp - 0xb7]
push 0
push eax
mov byte [ebp - 0xb8], 0
call fcn.00403240
lea eax, [ebp - 0xb8]
push eax
call fcn.00402c70
add esp, 0x10
mov dword [ebp - 0x2c], 0xd0d3961f
mov dword [ebp - 0x28], 0x326c8523
mov dword [ebp - 0x24], 0xb8c5a9c9
mov dword [ebp - 0x20], 0x1d009a53
mov dword [ebp - 0x1c], 0x57fbb483
xor esi, esi
mov eax, 0x129e
mov edx, 0x53
mov ecx, 0xee
nop
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x402150
movq xmm0, qword [ebp - 0x2c]
mov eax, dword [ebp - 0x1c]
lea ebx, [edi + 0x290]
mov dword [ebp - 0x10], ebx
movq qword [ebx], xmm0
movq xmm0, qword [ebp - 0x24]
movq qword [ebx + 8], xmm0
mov dword [ebx + 0x10], eax
mov word [ebx + 0x14], si
xor eax, eax
xor byte [ebp + eax - 0xb8], 0x2a
inc eax
cmp eax, 0x3d
jb 0x402180
mov ebx, 0x86a
mov eax, 0x2fa0be83
imul ebx
sar edx, 4
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x402193
mov ebx, dword [ebp - 0x10]
xor ecx, ecx
mov dword [ebp - 0xc], ecx
cmp dword [edi + 0x280], ecx
jbe 0x40244b
lea ebx, [ebx]
mov ebx, dword [ebp - 0x48]
test ebx, ebx
je 0x4021e6
jmp 0x4021d0
mov eax, 0x36406c81
imul ebx
sar edx, 5
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x4021d0
mov dword [ebp - 0x48], ebx
movzx ebx, byte [edi + ecx + 0x80]
imul ebx, dword [edi + 0x288]
mov ecx, dword [ebp - 0x74]
add ebx, dword [ebp + 8]
test ecx, ecx
je 0x402218
nop
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402200
mov dword [ebp - 0x74], ecx
mov esi, dword [ebp - 0x34]
mov dword [edi + 0x2d8], ebx
cmp esi, 0x3ce7
jge 0x402256
lea esp, [esp]
inc esi
mov eax, 0x66666667
imul esi
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
mov ecx, esi
lea eax, [eax + eax*4]
sub ecx, eax
jne 0x40224b
inc esi
cmp esi, 0x3ce7
jl 0x402230
mov dword [ebp - 0x34], esi
push 0x3e
lea eax, [ebp - 0xf7]
push 0
push eax
mov byte [ebp - 0xf8], 0
call fcn.00403240
mov esi, dword [ebp - 0x3c]
add esp, 0xc
cmp esi, 0x5eb6
jge 0x4022a6
jmp 0x402280
inc esi
mov eax, 0x38e38e39
imul esi
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
mov ecx, esi
lea eax, [eax + eax*8]
sub ecx, eax
jne 0x40229b
inc esi
cmp esi, 0x5eb6
jl 0x402280
mov dword [ebp - 0x3c], esi
push 0x3e
lea eax, [ebp - 0xf8]
push ebx
push eax
call fcn.00403210
mov eax, dword [ebp - 0x5c]
add esp, 0xc
jmp 0x4022c0
inc eax
cmp eax, 0x33f2
jl 0x4022c0
mov ecx, 0xf
lea esi, [ebp - 0xb8]
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [ebp - 0x68]
mov dword [ebp - 0x5c], eax
movsb byte es:[edi], byte [esi]
test ecx, ecx
je 0x4022fa
mov eax, 0x9cc8e161
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4022e2
mov dword [ebp - 0x68], ecx
mov edi, dword [ebp + 0x10]
mov eax, dword [edi + 0x2d8]
call eax
mov esi, dword [ebp - 0x30]
cmp esi, 0x792
jge 0x40233f
inc esi
mov eax, 0x92492493
imul esi
add edx, esi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax*8]
sub ecx, eax
mov eax, esi
sub eax, ecx
jne 0x402334
inc esi
cmp esi, 0x792
jl 0x402310
mov dword [ebp - 0x30], esi
mov eax, dword [ebp - 0x64]
inc eax
cmp eax, 0x1039
jl 0x402342
mov dword [ebp - 0x64], eax
push 0x3e
lea eax, [ebp - 0xf8]
push eax
push ebx
call fcn.00403210
mov ecx, dword [ebp - 0x4c]
add esp, 0xc
test ecx, ecx
je 0x40237c
mov eax, 0x78787879
imul ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402366
mov dword [ebp - 0x4c], ecx
mov ecx, dword [ebp - 0x50]
test ecx, ecx
je 0x402399
mov eax, 0x24168e19
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402383
mov dword [ebp - 0x50], ecx
mov ecx, dword [ebp - 0x40]
cmp ecx, 0x1b8e
jge 0x4023c3
inc ecx
mov eax, ecx
and eax, 0x80000007
jns 0x4023b3
dec eax
or eax, 0xfffffff8
inc eax
jne 0x4023b8
add ecx, 2
cmp ecx, 0x1b8e
jl 0x4023a4
mov dword [ebp - 0x40], ecx
xor esi, esi
cmp dword [edi + 0x288], esi
jbe 0x402417
lea ecx, [ecx]
mov eax, dword [edi + 0x284]
inc esi
mov al, byte [eax + 3]
xor byte [esi + ebx - 1], al
movzx ecx, byte [esi + ebx - 1]
mov eax, dword [edi + 0x284]
mov dl, byte [eax + 2]
xor dl, cl
mov byte [esi + ebx - 1], dl
mov eax, dword [edi + 0x284]
mov cl, byte [eax + 1]
xor cl, dl
mov byte [esi + ebx - 1], cl
mov eax, dword [edi + 0x284]
mov al, byte [eax]
xor al, cl
mov byte [esi + ebx - 1], al
cmp esi, dword [edi + 0x288]
jb 0x4023d0
mov ecx, dword [ebp - 0x58]
test ecx, ecx
je 0x402435
mov edi, edi
mov eax, 0x28c1979
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402420
mov dword [ebp - 0x58], ecx
mov ecx, dword [ebp - 0xc]
inc ecx
mov dword [ebp - 0xc], ecx
cmp ecx, dword [edi + 0x280]
jb 0x4021c0
mov ebx, dword [ebp - 0x10]
mov eax, 0x6181
mov ecx, 0xb9
mov edx, 0x3f
lea ebx, [ebx]
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x402460
call fcn.00403530
mov ecx, eax
mov dword [edi + 0x24], ecx
mov esi, 0x53b7
mov eax, 0xd20d20d3
imul esi
add edx, esi
sar edx, 7
mov esi, edx
shr esi, 0x1f
add esi, edx
jne 0x402477
mov eax, 0x24f6
mov esi, 0xc6
mov edx, 0x49
jmp 0x4024a0
cmp edx, esi
cmovl edx, esi
dec eax
jne 0x4024a0
add ecx, 0xfffffffe
push ecx
push dword [edi + 0x2e0]
call fcn.004010d0
push 0x8b650
push ebx
call fcn.00401b80
mov eax, dword [ebp + 0xc]
cdq
and edx, 0xff
add esp, 0x10
lea esi, [edx + eax]
sar esi, 8
mov eax, 0xb4e
mov edx, 0x7e
mov ecx, 0x73
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x4024e4
test esi, esi
je 0x40250b
mov edi, dword [ebp + 8]
push ebx
push 0x100
push edi
call fcn.004032a0
add esp, 0xc
add edi, 0x100
dec esi
jne 0x4024f3
mov eax, 0x23ea
mov edx, 0x87
mov ecx, 0x65
lea ebx, [ebx]
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x402520
jmp 0x402530
mov eax, 0x2aaaaaab
imul dword [ebp - 0x60]
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x60], eax
jne 0x402530
mov ecx, 0x38a1
lea esp, [esp]
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402550
mov ecx, 0x5e98
lea ebx, [ebx]
mov eax, 0xe070381d
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402570
xor ebx, ebx
inc ebx
mov eax, 0x66666667
imul ebx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
mov ecx, ebx
lea eax, [eax + eax*4]
sub ecx, eax
jne 0x4025a5
add ebx, ebx
jmp 0x4025ae
mov eax, ebx
cdq
sub eax, edx
sar eax, 1
add ebx, eax
cmp ebx, 0x7e32
jl 0x402587
mov ecx, 0x4c3c
jmp 0x4025c0
mov eax, 0xe070381d
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4025c0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, 0x8d3dcb09
imul ecx
add edx, ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4025e0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret