Function at 0x406220
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3a0
push ebx
push esi
push edi
push 0x150404
call fcn.0082fdf8
fld qword [0x882578]
fld qword [0x882578]
add esp, 4
mov ebx, eax
mov ecx, 0x93
xor eax, eax
lea edi, [ebp - 0x39c]
mov dword [ebp - 0x3a0], 0
mov dword [ebp - 0x48], ebx
mov dword [ebp - 0x44], 1
rep stosd dword es:[edi], eax
fld st(0)
fmul st(1)
fld st(0)
fmul qword [0x8895b8]
fsub st(1)
fxch st(1)
fmul qword [0x8895b0]
fadd qword [0x8895a8]
fdivp st(1)
faddp st(2)
fld st(1)
fcomp qword [0x8895a0]
fnstsw ax
test ah, 0x41
jne 0x4062a3
fld st(0)
fmul qword [0x889598]
fsubp st(2)
fadd qword [0x8894a0]
fcom qword [0x889590]
fnstsw ax
test ah, 1
jne 0x40626a
fxch st(1)
fst qword [ebp - 0x50]
fxch st(1)
fstp st(0)
fcomp qword [0x882578]
fnstsw ax
test ah, 1
je 0x4062f8
dec ebp
bound ebp, qword [esi + 0x56]
cmp ebx, dword [edx + 0x35]
jbe 0x40632e
pop esp
js 0x40632e
dec esi
pop esi
dec ebp
inc eax
je 0x40630e
and al, 0x5c
cmp al, 0x3a
jl 0x40634b
and dword [ebp + 0x7a], ebx
xor al, byte [edx + 0x1d]
loopne 0x406301
ljmp 0xe91b:0xe31be114
mov dword [ebp - 0x20], 0x4062e9
mov dword [ebp - 0x34], 0x4062cc
xor eax, eax
int3
mov byte [ebp + eax - 0x150], al
inc eax
cmp eax, 0x100
inc dword [eax + 0x3d]
add byte [ecx], al
add byte [eax], al
jb 0x406308
fld qword [ebp - 0x50]
mov byte [ebp - 8], 0
mov eax, 0xff
mov esi, dword [ebp - 8]
xor edi, edi
mov dword [ebp - 0x1c], eax
mov ebx, 1
add byte [eax], al
mov dword [ebp - 0xc], 0
cmp eax, ebx
jbe 0x406343
lea ebx, [ebx + ebx + 1]
cmp ebx, eax
jb 0x40633b
cmp edi, 3
ja case.default.0x406348
jmp dword [edi*4 + 0x406b04]
add al, 0x6b
inc eax
add cl, bl
fld st(0)
and esi, 0xff
fld st(0)
and esi, 0xff
call fcn.0082fed4
mov cl, byte [ebp + esi - 0x150]
jmp 0x4063c4
fld st(0)
and esi, 0xff
call fcn.0082fed4
mov cl, byte [ebp + esi - 0x150]
shr eax, 8
jmp 0x4063c4
fld st(0)
and esi, 0xff
call fcn.0082fed4
mov cl, byte [ebp + esi - 0x150]
shr eax, 0x10
jmp 0x4063c4
fld st(0)
and esi, 0xff
call fcn.0082fed4
mov cl, byte [ebp + esi - 0x150]
shr eax, 0x18
jmp 0x4063c4
mov eax, dword [ebp - 0x34]
and esi, 0xff
mov cl, byte [eax + edi - 4]
mov al, byte [ebp + esi - 0x150]
add cl, al
inc edi
cmp edi, 0x21
mov byte [ebp - 8], cl
jb 0x4063d7
xor edi, edi
add cl, 0x21
mov byte [ebp - 8], cl
mov esi, dword [ebp - 8]
mov eax, dword [ebp - 0xc]
mov edx, esi
and edx, 0xff
and edx, ebx
inc eax
cmp eax, 0xb
mov dword [ebp - 0xc], eax
jbe 0x4063f7
mov eax, edx
xor edx, edx
div dword [ebp - 0x1c]
mov eax, dword [ebp - 0x1c]
cmp eax, edx
jb 0x406343
je 0x406432
mov ecx, dword [ebp - 0x1c]
lea eax, [ebp + edx - 0x150]
mov bl, byte [ebp + ecx - 0x150]
lea edx, [ebp + ecx - 0x150]
mov cl, byte [eax]
xor bl, cl
mov byte [edx], bl
mov cl, bl
mov bl, byte [eax]
xor bl, cl
mov byte [eax], bl
mov cl, byte [edx]
mov al, bl
xor cl, al
mov byte [edx], cl
mov eax, dword [ebp - 0x1c]
dec eax
mov dword [ebp - 0x1c], eax
jne 0x40632b
mov edi, dword [ebp - 0x20]
mov dl, byte [ebp - 0x149]
and esi, 0xff
mov byte [ebp - 0x28], dl
mov dl, byte [edi + 1]
mov bl, byte [ebp - 0x14d]
mov al, byte [ebp + esi - 0x150]
sub dl, 0x11
mov byte [ebp - 0x24], al
xor eax, eax
mov al, byte [edi]
mov cl, byte [ebp - 0x14b]
add al, 2
shl al, 4
or al, dl
mov byte [ebp - 1], al
mov eax, dword [ebp - 0x24]
and eax, 0xff
fstp st(0)
mov dl, byte [ebp + eax - 0x150]
lea esi, [ebp + eax - 0x150]
mov byte [ebp - 0x10], dl
mov edx, dword [ebp - 0x14f]
mov eax, edx
and eax, 0xff
mov al, byte [ebp + eax - 0x150]
add al, bl
inc dl
mov byte [ebp - 0x2c], al
mov byte [ebp - 0x14], dl
mov edx, dword [ebp - 0x2c]
and edx, 0xff
mov bl, byte [ebp + edx - 0x150]
lea edx, [ebp + edx - 0x150]
mov byte [esi], bl
mov ebx, dword [ebp - 0x28]
and ebx, 0xff
mov dword [ebp - 0x20], edx
lea ebx, [ebp + ebx - 0x150]
mov dword [ebp - 0x18], ebx
mov bl, byte [ebx]
mov byte [edx], bl
mov edx, dword [ebp - 0x14]
mov ebx, dword [ebp - 0x18]
and edx, 0xff
lea edx, [ebp + edx - 0x150]
mov dword [ebp - 0xc], edx
mov dl, byte [edx]
mov byte [ebx], dl
mov ebx, dword [ebp - 0xc]
mov dl, byte [ebp - 0x10]
mov byte [ebx], dl
mov edx, dword [ebp - 0x10]
and edx, 0xff
mov dword [ebp - 8], edx
mov bl, byte [ebp + edx - 0x150]
add cl, bl
mov bl, byte [esi]
mov esi, dword [ebp - 0x18]
mov byte [ebp - 0x30], cl
mov edx, dword [ebp - 0x30]
and edx, 0xff
mov dl, byte [ebp + edx - 0x150]
add edx, ebx
mov bl, byte [esi]
add edx, ebx
mov esi, dword [ebp - 8]
and edx, 0xff
xor ebx, ebx
mov bl, byte [ebp + edx - 0x150]
mov edx, dword [ebp - 0x20]
mov dl, byte [edx]
mov bl, byte [ebp + ebx - 0x150]
add edx, esi
and edx, 0xff
xor bl, byte [ebp + edx - 0x150]
mov dl, byte [ebp - 1]
mov byte [ebp - 0x24], dl
xor bl, dl
mov dl, byte [edi + 2]
mov byte [ebp - 0x28], bl
mov bl, byte [edi + 3]
add dl, 2
shl dl, 4
sub bl, 0x11
or dl, bl
mov byte [ebp - 1], dl
mov edx, dword [ebp - 0x24]
and edx, 0xff
lea esi, [ebp + edx - 0x150]
mov dl, byte [ebp + edx - 0x150]
mov byte [ebp - 0x10], dl
mov edx, dword [ebp - 0xc]
mov bl, byte [edx]
mov dl, byte [ebp - 0x14]
add al, bl
inc dl
mov byte [ebp - 0x2c], al
mov byte [ebp - 0x14], dl
mov edx, dword [ebp - 0x2c]
and edx, 0xff
mov bl, byte [ebp + edx - 0x150]
lea edx, [ebp + edx - 0x150]
mov byte [esi], bl
mov ebx, dword [ebp - 0x28]
and ebx, 0xff
mov dword [ebp - 0x20], edx
lea ebx, [ebp + ebx - 0x150]
mov dword [ebp - 0x18], ebx
mov bl, byte [ebx]
mov byte [edx], bl
mov edx, dword [ebp - 0x14]
mov ebx, dword [ebp - 0x18]
and edx, 0xff
lea edx, [ebp + edx - 0x150]
mov dword [ebp - 0xc], edx
mov dl, byte [edx]
mov byte [ebx], dl
mov ebx, dword [ebp - 0xc]
mov dl, byte [ebp - 0x10]
mov byte [ebx], dl
mov edx, dword [ebp - 0x10]
and edx, 0xff
mov dword [ebp - 8], edx
mov bl, byte [ebp + edx - 0x150]
add cl, bl
mov bl, byte [esi]
mov esi, dword [ebp - 0x18]
mov byte [ebp - 0x30], cl
mov edx, dword [ebp - 0x30]
and edx, 0xff
mov dl, byte [ebp + edx - 0x150]
add edx, ebx
mov bl, byte [esi]
add edx, ebx
xor ebx, ebx
and edx, 0xff
mov bl, byte [ebp + edx - 0x150]
mov edx, dword [ebp - 0x20]
mov esi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 8]
add ebx, edx
mov dl, byte [ebp + esi - 0x150]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x150]
mov bl, byte [ebp - 1]
mov byte [ebp - 0x24], bl
xor dl, bl
mov byte [ebp - 0x28], dl
movsx dx, dl
mov word [ebp - 0x40], dx
mov dl, byte [edi + 4]
mov bl, byte [edi + 5]
add dl, 2
shl dl, 4
sub bl, 0x11
or dl, bl
mov byte [ebp - 1], dl
mov edx, dword [ebp - 0x24]
and edx, 0xff
lea esi, [ebp + edx - 0x150]
mov dl, byte [esi]
mov dword [ebp - 0x1c], 3
mov byte [ebp - 0x10], dl
mov edx, dword [ebp - 0xc]
mov bl, byte [edx]
mov dl, byte [ebp - 0x14]
add al, bl
inc dl
mov byte [ebp - 0x2c], al
mov byte [ebp - 0x14], dl
mov edx, dword [ebp - 0x2c]
and edx, 0xff
mov bl, byte [ebp + edx - 0x150]
lea edx, [ebp + edx - 0x150]
mov byte [esi], bl
mov ebx, dword [ebp - 0x28]
and ebx, 0xff
mov dword [ebp - 0x20], edx
lea ebx, [ebp + ebx - 0x150]
mov dword [ebp - 0x18], ebx
mov bl, byte [ebx]
mov byte [edx], bl
mov edx, dword [ebp - 0x14]
mov ebx, dword [ebp - 0x18]
and edx, 0xff
lea edx, [ebp + edx - 0x150]
mov dword [ebp - 0xc], edx
mov dl, byte [edx]
mov byte [ebx], dl
mov ebx, dword [ebp - 0xc]
mov dl, byte [ebp - 0x10]
mov byte [ebx], dl
mov edx, dword [ebp - 0x10]
and edx, 0xff
mov dword [ebp - 8], edx
mov bl, byte [ebp + edx - 0x150]
add cl, bl
mov bl, byte [esi]
mov esi, dword [ebp - 0x18]
mov byte [ebp - 0x30], cl
mov edx, dword [ebp - 0x30]
and edx, 0xff
mov dl, byte [ebp + edx - 0x150]
add edx, ebx
mov bl, byte [esi]
add edx, ebx
xor ebx, ebx
and edx, 0xff
mov bl, byte [ebp + edx - 0x150]
mov edx, dword [ebp - 0x20]
mov esi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 8]
add ebx, edx
mov dl, byte [ebp + esi - 0x150]
and ebx, 0xff
lea esi, [edi + 6]
mov dword [ebp - 0x34], esi
xor dl, byte [ebp + ebx - 0x150]
mov bl, byte [ebp - 1]
mov byte [ebp - 0x24], bl
xor dl, bl
mov byte [ebp - 0x28], dl
movsx dx, dl
mov word [ebp - 0x3e], dx
mov bl, byte [edi + 7]
xor edx, edx
sub bl, 0x11
mov dl, byte [esi]
add dl, 2
shl dl, 4
or dl, bl
mov byte [ebp - 1], dl
mov edx, dword [ebp - 0x24]
and edx, 0xff
lea esi, [ebp + edx - 0x150]
mov dl, byte [ebp + edx - 0x150]
mov byte [ebp - 0x10], dl
mov edx, dword [ebp - 0xc]
add al, byte [edx]
mov byte [ebp - 0x2c], al
mov bl, byte [ebp - 0x14]
mov edx, dword [ebp - 0x2c]
inc bl
and edx, 0xff
mov byte [ebp - 0x14], bl
lea edi, [ebp + edx - 0x150]
mov dword [ebp - 0x20], edi
mov dl, byte [edi]
mov byte [esi], dl
mov edx, dword [ebp - 0x28]
and edx, 0xff
mov bl, byte [ebp + edx - 0x150]
lea edx, [ebp + edx - 0x150]
mov byte [edi], bl
mov edi, dword [ebp - 0x14]
and edi, 0xff
mov dword [ebp - 0x18], edx
mov bl, byte [ebp + edi - 0x150]
lea edi, [ebp + edi - 0x150]
mov byte [edx], bl
mov dl, byte [ebp - 0x10]
mov byte [edi], dl
mov edx, dword [ebp - 0x10]
and edx, 0xff
mov dword [ebp - 8], edx
mov bl, byte [ebp + edx - 0x150]
add cl, bl
mov bl, byte [esi]
mov esi, dword [ebp - 0x18]
mov byte [ebp - 0x30], cl
mov edx, dword [ebp - 0x30]
and edx, 0xff
mov dl, byte [ebp + edx - 0x150]
add edx, ebx
mov bl, byte [esi]
add edx, ebx
xor ebx, ebx
and edx, 0xff
mov bl, byte [ebp + edx - 0x150]
mov edx, dword [ebp - 0x20]
mov esi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 8]
add ebx, edx
mov dl, byte [ebp + esi - 0x150]
and ebx, 0xff
mov esi, dword [ebp - 0x34]
mov dword [ebp - 0x34], 2
xor dl, byte [ebp + ebx - 0x150]
mov bl, byte [ebp - 1]
mov byte [ebp - 0x24], bl
xor dl, bl
mov byte [ebp - 0x28], dl
movsx dx, dl
mov word [ebp - 0x3c], dx
lea edx, [ebp - 0x3c]
mov dword [ebp - 0xc], edx
jmp 0x4068aa
mov esi, dword [ebp - 0x4c]
mov edx, dword [ebp - 0x1c]
mov bl, byte [esi + 2]
inc edx
add esi, 2
mov dword [ebp - 0x1c], edx
mov edx, dword [ebp - 0xc]
add edx, 2
add bl, 2
mov dword [ebp - 0xc], edx
mov dl, byte [esi + 1]
sub dl, 0x11
mov dword [ebp - 0x4c], esi
shl bl, 4
or dl, bl
mov bl, byte [ebp - 0x14]
mov byte [ebp - 1], dl
mov edx, dword [ebp - 0x24]
and edx, 0xff
lea esi, [ebp + edx - 0x150]
mov dl, byte [ebp + edx - 0x150]
mov byte [ebp - 0x10], dl
mov dl, byte [edi]
add al, dl
inc bl
mov byte [ebp - 0x2c], al
mov byte [ebp - 0x14], bl
mov edx, dword [ebp - 0x2c]
and edx, 0xff
lea edi, [ebp + edx - 0x150]
mov dword [ebp - 0x20], edi
mov dl, byte [edi]
mov byte [esi], dl
mov edx, dword [ebp - 0x28]
and edx, 0xff
mov bl, byte [ebp + edx - 0x150]
lea edx, [ebp + edx - 0x150]
mov byte [edi], bl
mov edi, dword [ebp - 0x14]
and edi, 0xff
mov dword [ebp - 0x18], edx
mov bl, byte [ebp + edi - 0x150]
lea edi, [ebp + edi - 0x150]
mov byte [edx], bl
mov dl, byte [ebp - 0x10]
mov byte [edi], dl
mov edx, dword [ebp - 0x10]
and edx, 0xff
mov dword [ebp - 8], edx
mov bl, byte [ebp + edx - 0x150]
add cl, bl
mov bl, byte [esi]
mov esi, dword [ebp - 0x18]
mov byte [ebp - 0x30], cl
mov edx, dword [ebp - 0x30]
and edx, 0xff
mov dl, byte [ebp + edx - 0x150]
add edx, ebx
mov bl, byte [esi]
add edx, ebx
xor ebx, ebx
and edx, 0xff
mov bl, byte [ebp + edx - 0x150]
mov edx, dword [ebp - 0x20]
mov esi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 8]
add ebx, edx
mov dl, byte [ebp + esi - 0x150]
mov esi, dword [ebp - 0x1c]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x150]
mov bl, byte [ebp - 1]
mov byte [ebp - 0x24], bl
xor dl, bl
test esi, esi
mov byte [ebp - 0x28], dl
jbe 0x4069cc
mov esi, dword [ebp - 0xc]
movsx dx, dl
mov word [esi], dx
mov edx, dword [ebp - 0x34]
dec edx
mov dword [ebp - 0x34], edx
jne 0x4068a7
mov ebx, dword [ebp - 0x48]
mov word [ebp - 0x38], 0
lea eax, [ebp - 0x3a0]
lea ecx, [ebp - 0x40]
push eax
push ecx
call dword [0x8c6944]
mov dword [ebp - 0x1c], eax
mov ecx, 0x54101
xor eax, eax
mov edi, ebx
rep stosd dword es:[edi], eax
push ebx
call fcn.00406b20
mov eax, dword [ebx + 0x150400]
add esp, 4
cmp eax, 1
jge 0x406a2a
push ebx
call fcn.0082fdb0
add esp, 4
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
lea edx, [ebp - 0x374]
push edx
call fcn.0082fd70
mov esi, eax
push esi
call fcn.00402a90
push esi
call fcn.00402af0
mov ecx, dword [ebx + 0x150400]
add esp, 0xc
test ecx, ecx
mov dword [ebp - 0x4c], eax
jle 0x406acf
lea eax, [ebx + 0x2a04]
mov dword [ebp - 0xc], ecx
mov ecx, dword [eax]
test ecx, ecx
jle 0x406ac1
lea edi, [eax - 0x2a04]
mov dword [ebp - 0x34], ecx
mov esi, dword [ebp - 0x4c]
mov ecx, edi
mov bl, byte [ecx]
mov dl, bl
cmp bl, byte [esi]
jne 0x406a95
test dl, dl
je 0x406a91
mov bl, byte [ecx + 1]
mov dl, bl
cmp bl, byte [esi + 1]
jne 0x406a95
add ecx, 2
add esi, 2
test dl, dl
jne 0x406a71
xor ecx, ecx
jmp 0x406a9a
sbb ecx, ecx
sbb ecx, 0xffffffff
test ecx, ecx
jne 0x406ab2
mov esi, dword [eax - 4]
mov edx, dword [ebp - 0x44]
cmp esi, 0x1000000
setne cl
and edx, ecx
mov dword [ebp - 0x44], edx
mov ecx, dword [ebp - 0x34]
add edi, 0x2a
dec ecx
mov dword [ebp - 0x34], ecx
jne 0x406a6c
mov ebx, dword [ebp - 0x48]
mov ecx, dword [ebp - 0xc]
add eax, 0x2a08
dec ecx
mov dword [ebp - 0xc], ecx
jne 0x406a5d
mov eax, dword [ebp - 0x1c]
lea edx, [ebp - 0x3a0]
push edx
push eax
call dword [0x8c68c8]
test eax, eax
jne 0x406a2a
mov ecx, 0x54101
mov edi, ebx
rep stosd dword es:[edi], eax
push ebx
call fcn.0082fdb0
mov eax, dword [ebp - 0x44]
add esp, 4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret