Function at 0x606738
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
push esi
mov esi, dword [ebp + 8]
test byte [esi + 0x24], 1
je 0x606afe
cmp byte [ebp + 0x10], 1
push edi
jne 0x606777
mov eax, dword [esi + 0x14]
add eax, 0xfffffffe
cmp eax, 5
ja 0x606afd
jmp dword [eax*4 + 0x407a9c]
mov edi, dword [ebp + 0xc]
test edi, edi
jle 0x606afd
cmp edi, 0xd
jge 0x606afd
mov eax, dword [edi*4 + 0x768270]
dec edi
push ebx
push 0x1b7
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x1c], 0
call 0x6c471c
mov bl, byte [ebp + 0x14]
cmp eax, 1
je 0x6067c3
cmp bl, 1
jne 0x606a79
mov eax, dword [edi*4 + 0x7682a4]
cmp eax, 8
jg 0x6067d4
cmp dword [esi + 0x14], eax
jg 0x6067dd
cmp bl, 1
jne 0x606a79
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x1c], eax
mov eax, dword [0x7682f0]
mov dword [0x779070], 0
mov dword [0x779074], 0xffffff
mov ecx, 0xff
mov edi, 0x779078
rep stosd dword es:[edi], eax
lea eax, [ebp - 4]
push eax
push esi
push 0x6c1be0
push 0x316
push 0x6c1b38
mov ecx, 0x77c500
mov dword [ebp - 0x20], 0x779070
call fcn.00604068
cmp bl, 1
jne 0x6068c2
cmp dword [ebp - 4], 0x7d0
jbe 0x606870
push 0
push 0
push 0
push 0
push 0
push 0x10006
push 8
push 0xa4
push esi
push esi
push 0x6c1be0
push 0x323
push 0x6c1b38
mov ecx, 0x77c340
call fcn.00603998
cmp dword [esi + 0x14], 0x18
je 0x6068a4
push 0
push 0
push 0
push 0
push 0
push 4
push 0x18
push 0xa4
push esi
push esi
push 0x6c1be0
push 0x326
push 0x6c1b38
mov ecx, 0x77c340
call fcn.00603998
lea eax, [ebp - 4]
push eax
push esi
push 0x6c1be0
push 0x327
push 0x6c1b38
mov ecx, 0x77c500
call fcn.00604068
push 0x1f40
call 0x6c4dc9
mov edi, eax
push 0x1f40
mov dword [ebp - 0xc], edi
call 0x6c4dc9
add esp, 8
cmp dword [ebp - 4], 0x7d0
mov ebx, eax
mov dword [ebp - 8], ebx
jae 0x606a5c
test edi, edi
je 0x606a69
test ebx, ebx
je 0x606a5c
or eax, 0xffffffff
mov ecx, 0x7d0
mov edi, ebx
rep stosd dword es:[edi], eax
mov edi, dword [ebp - 4]
xor ecx, ecx
mov eax, dword [esi + 0x30]
mov dword [ebp - 0x14], ecx
cmp eax, 6
je 0x606930
cmp eax, 8
je 0x606930
cmp eax, 5
je 0x606930
cmp eax, 7
je 0x606930
mov eax, dword [esi + 0xc]
jmp 0x606933
mov eax, dword [esi + 0x10]
xor ebx, ebx
cmp ecx, eax
jge 0x6069df
mov eax, dword [esi + 0x30]
cmp eax, 6
je 0x606959
cmp eax, 8
je 0x606959
cmp eax, 5
je 0x606959
cmp eax, 7
je 0x606959
mov eax, dword [esi + 0x10]
jmp 0x60695c
mov eax, dword [esi + 0xc]
cmp ebx, eax
jge 0x6069d9
push ecx
push ebx
push esi
push 0x6c1be0
push 0x336
push 0x6c1b38
mov ecx, 0x77c340
call fcn.00604178
mov edi, dword [ebp - 4]
xor edx, edx
test edi, edi
jle 0x6069d0
mov ecx, dword [ebp - 0xc]
mov esi, dword [ebp - 8]
sub esi, ecx
cmp dword [esi + ecx], 0xffffffff
je 0x6069ba
cmp dword [ecx], eax
je 0x6069a8
inc edx
add ecx, 4
cmp edx, edi
jl 0x60698d
mov edi, dword [esi + eax*2 - 8]
out 0x23, al
jns 0x6069f7
jbe 0x6069b6
or eax, 0x68415c26
push ebp
test eax, 0x8c2402f6
out 0x7e, al
ja 0x6069a5
pop esp
inc ecx
push 0xa9675526
test byte [edx], 0x24
mov esi, fs
jle 0x606a2f
in al, dx
xchg ah, bh
cld
in eax, dx
enter 0xffffffffffffdebb, 0x6f
cmp eax, dword [ebp + 0x27]
out dx, eax
dec edx
pop ss
jmp dword [esi + 0x29]
out dx, al
outsd dx, dword [esi]
lodsb al, byte [esi]
salc
mov dword [0xf3d4bd27], eax
pop es
not byte [edi - 0x24]
lodsb al, byte [esi]
aam 0x92
xchg edx, eax
sub ch, ch
std
push es
cwde
daa
or al, 6
hlt
adc byte [edx], ah
movsd dword es:[edi], dword [esi]
dec esp
jbe 0x6069c3
test byte cs:[edx], bh
sbb dl, al
sbb al, 0xda
test eax, 0x30253dcb
fsubr qword [edx + eax]
and eax, 0x22cdc30
mov ah, 0xb4
sahf
and eax, 0x4cdea1bd
hlt
mov byte [0x866ae4b8], al
and dword [esi - 0x30], edi
mov eax, 0x21866ae4
jle 0x606a07
mov al, byte [0xf93555b3]
aas
push ebp
xor eax, 0xd0123ff9
adc dl, al
out dx, eax
adc dl, byte [edx + 0x28]
adc al, 0x46
sub ah, cl
and al, 0x6c
pop es
insb byte es:[edi], dx
div edi
push ecx
xor byte [ebp + 0x76ec631f], ch
fadd qword [edi - 7]
sbb ecx, dword [edi - 0x34]
jne 0x606a3d
loopne 0x606a45
out 0xcd, eax
cmpsd dword [esi], dword es:[edi]
int 0xa7
cmp eax, 0x18426dcf
jb 0x606ae4
jbe 0x606a6a
adc bh, byte [ebp + 0x57]
jge 0x606ac3
sub eax, 0x39917021
lcall 0x261e, 0xc7e9529e
and eax, 0xd17b592
in al, 0xce
loop 0x606a39
xchg edx, eax
mov ch, 0x17
or eax, 0xb8e2cee4
push edx
mov ebp, 0xd8674d17
xchg esi, eax
xchg dword [edi], edx
pop ebp
xor al, 2
out 0x7d, al
xor byte [ecx], al
adc byte [edi], bh
test ah, 2
jl 0x606a60
mov ch, 0x92
lock or byte [eax - 0x7bb50389], 0xd3
test byte [edx + 7], al
push ds
pop ecx
wait
xchg ebp, ebx
call 0x7d04d78e
or byte [ebp + 0x44], 0x7f
cli
jl 0x606a30
dec ebp
inc esp
jg 0x606aae
pushfd
mov esp, 0x92280e0e
in al, dx
bound ebx, qword [esi + 0x1492b8ed]
not al
cld
adc byte [edi - 0x411d6ef], ah
pop esp
dec edx
sub cl, byte [edi + 0x20633d9a]
mov eax, 0xdef2904f
sti
loope 0x606ad2
hlt
mov ebx, 0xaba95f5e
iretd
push ebp
imul edx, dword [ebx], 0x5d6c91a9
aaa
repne insb byte es:[edi], dx
push ss
pop ss
mov al, 0xb0
xor cl, dl
add eax, 0x8f496b33
invalid
cwde
out 0x97, al
fdivr qword [ecx - 0x57]
pop eax
mov al, byte [0xc1e4331e]
cld
cmpsb byte [esi], byte es:[edi]
cmp dh, byte [edx]
sahf
push ecx
lds eax, [ecx]
jnp 0x606ab0
lodsd eax, dword [esi]
push ebx
mov ebp, 0x8ad688d7
push ecx
in eax, dx
movsb byte es:[edi], byte [esi]
std
stosb byte es:[edi], al
xor byte [edx], cl
sbb eax, 0xb662c877
add byte [edx], ch
adc ax, 0x8b51
daa
jns 0x606add
out 0xbd, al
aam 0xc
or byte [eax - 0x4179b20a], al
cmpsb byte [esi], byte es:[edi]
int3