Function at 0x4081d0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x18
xor ebp, ebp
mov ebx, dword [esp + 0x2c]
jmp 0x4081e1
inc ebp
movzx ecx, byte [ebx + ebp]
movzx eax, cl
lea edx, [eax - 9]
cmp edx, 5
jb 0x4081e0
cmp eax, 0x20
je 0x4081e0
mov eax, ecx
add al, 0xd5
and al, 0xfd
cmp al, 1
adc ebp, 0
xor eax, eax
mov edi, 0xffffffff
jmp 0x408220
mov esi, edi
mov edx, eax
and edx, 1
xor eax, 1
lea eax, [eax + edx*2]
inc ebp
mov edi, esi
movzx edx, byte [ebx + ebp]
lea esi, [edx - 0x30]
cmp esi, 0xa
jb 0x408210
cmp edx, 0x2e
jne 0x408237
mov esi, eax
test edi, edi
js 0x408212
mov dword [esp + 8], edx
lea esi, [ebx + ebp]
mov dword [esp + 0xc], esi
test edi, edi
setns ch
jns 0x40824b
mov edi, eax
mov dword [esp + 4], edi
mov esi, dword [esp + 0xc]
sub esi, eax
xor edx, edx
mov dl, ch
mov dword [esp], edx
mov edi, eax
sub edi, dword [esp]
cmp edi, 0x10
jl 0x408272
add dword [esp + 4], 0xfffffff1
mov edi, 0xf
jmp 0x408283
test edi, edi
je 0x4082bd
sub dword [esp + 4], edi
cmp edi, 9
jle 0x408317
mov edx, dword [esp + 8]
neg eax
add eax, ebx
lea ebx, [eax + ebp]
inc ebx
mov ch, byte [esi]
cmp ch, 0x2e
jne 0x40829e
mov ch, byte [ebx]
lea ebx, [eax + ebp]
add ebx, 2
movsx esi, ch
add esi, 0xffffffd0
cmp edi, 0xb
jb 0x4083d2
movzx eax, byte [ebx]
cmp al, 0x2e
jne 0x4082df
movzx eax, byte [ebx + 1]
add ebx, 2
jmp 0x4082e0
mov eax, dword [esp + 0x30]
test eax, eax
je 0x4082c7
mov dword [eax], ebx
fldz
fld st(0)
fchs
cmp cl, 0x2d
je 0x4082d8
fstp st(0)
fldz
fxch st(1)
fstp st(1)
jmp 0x408520
inc ebx
mov dword [esp], ebx
add esi, esi
lea ebx, [esi + esi*4]
movsx eax, al
add eax, 0xffffffd0
mov esi, eax
and esi, ebx
xor eax, ebx
lea esi, [eax + esi*2]
cmp edi, 0xb
jne 0x408304
mov ebx, dword [esp]
jmp 0x4083d2
mov ebx, dword [esp]
movzx eax, byte [ebx]
cmp al, 0x2e
jne 0x40832c
movzx eax, byte [ebx + 1]
add ebx, 2
jmp 0x40832d
fldz
fld st(0)
test edi, edi
mov edx, dword [esp + 8]
jg 0x4083e3
jmp 0x40841e
inc ebx
add esi, esi
lea esi, [esi + esi*4]
mov dword [esp], esi
movsx eax, al
add eax, 0xffffffd0
mov esi, eax
and esi, dword [esp]
xor eax, dword [esp]
lea esi, [eax + esi*2]
cmp edi, 0xd
jb 0x4083d2
movzx eax, byte [ebx]
cmp al, 0x2e
jne 0x40835f
movzx eax, byte [ebx + 1]
add ebx, 2
jmp 0x408360
inc ebx
add esi, esi
lea esi, [esi + esi*4]
mov dword [esp], esi
movsx eax, al
add eax, 0xffffffd0
mov esi, eax
and esi, dword [esp]
xor eax, dword [esp]
lea esi, [eax + esi*2]
cmp edi, 0xd
je 0x4083d2
movzx eax, byte [ebx]
cmp al, 0x2e
jne 0x40838e
movzx eax, byte [ebx + 1]
add ebx, 2
jmp 0x40838f
inc ebx
add esi, esi
lea esi, [esi + esi*4]
mov dword [esp], esi
movsx eax, al
add eax, 0xffffffd0
mov esi, eax
and esi, dword [esp]
xor eax, dword [esp]
lea esi, [eax + esi*2]
cmp edi, 0xf
jb 0x4083d2
movzx eax, byte [ebx]
cmp al, 0x2e
jne 0x4083bd
movzx eax, byte [ebx + 1]
add ebx, 2
jmp 0x4083be
inc ebx
add esi, esi
lea esi, [esi + esi*4]
movsx eax, al
add eax, 0xffffffd0
mov edi, eax
and edi, esi
xor eax, esi
lea esi, [eax + edi*2]
mov dword [esp + 0x14], esi
mov edi, 9
fild dword [esp + 0x14]
mov esi, ebx
fldz
fstp st(0)
inc edi
xor eax, eax
jmp 0x40840c
mov ch, byte [esi + 1]
add esi, 2
lea eax, [eax + eax*4]
movsx ebx, ch
lea eax, [ebx + eax*2]
add eax, 0xffffffd0
dec edi
cmp edi, 1
mov ebx, dword [esp + 0x2c]
jle 0x408416
mov ch, byte [esi]
cmp ch, 0x2e
je 0x4083f0
inc esi
jmp 0x4083f6
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fxch st(1)
fmul dword [str._knN]
faddp st(1)
or edx, 0x20
cmp edx, 0x65
jne 0x408442
movzx edx, byte [ebx + ebp + 1]
mov eax, edx
add al, 0xd5
test al, 0xfd
je 0x40844a
add ebp, ebx
inc ebp
jmp 0x40844f
xor eax, eax
mov ebp, dword [esp + 0xc]
jmp 0x408497
add ebp, ebx
add ebp, 2
movzx ebx, byte [ebp]
lea esi, [ebx - 0x30]
xor eax, eax
cmp esi, 9
ja 0x408490
xor eax, eax
nop
mov esi, eax
and esi, 0xfffffff5
mov edi, eax
and edi, 0xa
or eax, 0xa
imul eax, edi
xor edi, 0xa
imul edi, esi
movsx esi, bl
add esi, eax
lea eax, [edi + esi]
add eax, 0xffffffd0
movzx ebx, byte [ebp + 1]
inc ebp
mov esi, ebx
add esi, 0xffffffd0
cmp esi, 0xa
jb 0x408460
cmp dl, 0x2d
jne 0x408497
neg eax
mov edx, dword [esp + 4]
add eax, edx
mov esi, eax
sar esi, 0x1f
mov edx, eax
xor edx, esi
sub edx, esi
cmp edx, 0x200
jb 0x4084c7
mov edx, 0x1ff
mov esi, dword [esp + 0x34]
test esi, esi
je 0x4084c3
mov dword [esi], 0x22
fldz
jmp 0x4084cd
fld1
test eax, eax
je 0x4084f7
fstp st(0)
fld1
mov esi, 0x43f250
jmp 0x4084ee
mov ebx, edx
shr ebx, 1
add esi, 8
cmp edx, 2
mov edx, ebx
jb 0x4084f7
test dl, 1
je 0x4084e0
fmul qword [esi]
jmp 0x4084e0
fld st(1)
fmul st(1)
test eax, eax
jns 0x40850b
fstp st(0)
fdivp st(1)
fldz
fldz
fxch st(1)
fxch st(2)
fstp st(2)
fstp st(0)
mov eax, dword [esp + 0x30]
test eax, eax
je 0x408519
mov dword [eax], ebp
cmp cl, 0x2d
jne 0x408520
fchs
add esp, 0x18
pop esi
pop edi
pop ebx
pop ebp
ret