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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x1a0
mov ebx, dword [esp + 0x1b8]
mov ebp, dword [esp + 0x1b4]
mov eax, dword [0x7c3824]
xor eax, esp
mov dword [esp + 0x19c], eax
xorpd xmm0, xmm0
movsd xmm4, qword [0x612398]
movsd xmm5, qword [0x6123a0]
movsd xmm6, qword [0x612228]
movsd xmm7, qword [0x6123a8]
xorpd xmm3, xmm3
movapd xmm1, xmm3
mulsd xmm1, qword [str.fffff_b]
mulsd xmm1, xmm3
movapd xmm2, xmm3
mulsd xmm2, xmm3
subsd xmm1, xmm2
movapd xmm2, xmm3
mulsd xmm2, qword [0x612388]
mulsd xmm2, xmm3
addsd xmm2, qword [0x612390]
divsd xmm1, xmm2
addsd xmm1, xmm0
retf 0xff2
movapd xmm2, xmm3
sub bl, dl
mulsd xmm2, xmm4
addsd xmm2, xmm1
movapd xmm0, xmm5
invalid
cmpltsd xmm0, xmm1
andpd xmm2, xmm0
andnpd xmm0, xmm1
orpd xmm0, xmm2
addsd xmm3, xmm6
push esi
ret 0xff2
fisub word [esi + 0xf]
sti
ucomisd xmm7, xmm3
ucomiss xmm7, xmm3
ja 0x409254
cdq
xorpd xmm1, xmm1
xorps xmm1, xmm1
ucomisd xmm1, xmm0
jbe 0x40936c
add byte [eax], al
add byte [eax + esi*2], ah
and al, 0x70
dec edi
jb 0x409344
jbe 0x409325
push esi
dec esi
push 0x46767668
inc esi
xor eax, 0x7d3e7136
insd dword es:[edi], dx
jge 0x409348
das
dec edi
sub edi, dword [ebx]
sub edx, dword [esp + ebx*2 + 0x42]
cmp ebp, dword [ebx]
push esp
pop esp
inc edx
pop esp
push ebp
dec eax
daa
push edx
aaa
mov dword [0xa2789f7d], eax
jge 0x40928b
lahf
js 0x409290
jbe 0x409292
jl 0x409292
and byte [edi - 0x568a567f], 0x78
cmpsd dword [esi], dword es:[edi]
jne 0x40929f
and byte [ebp + edi*2 + 0x77a7739d], 0xa1
popfd
jae 0x4092a9
cmpsd dword [esi], dword es:[edi]
ja 0x4092a5
je 0x4092a0
and byte [edx - 0x5c7d5e84], 0x74
lahf
jl 0x4092af
jge 0x4092b4
ja 0x4092b6
je 0x4092bc
jns 0x4092b9
jne 0x4092b5
jns 0x4092bc
jae 0x4092ba
jae 0x4092c8
jp 0x4092c8
ja 0x4092bf
jns 0x4092c7
mov eax, dword [0xa37fa176]
jbe 0x4092c9
jg 0x4092cd
je 0x4092d0
and dword [eax - 0x5786587f], 0xa37fa17b
jne 0x4092d9
jge 0x4092d4
jge 0x4092de
jp 0x4092e3
and byte [ebp + edi*2 + 0x7fa079a5], 0xa3
jg 0x4092e9
js 0x4092ea
jne 0x4092eb
jae 0x4092f0
sbb byte [esi - 0x657d5f8d], 0x81
mov eax, dword [0xa279a87a]
lcall 0xa279, 0xa87aa181
js 0x4092ff
and dword [ebp - 0x618b6088], 0x9b819e81
jae 0x409301
ja 0x409351
mov dh, 5
add byte [eax], al
lea eax, [0x4092e9]
mov dword [esp + 0x14], eax
movdqa xmm1, xmmword [0x612110]
xor eax, eax
movdqa xmm2, xmmword [0x612120]
movdqu xmmword [esp + eax + 0x1c], xmm1
add eax, 0x10
paddb xmm1, xmm2
cmp eax, 0x100
jne 0x409388
movsd xmm1, qword [0x612130]
movapd xmm2, xmm0
subsd xmm2, xmm1
cvttsd2si eax, xmm2
lea ecx, [0x4092c9]
mov dword [esp], ecx
xor eax, 0x80000000
cvttsd2si ecx, xmm0
ucomisd xmm0, xmm1
cmovae ecx, eax
mov eax, ecx
shr eax, 0x18
mov dword [esp + 8], eax
mov dword [esp + 4], ecx
shr ecx, 0x10
mov dword [esp + 0x10], ecx
mov ebp, 0xff
xor ecx, ecx
xor ebx, ebx
xor edx, edx
inc edx
cmp ebp, 2
jb 0x4093f8
xor edx, edx
inc edx
add edx, edx
inc edx
cmp edx, ebp
jb 0x4093f1
mov esi, 0xc
cmp ecx, 3
ja case.default.0x409402
jmp dword [ecx*4 + 0x612598]
movzx eax, bl
add eax, esp
add eax, 0x1c
mov ebx, dword [esp + 4]
jmp 0x409452
movzx eax, bl
mov bl, byte [esp + eax + 0x1c]
mov eax, dword [esp]
add eax, ecx
add eax, 0xfffffffc
jmp 0x409452
movzx eax, bl
add eax, esp
add eax, 0x1c
mov ebx, dword [esp + 4]
mov bl, bh
jmp 0x409452
movzx eax, bl
add eax, esp
add eax, 0x1c
mov ebx, dword [esp + 0x10]
jmp 0x409452
movzx eax, bl
add eax, esp
add eax, 0x1c
mov ebx, dword [esp + 8]
add bl, byte [eax]
inc ecx
movzx eax, bl
add bl, 0x24
cmp ecx, 0x23
movzx ebx, bl
cmovbe ebx, eax
mov eax, 0
cmova ecx, eax
movzx edi, bl
mov eax, edx
and eax, edi
dec esi
je 0x40947c
cmp eax, ebp
ja 0x4093fd
jmp 0x409482
xor edx, edx
div ebp
mov eax, edx
cmp ebp, eax
je 0x40949e
mov dl, byte [esp + ebp + 0x1c]
xor dl, byte [esp + eax + 0x1c]
mov byte [esp + ebp + 0x1c], dl
xor dl, byte [esp + eax + 0x1c]
mov byte [esp + eax + 0x1c], dl
xor byte [esp + ebp + 0x1c], dl
dec ebp
jne 0x4093e6
movzx ebx, byte [esp + 0x1d]
mov dword [esp + 0x10], ebx
mov al, byte [esp + 0x21]
mov byte [esp + 4], al
movzx eax, byte [esp + 0x23]
movzx ebp, byte [esp + edi + 0x1c]
mov edi, dword [esp + 0x14]
mov dl, byte [edi]
mov cl, byte [edi + 1]
mov byte [esp], cl
movzx ecx, byte [esp + ebp + 0x1c]
mov dword [esp + 0xc], ecx
mov dh, byte [esp + ebx + 0x1c]
add dh, byte [esp + 0x1f]
movzx esi, dh
mov cl, byte [esp + esi + 0x1c]
mov byte [esp + ebp + 0x1c], cl
mov dword [esp + 0x18], eax
mov cl, byte [esp + eax + 0x1c]
mov byte [esp + esi + 0x1c], cl
mov ecx, ebx
inc cl
movzx ecx, cl
mov bl, byte [esp + ecx + 0x1c]
mov byte [esp + eax + 0x1c], bl
mov ebx, dword [esp + 0xc]
mov byte [esp + ecx + 0x1c], bl
mov al, byte [esp]
add al, 0x8d
shl dl, 4
add dl, 0x60
or dl, al
movzx ecx, byte [esp + esi + 0x1c]
add ecx, ebx
mov esi, 0xff
and ecx, esi
movzx eax, dl
mov dword [esp + 8], eax
xor dl, byte [esp + ecx + 0x1c]
mov al, byte [esp + 4]
add al, byte [esp + ebx + 0x1c]
mov byte [esp + 4], al
mov esi, ebx
mov ecx, dword [esp + 0x18]
movzx ecx, byte [esp + ecx + 0x1c]
movzx ebx, byte [esp + ebp + 0x1c]
add ebx, ecx
movzx ecx, al
movzx ecx, byte [esp + ecx + 0x1c]
add ecx, ebx
mov bh, dh
mov eax, 0xff
and ecx, eax
movzx ecx, byte [esp + ecx + 0x1c]
xor dl, byte [esp + ecx + 0x1c]
mov cl, byte [edi + 2]
mov ch, byte [edi + 3]
mov eax, esi
add bh, al
movzx edi, bh
mov dword [esp + 0xc], edi
mov bl, byte [esp + edi + 0x1c]
mov esi, dword [esp + 8]
movzx eax, byte [esp + esi + 0x1c]
mov dword [esp], eax
mov byte [esp + esi + 0x1c], bl
movzx ebp, dl
mov ah, byte [esp + ebp + 0x1c]
mov byte [esp + edi + 0x1c], ah
mov eax, dword [esp + 0x10]
mov ah, al
add ah, 2
movzx edi, ah
mov ah, byte [esp + edi + 0x1c]
mov byte [esp + ebp + 0x1c], ah
mov edx, dword [esp]
mov byte [esp + edi + 0x1c], dl
movzx edi, byte [esp + ebp + 0x1c]
movzx ebp, byte [esp + esi + 0x1c]
add ebp, edi
mov al, byte [esp + 4]
add al, byte [esp + edx + 0x1c]
mov byte [esp + 4], al
movzx edi, al
movzx edi, byte [esp + edi + 0x1c]
add edi, ebp
add ch, 0x8d
shl cl, 4
add cl, 0x60
or cl, ch
mov eax, dword [esp + 0xc]
movzx ebp, byte [esp + eax + 0x1c]
mov esi, edx
add ebp, edx
mov edx, 0xff
and ebp, edx
mov ah, byte [esp + ebp + 0x1c]
xor ah, cl
and edi, edx
movzx edi, byte [esp + edi + 0x1c]
xor ah, byte [esp + edi + 0x1c]
movsx edi, ah
mov word [esp + 0x11e], di
mov ebp, 0xffffffe3
mov edx, esi
add bh, dl
movzx edi, cl
mov dword [esp + 8], edi
mov edx, dword [esp + 0x14]
mov cl, byte [edx + ebp*2 + 0x3e]
mov ch, byte [edx + ebp*2 + 0x3f]
movzx edx, byte [esp + edi + 0x1c]
mov dword [esp], edx
movzx esi, bh
mov dh, byte [esp + esi + 0x1c]
mov byte [esp + edi + 0x1c], dh
mov edx, dword [esp + 0x10]
lea edx, [edx + ebp + 0x20]
movzx edi, ah
mov bl, byte [esp + edi + 0x1c]
mov byte [esp + esi + 0x1c], bl
mov eax, 0xff
and edx, eax
mov bl, byte [esp + edx + 0x1c]
mov byte [esp + edi + 0x1c], bl
mov eax, dword [esp]
mov byte [esp + edx + 0x1c], al
mov bl, byte [esp + 4]
add bl, byte [esp + eax + 0x1c]
movzx eax, byte [esp + edi + 0x1c]
mov edx, dword [esp + 8]
movzx edx, byte [esp + edx + 0x1c]
add edx, eax
mov byte [esp + 4], bl
movzx eax, bl
movzx edi, byte [esp + eax + 0x1c]
add edi, edx
add ch, 0x8d
shl cl, 4
add cl, 0x60
or cl, ch
movzx eax, byte [esp + esi + 0x1c]
mov edx, dword [esp]
mov esi, edx
add eax, edx
mov edx, 0xff
and eax, edx
mov ah, byte [esp + eax + 0x1c]
xor ah, cl
and edi, edx
movzx edx, byte [esp + edi + 0x1c]
xor ah, byte [esp + edx + 0x1c]
movsx edx, ah
mov word [esp + ebp*2 + 0x15a], dx
inc ebp
jne 0x409618
mov edi, dword [esp + 0x14]
mov dh, byte [edi + 0x3e]
mov al, byte [edi + 0x3f]
mov byte [esp + 0xc], al
movzx edi, cl
mov ecx, esi
add bh, cl
movzx ecx, byte [esp + edi + 0x1c]
mov dword [esp + 8], ecx
movzx esi, bh
mov cl, byte [esp + esi + 0x1c]
mov byte [esp + edi + 0x1c], cl
mov dl, bh
movzx ebx, ah
mov cl, byte [esp + ebx + 0x1c]
mov byte [esp + esi + 0x1c], cl
mov eax, dword [esp + 0x10]
lea ecx, [eax + ebp]
add ecx, 0x20
mov eax, 0xff
and ecx, eax
mov ah, byte [esp + ecx + 0x1c]
mov byte [esp + ebx + 0x1c], ah
mov eax, dword [esp + 8]
mov byte [esp + ecx + 0x1c], al
mov cl, byte [esp + 0xc]
add cl, 0x8d
shl dh, 4
add dh, 0x60
or dh, cl
movzx ecx, byte [esp + esi + 0x1c]
add ecx, eax
mov esi, eax
mov eax, 0xff
and ecx, eax
movzx eax, dh
mov dword [esp], eax
xor dh, byte [esp + ecx + 0x1c]
mov al, byte [esp + 4]
add al, byte [esp + esi + 0x1c]
movzx ecx, byte [esp + ebx + 0x1c]
mov ebx, dword [esp + 0x14]
movzx edi, byte [esp + edi + 0x1c]
add edi, ecx
movzx ecx, al
movzx ecx, byte [esp + ecx + 0x1c]
add ecx, edi
mov esi, 0xff
and ecx, esi
movzx ecx, byte [esp + ecx + 0x1c]
xor dh, byte [esp + ecx + 0x1c]
movsx ecx, dh
mov word [esp + 0x15a], cx
mov ah, byte [ebx + 0x40]
mov cl, byte [ebx + 0x41]
mov byte [esp + 0xc], cl
add dl, byte [esp + 8]
mov byte [esp + 8], dl
movzx esi, dl
mov dword [esp + 0x18], esi
mov cl, byte [esp + esi + 0x1c]
mov edi, dword [esp]
movzx ebx, byte [esp + edi + 0x1c]
mov byte [esp + edi + 0x1c], cl
movzx edi, dh
mov cl, byte [esp + edi + 0x1c]
mov byte [esp + esi + 0x1c], cl
mov esi, dword [esp + 0x10]
lea ecx, [esi + ebp]
add ecx, 0x21
mov edx, 0xff
and ecx, edx
mov dh, byte [esp + ecx + 0x1c]
mov byte [esp + edi + 0x1c], dh
mov byte [esp + ecx + 0x1c], bl
add al, byte [esp + ebx + 0x1c]
lea ecx, [esi + ebp]
movzx edi, byte [esp + edi + 0x1c]
mov edx, dword [esp]
movzx ebp, byte [esp + edx + 0x1c]
add ebp, edi
mov byte [esp + 4], al
movzx edi, al
movzx edi, byte [esp + edi + 0x1c]
add edi, ebp
mov al, byte [esp + 0xc]
add al, 0x8d
shl ah, 4
add ah, 0x60
or ah, al
mov edx, dword [esp + 0x18]
movzx ebp, byte [esp + edx + 0x1c]
mov esi, ebx
add ebp, ebx
mov ebx, 0xff
and ebp, ebx
mov dh, byte [esp + ebp + 0x1c]
xor dh, ah
and edi, ebx
movzx edi, byte [esp + edi + 0x1c]
xor dh, byte [esp + edi + 0x1c]
movsx edi, dh
mov word [esp + 0x15c], di
add cl, 0x22
mov dword [esp], ecx
xor edi, edi
mov cl, byte [esp + 8]
mov ebx, esi
add cl, bl
movzx ebp, ah
mov esi, dword [esp + 0x14]
mov ah, byte [esi + edi*2 + 0x42]
mov al, byte [esi + edi*2 + 0x43]
mov byte [esp + 0x10], al
movzx esi, byte [esp + ebp + 0x1c]
mov dword [esp + 0xc], esi
mov byte [esp + 8], cl
movzx esi, cl
mov dl, byte [esp + esi + 0x1c]
mov byte [esp + ebp + 0x1c], dl
movzx edx, dh
mov cl, byte [esp + edx + 0x1c]
mov byte [esp + esi + 0x1c], cl
movzx ecx, byte [esp]
mov bl, byte [esp + ecx + 0x1c]
mov byte [esp + edx + 0x1c], bl
mov ebx, dword [esp + 0xc]
mov byte [esp + ecx + 0x1c], bl
mov al, byte [esp + 4]
add al, byte [esp + ebx + 0x1c]
movzx ecx, byte [esp + edx + 0x1c]
movzx edx, byte [esp + ebp + 0x1c]
add edx, ecx
mov byte [esp + 4], al
movzx ecx, al
movzx ecx, byte [esp + ecx + 0x1c]
add ecx, edx
mov al, byte [esp + 0x10]
add al, 0x8d
shl ah, 4
add ah, 0x60
or ah, al
movzx edx, byte [esp + esi + 0x1c]
mov esi, ebx
add edx, ebx
mov ebx, 0xff
and edx, ebx
mov dh, byte [esp + edx + 0x1c]
xor dh, ah
and ecx, ebx
movzx ecx, byte [esp + ecx + 0x1c]
xor dh, byte [esp + ecx + 0x1c]
movsx ecx, dh
mov word [esp + edi*2 + 0x15e], cx
inc edi
mov ecx, dword [esp]
inc cl
mov dword [esp], ecx
cmp edi, 0x1f
jne 0x40984a
mov word [esp + 0x19a], 0
mov ebx, dword [esp + 0x1b8]
mov ebp, dword [esp + 0x1b4]
test ebx, ebx
jle 0x409964
xor edi, edi
lea eax, [esp + 0x1c]
push eax
call fcn.005fe96c
add esp, 4
mov esi, dword [esp + 0x1c]
lea eax, [esp + 0x11e]
push eax
call fcn.005ff144
add esp, 4
mov ecx, eax
dec ecx
mov eax, esi
xor edx, edx
div ecx
movzx eax, word [esp + edx*2 + 0x11e]
mov word [ebp + edi*2], ax
inc edi
cmp ebx, edi
jne 0x409928
mov word [ebp + ebx*2], 0
mov ecx, dword [esp + 0x19c]
xor ecx, esp
call fcn.005db451
add esp, 0x1a0
pop esi
pop edi
pop ebx
pop ebp
ret