Function at 0x409510
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x30
mov ebp, 1
mov esi, 2
xor eax, eax
mov ebx, dword [esp + 0x44]
jmp 0x409533
inc ebp
inc esi
inc eax
movzx ecx, byte [ebx + eax]
movzx edx, cl
lea edi, [edx - 9]
cmp edi, 5
jb 0x409530
cmp edx, 0x20
je 0x409530
mov dword [esp + 0x18], ebp
mov byte [esp + 7], cl
mov edx, ecx
add dl, 0xd5
test dl, 0xfd
mov edx, 0
sete dl
add edx, ebx
mov ebp, 0xffffffff
xor edi, edi
mov dword [esp + 0xc], edx
jmp 0x409579
mov edx, ebp
inc edi
mov ebp, edx
mov edx, dword [esp + 0xc]
lea ebx, [edx + edi]
movzx ecx, byte [eax + ebx]
lea edx, [ecx - 0x30]
cmp edx, 0xa
jb 0x409570
mov dword [esp + 0x24], ebx
cmp cl, 0x2e
jne 0x409597
mov edx, edi
test ebp, ebp
js 0x409572
mov dword [esp + 0x20], ecx
xor edx, edx
test ebp, ebp
setns dl
jns 0x4095a6
mov ebp, edi
mov dword [esp + 0x10], edi
mov ecx, edi
sub ecx, edx
mov edi, ecx
mov dword [esp + 0x1c], ecx
cmp ecx, 0xf
movzx ecx, byte [esp + 7]
mov ebx, dword [esp + 0x44]
jl 0x4095c7
mov edi, 0xf
test edi, edi
mov edx, dword [esp + 0xc]
je 0x4095f5
lea ebx, [edx + eax]
cmp edi, 9
mov dword [esp + 8], edi
mov dword [esp + 0x14], ebp
jle 0x409606
movzx edx, byte [ebx]
cmp dl, 0x2e
jne 0x409623
mov edx, dword [esp + 0xc]
lea edi, [edx + esi]
movzx edx, byte [edx + eax + 1]
jmp 0x40962d
mov eax, dword [esp + 0x48]
test eax, eax
je 0x4095ff
mov dword [eax], ebx
fldz
jmp 0x4098e7
mov dword [esp], ebx
fldz
mov ebx, edi
fld st(0)
cmp dword [esp + 0x1c], 0
mov edi, dword [esp + 0x10]
jg 0x409750
jmp 0x4097b0
mov edi, dword [esp + 0xc]
mov ebx, dword [esp + 0x18]
add edi, ebx
movsx ebx, dl
lea ebp, [ebx - 0x30]
cmp dword [esp + 8], 0xb
jl 0x40973e
mov ch, byte [edi]
cmp ch, 0x2e
jne 0x40964d
mov ch, byte [edi + 1]
add edi, 2
jmp 0x40964e
inc edi
mov dword [esp], edi
mov edi, ebp
and edi, 0xfffffff5
and ebx, 0xa
mov edx, ebx
xor edx, 0xa
imul edx, edi
or ebp, 0xa
imul ebp, ebx
movsx ebx, ch
add ebp, edx
add ebp, ebx
add ebp, 0xffffffd0
cmp dword [esp + 8], 0xc
jl 0x409741
mov edi, dword [esp]
mov ch, byte [edi]
cmp ch, 0x2e
jne 0x40968e
mov ch, byte [edi + 1]
add edi, 2
jmp 0x40968f
inc edi
mov ebx, ebp
and ebx, 0xfffffff5
mov edx, ebp
and edx, 0xa
or ebp, 0xa
imul ebp, edx
xor edx, 0xa
imul edx, ebx
movsx ebx, ch
add ebp, edx
add ebp, ebx
add ebp, 0xffffffd0
cmp dword [esp + 8], 0xd
jl 0x40973e
mov ch, byte [edi]
cmp ch, 0x2e
jne 0x4096c9
mov ch, byte [edi + 1]
add edi, 2
jmp 0x4096ca
inc edi
mov ebx, ebp
and ebx, 0xfffffff5
mov edx, ebp
and edx, 0xa
or ebp, 0xa
imul ebp, edx
xor edx, 0xa
imul edx, ebx
movsx ebx, ch
add ebp, edx
add ebp, ebx
add ebp, 0xffffffd0
cmp dword [esp + 8], 0xe
jl 0x40973e
mov ch, byte [edi]
cmp ch, 0x2e
jne 0x409700
mov ch, byte [edi + 1]
add edi, 2
jmp 0x409701
inc edi
mov ebx, ebp
and ebx, 0xfffffff5
mov edx, ebp
and edx, 0xa
or ebp, 0xa
imul ebp, edx
xor edx, 0xa
imul edx, ebx
movsx ebx, ch
add ebp, edx
add ebp, ebx
add ebp, 0xffffffd0
cmp dword [esp + 8], 0xf
jl 0x40973e
mov ch, byte [edi]
cmp ch, 0x2e
jne 0x409900
mov ch, byte [edi + 1]
add edi, 2
jmp 0x409901
mov dword [esp], edi
mov dword [esp + 0x2c], ebp
mov ebx, 9
fild dword [esp + 0x2c]
fldz
fstp st(0)
inc ebx
xor edx, edx
jmp 0x409797
mov ch, byte [edi + 1]
add edi, 2
mov dword [esp], edi
mov edi, edx
and edi, 0xa
mov ebp, edx
or edx, 0xa
imul edx, edi
xor edi, 0xa
and ebp, 0xfffffff5
imul ebp, edi
movsx edi, ch
add edx, ebp
add edx, edi
add edx, 0xffffffd0
dec ebx
cmp ebx, 1
mov ebp, dword [esp + 0x14]
mov edi, dword [esp + 0x10]
jle 0x4097a4
mov edi, dword [esp]
mov ch, byte [edi]
cmp ch, 0x2e
je 0x409760
inc edi
jmp 0x409766
mov dword [esp + 0x28], edx
fild dword [esp + 0x28]
mov edx, dword [esp + 0xc]
fxch st(1)
fmul dword [str._knN]
faddp st(1)
mov ebx, dword [esp + 0x20]
or ebx, 0x20
cmp ebx, 0x65
jne 0x4097e8
mov ecx, dword [esp + 0x24]
movzx eax, byte [eax + ecx + 1]
mov edx, eax
add dl, 0xd5
test dl, 0xfd
je 0x4097f6
mov esi, dword [esp + 0xc]
add esi, dword [esp + 0x18]
mov edx, esi
lea ebp, [esi + edi]
jmp 0x409809
add eax, edi
add edx, eax
mov esi, edx
xor edx, edx
mov ebx, dword [esp + 8]
jmp 0x409860
mov edi, dword [esp + 0xc]
add edi, esi
mov edx, edi
mov esi, dword [esp + 0x10]
lea ebp, [edi + esi]
mov edi, dword [esp + 0x10]
movzx ebx, byte [edx + edi]
lea esi, [ebx - 0x30]
xor edx, edx
cmp esi, 9
movzx ecx, byte [esp + 7]
ja 0x409850
xor edx, edx
nop
nop
mov esi, edx
and esi, 0xa
mov edi, edx
or edx, 0xa
imul edx, esi
xor esi, 0xa
and edi, 0xfffffff5
imul edi, esi
movsx esi, bl
add esi, edx
lea edx, [edi + esi]
add edx, 0xffffffd0
movzx ebx, byte [ebp + 1]
inc ebp
mov esi, ebx
add esi, 0xffffffd0
cmp esi, 0xa
jb 0x409820
mov esi, ebp
cmp al, 0x2d
jne 0x409858
neg edx
mov ebx, dword [esp + 8]
mov ebp, dword [esp + 0x14]
add ebp, edx
sub ebx, ebp
mov eax, ebx
neg eax
mov edx, ebx
sar edx, 0x1f
xor ebx, edx
sub ebx, edx
cmp ebx, 0x200
jl 0x409890
mov ebx, 0x1ff
mov edx, dword [esp + 0x4c]
test edx, edx
je 0x40988c
mov dword [edx], 0x22
fldz
jmp 0x409896
fld1
test ebx, ebx
je 0x4098c5
fstp st(0)
fld1
mov edx, 0x43f4e0
jmp 0x4098bc
mov edi, ebx
sar ebx, 1
add edx, 8
cmp edi, 2
jb 0x4098c5
test bl, 1
je 0x4098b0
fmul qword [edx]
jmp 0x4098b0
fld st(1)
fmul st(1)
test eax, eax
jns 0x4098d9
fstp st(0)
fdivp st(1)
fldz
fldz
fxch st(1)
fxch st(2)
fstp st(2)
fstp st(0)
mov eax, dword [esp + 0x48]
test eax, eax
je 0x4098e7
mov dword [eax], esi
fld st(0)
fchs
cmp cl, 0x2d
je 0x4098f6
fstp st(0)
fldz
fxch st(1)
fstp st(1)
add esp, 0x30
pop esi
pop edi
pop ebx
pop ebp
ret
inc edi
mov dword [esp], edi
mov ebx, ebp
and ebx, 0xfffffff5
mov edx, ebp
and edx, 0xa
or ebp, 0xa
imul ebp, edx
xor edx, 0xa
imul edx, ebx
movsx ebx, ch
add ebp, edx
add ebp, ebx
add ebp, 0xffffffd0
jmp 0x409741