Function at 0x4096c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x34
mov esi, 1
mov ebp, 2
xor eax, eax
mov ebx, dword [esp + 0x48]
jmp 0x4096e3
inc esi
inc ebp
inc eax
mov ch, byte [ebx + eax]
movzx edx, ch
lea edi, [edx - 9]
cmp edi, 5
jb 0x4096e0
cmp edx, 0x20
je 0x4096e0
mov byte [esp + 0xb], ch
add ch, 0xd5
xor edx, edx
test ch, 0xfd
sete dl
add edx, ebx
mov dword [esp + 0x18], edx
mov dword [esp + 0xc], 0xffffffff
xor edi, edi
jmp 0x409729
mov edx, dword [esp + 0xc]
inc edi
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x18]
lea ebx, [edx + edi]
movzx ecx, byte [eax + ebx]
lea edx, [ecx - 0x30]
cmp edx, 0xa
jb 0x409720
mov dword [esp + 0x24], ebx
cmp cl, 0x2e
jne 0x40974e
mov edx, edi
cmp dword [esp + 0xc], 0
js 0x409724
mov dword [esp + 0x20], esi
mov dword [esp + 0x28], ecx
xor edx, edx
cmp dword [esp + 0xc], 0
setns dl
mov dword [esp + 0x14], edx
jns 0x40976a
mov dword [esp + 0xc], edi
mov ebx, edi
sub ebx, dword [esp + 0x14]
mov esi, ebx
cmp ebx, 0xf
movzx ecx, byte [esp + 0xb]
mov edx, dword [esp + 0x48]
jl 0x409785
mov esi, 0xf
test esi, esi
je 0x4097e5
cmp esi, 9
mov dword [esp + 0x1c], edi
jle 0x409807
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x20]
lea edi, [edx + ecx]
mov ch, byte [edx + ecx - 1]
cmp ch, 0x2e
jne 0x4097ab
mov ch, byte [edi]
lea edi, [edx + ebp]
movsx ebx, ch
lea ecx, [ebx - 0x30]
mov dword [esp + 4], ecx
mov ecx, esi
mov edx, esi
not edx
lea esi, [edx + esi*2]
cmp esi, 0xa
jl 0x40997d
mov dword [esp + 0x10], esi
mov dword [esp], ecx
movzx ecx, byte [edi]
cmp cl, 0x2e
jne 0x409820
movzx ecx, byte [edi + 1]
mov byte [esp + 0xa], cl
add edi, 2
mov esi, ebx
jmp 0x409827
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x4097ef
mov dword [eax], edx
fldz
fld st(0)
fchs
cmp cl, 0x2d
je 0x409800
fstp st(0)
fldz
fxch st(1)
fstp st(1)
jmp 0x409b37
fldz
test ebx, ebx
jle 0x409819
mov edx, dword [esp + 0x18]
lea edi, [edx + eax]
jmp 0x40998e
fld st(0)
jmp 0x4099e8
inc edi
mov esi, ebx
mov byte [esp + 0xa], cl
mov ebx, dword [esp + 4]
mov edx, ebx
and edx, 0xfffffff5
and esi, 0xa
mov ecx, esi
xor ecx, 0xa
imul ecx, edx
or ebx, 0xa
imul ebx, esi
movsx edx, byte [esp + 0xa]
add ebx, ecx
add ebx, edx
add ebx, 0xffffffd0
mov dword [esp + 4], ebx
mov esi, dword [esp + 0x10]
add esi, esi
sub esi, dword [esp]
cmp esi, 0xa
jl 0x40997d
movzx edx, byte [edi]
cmp dl, 0x2e
jne 0x409874
movzx edx, byte [edi + 1]
add edi, 2
jmp 0x409875
inc edi
mov dword [esp], edi
mov ebx, dword [esp + 4]
mov edi, ebx
and edi, 0xfffffff5
mov ecx, ebx
and ecx, 0xa
or ebx, 0xa
imul ebx, ecx
xor ecx, 0xa
imul ecx, edi
movsx edx, dl
add ebx, ecx
add ebx, edx
add ebx, 0xffffffd0
mov dword [esp + 4], ebx
mov edx, esi
not edx
lea edx, [edx + esi*2]
cmp edx, 0xa
jl 0x40997a
mov edi, dword [esp]
movzx ecx, byte [edi]
cmp cl, 0x2e
jne 0x4098cb
movzx ecx, byte [edi + 1]
mov byte [esp + 0x10], cl
add edi, 2
mov dword [esp], edi
jmp 0x4098d3
inc edi
mov dword [esp], edi
mov byte [esp + 0x10], cl
mov ebx, dword [esp + 4]
mov edi, ebx
and edi, 0xfffffff5
mov ecx, ebx
and ecx, 0xa
or ebx, 0xa
imul ebx, ecx
xor ecx, 0xa
imul ecx, edi
movsx edi, byte [esp + 0x10]
add ebx, ecx
add ebx, edi
add ebx, 0xffffffd0
mov dword [esp + 4], ebx
add edx, edx
sub edx, esi
cmp edx, 0xa
jl 0x40997a
mov edi, dword [esp]
movzx ecx, byte [edi]
cmp cl, 0x2e
jne 0x409921
movzx ecx, byte [edi + 1]
mov byte [esp + 0x10], cl
add edi, 2
mov dword [esp], edi
jmp 0x409929
inc edi
mov dword [esp], edi
mov byte [esp + 0x10], cl
mov ebx, dword [esp + 4]
mov edi, ebx
and edi, 0xfffffff5
mov ecx, ebx
and ecx, 0xa
or ebx, 0xa
imul ebx, ecx
xor ecx, 0xa
imul ecx, edi
movsx edi, byte [esp + 0x10]
add ebx, ecx
add ebx, edi
add ebx, 0xffffffd0
mov dword [esp + 4], ebx
mov edi, edx
not edi
lea edx, [edi + edx*2]
cmp edx, 0xa
jl 0x40997a
mov ecx, dword [esp]
movzx edx, byte [ecx]
cmp dl, 0x2e
jne 0x409b3f
movzx edx, byte [ecx + 1]
add ecx, 2
jmp 0x409b40
mov edi, dword [esp]
mov ecx, dword [esp + 4]
mov dword [esp + 0x30], ecx
mov esi, 9
fild dword [esp + 0x30]
inc esi
xor ebx, ebx
jmp 0x4099d6
mov ch, byte [edi + 1]
add edi, 2
mov dword [esp], edi
mov edx, ebx
and edx, 0xa
mov edi, ebx
or ebx, 0xa
imul ebx, edx
xor edx, 0xa
and edi, 0xfffffff5
imul edi, edx
movsx edx, ch
add ebx, edi
add ebx, edx
add ebx, 0xffffffd0
mov ecx, esi
dec ecx
mov esi, ecx
cmp ecx, 1
mov edi, dword [esp]
jle 0x4099e0
mov ch, byte [edi]
cmp ch, 0x2e
je 0x4099a0
inc edi
jmp 0x4099a6
mov dword [esp + 0x2c], ebx
fild dword [esp + 0x2c]
mov edi, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x24]
mov esi, dword [esp + 0x20]
fxch st(1)
fmul dword [str._knN]
neg edx
faddp st(1)
mov ecx, dword [esp + 0x28]
or ecx, 0x20
cmp ecx, 0x65
mov dword [esp + 0x14], edx
jne 0x409a27
movzx eax, byte [eax + ebx + 1]
mov edx, eax
add dl, 0xd5
test dl, 0xfd
je 0x409a31
add edi, esi
jmp 0x409a33
add eax, dword [esp + 0x1c]
add edi, eax
xor edx, edx
jmp 0x409a7b
add edi, ebp
mov edx, edi
mov ebx, dword [esp + 0x1c]
lea ebp, [edi + ebx]
mov edi, ebx
movzx ebx, byte [edx + ebx]
lea esi, [ebx - 0x30]
xor edx, edx
cmp esi, 9
ja 0x409a73
xor edx, edx
nop
nop
add edx, edx
lea edx, [edx + edx*4]
movsx esi, bl
add esi, 0xffffffd0
mov edi, esi
and edi, edx
xor esi, edx
lea edx, [esi + edi*2]
movzx ebx, byte [ebp + 1]
inc ebp
mov esi, ebx
add esi, 0xffffffd0
cmp esi, 0xa
jb 0x409a50
mov edi, ebp
cmp al, 0x2d
jne 0x409a7b
neg edx
mov ebp, dword [esp + 0xc]
mov ecx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x14]
lea eax, [ecx + ebx]
cmp eax, 0x10
jge 0x409a94
mov eax, 0xf
add ebp, edx
add ebp, eax
mov eax, ebp
sub eax, ebx
sub eax, ecx
add eax, 0xfffffff1
mov esi, eax
sar esi, 0x1f
mov edx, eax
xor edx, esi
sub edx, esi
cmp edx, 0x200
jb 0x409acb
mov edx, 0x1ff
mov esi, dword [esp + 0x50]
test esi, esi
je 0x409ac7
mov dword [esi], 0x22
fldz
jmp 0x409ad9
sub ebx, ebp
lea esi, [ebx + ecx]
add esi, 0xf
fld1
test esi, esi
je 0x409b09
fstp st(0)
fld1
mov esi, 0x43e4e0
mov ebp, edi
jmp 0x409b00
mov ebx, edx
shr ebx, 1
add esi, 8
cmp edx, 2
mov edx, ebx
mov edi, ebp
jb 0x409b09
test dl, 1
je 0x409af0
fmul qword [esi]
jmp 0x409af0
fld st(1)
fmul st(1)
test eax, eax
jns 0x409b1d
fstp st(0)
fdivp st(1)
fldz
fldz
fxch st(1)
fxch st(2)
fstp st(2)
fstp st(0)
mov eax, dword [esp + 0x4c]
test eax, eax
movzx ecx, byte [esp + 0xb]
je 0x409b30
mov dword [eax], edi
cmp cl, 0x2d
jne 0x409b37
fchs
add esp, 0x34
pop esi
pop edi
pop ebx
pop ebp
ret
inc ecx
mov dword [esp], ecx
mov ebx, dword [esp + 4]
mov edi, ebx
and edi, 0xfffffff5
mov ecx, ebx
and ecx, 0xa
or ebx, 0xa
imul ebx, ecx
xor ecx, 0xa
imul ecx, edi
mov edi, dword [esp]
movsx edx, dl
add ebx, ecx
add ebx, edx
add ebx, 0xffffffd0
mov dword [esp + 4], ebx
jmp 0x40997d