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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xd8
push esi
xor esi, esi
push edi
mov ecx, 0x177c
lea edi, [esi + 0xc]
mov dword [ebp - 0x44], 0xe4
mov dword [ebp - 8], esi
mov dword [ebp - 0x4c], 0x2958
mov dword [ebp - 0x48], 0x512
mov dword [ebp - 0x50], 0xb4
mov dword [ebp - 0x3c], 0x3907
mov dword [ebp - 4], 0x570a
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x34], 0x356f
mov dword [ebp - 0x38], 0x12f4
mov dword [ebp - 0xc], esi
mov dword [ebp - 0x40], 0x3d5f
lea ecx, [ecx]
mov eax, 0x487ede05
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401d00
cmp dword [ebp + 8], esi
je 0x402329
mov ecx, dword [ebp + 0xc]
test ecx, ecx
je 0x402329
mov edx, dword [ebp + 0x10]
push ebx
mov eax, dword [edx + 0x1f0]
xor eax, dword [edx + 0x170]
lea ebx, [edx + 0x170]
cmp ecx, eax
jl 0x402328
call fcn.00403260
mov edx, dword [ebp + 0x10]
mov dword [edx + 0x244], eax
mov eax, dword [ebx]
xor dword [edx + 0x224], eax
mov ecx, dword [edx + 0x224]
mov eax, dword [ebp + 0xc]
mov dword [edx + 0x238], ebx
xor edx, edx
div ecx
mov edx, dword [ebp + 0x10]
xor ebx, ebx
imul ecx, eax
mov dword [edx + 0x1f8], eax
mov dword [edx + 0x264], ecx
test ecx, ecx
je 0x401de0
mov esi, dword [ebp + 8]
mov edi, edx
jmp 0x401d90
mov eax, dword [edi + 0x238]
inc ebx
mov al, byte [eax]
xor byte [ebx + esi - 1], al
movzx ecx, byte [ebx + esi - 1]
mov eax, dword [edi + 0x238]
mov dl, byte [eax + 1]
xor dl, cl
mov byte [ebx + esi - 1], dl
mov eax, dword [edi + 0x238]
mov cl, byte [eax + 2]
xor cl, dl
mov byte [ebx + esi - 1], cl
mov eax, dword [edi + 0x238]
mov al, byte [eax + 3]
xor al, cl
mov byte [ebx + esi - 1], al
cmp ebx, dword [edi + 0x264]
jb 0x401d90
xor esi, esi
lea edi, [esi + 0xc]
lea esp, [esp]
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 0x401dfe
add esi, 3
jmp 0x401dff
inc esi
cmp esi, 0x65de
jl 0x401de0
mov eax, 0x7f2c
mov ecx, 0x8e
cmp edi, ecx
cmovl edi, ecx
dec eax
jne 0x401e11
mov edi, dword [ebp + 0x10]
xor esi, esi
mov eax, dword [edi + 0x224]
dec eax
je 0x401f6a
mov edx, 0x99
mov ecx, dword [ebp - 0x44]
mov eax, 0x3467
jmp 0x401e40
cmp ecx, 0x99
cmovl ecx, edx
dec eax
jne 0x401e40
mov dword [ebp - 0x44], ecx
mov ecx, dword [ebp - 8]
cmp ecx, 0x7ed2
jge 0x401e7f
lea ebx, [ebx]
inc ecx
mov eax, ecx
and eax, 0x80000007
jns 0x401e6f
dec eax
or eax, 0xfffffff8
inc eax
jne 0x401e74
add ecx, 2
cmp ecx, 0x7ed2
jl 0x401e60
mov dword [ebp - 8], ecx
mov eax, dword [edi + 0x224]
dec eax
push eax
push 1
push edi
call fcn.004030e0
mov ebx, dword [ebp - 0x4c]
add esp, 0xc
mov cl, al
test ebx, ebx
je 0x401eb6
jmp 0x401ea0
mov eax, 0x2c0b02c1
imul ebx
sar edx, 5
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x401ea0
mov dword [ebp - 0x4c], ebx
mov ebx, dword [ebp - 0x48]
test ebx, ebx
je 0x401ed8
lea ecx, [ecx]
mov eax, 0x8dda5203
imul ebx
add edx, ebx
sar edx, 7
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x401ec0
mov dword [ebp - 0x48], ebx
xor eax, eax
lea ebx, [ebx]
cmp cl, byte [edi + eax + 0x68]
je 0x401eed
inc eax
cmp eax, esi
jbe 0x401ee0
jmp 0x401eef
xor cl, cl
mov edx, dword [ebp - 0x50]
mov eax, 0x6776
mov ebx, 0x35
lea esp, [esp]
cmp edx, ebx
cmovg edx, ebx
dec eax
jne 0x401f00
mov ebx, dword [ebp - 0x3c]
mov dword [ebp - 0x50], edx
test ebx, ebx
je 0x401f2a
mov eax, 0x8fb823ef
imul ebx
add edx, ebx
sar edx, 5
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x401f12
mov dword [ebp - 0x3c], ebx
test cl, cl
je 0x401f33
mov byte [edi + esi + 0x68], cl
inc esi
mov ecx, dword [ebp - 4]
test ecx, ecx
je 0x401f56
lea ebx, [ebx]
mov eax, 0x22b63cbf
imul ecx
sar edx, 3
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401f40
mov dword [ebp - 4], ecx
mov eax, dword [edi + 0x224]
dec eax
mov edx, 0x99
cmp esi, eax
jb 0x401e30
mov eax, 0x6f40
mov edx, 0x90
mov ecx, 0x57
lea esp, [esp]
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x401f80
xor ebx, ebx
lea ebx, [ebx]
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 0x401fae
inc ebx
cmp ebx, 0x3a97
jl 0x401f90
mov ecx, 0x23e3
jmp 0x401fc0
mov eax, 0xad602b59
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401fc0
push 0x42
push ecx
lea eax, [ebp - 0x93]
push eax
mov byte [ebp - 0x94], cl
call fcn.00402f70
lea eax, [ebp - 0x94]
push eax
call fcn.00402960
add esp, 0x10
mov eax, 0x78d
mov edx, 0x1d
mov ecx, 0x2f
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x402008
xorps xmm0, xmm0
lea ebx, [edi + 0x28]
movq qword [ebp - 0x18], xmm0
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x2c], 0xa522b66
mov dword [ebp - 0x28], 0x80e99b4e
movq xmm0, qword [ebp - 0x2c]
movq qword [ebx], xmm0
mov dword [ebp - 0x24], 0x21a95768
mov dword [ebp - 0x20], 0x564777aa
movq xmm0, qword [ebp - 0x24]
movq qword [ebx + 8], xmm0
mov dword [ebp - 0x1c], 0x5fb4c6fe
movq xmm0, qword [ebp - 0x1c]
xor cl, cl
movq qword [ebx + 0x10], xmm0
mov dword [ebx + 0x18], eax
mov byte [ebx + 0x1c], cl
xor eax, eax
jmp 0x402070
xor byte [ebp + eax - 0x94], 0x43
inc eax
cmp eax, 0x41
jb 0x402070
mov edi, 0x134e
mov eax, 0x22b63cbf
imul edi
sar edx, 5
mov edi, edx
shr edi, 0x1f
add edi, edx
jne 0x402083
mov edi, dword [ebp + 0x10]
mov eax, 0x6eaa
mov edx, 0x36
mov ecx, 0x48
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x4020a8
mov dword [ebp - 4], eax
cmp dword [edi + 0x224], eax
jbe 0x40221a
nop
movzx ebx, byte [edi + eax + 0x68]
imul ebx, dword [edi + 0x1f8]
mov esi, dword [ebp - 0x30]
add ebx, dword [ebp + 8]
cmp esi, 0x2b26
jge 0x4020f7
mov ecx, 0x2b25
sub ecx, esi
mov eax, 0xcccccccd
mul ecx
shr edx, 3
lea eax, [edx + edx*4]
lea esi, [esi + eax*2]
add esi, 0xa
mov dword [ebp - 0x30], esi
mov ecx, dword [ebp - 0x34]
test ecx, ecx
je 0x402116
mov edi, edi
mov eax, 0x4ec4ec4f
imul ecx
sar edx, 2
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402100
mov dword [ebp - 0x34], ecx
mov ecx, dword [ebp - 0x38]
test ecx, ecx
je 0x402136
lea ecx, [ecx]
mov eax, 0x3e0f83e1
imul ecx
sar edx, 3
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402120
mov dword [ebp - 0x38], ecx
push 0x42
lea eax, [ebp - 0xd7]
push 0
push eax
mov dword [edi + 0x48], ebx
mov byte [ebp - 0xd8], 0
call fcn.00402f70
push 0x42
lea eax, [ebp - 0xd8]
push ebx
push eax
call fcn.00402f40
mov ecx, 0x10
lea esi, [ebp - 0x94]
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
mov edi, dword [ebp + 0x10]
add esp, 0x18
mov eax, dword [edi + 0x48]
call eax
mov ecx, dword [ebp - 0xc]
cmp ecx, 0x6415
jge 0x4021a2
inc ecx
mov eax, ecx
and eax, 0x80000007
jns 0x402194
dec eax
or eax, 0xfffffff8
inc eax
jne 0x402197
inc ecx
cmp ecx, 0x6415
jl 0x402185
mov dword [ebp - 0xc], ecx
push 0x42
lea eax, [ebp - 0xd8]
push eax
push ebx
call fcn.00402f40
xor esi, esi
add esp, 0xc
cmp dword [edi + 0x1f8], esi
jbe 0x402207
mov edi, edi
mov eax, dword [edi + 0x238]
inc esi
mov al, byte [eax + 3]
xor byte [esi + ebx - 1], al
movzx ecx, byte [esi + ebx - 1]
mov eax, dword [edi + 0x238]
mov dl, byte [eax + 2]
xor dl, cl
mov byte [esi + ebx - 1], dl
mov eax, dword [edi + 0x238]
mov cl, byte [eax + 1]
xor cl, dl
mov byte [esi + ebx - 1], cl
mov eax, dword [edi + 0x238]
mov al, byte [eax]
xor al, cl
mov byte [esi + ebx - 1], al
cmp esi, dword [edi + 0x1f8]
jb 0x4021c0
mov eax, dword [ebp - 4]
inc eax
mov dword [ebp - 4], eax
cmp eax, dword [edi + 0x224]
jb 0x4020c0
call fcn.00403260
mov dword [edi + 0x320], eax
add eax, 0xfffffffe
push eax
push dword [edi + 0x244]
call fcn.004010f0
add esp, 8
mov ebx, 0x1fcd
lea esp, [esp]
mov eax, 0x2e8ba2e9
imul ebx
sar edx, 4
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x402240
push 0x2b7c052
lea ebx, [edi + 0x28]
push ebx
call fcn.00401be0
mov eax, dword [ebp + 0xc]
cdq
and edx, 0xff
add esp, 8
lea esi, [edx + eax]
sar esi, 8
test esi, esi
je 0x402298
mov edi, dword [ebp + 8]
jmp 0x402280
push ebx
push 0x100
push edi
call fcn.00402fd0
add esp, 0xc
add edi, 0x100
dec esi
jne 0x402280
mov ecx, 0x62bc
lea ecx, [ecx]
mov eax, 0x88888889
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4022a0
mov eax, 0x3159721f
imul dword [ebp - 0x40]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x40], eax
jne 0x4022b5
mov ecx, 0xb39
mov eax, 0xdd67c8a7
imul ecx
add edx, ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4022d1
xor ebx, ebx
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 0x402306
inc ebx
cmp ebx, 0x401d
jl 0x4022e8
mov ecx, 0x11f6
mov eax, 0xbfa02fe9
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402313
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret