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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xd8
xor ecx, ecx
push ebx
push esi
xor esi, esi
push edi
mov edi, 0xf16
mov ebx, 0xc5
mov dword [ebp - 0x50], 0x84
mov dword [ebp - 0x44], 0x344f
mov dword [ebp - 0x48], 0x2316
mov dword [ebp - 4], 0x364b
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 0x58], 0xa6
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x54], 0xfa
mov dword [ebp - 0x4c], ecx
mov dword [ebp - 0x38], 0x58c7
mov dword [ebp - 0x10], ecx
mov dword [ebp - 8], ecx
mov dword [ebp - 0x40], 0x5209
cmp dword [ebp + 8], ecx
je 0x402366
cmp dword [ebp + 0xc], ecx
je 0x402366
mov eax, dword [ebp + 0x10]
lea edx, [eax + 0x2a8]
mov eax, dword [eax + 0x2e8]
xor eax, dword [edx]
cmp dword [ebp + 0xc], eax
jl 0x402366
call fcn.004032e0
mov ecx, dword [ebp + 0x10]
mov dword [ecx + 0x2b0], eax
mov eax, dword [ecx + 0x2a8]
xor dword [ecx + 0x74], eax
mov eax, dword [ebp + 0x10]
lea edx, [ecx + 0x2a8]
mov ecx, dword [ecx + 0x74]
mov dword [eax + 0x2c4], edx
mov eax, dword [ebp + 0xc]
xor edx, edx
div ecx
mov edx, dword [ebp + 0x10]
mov dword [edx + 0x3c], eax
imul eax, ecx
mov dword [ebp - 0xc], eax
mov dword [edx + 0x54], eax
lea esp, [esp]
mov eax, 0x1948b0fd
imul edi
sar edx, 4
mov edi, edx
shr edi, 0x1f
add edi, edx
jne 0x401db0
cmp dword [ebp - 0xc], esi
jbe 0x401e20
mov ebx, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
mov edi, edi
mov eax, dword [ebx + 0x2c4]
inc edi
mov al, byte [eax]
xor byte [edi + esi - 1], al
movzx ecx, byte [edi + esi - 1]
mov eax, dword [ebx + 0x2c4]
mov dl, byte [eax + 1]
xor dl, cl
mov byte [edi + esi - 1], dl
mov eax, dword [ebx + 0x2c4]
mov cl, byte [eax + 2]
xor cl, dl
mov byte [edi + esi - 1], cl
mov eax, dword [ebx + 0x2c4]
mov al, byte [eax + 3]
xor al, cl
mov byte [edi + esi - 1], al
cmp edi, dword [ebx + 0x54]
jb 0x401dd0
xor esi, esi
mov ebx, 0xc5
jmp 0x401e20
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 0x401e3e
inc esi
cmp esi, 0xc7c
jl 0x401e20
mov eax, 0x717
mov ecx, 0xdc
cmp ebx, ecx
cmovl ebx, ecx
dec eax
jne 0x401e50
mov edi, dword [ebp + 0x10]
xor esi, esi
mov eax, dword [edi + 0x74]
dec eax
je 0x401f14
mov ecx, dword [ebp + 0x10]
xor edi, edi
lea esp, [esp]
mov eax, dword [ecx + 0x74]
dec eax
push eax
push 1
push ecx
call fcn.00403160
mov ecx, dword [ebp - 0x50]
mov bl, al
add esp, 0xc
mov eax, 0x62b8
mov edx, 0xa5
nop
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x401e90
mov dword [ebp - 0x50], ecx
mov ecx, dword [ebp + 0x10]
mov edi, edi
cmp bl, byte [ecx + eax + 0xac]
je 0x401eb0
inc eax
cmp eax, esi
jbe 0x401ea0
jmp 0x401eb2
xor bl, bl
cmp edi, 0x223f
jge 0x401ed4
mov ecx, 0x223e
sub ecx, edi
mov eax, 0xcccccccd
mul ecx
shr edx, 3
lea eax, [edx + edx*4]
lea edi, [edi + eax*2]
add edi, 0xa
mov ecx, dword [ebp - 0x44]
test ecx, ecx
je 0x401ef6
jmp 0x401ee0
mov eax, 0x2d4279a3
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401ee0
mov dword [ebp - 0x44], ecx
mov ecx, dword [ebp + 0x10]
test bl, bl
je 0x401f05
mov byte [ecx + esi + 0xac], bl
inc esi
mov eax, dword [ecx + 0x74]
dec eax
cmp esi, eax
jb 0x401e70
mov edi, dword [ebp + 0x10]
mov ecx, 0x20a9
lea esp, [esp]
mov eax, 0x81020409
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401f20
push 0x3e
push ecx
lea eax, [ebp - 0x97]
push eax
mov byte [ebp - 0x98], cl
call fcn.00402ff0
lea eax, [ebp - 0x98]
push eax
call fcn.00402a50
xorps xmm0, xmm0
add esp, 0x10
mov dword [ebp - 0x30], 0xc721484e
mov dword [ebp - 0x2c], 0xed55799a
mov dword [ebp - 0x28], 0x2ec56686
mov dword [ebp - 0x24], 0x65769151
mov dword [ebp - 0x20], 0xe9bb42be
movq qword [ebp - 0x1c], xmm0
xor cl, cl
jmp 0x401f90
mov eax, 0x2aaaaaab
imul dword [ebp - 0x48]
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x48], eax
jne 0x401f90
movq xmm0, qword [ebp - 0x30]
mov eax, dword [ebp - 0x18]
lea ebx, [edi + 0x24c]
mov dword [ebp - 0xc], ebx
movq qword [ebx], xmm0
movq xmm0, qword [ebp - 0x28]
movq qword [ebx + 8], xmm0
movq xmm0, qword [ebp - 0x20]
movq qword [ebx + 0x10], xmm0
mov dword [ebx + 0x18], eax
mov word [ebx + 0x1c], 0
mov byte [ebx + 0x1e], cl
xor eax, eax
mov edi, edi
xor byte [ebp + eax - 0x98], 0xf
inc eax
cmp eax, 0x3d
jb 0x401fe0
mov edi, edi
mov eax, 0x473c1ab7
imul dword [ebp - 4]
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 4], eax
jne 0x401ff0
xor eax, eax
mov dword [ebp - 4], eax
cmp dword [edi + 0x74], eax
jbe 0x4021c6
mov esi, 0xd4
lea ebx, [ebx]
movzx ebx, byte [edi + eax + 0xac]
imul ebx, dword [edi + 0x3c]
add ebx, dword [ebp + 8]
mov eax, dword [ebp - 0x3c]
mov dword [edi + 0x2cc], ebx
inc eax
cmp eax, 0x394f
jl 0x402038
push 0x3e
mov dword [ebp - 0x3c], eax
lea eax, [ebp - 0xd7]
push 0
push eax
mov byte [ebp - 0xd8], 0
call fcn.00402ff0
mov ecx, dword [ebp - 0x58]
add esp, 0xc
mov eax, 0x41d5
cmp ecx, 0xd4
cmovl ecx, esi
dec eax
jne 0x402065
push 0x3e
lea eax, [ebp - 0xd8]
push ebx
push eax
mov dword [ebp - 0x58], ecx
call fcn.00402fc0
mov eax, dword [ebp - 0x34]
add esp, 0xc
lea esp, [esp]
inc eax
cmp eax, 0x5321
jl 0x402090
mov ecx, 0xf
lea esi, [ebp - 0x98]
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [ebp - 0x54]
mov dword [ebp - 0x34], eax
movsb byte es:[edi], byte [esi]
mov eax, 0x6aae
mov edx, 0xd2
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x4020b8
mov eax, dword [ebp - 0x4c]
mov dword [ebp - 0x54], ecx
inc eax
cmp eax, 5
jl 0x4020c6
mov edi, dword [ebp + 0x10]
mov dword [ebp - 0x4c], eax
mov eax, dword [edi + 0x2cc]
call eax
mov ecx, dword [ebp - 0x38]
test ecx, ecx
je 0x4020f7
mov eax, 0xdbeb61f
imul ecx
sar edx, 3
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4020e1
mov dword [ebp - 0x38], ecx
mov esi, dword [ebp - 0x10]
cmp esi, 0x4958
jge 0x40212c
mov eax, 0x2aaaaaab
imul esi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax + eax*2]
add ecx, ecx
mov eax, esi
sub eax, ecx
jne 0x402120
add esi, 3
jmp 0x402121
inc esi
cmp esi, 0x4958
jl 0x402102
mov dword [ebp - 0x10], esi
push 0x3e
lea eax, [ebp - 0xd8]
push eax
push ebx
call fcn.00402fc0
xor esi, esi
add esp, 0xc
cmp dword [edi + 0x3c], esi
jbe 0x402189
mov eax, dword [edi + 0x2c4]
inc esi
mov al, byte [eax + 3]
xor byte [esi + ebx - 1], al
movzx ecx, byte [esi + ebx - 1]
mov eax, dword [edi + 0x2c4]
mov dl, byte [eax + 2]
xor dl, cl
mov byte [esi + ebx - 1], dl
mov eax, dword [edi + 0x2c4]
mov cl, byte [eax + 1]
xor cl, dl
mov byte [esi + ebx - 1], cl
mov eax, dword [edi + 0x2c4]
mov al, byte [eax]
xor al, cl
mov byte [esi + ebx - 1], al
cmp esi, dword [edi + 0x3c]
jb 0x402145
mov ecx, dword [ebp - 8]
cmp ecx, 0x917
jge 0x4021b1
inc ecx
mov eax, ecx
and eax, 0x80000007
jns 0x4021a3
dec eax
or eax, 0xfffffff8
inc eax
jne 0x4021a6
inc ecx
cmp ecx, 0x917
jl 0x402194
mov dword [ebp - 8], ecx
mov eax, dword [ebp - 4]
inc eax
mov dword [ebp - 4], eax
mov esi, 0xd4
cmp eax, dword [edi + 0x74]
jb 0x402020
call fcn.004032e0
mov dword [edi + 0x1ec], eax
add eax, 0xfffffffe
push eax
push dword [edi + 0x2b0]
call fcn.00401190
add esp, 8
mov ebx, 0x29c0
jmp 0x4021f0
mov eax, 0x478bbced
imul ebx
sar edx, 6
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x4021f0
mov ecx, 0x33ad
jmp 0x402210
mov eax, 0x8ca29c05
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402210
mov edi, 0x2df1
lea ebx, [ebx]
mov eax, 0x67b23a55
imul edi
sar edx, 5
mov edi, edx
shr edi, 0x1f
add edi, edx
jne 0x402230
mov edi, dword [ebp + 0x10]
mov ebx, 0x7707
jmp 0x402250
mov eax, 0x66666667
imul ebx
sar edx, 6
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x402250
push 0x76e132f
lea ebx, [edi + 0x24c]
push ebx
call fcn.00401c50
add esp, 8
xor ecx, ecx
lea esp, [esp]
inc ecx
mov eax, ecx
and eax, 0x80000003
jns 0x40228f
dec eax
or eax, 0xfffffffc
inc eax
jne 0x402293
add ecx, ecx
cmp ecx, 0x36ef
jl 0x402280
mov eax, 0x6ff
mov edx, 0xb0
mov ecx, 0x28
lea ebx, [ebx]
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x4022b0
jmp 0x4022c0
mov eax, 0x4c8f8d29
imul dword [ebp - 0x40]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x40], eax
jne 0x4022c0
mov ebx, 0x6490
lea esp, [esp]
mov eax, 0x78787879
imul ebx
sar edx, 4
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x4022e0
mov eax, dword [ebp + 0xc]
mov ebx, dword [ebp - 0xc]
cdq
and edx, 0xff
mov ecx, 0x22f
lea esi, [edx + eax]
sar esi, 8
jmp 0x402310
mov eax, 0xe070381d
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402310
test esi, esi
je 0x402348
mov edi, dword [ebp + 8]
lea esp, [esp]
push ebx
push 0x100
push edi
call fcn.00403050
add esp, 0xc
add edi, 0x100
dec esi
jne 0x402330
mov eax, 0x3330
mov edx, 0xda
mov ecx, 0x2b
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x402357
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
inc ecx
mov eax, ecx
and eax, 0x80000003
jns 0x402375
dec eax
or eax, 0xfffffffc
inc eax
jne 0x40237a
add ecx, 2
cmp ecx, 0x5f91
jl 0x402366
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret