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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xb8
push ebx
push esi
push edi
xor edi, edi
xor ebx, ebx
mov esi, 0xc9
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x24], 0x3779
mov dword [ebp - 0x30], 0x4288
mov dword [ebp - 0x2c], 0xff
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x34], 0xb38
mov dword [ebp - 4], ebx
mov dword [ebp - 0x10], 0xaa
mov dword [ebp - 0xc], ebx
mov dword [ebp - 8], ebx
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0x18], 0x69
mov dword [ebp - 0x20], 0x25ce
mov dword [ebp - 0x28], 0x132d
nop
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 0x401eed
add edi, 5
cmp edi, 0x5d09
jl 0x401ed0
cmp dword [ebp + 8], ebx
je 0x40252d
mov ecx, dword [ebp + 0xc]
test ecx, ecx
je 0x40252d
mov eax, dword [ebp + 0x10]
lea edi, [eax + 0x90]
mov eax, dword [eax + 0x144]
xor eax, dword [edi]
cmp ecx, eax
jl 0x40252d
mov ecx, 0x571
mov eax, 0xcb8727c1
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401f27
mov ebx, 0x228f
mov eax, 0x478bbced
imul ebx
sar edx, 6
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x401f41
mov ebx, dword [ebp - 0x38]
inc ebx
mov eax, 0x66666667
imul ebx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax + eax*4]
add ecx, ecx
mov eax, ebx
sub eax, ecx
jne 0x401f75
inc ebx
cmp ebx, 0x6cb5
jl 0x401f57
call fcn.00403690
mov ebx, dword [ebp + 0x10]
mov ecx, dword [edi]
xor dword [ebx + 0xd4], ecx
mov edi, dword [ebx + 0xd4]
mov dword [ebx + 0x16c], eax
mov eax, 0x5d1c
mov edi, edi
cdq
and edx, 7
add eax, edx
sar eax, 3
test eax, eax
jne 0x401fa0
lea ecx, [ecx]
mov eax, 0xdbeb61f
imul dword [ebp - 0x24]
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x24], eax
jne 0x401fb0
lea eax, [ebx + 0x90]
mov dword [ebx + 0x138], eax
mov eax, 0x1fcb
mov edx, 0x8e
mov ecx, 0x3c
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x401fe2
mov eax, dword [ebp + 0xc]
xor edx, edx
div edi
imul edi, eax
mov dword [ebx + 0x354], eax
mov dword [ebx + 0x364], edi
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 0x40201d
inc ebx
cmp ebx, 0x18f0
jl 0x402002
xor esi, esi
test edi, edi
mov edi, dword [ebp + 0x10]
je 0x402078
mov ebx, dword [ebp + 8]
mov eax, dword [edi + 0x138]
inc esi
mov al, byte [eax]
xor byte [esi + ebx - 1], al
movzx ecx, byte [esi + ebx - 1]
mov eax, dword [edi + 0x138]
mov dl, byte [eax + 1]
xor dl, cl
mov byte [esi + ebx - 1], dl
mov eax, dword [edi + 0x138]
mov cl, byte [eax + 2]
xor cl, dl
mov byte [esi + ebx - 1], cl
mov eax, dword [edi + 0x138]
mov al, byte [eax + 3]
xor al, cl
mov byte [esi + ebx - 1], al
cmp esi, dword [edi + 0x364]
jb 0x402031
xor ecx, ecx
lea ebx, [ebx]
inc ecx
mov eax, ecx
and eax, 0x80000001
jns 0x40208f
dec eax
or eax, 0xfffffffe
inc eax
jne 0x402092
inc ecx
cmp ecx, 0x1904
jl 0x402080
lea ebx, [ebx]
mov eax, 0x38e38e39
imul dword [ebp - 0x30]
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x30], eax
jne 0x4020a0
mov eax, dword [edi + 0xd4]
xor esi, esi
dec eax
je 0x402195
mov edx, 0xd6
mov ebx, 0x6297
mov ecx, dword [ebp - 0x2c]
mov eax, 0x656c
jmp 0x4020e0
cmp ecx, 0xd6
cmovg ecx, edx
dec eax
jne 0x4020e0
mov eax, dword [ebp - 0x1c]
cmp eax, 0x6297
cmovl eax, ebx
mov dword [ebp - 0x1c], eax
mov eax, dword [edi + 0xd4]
dec eax
push eax
push 1
push edi
mov dword [ebp - 0x2c], ecx
call fcn.00403520
add esp, 0xc
mov bl, al
xor ecx, ecx
cmp bl, byte [edi + ecx + 0x174]
je 0x402124
inc ecx
cmp ecx, esi
jbe 0x402114
jmp 0x402126
xor bl, bl
mov ecx, dword [ebp - 0x34]
test ecx, ecx
je 0x402148
lea ecx, [ecx]
mov eax, 0x8d3dcb09
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402130
mov dword [ebp - 0x34], ecx
test bl, bl
je 0x402154
mov byte [edi + esi + 0x174], bl
inc esi
mov ebx, dword [ebp - 4]
cmp ebx, 0x65ac
jge 0x40217c
mov ecx, 0x65ab
sub ecx, ebx
mov eax, 0xcccccccd
mul ecx
shr edx, 3
lea eax, [edx + edx*4]
lea ebx, [ebx + eax*2]
add ebx, 0xa
mov dword [ebp - 4], ebx
mov eax, dword [edi + 0xd4]
dec eax
mov edx, 0xd6
mov ebx, 0x6297
cmp esi, eax
jb 0x4020d0
push 0x3e
lea eax, [ebp - 0xb7]
push 0
push eax
mov byte [ebp - 0xb8], 0
call fcn.004033e0
lea eax, [ebp - 0xb8]
push eax
call fcn.00402bc0
add esp, 0x10
mov ecx, 0x17f6
mov eax, 0xb40b40b5
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4021c0
xorps xmm0, xmm0
movq qword [ebp - 0x48], xmm0
lea ebx, [edi + 0x58]
mov dword [ebp - 0x5c], 0x614ca435
mov dword [ebp - 0x58], 0x917e1d9e
movq xmm0, qword [ebp - 0x5c]
movq qword [ebx], xmm0
mov dword [ebp - 0x54], 0x5ffc02d3
mov dword [ebp - 0x50], 0xdb7b771a
movq xmm0, qword [ebp - 0x54]
movq qword [ebx + 8], xmm0
mov dword [ebp - 0x4c], 0xb418bfdf
movq xmm0, qword [ebp - 0x4c]
movq qword [ebx + 0x10], xmm0
mov dword [ebp - 0x40], ecx
movq xmm0, qword [ebp - 0x44]
movq qword [ebx + 0x18], xmm0
lea ecx, [ecx]
xor byte [ebp + ecx - 0xb8], 0x5f
inc ecx
cmp ecx, 0x3d
jb 0x402230
mov eax, 0x6b52
cdq
and edx, 0x1f
add eax, edx
sar eax, 5
test eax, eax
jne 0x402243
mov dword [ebp - 4], eax
cmp dword [edi + 0xd4], eax
jbe 0x402406
mov esi, 0xcb
jmp 0x402270
movzx ebx, byte [edi + eax + 0x174]
imul ebx, dword [edi + 0x354]
add ebx, dword [ebp + 8]
push 0x3e
lea eax, [ebp - 0x77]
push 0
push eax
mov dword [edi + 0xa8], ebx
mov byte [ebp - 0x78], 0
call fcn.004033e0
mov ecx, dword [ebp - 0x10]
add esp, 0xc
mov eax, 0x1ac9
cmp ecx, 0xcb
cmovl ecx, esi
dec eax
jne 0x4022a4
mov esi, dword [ebp - 0xc]
mov dword [ebp - 0x10], ecx
cmp esi, 0x6923
jge 0x4022e4
mov edi, edi
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 0x4022d9
inc esi
cmp esi, 0x6923
jl 0x4022c0
mov dword [ebp - 0xc], esi
push 0x3e
lea eax, [ebp - 0x78]
push ebx
push eax
call fcn.004033b0
mov ecx, 0xf
lea esi, [ebp - 0xb8]
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
mov esi, dword [ebp - 8]
add esp, 0xc
cmp esi, 0x336f
jge 0x402336
mov edi, edi
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 0x40232b
inc esi
cmp esi, 0x336f
jl 0x402310
mov dword [ebp - 8], esi
mov edi, dword [ebp + 0x10]
mov eax, dword [edi + 0xa8]
call eax
push 0x3e
lea eax, [ebp - 0x78]
push eax
push ebx
call fcn.004033b0
mov eax, dword [ebp - 0x14]
add esp, 0xc
inc eax
cmp eax, 5
jl 0x402353
mov ecx, dword [ebp - 0x18]
mov dword [ebp - 0x14], eax
mov eax, 0x659b
mov edx, 0x4b
lea esp, [esp]
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x402370
mov dword [ebp - 0x18], ecx
mov ecx, dword [ebp - 0x20]
test ecx, ecx
je 0x40239a
mov eax, 0x8fb823ef
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402382
mov dword [ebp - 0x20], ecx
xor esi, esi
cmp dword [edi + 0x354], esi
jbe 0x4023eb
mov eax, dword [edi + 0x138]
inc esi
mov al, byte [eax + 3]
xor byte [esi + ebx - 1], al
movzx ecx, byte [esi + ebx - 1]
mov eax, dword [edi + 0x138]
mov dl, byte [eax + 2]
xor dl, cl
mov byte [esi + ebx - 1], dl
mov eax, dword [edi + 0x138]
mov cl, byte [eax + 1]
xor cl, dl
mov byte [esi + ebx - 1], cl
mov eax, dword [edi + 0x138]
mov al, byte [eax]
xor al, cl
mov byte [esi + ebx - 1], al
cmp esi, dword [edi + 0x354]
jb 0x4023a4
mov eax, dword [ebp - 4]
inc eax
mov dword [ebp - 4], eax
mov esi, 0xcb
cmp eax, dword [edi + 0xd4]
jb 0x402270
lea ebx, [edi + 0x58]
xor ecx, ecx
inc ecx
mov eax, ecx
and eax, 0x80000001
jns 0x402417
dec eax
or eax, 0xfffffffe
inc eax
jne 0x40241c
add ecx, 2
cmp ecx, 0x3eac
jl 0x402408
call fcn.00403690
mov dword [edi + 0x80], eax
add eax, 0xfffffffe
push eax
push dword [edi + 0x16c]
call fcn.004010f0
add esp, 8
mov eax, 0x3be7
mov edx, 0x60
mov ecx, 0x79
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x402450
push 0x190e141a
push ebx
call fcn.00401d10
add esp, 8
mov ecx, 0x6935
jmp 0x402470
mov eax, 0x81020409
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402470
mov eax, dword [ebp + 0xc]
cdq
and edx, 0xff
mov ecx, 0x4a63
lea esi, [edx + eax]
sar esi, 8
lea ebx, [ebx]
mov eax, 0xd62b80d7
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4024a0
test esi, esi
je 0x4024e0
mov edi, dword [ebp + 8]
lea esp, [esp]
push ebx
push 0x100
push edi
call fcn.00403410
add esp, 0xc
add edi, 0x100
dec esi
jne 0x4024c0
jmp 0x4024e0
mov eax, 0x7a44c6b
imul dword [ebp - 0x28]
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x28], eax
jne 0x4024e0
xor ebx, ebx
lea esp, [esp]
inc ebx
mov eax, 0x66666667
imul ebx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax + eax*4]
add ecx, ecx
mov eax, ebx
sub eax, ecx
jne 0x40251e
inc ebx
cmp ebx, 0x1ed9
jl 0x402500
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, 0x405b
mov ecx, 0x16
cmp esi, ecx
cmovg esi, ecx
dec eax
jne 0x402537
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret