Function at 0x40fa40
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x14
mov esi, dword [esp + 0x2c]
mov eax, dword [esi + 8]
mov dword [esp + 0x10], eax
movzx eax, byte [esi + 0xc]
mov byte [esp + 3], al
movzx eax, byte [0x537199]
push 4
push 0x2f8
call fcn.00403b10
add esp, 8
test eax, eax
je 0x40fde9
lea ecx, [esi + 0x10]
mov dword [esp + 8], ecx
push 0x2f8
push 0
mov dword [esp + 0x14], eax
push eax
call fcn.00438740
add esp, 0xc
mov edx, 0xe414a674
mov ecx, 0xf0de7325
mov eax, dword [esi + 0x30]
movd xmm1, edx
movd xmm0, ecx
punpckldq xmm0, xmm1
movapd xmm1, xmmword [0x529b50]
mov dword [esp + 4], eax
nop dword [eax + eax]
mov eax, 1
mov esi, 0
mov edi, 0x70656462
mov ebp, 0x70656462
lock xadd dword [0x5371a4], eax
mov edx, eax
xor edx, 0x79746573
mov ecx, edx
mov ebx, edx
add ecx, 0x6e657261
adc esi, 0xdcdecbc7
shld ebx, edi, 0x10
shld ebp, edx, 0x10
xor ebx, ecx
xor ebp, esi
mov esi, ebx
mov edi, ebp
mov ecx, ebx
add esi, 0xd7dedfc6
adc edi, 0xded7d4e2
shld ecx, ebp, 0x15
shld ebp, ebx, 0x15
add edx, 0xc19fead0
mov ebx, 0
movd xmm2, esi
movd xmm3, ebp
movd xmm6, ecx
adc ebx, 0x1671bdd1
xor eax, esi
punpckldq xmm6, xmm3
movd xmm3, edi
movd xmm5, ebx
xor ebx, 0xff
xor edi, 0x4000000
punpckldq xmm2, xmm3
movd xmm3, edx
punpcklqdq xmm6, xmm0
movd xmm4, ebx
movdqa xmm7, xmm3
punpcklqdq xmm3, xmm4
punpckldq xmm7, xmm5
movd xmm5, edi
punpcklqdq xmm2, xmm7
pxor xmm2, xmm6
movd xmm6, eax
punpcklqdq xmm5, xmm6
movdqa xmm6, xmm2
shufps xmm3, xmm2, 0xe2
shufps xmm6, xmm5, 0x24
paddq xmm3, xmm6
movdqa xmm6, xmm2
pshufd xmm4, xmm3, 0xff
psllq xmm6, 0xd
movd eax, xmm4
movdqa xmm4, xmm2
psrlq xmm2, 0x30
psllq xmm4, 0x10
shufpd xmm2, xmm1, 2
movd xmm5, eax
movsd xmm6, xmm4
movdqa xmm4, xmm3
orpd xmm2, xmm6
shufps xmm4, xmm5, 0x4e
xorpd xmm2, xmm3
shufps xmm4, xmm3, 0x42
movapd xmm3, xmm2
movapd xmm5, xmm2
paddq xmm4, xmm2
psrlq xmm3, 0x2b
psrlq xmm5, 0x2f
movsd xmm5, xmm3
movdqa xmm3, xmm2
psllq xmm2, 0x11
psllq xmm3, 0x15
movsd xmm2, xmm3
pshufd xmm3, xmm4, 0xff
movd eax, xmm3
orpd xmm2, xmm5
movdqa xmm3, xmm4
movd xmm5, eax
xorpd xmm2, xmm4
shufps xmm3, xmm5, 0x4e
movapd xmm6, xmm2
shufps xmm3, xmm4, 0x42
psrlq xmm6, 0x33
paddq xmm3, xmm2
pshufd xmm4, xmm3, 0xff
movd eax, xmm4
movdqa xmm4, xmm2
psrlq xmm4, 0x30
movd xmm5, eax
movsd xmm6, xmm4
movdqa xmm4, xmm2
psllq xmm2, 0xd
psllq xmm4, 0x10
movsd xmm2, xmm4
movdqa xmm4, xmm3
orpd xmm2, xmm6
shufps xmm4, xmm5, 0x4e
xorpd xmm2, xmm3
shufps xmm4, xmm3, 0x42
movapd xmm3, xmm2
movapd xmm5, xmm2
paddq xmm4, xmm2
psrlq xmm3, 0x2b
psrlq xmm5, 0x2f
movsd xmm5, xmm3
movdqa xmm3, xmm2
psllq xmm2, 0x11
psllq xmm3, 0x15
movsd xmm2, xmm3
pshufd xmm3, xmm4, 0xff
movd eax, xmm3
orpd xmm2, xmm5
movdqa xmm3, xmm4
movd xmm5, eax
xorpd xmm2, xmm4
shufps xmm3, xmm5, 0x4e
movapd xmm5, xmm2
shufps xmm3, xmm4, 0x42
movapd xmm4, xmm2
psrlq xmm5, 0x33
psrlq xmm4, 0x30
paddq xmm3, xmm2
movsd xmm5, xmm4
movdqa xmm4, xmm2
psllq xmm2, 0xd
psllq xmm4, 0x10
movsd xmm2, xmm4
orpd xmm2, xmm5
xorpd xmm2, xmm3
pshufd xmm4, xmm2, 0xee
paddq xmm4, xmm3
pshufd xmm3, xmm4, 0x55
movd eax, xmm4
movdqa xmm4, xmm2
movd ecx, xmm3
movdqa xmm3, xmm2
psrlq xmm4, 0x2f
psrlq xmm3, 0x2b
xor eax, ecx
movsd xmm4, xmm3
movdqa xmm3, xmm2
psllq xmm2, 0x11
psllq xmm3, 0x15
movsd xmm2, xmm3
orpd xmm2, xmm4
pshufd xmm3, xmm2, 0xee
pxor xmm3, xmm2
movd edx, xmm3
pshufd xmm2, xmm3, 0x55
movd ebx, xmm2
xor edx, eax
xor ebx, eax
mov ecx, edx
or ecx, ebx
je 0x40fac0
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
movsd xmm0, qword [eax]
movsd xmm1, qword [eax + 8]
mov eax, dword [esp + 0x10]
movsd qword [esi + 0x98], xmm1
movsd qword [esi + 0x90], xmm0
mov dword [esi + 0xa0], eax
movzx eax, byte [esp + 3]
mov byte [esi + 0xa4], al
mov eax, dword [esp + 0xc]
mov dword [esi], 0
mov dword [esi + 4], eax
mov dword [esi + 0x40], 0
mov dword [esi + 0x44], eax
mov eax, dword [esp + 4]
mov dword [esi + 0x88], eax
mov eax, dword [ecx + 0x20]
mov dword [esi + 0x84], ebx
mov dword [esi + 0x80], edx
mov dword [esi + 0x8c], eax
mov eax, dword [ecx + 0x24]
test eax, eax
je 0x40fddf
mov ecx, dword [ecx + 0x28]
test ecx, ecx
je 0x40fddf
push 1
push ecx
push eax
call fcn.00403b20
add esp, 0xc
mov eax, esi
add esp, 0x14
pop esi
pop edi
pop ebx
pop ebp
ret
push 0x2f8
push 4
call fcn.0043daa0
add esp, 8
ud2