Function at 0x409270
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 0x409293
inc esi
inc ebp
inc eax
movzx ecx, byte [ebx + eax]
movzx edx, cl
lea edi, [edx - 9]
cmp edi, 5
jb 0x409290
cmp edx, 0x20
je 0x409290
mov byte [esp + 3], cl
mov edx, ecx
add dl, 0xd5
test dl, 0xfd
mov edx, 0
sete dl
add edx, ebx
mov dword [esp + 0x10], 0xffffffff
xor edi, edi
mov dword [esp + 0xc], edx
jmp 0x4092dd
mov edx, dword [esp + 0x10]
inc edi
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0xc]
lea ebx, [edx + edi]
movzx ecx, byte [eax + ebx]
lea edx, [ecx - 0x30]
cmp edx, 0xa
jb 0x4092d0
mov dword [esp + 0x28], ebx
cmp cl, 0x2e
jne 0x4092fe
mov edx, edi
cmp dword [esp + 0x10], 0
js 0x4092d4
mov dword [esp + 0x24], ecx
xor edx, edx
cmp dword [esp + 0x10], 0
setns dl
mov dword [esp + 0x1c], edx
jns 0x409316
mov dword [esp + 0x10], edi
mov dword [esp + 0x18], edi
sub edi, dword [esp + 0x1c]
mov ebx, edi
cmp edi, 0xf
mov edx, dword [esp + 0xc]
movzx ecx, byte [esp + 3]
jl 0x409333
mov ebx, 0xf
test ebx, ebx
je 0x409357
mov dword [esp + 4], edi
lea edi, [edx + eax]
cmp ebx, 9
mov dword [esp + 0x20], esi
jle 0x40937d
mov ch, byte [edi]
cmp ch, 0x2e
jne 0x409391
lea edi, [edx + ebp]
mov ch, byte [edx + eax + 1]
jmp 0x409394
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x409365
mov edx, dword [esp + 0x48]
mov dword [eax], edx
fldz
fld st(0)
fchs
cmp cl, 0x2d
je 0x409376
fstp st(0)
fldz
fxch st(1)
fstp st(1)
jmp 0x4096b4
fldz
fld st(0)
cmp dword [esp + 4], 0
jg 0x4094f3
jmp 0x409547
lea edi, [edx + esi]
movsx ecx, ch
lea edx, [ecx - 0x30]
cmp ebx, 0xb
jl 0x4093ba
mov dword [esp + 4], ecx
mov dword [esp + 0x14], edx
mov ch, byte [edi]
cmp ch, 0x2e
mov dword [esp + 8], ebx
jne 0x4093c4
mov ch, byte [edi + 1]
add edi, 2
jmp 0x4093c5
movzx ecx, byte [esp + 3]
jmp 0x4094e4
inc edi
mov edx, dword [esp + 4]
mov cl, byte [esp + 3]
and edx, 0xa
mov dword [esp + 4], edx
xor edx, 0xa
mov esi, dword [esp + 0x14]
mov ebx, esi
and ebx, 0xfffffff5
imul ebx, edx
or esi, 0xa
imul esi, dword [esp + 4]
movsx edx, ch
add esi, ebx
lea ebx, [edx + esi]
add ebx, 0xffffffd0
cmp dword [esp + 8], 0xc
jl 0x4094e2
mov ch, byte [edi]
cmp ch, 0x2e
jne 0x409410
mov ch, byte [edi + 1]
add edi, 2
jmp 0x409411
inc edi
mov edx, ebx
mov esi, ebx
and esi, 0xa
or edx, 0xa
imul edx, esi
xor esi, 0xa
and ebx, 0xfffffff5
imul ebx, esi
movsx esi, ch
add edx, ebx
lea ebx, [esi + edx]
add ebx, 0xffffffd0
cmp dword [esp + 8], 0xd
jl 0x4094e2
mov ch, byte [edi]
cmp ch, 0x2e
jne 0x40944c
mov ch, byte [edi + 1]
add edi, 2
jmp 0x40944d
inc edi
mov edx, ebx
mov esi, ebx
and esi, 0xa
or edx, 0xa
imul edx, esi
xor esi, 0xa
and ebx, 0xfffffff5
imul ebx, esi
movsx esi, ch
add edx, ebx
lea ebx, [esi + edx]
add ebx, 0xffffffd0
cmp dword [esp + 8], 0xe
jl 0x4094e2
mov ch, byte [edi]
cmp ch, 0x2e
jne 0x409484
mov ch, byte [edi + 1]
add edi, 2
jmp 0x409485
inc edi
mov edx, ebx
and ebx, 0xa
mov dword [esp + 0x14], ebx
mov dword [esp + 4], edx
or edx, 0xa
imul edx, dword [esp + 0x14]
xor dword [esp + 0x14], 0xa
mov ebx, dword [esp + 4]
and ebx, 0xfffffff5
imul ebx, dword [esp + 0x14]
mov dword [esp + 4], ebx
movsx ebx, ch
mov dword [esp + 0x14], ebx
add edx, dword [esp + 4]
mov ebx, dword [esp + 0x14]
add ebx, edx
add ebx, 0xffffffd0
cmp dword [esp + 8], 0xf
jl 0x4094e2
mov ch, byte [edi]
cmp ch, 0x2e
mov edx, ebx
jne 0x4096bc
mov ch, byte [edi + 1]
add edi, 2
jmp 0x4096bd
mov edx, ebx
mov dword [esp + 0x30], edx
mov ebx, 9
fild dword [esp + 0x30]
fldz
fstp st(0)
inc ebx
mov esi, ebx
xor ebx, ebx
jmp 0x409531
mov ch, byte [edi + 1]
add edi, 2
mov dword [esp + 4], edi
lea ebx, [ebx + ebx*4]
movsx edi, ch
mov edx, edi
xor edx, 0xffffffcf
and edi, 0xffffffcf
lea edx, [edx + ebx*2]
lea ebx, [edx + edi*2]
inc ebx
mov edx, esi
dec edx
mov esi, edx
cmp edx, 1
mov edx, dword [esp + 0xc]
mov edi, dword [esp + 4]
jle 0x40953b
mov ch, byte [edi]
cmp ch, 0x2e
je 0x409500
inc edi
jmp 0x409506
mov dword [esp + 0x2c], ebx
fild dword [esp + 0x2c]
mov esi, dword [esp + 0x20]
fxch st(1)
fmul dword [str._knN]
mov edi, dword [esp + 0x1c]
neg edi
faddp st(1)
mov ebx, dword [esp + 0x24]
or ebx, 0x20
cmp ebx, 0x65
mov dword [esp + 0x1c], edi
jne 0x40958b
mov ecx, dword [esp + 0x28]
movzx edx, byte [eax + ecx + 1]
mov eax, edx
add al, 0xd5
test al, 0xfd
je 0x409599
mov edi, dword [esp + 0xc]
add edi, esi
mov eax, edi
mov ebx, dword [esp + 0x18]
lea ebp, [edi + ebx]
mov edi, ebx
jmp 0x4095a8
add eax, dword [esp + 0x18]
add edx, eax
mov dword [esp + 0xc], edx
xor eax, eax
jmp 0x4095fb
mov esi, dword [esp + 0xc]
add esi, ebp
mov eax, esi
mov edi, dword [esp + 0x18]
lea ebp, [esi + edi]
movzx ebx, byte [eax + edi]
lea esi, [ebx - 0x30]
xor eax, eax
cmp esi, 9
movzx ecx, byte [esp + 3]
ja 0x4095f0
xor eax, eax
nop
nop
nop
mov esi, eax
and esi, 0xa
mov edi, eax
or eax, 0xa
imul eax, esi
xor esi, 0xa
and edi, 0xfffffff5
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 0x4095c0
mov dword [esp + 0xc], ebp
cmp dl, 0x2d
jne 0x4095fb
neg eax
mov ebp, dword [esp + 0x10]
mov edi, dword [esp + 0x18]
mov ebx, dword [esp + 0x1c]
lea edx, [edi + ebx]
cmp edx, 0x10
jge 0x409614
mov edx, 0xf
add ebp, eax
add ebp, edx
mov eax, ebp
sub eax, ebx
sub eax, edi
add eax, 0xfffffff1
mov esi, eax
sar esi, 0x1f
mov edx, eax
xor edx, esi
sub edx, esi
cmp edx, 0x200
jl 0x40964b
mov edx, 0x1ff
mov esi, dword [esp + 0x50]
test esi, esi
je 0x409647
mov dword [esi], 0x22
fldz
jmp 0x409659
sub ebx, ebp
lea esi, [ebx + edi]
add esi, 0xf
fld1
test esi, esi
je 0x409687
fstp st(0)
fld1
mov esi, 0x43e4e0
jmp 0x40967e
mov ebx, edx
sar ebx, 1
add esi, 8
cmp edx, 2
mov edx, ebx
jb 0x409687
test dl, 1
je 0x409670
fmul qword [esi]
jmp 0x409670
fld st(1)
fmul st(1)
test eax, eax
jns 0x40969b
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
mov edi, dword [esp + 0xc]
je 0x4096ad
mov dword [eax], edi
cmp cl, 0x2d
jne 0x4096b4
fchs
add esp, 0x34
pop esi
pop edi
pop ebx
pop ebp
ret
inc edi
and edx, 0xa
mov dword [esp + 8], edx
mov dword [esp + 4], ebx
or ebx, 0xa
imul ebx, dword [esp + 8]
xor dword [esp + 8], 0xa
mov edx, dword [esp + 4]
and edx, 0xfffffff5
imul edx, dword [esp + 8]
mov dword [esp + 4], edx
movsx edx, ch
mov dword [esp + 8], edx
add ebx, dword [esp + 4]
mov edx, ebx
mov ebx, dword [esp + 8]
add edx, ebx
add edx, 0xffffffd0
jmp 0x4094e4