Function at 0x406070
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5a3be0
mov eax, dword fs:[0]
push eax
sub esp, 0x48
mov eax, dword [0x630198]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
mov dword [ebp - 0x48], 0
mov dword [ebp - 0x54], 0
mov dword [ebp - 0x50], 0
mov dword [ebp - 0x4c], 0
lea edi, [esi + 0x10]
mov dword [ebp - 4], 0
push edi
call fcn.0042a914
lea edx, [esi + 0x28]
push edx
mov dword [ebp - 0x44], edx
call fcn.0042a914
add esp, 8
mov dword [ebp - 0x2c], 7
xor eax, eax
mov dword [ebp - 0x30], 0
lea ecx, [ebp - 0x40]
mov word [ebp - 0x40], ax
push 1
push 0x5a9ae8
call fcn.00402110
cmp dword [edi + 0x14], 8
mov byte [ebp - 4], 1
jb 0x406107
mov edi, dword [edi]
xor eax, eax
mov dword [ebp - 0x14], 7
mov dword [ebp - 0x18], 0
mov word [ebp - 0x28], ax
cmp word [edi], ax
jne 0x406124
xor ecx, ecx
jmp 0x40613f
mov ecx, edi
lea edx, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x406130
sub ecx, edx
sar ecx, 1
push ecx
push edi
lea ecx, [ebp - 0x28]
call fcn.00402110
lea eax, [ebp - 0x54]
mov byte [ebp - 4], 2
push eax
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp - 0x28]
push eax
call fcn.0042a559
mov eax, dword [ebp - 0x14]
add esp, 0xc
cmp eax, 8
jb 0x406176
inc eax
lea ecx, [ebp - 0x28]
push eax
push dword [ebp - 0x28]
call fcn.00402260
xor eax, eax
mov dword [ebp - 0x14], 7
mov word [ebp - 0x28], ax
mov byte [ebp - 4], al
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x18], 0
cmp eax, 8
jb 0x4061a2
inc eax
lea ecx, [ebp - 0x40]
push eax
push dword [ebp - 0x40]
call fcn.00402260
call fcn.00426209
test al, al
je 0x4061bf
xor dh, byte [ebx + esi - 0x37e77032]
sbb al, cl
xchg edi, eax
xchg edi, eax
push esi
mulps xmm3, xmmword [edi - 0x6c]
jo 0x4061ab
xchg ebp, eax
fadd st(5)
call fcn.004264bb
test al, al
je 0x4061e4
pop ds
pop ebx
or esp, esp
not dword [edx - 0x33]
mov ch, byte [0x61dae819]
popal
or eax, 0xf3cda41e
push es
invalid
call fcn.004266e3
test al, al
je 0x406202
jbe 0x4061b1
xlatb
jg 0x4061d4
das
jg 0x4061d4
pop es
and eax, 0x2954687f
dec ecx
imul dword [edi + eax - 0x74a2770a]
jne 0x4061b1
mov esi, dword [ebp - 0x54]
mov eax, dword [ebp - 0x50]
cmp esi, eax
je 0x4062e7
xor eax, eax
mov dword [ebp - 0x14], 7
push 0xffffffffffffffff
push eax
push esi
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x18], 0
mov word [ebp - 0x28], ax
call fcn.00401ff0
lea eax, [ebp - 0x28]
mov byte [ebp - 4], 3
push eax
call fcn.0042a914
mov eax, dword [ebp - 0x44]
add esp, 4
cmp dword [eax + 0x14], 8
jb 0x40624d
mov ecx, dword [eax]
jmp 0x40624f
mov ecx, eax
cmp dword [ebp - 0x14], 8
lea edx, [ebp - 0x28]
mov edi, dword [ebp - 0x28]
mov eax, dword [eax + 0x10]
cmovae edx, edi
cmp dword [ebp - 0x18], eax
mov ebx, eax
cmovb ebx, dword [ebp - 0x18]
test ebx, ebx
jne 0x406330
xor eax, eax
test eax, eax
jne 0x406291
mov edx, dword [ebp - 0x44]
mov ecx, dword [ebp - 0x18]
mov eax, dword [edx + 0x10]
cmp ecx, eax
jb 0x406291
mov edx, dword [ebp - 0x48]
mov eax, 1
cmovbe edx, eax
mov dword [ebp - 0x48], edx
mov eax, dword [ebp - 0x14]
mov byte [ebp - 4], 0
cmp eax, 8
jb 0x4062d6
inc eax
cmp eax, 0x7fffffff
ja 0x40632b
add eax, eax
cmp eax, 0x1000
jb 0x4062cd
test byte [ebp - 0x28], 0x1f
jne 0x40632b
mov eax, dword [edi - 4]
cmp eax, edi
jae 0x40632b
sub edi, eax
cmp edi, 4
jb 0x40632b
cmp edi, 0x23
ja 0x40632b
mov edi, eax
push edi
call fcn.0043c2d6
add esp, 4
mov eax, dword [ebp - 0x50]
add esi, 0x18
cmp esi, eax
jne 0x406210
mov esi, dword [ebp - 0x54]
xor ecx, ecx
cmp dword [ebp - 0x48], ecx
setne cl
mov dword [ebp - 0x44], ecx
test esi, esi
je 0x40639e
push dword [ebp - 0x44]
lea ecx, [ebp - 0x54]
push ecx
push eax
push esi
call fcn.00405500
mov ecx, dword [ebp - 0x4c]
mov eax, 0x2aaaaaab
mov ebx, dword [ebp - 0x54]
add esp, 0x10
sub ecx, ebx
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, 0xaaaaaaa
jbe 0x406357
call fcn.0044a551
mov ax, word [edx]
cmp ax, word [ecx]
jne 0x406346
add edx, 2
add ecx, 2
sub ebx, 1
jmp 0x40626a
movzx eax, word [edx]
cmp ax, word [ecx]
sbb eax, eax
and eax, 0xfffffffe
inc eax
jmp 0x406272
lea eax, [eax + eax*2]
shl eax, 3
cmp eax, 0x1000
jb 0x406392
test bl, 0x1f
je 0x40636e
call fcn.0044a551
mov eax, dword [ebx - 4]
cmp eax, ebx
jb 0x40637a
call fcn.0044a551
sub ebx, eax
cmp ebx, 4
jae 0x406386
call fcn.0044a551
cmp ebx, 0x23
jbe 0x406390
call fcn.0044a551
mov ebx, eax
push ebx
call fcn.0043c2d6
mov ecx, dword [ebp - 0x44]
add esp, 4
mov eax, ecx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0043c551
mov esp, ebp
pop ebp
ret