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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xe0
push ebx
push esi
xor esi, esi
push edi
mov ecx, 0x6590
mov edi, 0x3548
mov ebx, 0xc8
mov dword [ebp - 0x58], 0x29d9
mov dword [ebp - 0x5c], 0x52a5
mov dword [ebp - 0x44], 0x5986
mov dword [ebp - 0x50], 0x1b1d
mov dword [ebp - 4], 0xc5
mov dword [ebp - 8], 0x5e8b
mov dword [ebp - 0x3c], 0x7a3a
mov dword [ebp - 0x28], esi
mov dword [ebp - 0x54], 0x6503
mov dword [ebp - 0x30], 0x1bfd
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x60], 0x27
mov dword [ebp - 0x4c], 0x69d3
mov dword [ebp - 0x34], 0x85
mov dword [ebp - 0x38], esi
mov dword [ebp - 0x40], 0x36
mov dword [ebp - 0x48], 0x52
jmp 0x401b30
mov eax, 0x2aaaaaab
imul ecx
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401b30
cmp dword [ebp + 8], esi
je 0x40220a
mov edx, dword [ebp + 0xc]
test edx, edx
je 0x40220a
mov eax, dword [ebp + 0x10]
lea ecx, [eax + 0xac]
mov eax, dword [eax + 0x280]
xor eax, dword [ecx]
cmp edx, eax
jl 0x40220a
lea ecx, [ecx]
mov eax, 0x51eb851f
imul edi
sar edx, 5
mov edi, edx
shr edi, 0x1f
add edi, edx
jne 0x401b70
call fcn.00403380
mov edx, dword [ebp + 0x10]
mov dword [ebp - 0x2c], 0xdf
lea ecx, [edx + 0xac]
mov dword [edx + 0x5c], eax
mov eax, dword [ecx]
xor dword [edx + 0x148], eax
mov edi, dword [edx + 0x148]
mov eax, 0x1e40
mov edi, edi
cmp ebx, 0xdf
cmovg ebx, dword [ebp - 0x2c]
dec eax
jne 0x401bb0
mov dword [edx + 0x60], ecx
inc esi
mov eax, 0x66666667
imul esi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax + eax*4]
add ecx, ecx
mov eax, esi
sub eax, ecx
jne 0x401be0
add esi, 2
cmp esi, 0x2833
jl 0x401bc0
mov eax, dword [ebp + 0xc]
xor edx, edx
div edi
mov esi, dword [ebp + 0x10]
mov ecx, eax
mov dword [ebp - 0x2c], ecx
mov dword [esi + 0x68], ecx
mov ecx, 0x75b9
nop
mov eax, 0x78787879
imul ecx
sar edx, 3
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401c00
imul edi, dword [ebp - 0x2c]
mov dword [esi + 0x2c4], edi
xor esi, esi
test edi, edi
mov edi, dword [ebp + 0x10]
je 0x401c70
mov ebx, dword [ebp + 8]
lea esp, [esp]
mov eax, dword [edi + 0x60]
inc esi
mov al, byte [eax]
xor byte [esi + ebx - 1], al
movzx ecx, byte [esi + ebx - 1]
mov eax, dword [edi + 0x60]
mov dl, byte [eax + 1]
xor dl, cl
mov byte [esi + ebx - 1], dl
mov eax, dword [edi + 0x60]
mov cl, byte [eax + 2]
xor cl, dl
mov byte [esi + ebx - 1], cl
mov eax, dword [edi + 0x60]
mov al, byte [eax + 3]
xor al, cl
mov byte [esi + ebx - 1], al
cmp esi, dword [edi + 0x2c4]
jb 0x401c30
jmp 0x401c70
mov eax, 0x19c2d14f
imul dword [ebp - 0x58]
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x58], eax
jne 0x401c70
mov eax, 0xbea
mov edx, 0xb
mov ecx, 0xf6
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x401c96
xor ebx, ebx
inc ebx
mov eax, 0x2aaaaaab
imul ebx
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax + eax*2]
add ecx, ecx
mov eax, ebx
sub eax, ecx
jne 0x401cbb
inc ebx
cmp ebx, 0x114
jl 0x401ca0
mov eax, dword [edi + 0x148]
xor esi, esi
dec eax
je 0x401d9d
mov eax, dword [edi + 0x148]
dec eax
push eax
push 1
push edi
call fcn.00403200
add esp, 0xc
mov cl, al
xor eax, eax
lea esp, [esp]
cmp cl, byte [edi + eax + 0x16c]
je 0x401d00
inc eax
cmp eax, esi
jbe 0x401cf0
jmp 0x401d02
xor cl, cl
mov ebx, dword [ebp - 0x5c]
test ebx, ebx
je 0x401d26
lea esp, [esp]
mov eax, 0x44d72045
imul ebx
sar edx, 5
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x401d10
mov dword [ebp - 0x5c], ebx
test cl, cl
je 0x401d32
mov byte [edi + esi + 0x16c], cl
inc esi
mov ecx, dword [ebp - 0x44]
test ecx, ecx
je 0x401d58
lea esp, [esp]
mov eax, 0xaf3addc7
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401d40
mov dword [ebp - 0x44], ecx
mov ecx, dword [ebp - 0x50]
test ecx, ecx
je 0x401d76
nop
mov eax, 0x22b63cbf
imul ecx
sar edx, 3
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401d60
mov dword [ebp - 0x50], ecx
mov ecx, dword [ebp - 4]
mov eax, 0x3df6
mov edx, 0x1e
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x401d83
mov eax, dword [edi + 0x148]
dec eax
mov dword [ebp - 4], ecx
cmp esi, eax
jb 0x401cd2
push 0x3e
lea eax, [ebp - 0x9f]
push 0
push eax
mov byte [ebp - 0xa0], 0
call fcn.004030a0
lea eax, [ebp - 0xa0]
push eax
call fcn.004029f0
add esp, 0x10
mov dword [ebp - 0x20], 0xf682a642
mov dword [ebp - 0x1c], 0x81a984ac
mov dword [ebp - 0x18], 0x1ae4cb31
mov dword [ebp - 0x14], 0xab2b6256
mov dword [ebp - 0x10], 0x16a0c90a
xor esi, esi
mov ecx, 0x6dca
lea ecx, [ecx]
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401df0
mov ecx, 0x3cd
lea ebx, [ebx]
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401e10
mov eax, 0x76b6
mov edx, 0x19
mov ecx, 0xd5
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x401e34
movq xmm0, qword [ebp - 0x20]
mov eax, dword [ebp - 0x10]
add edi, 0x14c
mov dword [ebp - 4], edi
movq qword [edi], xmm0
movq xmm0, qword [ebp - 0x18]
movq qword [edi + 8], xmm0
mov dword [edi + 0x10], eax
mov word [edi + 0x14], si
mov eax, 0x67d4
mov edx, 0x5f
mov ecx, 0xfb
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x401e71
lea esp, [esp]
xor byte [ebp + eax - 0xa0], 0xe9
inc eax
cmp eax, 0x3d
jb 0x401e80
mov eax, 0x6946
mov edx, 0xbf
mov ecx, 0x38
lea ecx, [ecx]
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x401ea0
jmp 0x401eb0
mov eax, 0x3a196b1f
imul dword [ebp - 8]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 8], eax
jne 0x401eb0
mov esi, dword [ebp + 0x10]
xor ebx, ebx
mov dword [ebp - 8], ebx
cmp dword [esi + 0x148], ebx
jbe 0x402109
mov edi, esi
lea ecx, [ecx]
mov ecx, dword [ebp - 0x3c]
test ecx, ecx
je 0x401f06
jmp 0x401ef0
mov eax, 0x63e7063f
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401ef0
mov dword [ebp - 0x3c], ecx
mov esi, dword [ebp - 0x28]
cmp esi, 0xc3f
jge 0x401f35
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 0x401f2a
inc esi
cmp esi, 0xc3f
jl 0x401f11
mov dword [ebp - 0x28], esi
movzx ebx, byte [edi + ebx + 0x16c]
imul ebx, dword [edi + 0x68]
mov ecx, dword [ebp - 0x54]
add ebx, dword [ebp + 8]
test ecx, ecx
je 0x401f66
jmp 0x401f50
mov eax, 0x17ad2209
imul ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401f50
mov dword [ebp - 0x54], ecx
push 0x3e
lea eax, [ebp - 0xdf]
push 0
push eax
mov dword [edi + 0x90], ebx
mov byte [ebp - 0xe0], 0
call fcn.004030a0
mov ecx, dword [ebp - 0x30]
add esp, 0xc
test ecx, ecx
je 0x401fa6
lea ecx, [ecx]
mov eax, 0x4c346405
imul ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401f90
mov dword [ebp - 0x30], ecx
mov esi, dword [ebp - 0x24]
cmp esi, 0xace
jge 0x401fd7
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 0x401fcc
inc esi
cmp esi, 0xace
jl 0x401fb1
mov dword [ebp - 0x24], esi
mov ecx, dword [ebp - 0x60]
mov eax, 0x3eaa
mov edx, 0xe1
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x401fe4
push 0x3e
lea eax, [ebp - 0xe0]
push ebx
push eax
mov dword [ebp - 0x60], ecx
call fcn.00403070
mov ecx, 0xf
lea esi, [ebp - 0xa0]
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [ebp - 0x4c]
add esp, 0xc
movsb byte es:[edi], byte [esi]
test ecx, ecx
je 0x402038
jmp 0x402020
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402020
mov dword [ebp - 0x4c], ecx
mov ecx, dword [ebp - 0x34]
mov eax, 0x64a5
mov edx, 0x33
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x402045
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x34], ecx
inc eax
cmp eax, 0x5058
jl 0x402053
mov edi, dword [ebp + 0x10]
mov dword [ebp - 0x38], eax
mov eax, dword [edi + 0x90]
call eax
mov ecx, dword [ebp - 0x40]
mov eax, 0x55f9
mov edx, 0x26
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x402076
push 0x3e
lea eax, [ebp - 0xe0]
push eax
push ebx
mov dword [ebp - 0x40], ecx
call fcn.00403070
xor esi, esi
add esp, 0xc
cmp dword [edi + 0x68], esi
jbe 0x4020d8
lea ebx, [ebx]
mov eax, dword [edi + 0x60]
inc esi
mov al, byte [eax + 3]
xor byte [esi + ebx - 1], al
movzx ecx, byte [esi + ebx - 1]
mov eax, dword [edi + 0x60]
mov dl, byte [eax + 2]
xor dl, cl
mov byte [esi + ebx - 1], dl
mov eax, dword [edi + 0x60]
mov cl, byte [eax + 1]
xor cl, dl
mov byte [esi + ebx - 1], cl
mov eax, dword [edi + 0x60]
mov al, byte [eax]
xor al, cl
mov byte [esi + ebx - 1], al
cmp esi, dword [edi + 0x68]
jb 0x4020a0
mov ecx, dword [ebp - 0x48]
mov eax, 0x2823
mov edx, pe_nt_image_headers32
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x4020e5
mov ebx, dword [ebp - 8]
inc ebx
mov dword [ebp - 0x48], ecx
mov dword [ebp - 8], ebx
cmp ebx, dword [edi + 0x148]
jb 0x401ee0
mov edi, dword [ebp - 4]
mov esi, dword [ebp + 0x10]
call fcn.00403380
mov ecx, eax
mov dword [esi + 0xa8], ecx
mov eax, 0x5cd5
mov ebx, 9
mov edx, 0xd1
cmp edx, ebx
cmovg edx, ebx
dec eax
jne 0x402125
add ecx, 0xfffffffe
push ecx
push dword [esi + 0x5c]
call fcn.00401110
push 0x255c828
push edi
call fcn.004019d0
mov eax, dword [ebp + 0xc]
cdq
and edx, 0xff
add esp, 0x10
lea esi, [edx + eax]
sar esi, 8
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 0x402180
add ebx, 5
cmp ebx, 0x786b
jl 0x402160
mov edi, 0x7423
lea ecx, [ecx]
mov eax, 0x63e7063f
imul edi
sar edx, 5
mov edi, edx
shr edi, 0x1f
add edi, edx
jne 0x402190
mov edi, dword [ebp - 4]
xor ebx, ebx
inc ebx
mov eax, 0x55555556
imul ebx
mov eax, edx
shr eax, 0x1f
add eax, edx
mov ecx, ebx
lea eax, [eax + eax*2]
sub ecx, eax
jne 0x4021c2
add ebx, ebx
cmp ebx, 0x467f
jl 0x4021a8
test esi, esi
je 0x4021e9
mov ebx, dword [ebp + 8]
push edi
push 0x100
push ebx
call fcn.004030d0
add esp, 0xc
add ebx, 0x100
dec esi
jne 0x4021d1
xor ecx, ecx
jmp 0x4021f0
inc ecx
mov eax, ecx
and eax, 0x80000007
jns 0x4021ff
dec eax
or eax, 0xfffffff8
inc eax
jne 0x402202
inc ecx
cmp ecx, 0x7c75
jl 0x4021f0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret