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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xd8
push ebx
xor eax, eax
push esi
xor esi, esi
push edi
mov edi, 0x777c
mov dword [ebp - 0x3c], 0x628a
mov dword [ebp - 0x48], 0x3f3d
mov dword [ebp - 0x10], esi
mov dword [ebp - 8], 0xaa0
mov dword [ebp - 0xc], 0x1d22
mov dword [ebp - 0x50], 0x3580
mov dword [ebp - 0x30], 0x268c
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x38], 0x4a5
mov dword [ebp - 0x40], eax
xor 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 0x401d12
inc ebx
cmp ebx, 0x20f1
jl 0x401cf7
cmp dword [ebp + 8], esi
je 0x4023a7
mov edx, dword [ebp + 0xc]
test edx, edx
je 0x4023a7
mov eax, dword [ebp + 0x10]
lea ecx, [eax + 0x204]
mov eax, dword [eax + 0x284]
xor eax, dword [ecx]
cmp edx, eax
jl 0x4023a7
call fcn.004034d0
mov esi, dword [ebp + 0x10]
mov ecx, 0xbe8
mov dword [esi + 0x78], eax
mov eax, 0x94458095
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401d57
lea esp, [esp]
mov eax, ecx
and eax, 0x80000007
jns 0x401d7e
dec eax
or eax, 0xfffffff8
inc eax
jne 0x401d85
add ecx, 3
jmp 0x401d86
inc ecx
cmp ecx, 0x2f16
jl 0x401d70
mov eax, dword [esi + 0x204]
xor dword [esi + 0x1c], eax
mov edi, dword [esi + 0x1c]
xor esi, esi
lea esp, [esp]
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 0x401db9
inc esi
cmp esi, 0x5f0c
jl 0x401da0
mov ecx, dword [ebp + 0x10]
xor esi, esi
lea eax, [ecx + 0x204]
mov dword [ecx + 0x1f0], eax
inc esi
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 0x401ded
inc esi
cmp esi, 0x1a51
jl 0x401dd2
mov ebx, 0x5e22
lea ebx, [ebx]
mov eax, 0x66666667
imul ebx
sar edx, 6
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x401e00
mov eax, dword [ebp + 0xc]
xor edx, edx
div edi
mov ecx, dword [ebp + 0x10]
xor esi, esi
imul edi, eax
mov dword [ecx + 0x424], edi
test edi, edi
mov dword [ecx + 0x84], eax
mov edi, ecx
je 0x401e80
mov ebx, dword [ebp + 8]
mov eax, dword [edi + 0x1f0]
inc esi
mov al, byte [eax]
xor byte [esi + ebx - 1], al
movzx ecx, byte [esi + ebx - 1]
mov eax, dword [edi + 0x1f0]
mov dl, byte [eax + 1]
xor dl, cl
mov byte [esi + ebx - 1], dl
mov eax, dword [edi + 0x1f0]
mov cl, byte [eax + 2]
xor cl, dl
mov byte [esi + ebx - 1], cl
mov eax, dword [edi + 0x1f0]
mov al, byte [eax + 3]
xor al, cl
mov byte [esi + ebx - 1], al
cmp esi, dword [edi + 0x424]
jb 0x401e37
xor ebx, ebx
mov eax, 0x4d94
mov edx, 0xf3
mov ecx, 0xc
nop
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x401e90
mov eax, 0x3883
mov edx, 0xec
mov ecx, 0x8c
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x401ea7
xor ecx, ecx
inc ecx
mov eax, ecx
and eax, 0x80000007
jns 0x401ec0
dec eax
or eax, 0xfffffff8
inc eax
jne 0x401ec5
add ecx, 2
cmp ecx, 0x403e
jl 0x401eb1
mov ebx, 0xc8d
mov eax, 0x19c2d14f
imul ebx
sar edx, 4
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x401ed2
mov eax, 0xdbeb61f
imul dword [ebp - 0x3c]
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x3c], eax
jne 0x401ee5
mov ebx, 0x3c71
mov eax, 0x4c8f8d29
imul ebx
sar edx, 5
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x401f01
mov eax, 0x3e0f83e1
imul dword [ebp - 0x48]
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x48], eax
jne 0x401f14
mov ecx, 0x6594
mov eax, 0x964fda6d
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401f30
mov eax, dword [edi + 0x1c]
xor esi, esi
dec eax
je 0x402001
mov eax, dword [edi + 0x1c]
dec eax
push eax
push 1
push edi
call fcn.00403330
add esp, 0xc
mov byte [ebp - 1], al
xor ecx, ecx
cmp al, byte [edi + ecx + 0x8c]
je 0x401f76
inc ecx
cmp ecx, esi
jbe 0x401f66
jmp 0x401f7a
mov byte [ebp - 1], 0
cmp ebx, 0x6f91
jge 0x401f9c
inc ebx
mov eax, ebx
and eax, 0x80000001
jns 0x401f91
dec eax
or eax, 0xfffffffe
inc eax
jne 0x401f94
inc ebx
cmp ebx, 0x6f91
jl 0x401f82
mov edx, dword [ebp - 0x10]
cmp edx, 0x3293
jge 0x401fc7
mov ecx, 0x3292
sub ecx, edx
mov eax, 0xcccccccd
mul ecx
shr edx, 3
lea eax, [edx + edx*4]
mov edx, dword [ebp - 0x10]
lea edx, [edx + eax*2]
add edx, 0xa
mov dword [ebp - 0x10], edx
mov ecx, dword [ebp - 8]
test ecx, ecx
je 0x401fe6
mov edi, edi
mov eax, 0x44d72045
imul ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401fd0
mov dword [ebp - 8], ecx
mov al, byte [ebp - 1]
test al, al
je 0x401ff5
mov byte [edi + esi + 0x8c], al
inc esi
mov eax, dword [edi + 0x1c]
dec eax
cmp esi, eax
jb 0x401f51
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 0x40201e
inc ebx
cmp ebx, 0x6519
jl 0x402003
mov edi, 0x2f9e
jmp 0x402030
mov eax, 0x4c8f8d29
imul edi
sar edx, 6
mov edi, edx
shr edi, 0x1f
add edi, edx
jne 0x402030
mov edi, dword [ebp + 0x10]
jmp 0x402050
mov eax, 0x288df0cb
imul dword [ebp - 0xc]
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0xc], eax
jne 0x402050
push 0x43
lea eax, [ebp - 0x93]
push 0
push eax
mov byte [ebp - 0x94], 0
call fcn.004031a0
lea eax, [ebp - 0x94]
push eax
call fcn.00402c30
lea ebx, [edi + 0x218]
mov dword [ebp - 0x2c], 0xa681faff
mov dword [ebp - 0x28], 0xd39bdcd2
movq xmm0, qword [ebp - 0x2c]
movq qword [ebx], xmm0
mov dword [ebp - 0x24], 0xa06523d1
mov dword [ebp - 0x20], 0xc7b3f1b8
movq xmm0, qword [ebp - 0x24]
movq qword [ebx + 8], xmm0
mov dword [ebp - 0x1c], 0x1d9a3f7f
mov dword [ebp - 0x18], 0
movq xmm0, qword [ebp - 0x1c]
add esp, 0x10
movq qword [ebx + 0x10], xmm0
mov dword [ebp - 8], ebx
mov byte [ebx + 0x18], 0
xor eax, eax
xor byte [ebp + eax - 0x94], 0x82
inc eax
cmp eax, 0x42
jb 0x4020e3
xor eax, eax
mov dword [ebp - 0xc], eax
cmp dword [edi + 0x1c], eax
jbe 0x4022ab
nop
movzx ebx, byte [edi + eax + 0x8c]
imul ebx, dword [edi + 0x84]
mov ecx, dword [ebp - 0x50]
add ebx, dword [ebp + 8]
test ecx, ecx
je 0x402138
lea esp, [esp]
mov eax, 0xb81702e1
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402120
mov dword [ebp - 0x50], ecx
mov ecx, dword [ebp - 0x30]
test ecx, ecx
je 0x402158
nop
mov eax, 0xb21642c9
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402140
mov dword [ebp - 0x30], ecx
mov esi, dword [ebp - 0x4c]
mov dword [edi + 0x444], ebx
cmp esi, 0x3594
jge 0x402185
mov ecx, 0x3593
sub ecx, esi
mov eax, 0xaaaaaaab
mul ecx
shr edx, 1
lea eax, [edx + esi]
lea eax, [eax + edx*2]
add eax, 3
mov dword [ebp - 0x4c], eax
push 0x43
lea eax, [ebp - 0xd7]
push 0
push eax
mov byte [ebp - 0xd8], 0
call fcn.004031a0
push 0x43
lea eax, [ebp - 0xd8]
push ebx
push eax
call fcn.00403170
mov ecx, 0x10
lea esi, [ebp - 0x94]
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov esi, dword [ebp - 0x44]
add esp, 0x18
cmp esi, 0x4858
jge 0x4021e7
mov ecx, 0x4857
sub ecx, esi
mov eax, 0xcccccccd
mul ecx
shr edx, 2
lea eax, [edx + esi]
lea eax, [eax + edx*4]
add eax, 5
mov dword [ebp - 0x44], eax
mov edi, dword [ebp + 0x10]
mov eax, dword [edi + 0x444]
call eax
mov eax, dword [ebp - 0x34]
inc eax
cmp eax, 5
jl 0x4021f5
mov dword [ebp - 0x34], eax
push 0x43
lea eax, [ebp - 0xd8]
push eax
push ebx
call fcn.00403170
xor esi, esi
add esp, 0xc
cmp dword [edi + 0x84], esi
jbe 0x402267
lea ebx, [ebx]
mov eax, dword [edi + 0x1f0]
inc esi
mov al, byte [eax + 3]
xor byte [esi + ebx - 1], al
movzx ecx, byte [esi + ebx - 1]
mov eax, dword [edi + 0x1f0]
mov dl, byte [eax + 2]
xor dl, cl
mov byte [esi + ebx - 1], dl
mov eax, dword [edi + 0x1f0]
mov cl, byte [eax + 1]
xor cl, dl
mov byte [esi + ebx - 1], cl
mov eax, dword [edi + 0x1f0]
mov al, byte [eax]
xor al, cl
mov byte [esi + ebx - 1], al
cmp esi, dword [edi + 0x84]
jb 0x402220
mov ecx, dword [ebp - 0x38]
test ecx, ecx
je 0x402286
mov edi, edi
mov eax, 0x6bca1af3
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402270
mov dword [ebp - 0x38], ecx
mov eax, dword [ebp - 0x40]
lea esp, [esp]
inc eax
cmp eax, 0x6f9b
jl 0x402290
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 0xc]
inc eax
mov dword [ebp - 0xc], eax
cmp eax, dword [edi + 0x1c]
jb 0x402100
call fcn.004034d0
mov dword [edi + 0x5c], eax
add eax, 0xfffffffe
push eax
push dword [edi + 0x78]
call fcn.00401130
add esp, 8
mov ecx, 0x6cdf
mov eax, 0xf6603d99
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4022c7
mov ebx, 0xae5
mov eax, 0x4c8f8d29
imul ebx
sar edx, 5
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x4022e1
push 0x17f4e3d2
lea ebx, [edi + 0x218]
push ebx
call fcn.00401c10
add esp, 8
mov ebx, 0x624a
lea ecx, [ecx]
mov eax, 0x151d07eb
imul ebx
sar edx, 3
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x402310
mov ebx, dword [ebp - 8]
xor esi, esi
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 0x402349
add esi, esi
jmp 0x402352
mov eax, esi
cdq
sub eax, edx
sar eax, 1
add esi, eax
cmp esi, 0x70f4
jl 0x402328
mov eax, dword [ebp + 0xc]
cdq
and edx, 0xff
lea esi, [edx + eax]
sar esi, 8
test esi, esi
je 0x402389
mov edi, dword [ebp + 8]
push ebx
push 0x100
push edi
call fcn.00403200
add esp, 0xc
add edi, 0x100
dec esi
jne 0x402371
mov eax, 0x4f67
mov edx, 0x28
mov ecx, 0x59
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x402398
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
inc esi
mov eax, esi
and eax, 0x80000007
jns 0x4023b6
dec eax
or eax, 0xfffffff8
inc eax
jne 0x4023b9
inc esi
cmp esi, 0x4d95
jl 0x4023a7
mov eax, 0x2fa0be83
imul edi
sar edx, 5
mov edi, edx
shr edi, 0x1f
add edi, edx
jne 0x4023c1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret