Function at 0x409dc0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x18
movd xmm0, edx
movd xmm1, ecx
mov eax, dword [ebp + 0x14]
mov edi, dword [ebp + 0x10]
xor edx, edx
punpckldq xmm1, xmm0
movq xmm0, qword [ebp + 8]
pshufd xmm1, xmm1, 0x44
pxor xmm1, xmmword [0x5761b0]
mov ebx, eax
mov ecx, eax
pshufd xmm0, xmm0, 0x44
and ebx, 7
and ecx, 0xfffffff8
pxor xmm0, xmmword [0x5761c0]
mov dword [ebp - 0x14], ebx
je 0x409f3a
lea eax, [ecx - 1]
xor esi, esi
and eax, 0xfffffff8
mov dword [ebp - 0x10], eax
nop word [eax + eax]
mov edx, dword [edi + esi]
mov ebx, dword [edi + esi + 4]
pshufd xmm2, xmm0, 0xee
movdqa xmm4, xmm0
add esi, 8
movd eax, xmm2
pshufd xmm2, xmm0, 0xff
psrlq xmm4, 0x33
xor eax, edx
movd xmm3, eax
movd eax, xmm2
xor eax, ebx
movd xmm2, eax
punpcklqdq xmm2, xmm3
movdqa xmm3, xmm0
psllq xmm0, 0xd
shufps xmm3, xmm2, 0x24
movaps xmm2, xmm3
paddq xmm1, xmm3
psllq xmm3, 0x10
psrlq xmm2, 0x30
shufps xmm0, xmm3, 0xe4
shufps xmm4, xmm2, 0xe4
pshufd xmm2, xmm1, 0x1e
orps xmm0, xmm4
pxor xmm0, xmm1
paddq xmm2, xmm0
movdqa xmm4, xmm0
pshufd xmm3, xmm2, 0xee
pshufd xmm1, xmm2, 0xff
psrlq xmm4, 0x2b
movd eax, xmm3
xor eax, edx
movd edx, xmm1
movdqa xmm1, xmm0
psrlq xmm1, 0x2f
xor edx, ebx
cmp esi, ecx
movsd xmm4, xmm1
movdqa xmm1, xmm0
psllq xmm0, 0x15
movd xmm3, edx
psllq xmm1, 0x11
movsd xmm0, xmm1
movdqa xmm1, xmm3
orpd xmm0, xmm4
movd xmm4, eax
punpcklqdq xmm1, xmm4
xorpd xmm0, xmm2
shufps xmm1, xmm2, 0x12
jb 0x409e20
pshufd xmm1, xmm2, 0x55
mov esi, dword [ebp - 0x10]
movd ecx, xmm2
mov ebx, dword [ebp - 0x14]
movd edx, xmm1
movd xmm1, ecx
movd xmm2, edx
xor edx, edx
punpckldq xmm2, xmm1
movd xmm1, eax
punpckldq xmm1, xmm3
add esi, 8
punpcklqdq xmm1, xmm2
cmp ebx, 4
mov dword [ebp - 0x10], esi
jb 0x409f44
mov ecx, dword [edi + esi]
xor esi, esi
mov edx, 4
mov eax, edx
or eax, 1
cmp eax, ebx
jb 0x409f51
jmp 0x409f8d
xor esi, esi
cmp ebx, 4
mov dword [ebp - 0x10], esi
jae 0x409f25
xor ecx, ecx
xor esi, esi
mov eax, edx
or eax, 1
cmp eax, ebx
jae 0x409f8d
mov dword [ebp - 0x18], ecx
mov ecx, dword [ebp - 0x10]
lea eax, [edi + edx]
xor ebx, ebx
mov dword [ebp - 0x1c], edx
movzx eax, word [ecx + eax]
lea ecx, [edx*8]
mov edx, 0
shld ebx, eax, cl
shl eax, cl
test cl, 0x20
mov ecx, dword [ebp - 0x18]
cmovne ebx, eax
cmovne eax, edx
mov edx, dword [ebp - 0x1c]
or esi, ebx
mov ebx, dword [ebp - 0x14]
or ecx, eax
or edx, 2
cmp edx, ebx
jae 0x409fbd
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x18], ecx
add eax, edx
shl edx, 3
movzx eax, byte [edi + eax]
mov ecx, edx
xor edi, edi
xor edx, edx
shld edi, eax, cl
shl eax, cl
test cl, 0x20
mov ecx, dword [ebp - 0x18]
cmovne edi, eax
cmovne eax, edx
or esi, edi
or ecx, eax
jmp 0x409fc5
test ebx, ebx
je 0x40a0ba
mov eax, ecx
lea ecx, [ebx*8]
mov edx, ebx
mov edi, 0xff
xor ebx, ebx
shld ebx, edi, cl
shl edi, cl
test cl, 0x20
mov ecx, 0
cmovne ebx, edi
cmovne edi, ecx
or ebx, esi
mov esi, edi
or esi, eax
cmp edx, 7
jne 0x40a0b6
pshufd xmm2, xmm0, 0xee
movdqa xmm4, xmm0
xor eax, eax
movd ecx, xmm2
pshufd xmm2, xmm0, 0xff
psrlq xmm4, 0x33
movd edx, xmm2
xor ecx, esi
xor edx, ebx
movd xmm2, ecx
movd xmm3, edx
punpcklqdq xmm3, xmm2
movdqa xmm2, xmm0
psllq xmm0, 0xd
shufps xmm2, xmm3, 0x24
movaps xmm3, xmm2
paddq xmm1, xmm2
psllq xmm2, 0x10
psrlq xmm3, 0x30
shufps xmm0, xmm2, 0xe4
pshufd xmm2, xmm1, 0x1e
shufps xmm4, xmm3, 0xe4
orps xmm0, xmm4
pxor xmm0, xmm1
movdqa xmm1, xmm0
movdqa xmm3, xmm0
paddq xmm2, xmm0
psrlq xmm1, 0x2f
psrlq xmm3, 0x2b
movsd xmm3, xmm1
movdqa xmm1, xmm0
psllq xmm0, 0x15
psllq xmm1, 0x11
movsd xmm0, xmm1
pshufd xmm1, xmm2, 0xff
movd ecx, xmm1
pshufd xmm1, xmm2, 0xee
orpd xmm0, xmm3
movd edx, xmm1
xor ecx, ebx
xorpd xmm0, xmm2
xor edx, esi
movd xmm1, ecx
xor esi, esi
movd xmm3, edx
punpcklqdq xmm1, xmm3
shufps xmm1, xmm2, 0x12
jmp 0x40a0c1
mov eax, ebx
jmp 0x40a0c1
xor eax, eax
mov esi, 0xff
mov ecx, dword [ebp + 0x14]
pshufd xmm3, xmm1, 0xee
mov dword [ebp - 0x20], esi
pshufd xmm2, xmm1, 0xff
movd ebx, xmm3
pshufd xmm3, xmm0, 0xee
movd edi, xmm3
pshufd xmm3, xmm0, 0xff
movd edx, xmm3
xor edi, esi
pshufd xmm3, xmm0, 0x55
movd esi, xmm0
paddq xmm0, xmm1
shl ecx, 0x18
pshufd xmm1, xmm0, 0x55
add ecx, 0x1000000
or ecx, eax
movd eax, xmm3
xor edx, ecx
add ebx, edi
mov dword [ebp - 0x24], ecx
mov ecx, esi
mov dword [ebp - 0x10], ebx
movd ebx, xmm2
adc ebx, edx
shld ecx, eax, 0xd
shld eax, esi, 0xd
mov esi, edi
shrd edi, edx, 0x10
shld esi, edx, 0x10
movd edx, xmm1
xor edi, ebx
mov dword [ebp - 0x18], edx
xor eax, edx
movd edx, xmm0
mov dword [ebp - 0x14], edx
xor ecx, edx
mov edx, ebx
mov ebx, dword [ebp - 0x10]
xor esi, ebx
add ebx, ecx
adc edx, eax
add dword [ebp - 0x18], esi
mov dword [ebp - 0x10], ebx
mov ebx, esi
mov dword [ebp - 0x1c], edx
mov edx, ecx
adc dword [ebp - 0x14], edi
shld edx, eax, 0x11
shrd ecx, eax, 0xf
shrd esi, edi, 0xb
shld ebx, edi, 0x15
mov edi, dword [ebp - 0x18]
mov eax, dword [ebp - 0x14]
xor edx, dword [ebp - 0x10]
xor ebx, edi
xor edi, dword [ebp - 0x20]
xor esi, eax
xor eax, dword [ebp - 0x24]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x1c]
xor ecx, eax
xor eax, 0xff
add edi, edx
adc dword [ebp - 0x14], ecx
add eax, ebx
mov dword [ebp - 0x18], edi
mov edi, edx
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x10]
adc eax, esi
shld edi, ecx, 0xd
shrd edx, ecx, 0x13
mov ecx, ebx
shrd ebx, esi, 0x10
shld ecx, esi, 0x10
xor edi, dword [ebp - 0x18]
mov esi, eax
xor ebx, eax
mov eax, dword [ebp - 0x1c]
xor edx, dword [ebp - 0x14]
xor ecx, eax
add eax, edi
adc esi, edx
add dword [ebp - 0x14], ecx
mov dword [ebp - 0x1c], eax
mov eax, ecx
mov dword [ebp - 0x10], esi
mov esi, edi
adc dword [ebp - 0x18], ebx
shld esi, edx, 0x11
shrd edi, edx, 0xf
shld eax, ebx, 0x15
shrd ecx, ebx, 0xb
mov edx, dword [ebp - 0x14]
mov ebx, dword [ebp - 0x18]
xor esi, dword [ebp - 0x1c]
xor edi, dword [ebp - 0x10]
xor eax, edx
xor ecx, ebx
add edx, esi
adc ebx, edi
mov dword [ebp - 0x14], edx
add dword [ebp - 0x10], eax
mov edx, dword [ebp - 0x1c]
mov dword [ebp - 0x18], ebx
mov ebx, esi
adc edx, ecx
shld ebx, edi, 0xd
shrd esi, edi, 0x13
mov edi, eax
shrd eax, ecx, 0x10
shld edi, ecx, 0x10
mov ecx, dword [ebp - 0x10]
xor ebx, dword [ebp - 0x14]
xor esi, dword [ebp - 0x18]
xor eax, edx
xor edi, ecx
add ecx, ebx
adc edx, esi
add dword [ebp - 0x18], edi
mov dword [ebp - 0x10], ecx
mov ecx, edi
mov dword [ebp - 0x1c], edx
mov edx, ebx
adc dword [ebp - 0x14], eax
shld edx, esi, 0x11
shrd edi, eax, 0xb
shrd ebx, esi, 0xf
shld ecx, eax, 0x15
mov esi, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x18]
xor edx, dword [ebp - 0x10]
xor edi, dword [ebp - 0x14]
xor ebx, esi
xor ecx, eax
add eax, edx
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x14]
adc eax, ebx
add esi, ecx
mov dword [ebp - 0x1c], esi
mov esi, edx
adc dword [ebp - 0x10], edi
shrd edx, ebx, 0x13
shld esi, ebx, 0xd
xor edx, eax
mov eax, dword [ebp - 0x10]
mov ebx, dword [ebp - 0x1c]
xor esi, dword [ebp - 0x18]
mov dword [ebp - 0x14], esi
mov esi, ecx
shrd ecx, edi, 0x10
shld esi, edi, 0x10
mov edi, dword [ebp - 0x14]
xor ecx, eax
xor esi, ebx
add ebx, edi
adc eax, edx
mov dword [ebp - 0x10], eax
mov eax, edi
shld eax, edx, 0x11
shld edx, edi, 0x11
mov edi, esi
shrd esi, ecx, 0xb
shld edi, ecx, 0x15
mov ecx, dword [ebp - 0x10]
xor edx, ebx
xor edx, esi
xor eax, ecx
xor edx, ecx
xor eax, edi
xor eax, ebx
add esp, 0x18
pop esi
pop edi
pop ebx
pop ebp
ret