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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x15c
mov eax, dword [0x7c3824]
xor eax, esp
mov dword [esp + 0x158], eax
xorpd xmm0, xmm0
movsd xmm4, qword [0x6122d8]
movsd xmm5, qword [0x6122e0]
movsd xmm6, qword [0x612160]
movsd xmm7, qword [0x6122e8]
xorpd xmm3, xmm3
movapd xmm1, xmm3
mulsd xmm1, qword [0x6122c0]
mulsd xmm1, xmm3
movapd xmm2, xmm3
mulsd xmm2, xmm3
subsd xmm1, xmm2
movapd xmm2, xmm3
movaps xmm2, xmm3
sub bl, dl
sal edx, cl
mulsd xmm2, qword [0x6122c8]
mulps xmm2, xmmword [0x6122c8]
mulsd xmm2, xmm3
addsd xmm2, qword [0x6122d0]
sal edx, cl
addps xmm2, xmmword [0x6122d0]
popal
add dl, dh
divps xmm1, xmm2
divsd xmm1, xmm2
retf 0xff2
addsd xmm1, xmm0
movapd xmm2, xmm3
pop eax
enter 0xf66, 0x28
movaps xmm2, xmm3
sub bl, dl
sal edx, cl
mulps xmm2, xmm4
mulsd xmm2, xmm4
addsd xmm2, xmm1
addps xmm2, xmm1
pop eax
shl dword [esi + 0xf], 1
sub ch, al
movapd xmm0, xmm5
movaps xmm0, xmm5
cmpltsd xmm0, xmm1
andpd xmm2, xmm0
andnpd xmm0, xmm1
orpd xmm0, xmm2
addsd xmm3, xmm6
ucomisd xmm7, xmm3
ja 0x408722
ret 0x1c1
xorpd xmm1, xmm1
ucomisd xmm1, xmm0
jbe 0x4087e1
movsb byte es:[edi], byte [esi]
jnp 0x408740
ja 0x40873f
ja 0x408742
jne 0x408741
ja 0x408743
ja 0x40874a
sub dword [edx - 0x567e5d85], 0xab73aa7a
jb 0x408754
jbe 0x40874d
jns 0x40875d
je 0x408760
jae 0x40875c
jne 0x40875f
jp 0x408759
jae 0x40875a
jg 0x408760
jg 0x408761
je 0x408767
jle 0x408768
ja 0x408769
jae 0x408770
je 0x40876b
ja 0x408836
xor al, 0x62
js 0x408810
sub eax, 0x202f2e5d
outsd dx, dword [esi]
dec eax
jle 0x40884e
and edi, dword [ebx + 0x5d]
push 0x54
jmp 0x408d90
lea ecx, [0x408793]
movdqa xmm1, xmmword [0x612110]
xor eax, eax
movdqa xmm2, xmmword [0x612120]
movdqu xmmword [esp + eax + 0x22], xmm1
add eax, 0x10
paddb xmm1, xmm2
cmp eax, 0x100
jne 0x4087f9
mov dword [esp + 0x14], ecx
movsd xmm1, qword [0x612130]
adc al, 0xf2
movups xmm1, xmmword [0x612130]
movapd xmm2, xmm0
subsd xmm2, xmm1
cvttsd2si eax, xmm2
lea ecx, [0x4087c9]
mov dword [esp + 0xc], ecx
xor eax, 0x80000000
cvttsd2si ecx, xmm0
sub al, 0xc8
ucomisd xmm0, xmm1
cmovae ecx, eax
mov eax, ecx
shr eax, 0x18
mov dword [esp + 8], eax
mov dword [esp], ecx
shr ecx, 0x10
mov dword [esp + 0x10], ecx
mov edi, 0xff
xor ecx, ecx
xor ebx, ebx
xor edx, edx
inc edx
cmp edi, 2
jb 0x40886d
xor edx, edx
inc edx
add edx, edx
inc edx
cmp edx, edi
jb 0x408866
mov esi, 0xc
cmp ecx, 3
ja case.default.0x408877
jmp dword [ecx*4 + 0x612370]
movzx eax, bl
add eax, esp
add eax, 0x22
mov ebx, dword [esp]
jmp 0x4088c6
movzx eax, bl
mov bl, byte [esp + eax + 0x22]
mov eax, dword [esp + 0xc]
add eax, ecx
add eax, 0xfffffffc
jmp 0x4088c6
movzx eax, bl
add eax, esp
add eax, 0x22
mov ebx, dword [esp]
mov bl, bh
jmp 0x4088c6
movzx eax, bl
add eax, esp
add eax, 0x22
mov ebx, dword [esp + 0x10]
jmp 0x4088c6
movzx eax, bl
add eax, esp
add eax, 0x22
mov ebx, dword [esp + 8]
add bl, byte [eax]
inc ecx
movzx eax, bl
add bl, 0x17
cmp ecx, 0x16
movzx ebx, bl
cmovbe ebx, eax
mov eax, 0
cmova ecx, eax
movzx ebp, bl
mov eax, edx
and eax, ebp
dec esi
je 0x4088f0
cmp eax, edi
ja 0x408872
jmp 0x4088f6
xor edx, edx
div edi
mov eax, edx
cmp edi, eax
je 0x408912
mov dl, byte [esp + edi + 0x22]
xor dl, byte [esp + eax + 0x22]
mov byte [esp + edi + 0x22], dl
xor dl, byte [esp + eax + 0x22]
mov byte [esp + eax + 0x22], dl
xor byte [esp + edi + 0x22], dl
dec edi
jne 0x40885b
movzx ebx, byte [esp + 0x23]
mov dl, byte [esp + 0x27]
movzx esi, byte [esp + 0x29]
movzx ebp, byte [esp + ebp + 0x22]
mov dword [esp], ebp
mov edi, dword [esp + 0x14]
mov cl, byte [edi]
mov ch, byte [edi + 1]
movzx eax, byte [esp + ebp + 0x22]
mov dh, byte [esp + ebx + 0x22]
add dh, byte [esp + 0x25]
mov byte [esp + 0xc], dh
movzx edi, dh
mov dh, byte [esp + edi + 0x22]
mov byte [esp + ebp + 0x22], dh
mov dh, byte [esp + esi + 0x22]
mov byte [esp + edi + 0x22], dh
mov dword [esp + 0x18], ebx
mov dh, bl
inc dh
movzx ebp, dh
mov dh, byte [esp + ebp + 0x22]
mov byte [esp + esi + 0x22], dh
mov ebx, esi
mov byte [esp + ebp + 0x22], al
add ch, 0x8e
shl cl, 4
add cl, 0x10
or cl, ch
add dl, byte [esp + eax + 0x22]
movzx edi, byte [esp + edi + 0x22]
mov ebp, eax
add edi, eax
movzx eax, byte [esp + esi + 0x22]
mov esi, dword [esp]
movzx ebx, byte [esp + esi + 0x22]
add ebx, eax
mov byte [esp], dl
movzx eax, dl
movzx esi, byte [esp + eax + 0x22]
add esi, ebx
mov edx, 0xff
and edi, edx
mov ah, byte [esp + edi + 0x22]
xor ah, cl
and esi, edx
movzx edi, byte [esp + esi + 0x22]
xor ah, byte [esp + edi + 0x22]
mov edi, 0xfffffff5
mov al, byte [esp + 0xc]
mov edx, ebp
add al, dl
mov edx, dword [esp + 0x14]
mov ch, byte [edx + edi*2 + 0x18]
movzx ebx, cl
mov dword [esp + 0x10], ebx
mov cl, byte [edx + edi*2 + 0x19]
movzx edx, byte [esp + ebx + 0x22]
mov dword [esp + 8], edx
mov byte [esp + 0xc], al
movzx esi, al
mov al, byte [esp + esi + 0x22]
mov byte [esp + ebx + 0x22], al
mov edx, dword [esp + 0x18]
lea edx, [edx + edi + 0xd]
movzx ebp, ah
mov bl, byte [esp + ebp + 0x22]
mov byte [esp + esi + 0x22], bl
mov eax, 0xff
and edx, eax
mov bl, byte [esp + edx + 0x22]
mov byte [esp + ebp + 0x22], bl
mov eax, dword [esp + 8]
mov byte [esp + edx + 0x22], al
mov bl, byte [esp]
add bl, byte [esp + eax + 0x22]
movzx eax, byte [esp + ebp + 0x22]
mov edx, dword [esp + 0x10]
movzx edx, byte [esp + edx + 0x22]
add edx, eax
mov byte [esp], bl
movzx eax, bl
movzx ebx, byte [esp + eax + 0x22]
add ebx, edx
shl ch, 4
add ch, 0x10
add cl, 0x8e
or cl, ch
movzx eax, byte [esp + esi + 0x22]
mov edx, dword [esp + 8]
mov ebp, edx
add eax, edx
mov edx, 0xff
and eax, edx
mov ah, byte [esp + eax + 0x22]
xor ah, cl
and ebx, edx
movzx edx, byte [esp + ebx + 0x22]
xor ah, byte [esp + edx + 0x22]
movsx edx, ah
mov word [esp + edi*2 + 0x138], dx
inc edi
jne 0x4089c6
mov edx, dword [esp + 0x14]
mov ch, byte [edx + 0x18]
mov al, byte [edx + 0x19]
mov byte [esp + 7], al
movzx esi, cl
mov al, byte [esp + 0xc]
mov edx, ebp
add al, dl
mov byte [esp + 0xc], al
mov edx, esi
mov dword [esp + 0x1c], esi
movzx ebp, byte [esp + esi + 0x22]
movzx esi, al
mov cl, byte [esp + esi + 0x22]
mov byte [esp + edx + 0x22], cl
movzx eax, ah
mov cl, byte [esp + eax + 0x22]
mov byte [esp + esi + 0x22], cl
mov edx, dword [esp + 0x18]
mov dword [esp + 0x10], edi
add edx, edi
add edx, 0xd
mov ebx, 0xff
and edx, ebx
mov cl, byte [esp + edx + 0x22]
mov byte [esp + eax + 0x22], cl
mov ebx, ebp
mov byte [esp + edx + 0x22], bl
mov cl, byte [esp + 7]
add cl, 0x8e
shl ch, 4
add ch, 0x10
or ch, cl
movzx edx, byte [esp + esi + 0x22]
add edx, ebp
mov ebp, 0xff
and edx, ebp
movzx esi, ch
xor ch, byte [esp + edx + 0x22]
mov cl, byte [esp]
add cl, byte [esp + ebx + 0x22]
mov byte [esp], cl
movzx eax, byte [esp + eax + 0x22]
mov edx, dword [esp + 0x1c]
movzx edx, byte [esp + edx + 0x22]
add edx, eax
movzx eax, cl
movzx eax, byte [esp + eax + 0x22]
add eax, edx
and eax, ebp
movzx eax, byte [esp + eax + 0x22]
xor ch, byte [esp + eax + 0x22]
movsx eax, ch
mov word [esp + 0x138], ax
mov eax, dword [esp + 0x14]
mov cl, byte [eax + 0x1a]
mov al, byte [eax + 0x1b]
mov byte [esp + 8], al
mov al, byte [esp + 0xc]
add al, bl
mov byte [esp + 0xc], al
movzx edx, al
mov ah, byte [esp + edx + 0x22]
mov ebp, esi
movzx edi, byte [esp + esi + 0x22]
mov byte [esp + esi + 0x22], ah
movzx esi, ch
mov ch, byte [esp + esi + 0x22]
mov byte [esp + edx + 0x22], ch
mov ebx, dword [esp + 0x18]
mov eax, dword [esp + 0x10]
add ebx, eax
add ebx, 0xe
mov eax, 0xff
and ebx, eax
mov ch, byte [esp + ebx + 0x22]
mov byte [esp + esi + 0x22], ch
mov eax, edi
mov byte [esp + ebx + 0x22], al
mov al, byte [esp + 8]
add al, 0x8e
shl cl, 4
add cl, 0x10
or cl, al
movzx edx, byte [esp + edx + 0x22]
mov eax, edi
add edx, edi
mov edi, 0xff
and edx, edi
movzx ebx, cl
mov dword [esp + 8], ebx
xor cl, byte [esp + edx + 0x22]
mov ch, byte [esp]
add ch, byte [esp + eax + 0x22]
mov byte [esp], ch
mov ebx, eax
movzx eax, byte [esp + esi + 0x22]
movzx edx, byte [esp + ebp + 0x22]
add edx, eax
movzx eax, ch
movzx eax, byte [esp + eax + 0x22]
add eax, edx
and eax, edi
movzx eax, byte [esp + eax + 0x22]
xor cl, byte [esp + eax + 0x22]
movsx eax, cl
mov word [esp + 0x13a], ax
mov eax, dword [esp + 0x14]
mov dl, byte [eax + 0x1c]
mov byte [esp + 7], dl
mov ah, byte [eax + 0x1d]
mov al, byte [esp + 0xc]
add al, bl
mov byte [esp + 0xc], al
movzx esi, al
mov dl, byte [esp + esi + 0x22]
mov ebp, esi
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 8]
movzx ebx, byte [esp + esi + 0x22]
mov byte [esp + esi + 0x22], dl
movzx edi, cl
mov cl, byte [esp + edi + 0x22]
mov byte [esp + ebp + 0x22], cl
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 0x10]
lea ecx, [esi + edx]
add ecx, 0xf
mov ebp, 0xff
and ecx, ebp
mov al, byte [esp + ecx + 0x22]
mov byte [esp + edi + 0x22], al
mov byte [esp + ecx + 0x22], bl
mov al, byte [esp]
add al, byte [esp + ebx + 0x22]
lea ecx, [esi + edx]
movzx edx, byte [esp + edi + 0x22]
mov esi, dword [esp + 8]
movzx edi, byte [esp + esi + 0x22]
add edi, edx
mov byte [esp], al
movzx edx, al
movzx esi, byte [esp + edx + 0x22]
add esi, edi
mov al, byte [esp + 7]
shl al, 4
add al, 0x10
add ah, 0x8e
or ah, al
mov edx, dword [esp + 0x1c]
movzx edx, byte [esp + edx + 0x22]
mov ebp, ebx
add edx, ebx
mov edi, 0xff
and edx, edi
mov dh, byte [esp + edx + 0x22]
xor dh, ah
and esi, edi
movzx esi, byte [esp + esi + 0x22]
xor dh, byte [esp + esi + 0x22]
movsx esi, dh
mov word [esp + 0x13c], si
add cl, 0x10
mov ebx, ecx
xor edi, edi
mov dl, byte [esp + 0xc]
mov ecx, ebp
add dl, cl
mov ecx, dword [esp + 0x14]
mov al, byte [ecx + edi + 0x1e]
movzx esi, ah
mov ah, byte [ecx + edi + 0x1f]
movzx ecx, byte [esp + esi + 0x22]
mov dword [esp + 8], ecx
mov byte [esp + 0xc], dl
movzx ebp, dl
mov dl, byte [esp + ebp + 0x22]
mov byte [esp + esi + 0x22], dl
movzx edx, dh
mov cl, byte [esp + edx + 0x22]
mov byte [esp + ebp + 0x22], cl
mov dword [esp + 0x10], ebx
movzx ecx, bl
mov bl, byte [esp + ecx + 0x22]
mov byte [esp + edx + 0x22], bl
mov ebx, dword [esp + 8]
mov byte [esp + ecx + 0x22], bl
mov cl, byte [esp]
add cl, byte [esp + ebx + 0x22]
movzx ebx, byte [esp + edx + 0x22]
movzx edx, byte [esp + esi + 0x22]
add edx, ebx
mov byte [esp], cl
movzx ecx, cl
movzx ecx, byte [esp + ecx + 0x22]
add ecx, edx
shl al, 4
add al, 0x10
add ah, 0x8e
or ah, al
movzx edx, byte [esp + ebp + 0x22]
mov esi, dword [esp + 8]
mov ebp, esi
add edx, esi
mov esi, 0xff
and edx, esi
mov dh, byte [esp + edx + 0x22]
xor dh, ah
and ecx, esi
movzx ecx, byte [esp + ecx + 0x22]
xor dh, byte [esp + ecx + 0x22]
movsx ecx, dh
mov word [esp + edi + 0x13e], cx
add edi, 2
mov ebx, dword [esp + 0x10]
inc bl
cmp edi, 0x1a
jne 0x408cc9
mov word [esp + 0x156], 0
call fcn.005fe94b
mov ecx, eax
mov edx, 0x4ec4ec4f
imul edx
mov eax, edx
shr eax, 0x1f
sar edx, 3
add edx, eax
lea eax, [edx + edx*4]
lea eax, [eax + eax*4]
add eax, edx
sub ecx, eax
movzx esi, word [esp + ecx*2 + 0x122]
mov ecx, dword [esp + 0x158]
xor ecx, esp
call fcn.005db451
mov eax, esi
add esp, 0x15c
pop esi
pop edi
pop ebx
pop ebp
ret