Function at 0x406ff0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x49dc55
mov eax, dword fs:[0]
push eax
sub esp, 0x88
mov eax, dword [0x4c0100]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, ecx
mov dword [ebp - 0x60], eax
xor edi, edi
mov dword [ebp - 0x54], edi
mov dword [ebp - 4], edi
mov ecx, dword [ebp + 0x18]
mov dword [ebp - 0x50], ecx
test ecx, ecx
jne 0x40703c
mov byte [ebp - 0x49], cl
jmp 0x4074a5
cmp dword [ebp + 0x1c], 0xf
lea esi, [ebp + 8]
xorps xmm0, xmm0
movups xmmword [eax], xmm0
movups xmmword [eax + 0x10], xmm0
movq qword [eax + 0x20], xmm0
lea eax, [ebp + 8]
cmova eax, dword [ebp + 8]
add eax, ecx
movq qword [ebp - 0x74], xmm0
cmp dword [ebp + 0x1c], 0xf
mov dword [ebp - 0x58], eax
cmova esi, dword [ebp + 8]
movups xmmword [ebp - 0x94], xmm0
movups xmmword [ebp - 0x84], xmm0
lea esi, [ecx + esi]
lea ecx, [ebp + 8]
mov eax, esi
cmova ecx, dword [ebp + 8]
sub eax, ecx
push eax
push 0x60
push ecx
call fcn.00474fe0
add esp, 0xc
mov ecx, esi
test eax, eax
cmovne ecx, eax
mov edx, ecx
cmp ecx, esi
je 0x4070b8
inc ecx
cmp ecx, esi
je 0x4070b8
mov al, byte [ecx]
cmp al, 0x60
je 0x4070ae
mov byte [edx], al
inc edx
inc ecx
cmp ecx, esi
jne 0x4070a5
mov ecx, dword [ebp + 0x18]
jmp 0x4070bb
mov ecx, dword [ebp - 0x50]
cmp dword [ebp + 0x1c], 0xf
lea eax, [ebp + 8]
mov esi, edx
cmova eax, dword [ebp + 8]
sub dword [ebp - 0x58], edx
sub esi, eax
mov edx, dword [ebp - 0x58]
mov eax, ecx
sub eax, esi
cmp eax, edx
cmovb edx, eax
cmp dword [ebp + 0x1c], 0xf
mov dword [ebp - 0x58], edx
lea edx, [ebp + 8]
cmova edx, dword [ebp + 8]
mov eax, dword [ebp - 0x58]
add edx, esi
sub ecx, eax
add eax, edx
mov dword [ebp - 0x50], ecx
sub ecx, esi
inc ecx
push ecx
push eax
push edx
call fcn.00474370
mov eax, dword [ebp - 0x50]
xorps xmm0, xmm0
mov dword [ebp + 0x18], eax
mov eax, 0x200a
movups xmmword [ebp - 0x48], xmm0
mov dword [ebp - 0x38], 2
mov dword [ebp - 0x34], 0xf
mov word [ebp - 0x48], ax
mov byte [ebp - 0x46], 0
lea eax, [ebp - 0x48]
mov byte [ebp - 4], 1
push eax
lea edx, [ebp + 8]
lea ecx, [ebp - 0x6c]
call fcn.0040fe40
mov ecx, dword [ebp - 0x34]
add esp, 0x10
cmp ecx, 0xf
jbe 0x407170
mov edx, dword [ebp - 0x48]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x407166
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4074f3
push ecx
push edx
call fcn.0047292b
add esp, 8
mov edx, dword [ebp - 0x68]
mov eax, edx
mov esi, dword [ebp - 0x6c]
sub eax, esi
sar eax, 3
imul eax, eax, 0xaaaaaaab
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x34], 0xf
mov byte [ebp - 0x48], 0
cmp eax, 8
jb 0x407499
lea eax, [esi + 0x18]
mov dword [ebp - 0x58], eax
cmp esi, edx
je 0x407463
sbb al, al
and al, 0xfe
add al, 1
jns 0x407463
mov dword [ebp - 0x18], 0
lea eax, [ebp - 0x18]
mov byte [ebp - 0x14], 0
or edi, 1
mov dword [ebp - 0x50], 0x4b51c4
mov dword [ebp - 0x54], eax
mov eax, dword [ebp - 0x50]
mov ecx, dword [eax]
mov eax, dword [ebp - 0x54]
xor ecx, 0x59a596d3
mov dword [eax], ecx
lea eax, [ebp - 0x18]
mov dword [ebp - 0x50], 0x4b51c4
mov dword [ebp - 0x54], eax
mov eax, dword [ebp - 0x50]
mov cl, byte [eax + 4]
mov eax, dword [ebp - 0x54]
xor cl, 0x69
mov dword [ebp - 0x54], edi
mov edi, dword [ebp - 0x58]
mov byte [eax + 4], cl
mov ecx, esi
cmp dword [edi - 4], 0xf
jbe 0x40720f
mov ecx, dword [esi]
lea edx, [ebp - 0x18]
call fcn.0040fdc0
test al, al
je 0x4072d7
mov eax, dword [ebp - 0x6c]
cmp esi, eax
je 0x4072d7
sbb al, al
and al, 0xfe
inc al
test al, al
jle 0x4072d7
xorps xmm0, xmm0
mov byte [ebp - 0x1c], 0
movq qword [ebp - 0x24], xmm0
lea eax, [ebp - 0x24]
mov dword [ebp - 0x50], 0x4b5288
mov edx, 0xfee329e5
mov dword [ebp - 0x5c], eax
xor edi, edi
nop dword [eax + eax]
mov eax, dword [ebp - 0x50]
mov ecx, dword [eax + edi]
mov eax, dword [ebp - 0x5c]
xor ecx, edx
mov dword [eax + edi], ecx
add edi, 4
imul eax, edx, 0x41c64e6d
add eax, 0x3039
mov edx, eax
shl eax, 2
shr edx, 0x1e
or edx, eax
cmp edi, 8
jb 0x407260
mov edi, dword [ebp - 0x58]
lea eax, [ebp - 0x24]
or dword [ebp - 0x54], 2
mov dword [ebp - 0x5c], 0x4b5288
mov dword [ebp - 0x50], eax
mov eax, dword [ebp - 0x5c]
mov cl, byte [eax + 8]
mov eax, dword [ebp - 0x50]
xor cl, dl
mov byte [eax + 8], cl
lea ecx, [edi - 0x30]
cmp dword [ecx + 0x14], 0xf
jbe 0x4072b8
mov ecx, dword [ecx]
lea edx, [ebp - 0x24]
call fcn.0040fdc0
test al, al
je 0x4072d7
mov eax, dword [ebp - 0x68]
cmp edi, eax
je 0x4072d7
sbb al, al
mov byte [ebp - 0x49], 1
and al, 0xfe
add al, 1
js 0x4072db
mov byte [ebp - 0x49], 0
mov ecx, dword [ebp - 0x54]
test cl, 2
je 0x4072fb
and ecx, 0xfffffffd
lea eax, [ebp - 0x24]
mov edx, 9
nop
mov byte [eax], 0
lea eax, [eax + 1]
sub edx, 1
jne 0x4072f0
and ecx, 0xfffffffe
lea eax, [ebp - 0x18]
mov dword [ebp - 0x54], ecx
mov ecx, 5
nop dword [eax]
mov byte [eax], 0
lea eax, [eax + 1]
sub ecx, 1
jne 0x407310
cmp byte [ebp - 0x49], cl
je 0x407345
push ecx
mov ecx, edi
call fcn.004109a0
mov ecx, dword [ebp - 0x60]
add esp, 4
mov edi, dword [ebp - 0x54]
add esi, 0x18
add dword [ebp - 0x58], 0x18
mov dword [ecx + 4], edx
mov edx, dword [ebp - 0x68]
mov dword [ecx], eax
jmp 0x4071a4
xorps xmm0, xmm0
mov word [ebp - 0x28], 0
movq qword [ebp - 0x30], xmm0
lea eax, [ebp - 0x30]
mov dword [ebp - 0x5c], 0x4b5140
xor edi, edi
mov dword [ebp - 0x50], eax
mov eax, 0x4f9931a5
mov ecx, dword [ebp - 0x5c]
mov edx, dword [ecx + edi]
mov ecx, dword [ebp - 0x50]
xor edx, eax
mov dword [ecx + edi], edx
mov ecx, eax
shl ecx, 0xd
add edi, 4
xor ecx, eax
mov eax, ecx
shr eax, 0x11
xor ecx, eax
mov eax, ecx
shl eax, 5
xor eax, ecx
not eax
cmp edi, 8
jb 0x407367
lea ecx, [ebp - 0x30]
mov dword [ebp - 0x5c], 0x4b5140
mov dword [ebp - 0x50], ecx
mov edi, 8
mov ecx, dword [ebp - 0x5c]
mov dl, byte [ecx + edi]
mov ecx, dword [ebp - 0x50]
xor dl, al
shr eax, 8
mov byte [ecx + edi], dl
inc edi
cmp edi, 0xa
jb 0x4073a6
mov edi, dword [ebp - 0x58]
mov ecx, esi
cmp dword [edi - 4], 0xf
jbe 0x4073ca
mov ecx, dword [esi]
lea edx, [ebp - 0x30]
call fcn.0040fdc0
mov edx, dword [ebp - 0x68]
test al, al
je 0x4073f6
mov ecx, dword [ebp - 0x60]
mov eax, dword [ecx]
or eax, dword [ecx + 4]
je 0x4073f6
add edi, 0x48
cmp edi, edx
je 0x4073f6
sbb al, al
mov byte [ebp - 0x49], 1
and al, 0xfe
add al, 1
js 0x4073fa
mov byte [ebp - 0x49], 0
mov edi, dword [ebp - 0x54]
lea eax, [ebp - 0x30]
and edi, 0xfffffffb
mov ecx, 0xa
mov byte [eax], 0
inc eax
sub ecx, 1
jne 0x407408
cmp byte [ebp - 0x49], cl
jne 0x407422
add esi, 0x18
add dword [ebp - 0x58], 0x18
jmp 0x4071a4
lea ecx, [esi + 0x18]
push ecx
call fcn.004109a0
mov edi, dword [ebp - 0x60]
lea ecx, [esi + 0x30]
mov dword [edi + 8], eax
mov dword [edi + 0xc], edx
call fcn.004109a0
lea ecx, [esi + 0x48]
mov dword [edi + 0x10], eax
mov dword [edi + 0x14], edx
call fcn.004109a0
lea ecx, [esi + 0x60]
mov dword [edi + 0x18], eax
mov dword [edi + 0x1c], edx
call fcn.004109a0
add esp, 4
mov dword [edi + 0x20], eax
mov dword [edi + 0x24], edx
jmp 0x407466
mov edi, dword [ebp - 0x60]
mov ecx, dword [edi + 8]
mov eax, ecx
mov edx, dword [edi + 0xc]
or eax, edx
je 0x40747d
and ecx, edx
cmp ecx, 0xffffffff
je 0x40747d
mov dl, 1
jmp 0x40747f
xor dl, dl
mov ecx, dword [edi]
mov eax, ecx
mov esi, dword [edi + 4]
or eax, esi
je 0x407499
and ecx, esi
cmp ecx, 0xffffffff
je 0x407499
mov byte [ebp - 0x49], 1
test dl, dl
jne 0x40749d
mov byte [ebp - 0x49], 0
lea ecx, [ebp - 0x6c]
call fcn.00409310
mov ecx, dword [ebp + 0x1c]
cmp ecx, 0xf
jbe 0x4074d5
mov edx, dword [ebp + 8]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x4074cb
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4074f3
push ecx
push edx
call fcn.0047292b
add esp, 8
mov al, byte [ebp - 0x49]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004728e8
mov esp, ebp
pop ebp
ret
call fcn.004780c4
int3