Function at 0x40d080
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x18
xor ebx, ebx
mov ebp, dword [esp + 0x2c]
jmp 0x40d091
inc ebx
movzx ecx, byte [ebp + ebx]
movzx eax, cl
lea edx, [eax - 9]
cmp edx, 5
jb 0x40d090
cmp eax, 0x20
je 0x40d090
mov eax, ecx
add al, 0xd5
and al, 0xfd
cmp al, 1
adc ebx, 0
xor edi, edi
mov esi, 0xffffffff
jmp 0x40d0d0
mov eax, esi
mov edx, edi
and edx, 1
xor edi, 1
lea edi, [edi + edx*2]
inc ebx
mov esi, eax
movzx edx, byte [ebp + ebx]
lea eax, [edx - 0x30]
cmp eax, 0xa
jb 0x40d0c0
cmp edx, 0x2e
jne 0x40d0e8
mov eax, edi
test esi, esi
js 0x40d0c2
mov dword [esp + 0xc], edx
xor edx, edx
test esi, esi
setns al
jns 0x40d0f7
mov esi, edi
mov dl, al
mov eax, edi
sub eax, edx
mov dword [esp + 4], 0xfffffff1
cmp eax, 0x10
jge 0x40d114
mov edx, eax
neg eax
mov dword [esp + 4], eax
mov eax, edx
test eax, eax
je 0x40d142
mov edx, ebp
sub edx, edi
add edx, ebx
cmp eax, 9
mov dword [esp + 8], esi
jle 0x40d153
neg edi
add edi, ebp
lea ebp, [ebx + edi]
inc ebp
movzx edx, byte [edx]
cmp dl, 0x2e
jne 0x40d164
movzx edx, byte [ebp]
add edi, ebx
add edi, 2
jmp 0x40d166
mov eax, dword [esp + 0x30]
test eax, eax
je 0x40d14c
mov dword [eax], ebp
fldz
jmp 0x40d408
fldz
fld st(0)
test eax, eax
jg 0x40d2b0
jmp 0x40d2fb
mov edi, ebp
movsx edx, dl
lea ebp, [edx - 0x30]
cmp eax, 0xa
je 0x40d29f
mov ch, byte [edi]
cmp ch, 0x2e
jne 0x40d184
mov ch, byte [edi + 1]
add edi, 2
jmp 0x40d185
inc edi
mov dword [esp], edi
mov edi, ebp
or edi, 0xa
and edx, 0xa
imul edi, edx
and ebp, 0xfffffff5
xor edx, 0xa
imul edx, ebp
movsx ebp, ch
add edx, edi
add ebp, edx
add ebp, 0xffffffd0
cmp eax, 0xc
jl 0x40d29c
mov edx, dword [esp]
mov ch, byte [edx]
cmp ch, 0x2e
jne 0x40d1c1
mov ch, byte [edx + 1]
add edx, 2
jmp 0x40d1c2
inc edx
mov dword [esp], edx
mov edi, ebp
or edi, 0xa
mov edx, ebp
and edx, 0xa
imul edi, edx
and ebp, 0xfffffff5
xor edx, 0xa
imul edx, ebp
movsx ebp, ch
add edx, edi
add ebp, edx
add ebp, 0xffffffd0
cmp eax, 0xc
je 0x40d29c
mov edx, dword [esp]
mov ch, byte [edx]
cmp ch, 0x2e
jne 0x40d200
mov ch, byte [edx + 1]
add edx, 2
jmp 0x40d201
inc edx
mov dword [esp], edx
mov edi, ebp
or edi, 0xa
mov edx, ebp
and edx, 0xa
imul edi, edx
and ebp, 0xfffffff5
xor edx, 0xa
imul edx, ebp
movsx ebp, ch
add edx, edi
add ebp, edx
add ebp, 0xffffffd0
cmp eax, 0xe
jl 0x40d29c
mov edx, dword [esp]
mov ch, byte [edx]
cmp ch, 0x2e
jne 0x40d23b
mov ch, byte [edx + 1]
add edx, 2
jmp 0x40d23c
inc edx
mov dword [esp], edx
mov edi, ebp
or edi, 0xa
mov edx, ebp
and edx, 0xa
imul edi, edx
and ebp, 0xfffffff5
xor edx, 0xa
imul edx, ebp
movsx ebp, ch
add edx, edi
add ebp, edx
add ebp, 0xffffffd0
cmp eax, 0xe
je 0x40d29c
mov edx, dword [esp]
movzx eax, byte [edx]
cmp al, 0x2e
jne 0x40d277
movzx eax, byte [edx + 1]
add edx, 2
jmp 0x40d278
inc edx
mov dword [esp], edx
mov edx, ebp
or edx, 0xa
mov edi, ebp
and edi, 0xa
imul edx, edi
and ebp, 0xfffffff5
xor edi, 0xa
imul edi, ebp
movsx eax, al
add edi, edx
lea ebp, [eax + edi]
add ebp, 0xffffffd0
mov edi, dword [esp]
mov dword [esp + 0x14], ebp
mov eax, 9
fild dword [esp + 0x14]
mov edx, edi
fldz
fstp st(0)
inc eax
xor edi, edi
jmp 0x40d2e3
mov ch, byte [edx + 1]
add edx, 2
lea edi, [edi + edi*4]
movsx esi, ch
mov eax, esi
and eax, 0xffffffcf
xor esi, 0xffffffcf
lea esi, [esi + edi*2]
lea edi, [esi + eax*2]
inc edi
mov eax, ebp
dec eax
cmp eax, 1
jle 0x40d2ef
mov ch, byte [edx]
mov ebp, eax
cmp ch, 0x2e
je 0x40d2c0
inc edx
jmp 0x40d2c6
mov dword [esp + 0x10], edi
fild dword [esp + 0x10]
mov ebp, dword [esp + 0x2c]
fxch st(1)
fmul dword [str._knN]
mov esi, dword [esp + 4]
add esi, dword [esp + 8]
faddp st(1)
mov eax, dword [esp + 0xc]
or eax, 0x20
cmp eax, 0x65
jne 0x40d32b
movzx edx, byte [ebp + ebx + 1]
mov eax, edx
add al, 0xd5
test al, 0xfd
je 0x40d331
add ebp, ebx
inc ebp
jmp 0x40d336
add ebp, ebx
xor eax, eax
jmp 0x40d38b
add ebp, ebx
add ebp, 2
mov dword [esp + 4], esi
movzx ebx, byte [ebp]
lea esi, [ebx - 0x30]
xor eax, eax
cmp esi, 9
ja 0x40d380
xor eax, eax
nop
nop
nop
nop
nop
nop
mov edi, eax
and edi, 0xa
mov esi, eax
or eax, 0xa
imul eax, edi
xor edi, 0xa
and esi, 0xfffffff5
imul esi, edi
movsx edi, bl
add edi, eax
lea eax, [esi + edi]
add eax, 0xffffffd0
movzx ebx, byte [ebp + 1]
inc ebp
mov esi, ebx
add esi, 0xffffffd0
cmp esi, 0xa
jb 0x40d350
cmp dl, 0x2d
jne 0x40d387
neg eax
mov esi, dword [esp + 4]
add esi, eax
mov edx, esi
sar edx, 0x1f
mov eax, esi
xor eax, edx
sub eax, edx
cmp eax, 0x200
jb 0x40d3b6
mov eax, 0x1ff
mov edx, dword [esp + 0x34]
test edx, edx
je 0x40d3b2
mov dword [edx], 0x22
fldz
jmp 0x40d3bc
fld1
test esi, esi
je 0x40d3e6
fstp st(0)
fld1
mov edx, 0x447718
jmp 0x40d3de
mov ebx, eax
shr ebx, 1
add edx, 8
cmp eax, 2
mov eax, ebx
jb 0x40d3e6
test al, 1
je 0x40d3d0
fmul qword [edx]
jmp 0x40d3d0
fld st(1)
fmul st(1)
test esi, esi
jns 0x40d3fa
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 0x40d408
mov dword [eax], ebp
fld st(0)
fchs
cmp cl, 0x2d
je 0x40d417
fstp st(0)
fldz
fxch st(1)
fstp st(1)
add esp, 0x18
pop esi
pop edi
pop ebx
pop ebp
ret