Function at 0x401f00
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, 0x74
mov edi, 0x319e
mov ebx, 0x7288
mov dword [ebp - 0x60], 0x7483
mov dword [ebp - 8], 0x4100
mov dword [ebp - 4], 0x323f
mov dword [ebp - 0x58], 0xd98
mov dword [ebp - 0x3c], 0x398f
mov dword [ebp - 0x54], 0x17f8
mov dword [ebp - 0x44], 0xf8
mov dword [ebp - 0x34], esi
mov dword [ebp - 0x4c], esi
mov dword [ebp - 0x10], esi
mov dword [ebp - 0xc], esi
mov dword [ebp - 0x5c], 0x6b0a
mov dword [ebp - 0x38], esi
mov dword [ebp - 0x40], 0x578e
mov dword [ebp - 0x48], 0x6647
mov dword [ebp - 0x50], 0x5180
cmp dword [ebp + 8], esi
je 0x402665
cmp dword [ebp + 0xc], esi
je 0x402665
mov eax, dword [ebp + 0x10]
lea edx, [eax + 0x50]
mov eax, dword [eax + 0x22c]
xor eax, dword [edx]
cmp dword [ebp + 0xc], eax
jl 0x402665
mov eax, 0x3632
mov edx, 0x1b
lea esp, [esp]
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x401fb0
jmp 0x401fc0
mov eax, 0xb70fbb5b
imul edi
add edx, edi
sar edx, 7
mov edi, edx
shr edi, 0x1f
add edi, edx
jne 0x401fc0
mov eax, 0xac769185
imul ebx
add edx, ebx
sar edx, 7
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x401fd5
call fcn.00403590
mov ebx, dword [ebp + 0x10]
lea ecx, [ebx + 0x50]
mov dword [ebx + 0x10], eax
mov eax, dword [ecx]
xor dword [ebx + 0x230], eax
mov dword [ebx + 0x2c8], ecx
mov ecx, 0x75a
jmp 0x402010
mov eax, 0x891ac73b
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402010
mov esi, 0x3ac2
lea ebx, [ebx]
mov eax, 0x4c8f8d29
imul esi
sar edx, 6
mov esi, edx
shr esi, 0x1f
add esi, edx
jne 0x402030
mov eax, 0x4ce8
cdq
and edx, 0x1f
add eax, edx
sar eax, 5
test eax, eax
jne 0x402048
mov eax, dword [ebp + 0xc]
xor edx, edx
div dword [ebx + 0x230]
mov edi, eax
mov dword [ebx + 0x238], edi
xor ebx, ebx
lea 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 0x40208d
add ebx, 2
cmp ebx, 0x46ff
jl 0x402070
mov ebx, dword [ebp + 0x10]
mov esi, 0x169d
mov ecx, dword [ebx + 0x230]
imul ecx, edi
mov dword [ebx + 0x4c], ecx
lea esp, [esp]
mov eax, 0x2f149903
imul esi
sar edx, 5
mov esi, edx
shr esi, 0x1f
add esi, edx
jne 0x4020b0
xor edi, edi
test ecx, ecx
je 0x402114
mov esi, dword [ebp + 8]
lea esp, [esp]
mov eax, dword [ebx + 0x2c8]
inc edi
mov al, byte [eax]
xor byte [edi + esi - 1], al
movzx ecx, byte [edi + esi - 1]
mov eax, dword [ebx + 0x2c8]
mov dl, byte [eax + 1]
xor dl, cl
mov byte [edi + esi - 1], dl
mov eax, dword [ebx + 0x2c8]
mov cl, byte [eax + 2]
xor cl, dl
mov byte [edi + esi - 1], cl
mov eax, dword [ebx + 0x2c8]
mov al, byte [eax + 3]
xor al, cl
mov byte [edi + esi - 1], al
cmp edi, dword [ebx + 0x4c]
jb 0x4020d0
mov esi, 0x1f87
lea esp, [esp]
mov eax, 0x3a196b1f
imul esi
sar edx, 5
mov esi, edx
shr esi, 0x1f
add esi, edx
jne 0x402120
mov ecx, 0x1155
jmp 0x402140
mov eax, 0x8fb823ef
imul ecx
add edx, ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402140
mov eax, 0x5519
mov edx, 0xfe
mov ecx, 0xbe
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x402164
mov eax, 0x64ce
mov edx, 0x81
mov ecx, 0xae
jmp 0x402180
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x402180
mov eax, dword [ebx + 0x230]
xor edi, edi
dec eax
je 0x402250
mov eax, 0x78f8
lea esp, [esp]
dec eax
jne 0x4021a0
mov eax, dword [ebx + 0x230]
dec eax
push eax
push 1
push ebx
call fcn.00403420
add esp, 0xc
mov bl, al
mov eax, dword [ebp + 0x10]
xor ecx, ecx
lea ecx, [ecx]
cmp bl, byte [eax + ecx + 0xf0]
je 0x4021d0
inc ecx
cmp ecx, edi
jbe 0x4021c0
jmp 0x4021d2
xor bl, bl
mov ecx, dword [ebp - 0x60]
test ecx, ecx
je 0x4021f6
lea esp, [esp]
mov eax, 0x4bda12f7
imul ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4021e0
mov dword [ebp - 0x60], ecx
cmp esi, 0x5ad9
jge 0x402226
mov edi, edi
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 0x40221e
inc esi
cmp esi, 0x5ad9
jl 0x402200
test bl, bl
je 0x402235
mov eax, dword [ebp + 0x10]
inc edi
mov byte [eax + edi + 0xef], bl
mov ebx, dword [ebp + 0x10]
mov eax, dword [ebx + 0x230]
dec eax
cmp edi, eax
jb 0x402197
jmp 0x402250
mov eax, 0x30c30c31
imul dword [ebp - 8]
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 8], eax
jne 0x402250
mov ecx, 0x76e1
lea esp, [esp]
mov eax, 0xb60b60b7
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402270
push 0x3e
push ecx
lea eax, [ebp - 0x9f]
push eax
mov byte [ebp - 0xa0], cl
call fcn.004032b0
lea eax, [ebp - 0xa0]
push eax
call fcn.00402cd0
mov edi, dword [ebp + 0x10]
xorps xmm0, xmm0
lea ebx, [edi + 0x9c]
movq qword [ebp - 0x1c], xmm0
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x30], 0x1afc816
mov dword [ebp - 0x2c], 0x4e2ec855
movq xmm0, qword [ebp - 0x30]
movq qword [ebx], xmm0
mov dword [ebp - 0x28], 0xed091704
mov dword [ebp - 0x24], 0xf624544f
movq xmm0, qword [ebp - 0x28]
movq qword [ebx + 8], xmm0
mov dword [ebp - 0x20], 0x6d6bd175
movq xmm0, qword [ebp - 0x20]
xor cl, cl
movq qword [ebx + 0x10], xmm0
mov dword [ebx + 0x18], eax
add esp, 0x10
mov byte [ebx + 0x1c], cl
xor eax, eax
jmp 0x402310
xor byte [ebp + eax - 0xa0], 0x66
inc eax
cmp eax, 0x3d
jb 0x402310
mov edi, edi
mov eax, 0x19c2d14f
imul dword [ebp - 4]
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 4], eax
jne 0x402320
xor ecx, ecx
mov dword [ebp - 4], ecx
cmp dword [edi + 0x230], ecx
jbe 0x4025bd
mov esi, 0xd7
lea ecx, [ecx]
mov ebx, dword [ebp - 0x58]
test ebx, ebx
je 0x402376
jmp 0x402360
mov eax, 0x15390949
imul ebx
sar edx, 4
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x402360
mov dword [ebp - 0x58], ebx
mov ebx, dword [ebp - 0x3c]
test ebx, ebx
je 0x402398
lea ecx, [ecx]
mov eax, 0x84210843
imul ebx
add edx, ebx
sar edx, 6
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x402380
mov dword [ebp - 0x3c], ebx
mov ebx, dword [ebp - 0x54]
test ebx, ebx
je 0x4023b8
nop
mov eax, 0x88888889
imul ebx
add edx, ebx
sar edx, 6
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x4023a0
mov dword [ebp - 0x54], ebx
movzx ebx, byte [edi + ecx + 0xf0]
imul ebx, dword [edi + 0x238]
add ebx, dword [ebp + 8]
mov ecx, dword [ebp - 0x44]
mov eax, 0x1741
cmp ecx, 0xd7
cmovl ecx, esi
dec eax
jne 0x4023d2
mov eax, dword [ebp - 0x34]
mov dword [ebp - 0x44], ecx
cmp eax, 0xc3
mov ecx, 0xc3
cmovl eax, ecx
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x4c]
inc eax
cmp eax, 0x71e5
jl 0x4023f7
mov ecx, dword [ebp - 0x10]
mov dword [ebp - 0x4c], eax
mov dword [edi + 0x240], ebx
cmp ecx, 0x1dd0
jge 0x402430
inc ecx
mov eax, ecx
and eax, 0x80000001
jns 0x402422
dec eax
or eax, 0xfffffffe
inc eax
jne 0x402425
inc ecx
cmp ecx, 0x1dd0
jl 0x402413
mov dword [ebp - 0x10], ecx
mov esi, dword [ebp - 0xc]
cmp esi, 0x5075
jge 0x402466
jmp 0x402440
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 0x40245b
inc esi
cmp esi, 0x5075
jl 0x402440
mov dword [ebp - 0xc], esi
push 0x3e
lea eax, [ebp - 0xdf]
push 0
push eax
mov byte [ebp - 0xe0], 0
call fcn.004032b0
mov ecx, dword [ebp - 0x5c]
add esp, 0xc
test ecx, ecx
je 0x4024a6
jmp 0x402490
mov eax, 0x51eb851f
imul ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402490
mov dword [ebp - 0x5c], ecx
mov eax, dword [ebp - 0x38]
lea esp, [esp]
inc eax
cmp eax, 0x496e
jl 0x4024b0
push 0x3e
mov dword [ebp - 0x38], eax
lea eax, [ebp - 0xe0]
push ebx
push eax
call fcn.00403280
mov ecx, 0xf
lea esi, [ebp - 0xa0]
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [ebp - 0x40]
add esp, 0xc
movsb byte es:[edi], byte [esi]
test ecx, ecx
je 0x4024fc
mov eax, 0x91a2b3c5
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4024e4
mov dword [ebp - 0x40], ecx
mov edi, dword [ebp + 0x10]
mov eax, dword [edi + 0x240]
call eax
mov ecx, dword [ebp - 0x48]
test ecx, ecx
je 0x402526
mov edi, edi
mov eax, 0x38e38e39
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402510
mov dword [ebp - 0x48], ecx
push 0x3e
lea eax, [ebp - 0xe0]
push eax
push ebx
call fcn.00403280
xor esi, esi
add esp, 0xc
cmp dword [edi + 0x238], esi
jbe 0x402589
mov eax, dword [edi + 0x2c8]
inc esi
mov al, byte [eax + 3]
xor byte [esi + ebx - 1], al
movzx ecx, byte [esi + ebx - 1]
mov eax, dword [edi + 0x2c8]
mov dl, byte [eax + 2]
xor dl, cl
mov byte [esi + ebx - 1], dl
mov eax, dword [edi + 0x2c8]
mov cl, byte [eax + 1]
xor cl, dl
mov byte [esi + ebx - 1], cl
mov eax, dword [edi + 0x2c8]
mov al, byte [eax]
xor al, cl
mov byte [esi + ebx - 1], al
cmp esi, dword [edi + 0x238]
jb 0x402542
mov ecx, dword [ebp - 0x50]
test ecx, ecx
je 0x4025a5
mov eax, 0x38e38e39
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402590
mov dword [ebp - 0x50], ecx
mov ecx, dword [ebp - 4]
inc ecx
mov dword [ebp - 4], ecx
mov esi, 0xd7
cmp ecx, dword [edi + 0x230]
jb 0x402350
call fcn.00403590
mov esi, eax
mov dword [edi + 0x2b8], esi
xor ebx, ebx
lea esp, [esp]
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 0x4025eb
inc ebx
cmp ebx, 0x20d1
jl 0x4025d0
lea ecx, [esi - 2]
push ecx
push dword [edi + 0x10]
call fcn.004010b0
push 0x18dba5fc
lea ebx, [edi + 0x9c]
push ebx
call fcn.00401d90
mov eax, dword [ebp + 0xc]
cdq
and edx, 0xff
add esp, 0x10
lea esi, [edx + eax]
sar esi, 8
test esi, esi
je 0x402648
mov edi, dword [ebp + 8]
lea ebx, [ebx]
push ebx
push 0x100
push edi
call fcn.00403310
add esp, 0xc
add edi, 0x100
dec esi
jne 0x402630
mov ecx, 0x3218
lea ecx, [ecx]
mov eax, 0x84210843
imul ecx
add edx, ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402650
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret