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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x128
push ebx
push esi
xor esi, esi
push edi
mov edi, 0x4823
mov ecx, 0xdf
mov ebx, 0x5d18
mov dword [ebp - 8], 0x1b0
mov dword [ebp - 4], 0x6de0
mov dword [ebp - 0x38], 0xd4
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x2c], 0x49ca
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x34], 0x68bd
mov dword [ebp - 0x28], 0xba
lea ecx, [ecx]
mov eax, 0xea0ea0eb
imul edi
add edx, edi
sar edx, 5
mov edi, edx
shr edi, 0x1f
add edi, edx
jne 0x401de0
cmp dword [ebp + 8], esi
je 0x4022fc
mov edx, dword [ebp + 0xc]
test edx, edx
je 0x4022fc
mov eax, dword [ebp + 0x10]
lea edi, [eax + 0x148]
mov eax, dword [eax + 0x2b4]
xor eax, dword [edi]
cmp edx, eax
jl 0x4022fc
call fcn.004032f0
mov ecx, dword [ebp + 0x10]
mov dword [ecx + 0x2b8], eax
mov eax, dword [edi]
xor dword [ecx + 0x120], eax
jmp 0x401e40
mov eax, 0x4bda12f7
imul ebx
sar edx, 5
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x401e40
mov eax, dword [ebp + 0xc]
mov ebx, ecx
xor edx, edx
div dword [ebx + 0x120]
mov dword [ebx + 0x30], edi
mov ecx, eax
mov dword [ebx + 0x3c], ecx
mov eax, 0x16d1
lea ecx, [ecx]
dec eax
jne 0x401e70
imul ecx, dword [ebx + 0x120]
xor edi, edi
mov dword [ebx + 0x2d4], ecx
test ecx, ecx
je 0x401ecb
mov esi, dword [ebp + 8]
lea esp, [esp]
mov eax, dword [ebx + 0x30]
inc edi
mov al, byte [eax]
xor byte [edi + esi - 1], al
movzx ecx, byte [edi + esi - 1]
mov eax, dword [ebx + 0x30]
mov dl, byte [eax + 1]
xor dl, cl
mov byte [edi + esi - 1], dl
mov eax, dword [ebx + 0x30]
mov cl, byte [eax + 2]
xor cl, dl
mov byte [edi + esi - 1], cl
mov eax, dword [ebx + 0x30]
mov al, byte [eax + 3]
xor al, cl
mov byte [edi + esi - 1], al
cmp edi, dword [ebx + 0x2d4]
jb 0x401e90
mov esi, 0x4b7c
mov eax, 0x487ede05
imul esi
sar edx, 6
mov esi, edx
shr esi, 0x1f
add esi, edx
jne 0x401ed0
mov eax, dword [ebx + 0x120]
xor edi, edi
mov esi, edi
dec eax
je 0x401fb0
mov eax, dword [ebx + 0x120]
dec eax
push eax
push 1
push ebx
call fcn.00403160
mov ecx, dword [ebp + 0x10]
add esp, 0xc
mov bl, al
xor eax, eax
mov edi, edi
cmp bl, byte [eax + ecx + 0x168]
je 0x401f20
inc eax
cmp eax, edi
jbe 0x401f10
jmp 0x401f22
xor bl, bl
mov ecx, dword [ebp - 8]
test ecx, ecx
je 0x401f46
lea esp, [esp]
mov eax, 0x2fa0be83
imul ecx
sar edx, 3
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401f30
mov dword [ebp - 8], ecx
mov eax, 0x1b09
jmp 0x401f50
dec eax
jne 0x401f50
cmp esi, 0x463a
jge 0x401f8c
jmp 0x401f60
inc esi
mov eax, 0x92492493
imul esi
add edx, esi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax*8]
sub ecx, eax
mov eax, esi
sub eax, ecx
jne 0x401f84
inc esi
cmp esi, 0x463a
jl 0x401f60
test bl, bl
je 0x401f9b
mov eax, dword [ebp + 0x10]
inc edi
mov byte [edi + eax + 0x167], bl
mov ebx, dword [ebp + 0x10]
mov eax, dword [ebx + 0x120]
dec eax
cmp edi, eax
jb 0x401ef4
lea ecx, [ecx]
mov eax, 0x2e8ba2e9
imul dword [ebp - 4]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 4], eax
jne 0x401fb0
push 0x75
lea eax, [ebp - 0xaf]
push 0
push eax
mov byte [ebp - 0xb0], 0
call fcn.00402fe0
lea eax, [ebp - 0xb0]
push eax
call fcn.00402920
mov esi, dword [ebp + 0x10]
add esi, 0x6c
mov dword [ebp - 0x20], 0x4f2035be
mov dword [ebp - 0x1c], 0x9e855ab0
movq xmm0, qword [ebp - 0x20]
movq qword [esi], xmm0
mov dword [ebp - 0x18], 0x7428ae97
mov dword [ebp - 0x14], 0xdc6d5f9a
movq xmm0, qword [ebp - 0x18]
movq qword [esi + 8], xmm0
mov dword [ebp - 0x10], 0xfb889679
mov dword [ebp - 0xc], 0
movq xmm0, qword [ebp - 0x10]
add esp, 0x10
mov dword [ebp - 8], esi
movq qword [esi + 0x10], xmm0
xor eax, eax
nop
xor byte [ebp + eax - 0xb0], 0xad
inc eax
cmp eax, 0x74
jb 0x402040
mov eax, 0x17ef
mov edx, 0xfb
mov ecx, 0x9d
lea ecx, [ecx]
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x402060
mov edi, 0x7a4d
lea ecx, [ecx]
mov eax, 0x27932b49
imul edi
sar edx, 5
mov edi, edx
shr edi, 0x1f
add edi, edx
jne 0x402070
mov edi, dword [ebp + 0x10]
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 0x4020a1
inc ebx
cmp ebx, 0x536b
jl 0x402088
xor ecx, ecx
jmp 0x4020b0
inc ecx
mov eax, ecx
and eax, 0x80000001
jns 0x4020bf
dec eax
or eax, 0xfffffffe
inc eax
jne 0x4020c2
inc ecx
cmp ecx, 0x59c3
jl 0x4020b0
xor ecx, ecx
mov dword [ebp - 4], ecx
cmp dword [edi + 0x120], ecx
jbe 0x402229
mov ebx, 0x34
mov edx, dword [ebp - 0x38]
mov eax, 0x4d7d
cmp edx, 0x34
cmovg edx, ebx
dec eax
jne 0x4020e8
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x38], edx
inc eax
cmp eax, 0xac7
jl 0x4020f7
mov ebx, dword [ebp - 0x2c]
mov dword [ebp - 0x30], eax
test ebx, ebx
je 0x402126
lea esp, [esp]
mov eax, 0x63e7063f
imul ebx
sar edx, 4
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x402110
mov dword [ebp - 0x2c], ebx
movzx ebx, byte [ecx + edi + 0x168]
imul ebx, dword [edi + 0x3c]
add ebx, dword [ebp + 8]
push 0x75
lea eax, [ebp - 0x127]
push 0
push eax
mov dword [edi + 0x34], ebx
mov byte [ebp - 0x128], 0
call fcn.00402fe0
push 0x75
lea eax, [ebp - 0x128]
push ebx
push eax
call fcn.00402fb0
mov ecx, 0x1d
lea esi, [ebp - 0xb0]
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
mov edi, dword [ebp + 0x10]
add esp, 0x18
mov eax, dword [edi + 0x34]
call eax
mov eax, dword [ebp - 0x24]
jmp 0x402180
inc eax
cmp eax, 0x3840
jl 0x402180
mov dword [ebp - 0x24], eax
push 0x75
lea eax, [ebp - 0x128]
push eax
push ebx
call fcn.00402fb0
mov ecx, dword [ebp - 0x34]
add esp, 0xc
test ecx, ecx
je 0x4021bc
mov eax, 0x82082083
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4021a4
mov dword [ebp - 0x34], ecx
xor esi, esi
cmp dword [edi + 0x3c], esi
jbe 0x4021fb
mov eax, dword [edi + 0x30]
inc esi
mov al, byte [eax + 3]
xor byte [esi + ebx - 1], al
movzx ecx, byte [esi + ebx - 1]
mov eax, dword [edi + 0x30]
mov dl, byte [eax + 2]
xor dl, cl
mov byte [esi + ebx - 1], dl
mov eax, dword [edi + 0x30]
mov cl, byte [eax + 1]
xor cl, dl
mov byte [esi + ebx - 1], cl
mov eax, dword [edi + 0x30]
mov al, byte [eax]
xor al, cl
mov byte [esi + ebx - 1], al
cmp esi, dword [edi + 0x3c]
jb 0x4021c3
mov ecx, dword [ebp - 0x28]
mov eax, 0x1a7d
mov edx, 0xa7
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x402208
mov dword [ebp - 0x28], ecx
mov ecx, dword [ebp - 4]
inc ecx
mov dword [ebp - 4], ecx
lea ebx, [eax + 0x34]
cmp ecx, dword [edi + 0x120]
jb 0x4020e0
mov esi, 0xc0d
mov edi, edi
mov eax, 0x55555556
imul esi
mov esi, edx
shr esi, 0x1f
add esi, edx
jne 0x402230
call fcn.004032f0
mov ecx, eax
mov dword [edi + 0x290], ecx
mov eax, 0x4a80
mov ebx, 8
lea esi, [edi + 0x6c]
mov edx, 0xea
nop
cmp edx, ebx
cmovl edx, ebx
dec eax
jne 0x402260
add ecx, 0xfffffffe
push ecx
push dword [edi + 0x2b8]
call fcn.00401140
push 0x2188ace
push esi
call fcn.00401cc0
mov eax, dword [ebp + 0xc]
cdq
and edx, 0xff
add esp, 0x10
lea esi, [edx + eax]
sar esi, 8
test esi, esi
je 0x4022b8
mov edi, dword [ebp - 8]
mov ebx, dword [ebp + 8]
nop
push edi
push 0x100
push ebx
call fcn.00403040
add esp, 0xc
add ebx, 0x100
dec esi
jne 0x4022a0
xor ecx, ecx
lea ebx, [ebx]
inc ecx
mov eax, ecx
and eax, 0x80000001
jns 0x4022cf
dec eax
or eax, 0xfffffffe
inc eax
jne 0x4022d2
inc ecx
cmp ecx, 0x76a9
jl 0x4022c0
mov ecx, 0x6230
nop
mov eax, 0x82082083
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4022e0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, 0x7d25
mov edx, 0x77
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x402306
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret