Function at 0x409800
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x24
mov ebx, 1
mov ebp, 2
xor edx, edx
mov esi, dword [esp + 0x38]
jmp 0x409823
inc ebx
inc ebp
inc edx
mov ch, byte [esi + edx]
movzx eax, ch
lea edi, [eax - 9]
cmp edi, 5
jb 0x409820
cmp eax, 0x20
je 0x409820
mov byte [esp + 0xb], ch
add ch, 0xd5
xor eax, eax
test ch, 0xfd
sete al
add eax, esi
mov dword [esp + 0x10], eax
xor eax, eax
mov ecx, 0xffffffff
jmp 0x409869
mov edi, ecx
mov eax, dword [esp + 0xc]
inc eax
mov ecx, edi
mov edi, dword [esp + 0x10]
mov dword [esp + 0xc], eax
add eax, edi
movzx esi, byte [ebx + eax - 1]
lea edi, [esi - 0x30]
cmp edi, 0xa
jb 0x409860
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], esi
cmp esi, 0x2e
jne 0x409895
mov edi, dword [esp + 0xc]
test ecx, ecx
js 0x409862
test ecx, ecx
setns byte [esp]
jns 0x4098a1
mov ecx, dword [esp + 0xc]
mov dword [esp + 4], ecx
add edx, dword [esp + 0x10]
xor ecx, ecx
movzx eax, byte [esp]
mov cl, al
mov edi, dword [esp + 0xc]
sub edi, ecx
cmp edi, 0x10
mov esi, dword [esp + 0x38]
jl 0x4098ce
mov eax, dword [esp + 4]
add eax, 0xfffffff1
mov edi, 0xf
jmp 0x4098e7
test edi, edi
mov eax, dword [esp + 4]
je 0x409929
neg ecx
sub eax, ecx
sub eax, dword [esp + 0xc]
cmp edi, 9
jle 0x40997a
mov esi, dword [esp + 0x10]
lea ecx, [esi + ebx]
mov dword [esp], ecx
mov ch, byte [esi + ebx - 1]
cmp ch, 0x2e
jne 0x409904
mov ecx, dword [esp]
mov ch, byte [ecx]
add esi, ebp
mov dword [esp], esi
movsx ecx, ch
add ecx, 0xffffffd0
cmp edi, 0xb
jb 0x409a45
mov dword [esp + 4], ecx
mov esi, dword [esp]
mov ch, byte [esi]
cmp ch, 0x2e
jne 0x40993f
mov ch, byte [esi + 1]
add esi, 2
jmp 0x409940
mov eax, dword [esp + 0x3c]
test eax, eax
movzx ecx, byte [esp + 0xb]
je 0x409938
mov dword [eax], esi
fldz
jmp 0x409ba8
inc esi
mov dword [esp], esi
mov esi, dword [esp + 4]
lea esi, [esi + esi*4]
mov dword [esp + 4], esi
movsx esi, ch
mov ecx, dword [esp + 4]
lea ecx, [esi + ecx*2]
add ecx, 0xffffffd0
cmp edi, 0xb
je 0x409a45
mov dword [esp + 4], ecx
mov esi, dword [esp]
mov ch, byte [esi]
cmp ch, 0x2e
jne 0x40998e
mov ch, byte [esi + 1]
add esi, 2
jmp 0x40998f
fldz
mov dword [esp], edx
fld st(0)
test edi, edi
jg 0x409a54
jmp 0x409a94
inc esi
mov dword [esp], esi
mov esi, dword [esp + 4]
lea esi, [esi + esi*4]
mov dword [esp + 4], esi
movsx esi, ch
mov ecx, dword [esp + 4]
lea ecx, [esi + ecx*2]
add ecx, 0xffffffd0
cmp edi, 0xd
jb 0x409a45
mov dword [esp + 4], ecx
mov esi, dword [esp]
mov ch, byte [esi]
cmp ch, 0x2e
jne 0x4099c9
mov ch, byte [esi + 1]
add esi, 2
jmp 0x4099ca
inc esi
mov dword [esp], esi
mov esi, dword [esp + 4]
lea esi, [esi + esi*4]
mov dword [esp + 4], esi
movsx esi, ch
mov ecx, dword [esp + 4]
lea ecx, [esi + ecx*2]
add ecx, 0xffffffd0
cmp edi, 0xd
je 0x409a45
mov dword [esp + 4], ecx
mov esi, dword [esp]
mov ch, byte [esi]
cmp ch, 0x2e
jne 0x409a00
mov ch, byte [esi + 1]
add esi, 2
jmp 0x409a01
inc esi
mov dword [esp], esi
mov esi, dword [esp + 4]
lea esi, [esi + esi*4]
mov dword [esp + 4], esi
movsx esi, ch
mov ecx, dword [esp + 4]
lea ecx, [esi + ecx*2]
add ecx, 0xffffffd0
cmp edi, 0xf
jb 0x409a45
mov edi, ecx
mov esi, dword [esp]
mov ch, byte [esi]
cmp ch, 0x2e
jne 0x409a35
mov ch, byte [esi + 1]
add esi, 2
jmp 0x409a36
inc esi
mov dword [esp], esi
lea esi, [edi + edi*4]
movsx edi, ch
lea ecx, [edi + esi*2]
add ecx, 0xffffffd0
mov dword [esp + 0x20], ecx
mov edi, 9
fild dword [esp + 0x20]
fldz
fstp st(0)
mov dword [esp + 4], eax
inc edi
xor esi, esi
jmp 0x409a7f
mov ch, byte [eax + 1]
add eax, 2
mov dword [esp], eax
lea esi, [esi + esi*4]
movsx eax, ch
lea esi, [eax + esi*2]
add esi, 0xffffffd0
dec edi
cmp edi, 1
mov eax, dword [esp + 4]
jle 0x409a8c
mov eax, dword [esp]
mov ch, byte [eax]
cmp ch, 0x2e
je 0x409a60
inc eax
jmp 0x409a66
mov dword [esp + 0x1c], esi
fild dword [esp + 0x1c]
fxch st(1)
fmul dword [str._knN]
faddp st(1)
mov ecx, dword [esp + 0x18]
or ecx, 0x20
cmp ecx, 0x65
jne 0x409ac3
mov edi, eax
mov eax, dword [esp + 0x14]
mov ch, byte [ebx + eax]
mov al, ch
add al, 0xd5
test al, 0xfd
je 0x409acb
mov eax, dword [esp + 0x10]
add eax, ebx
jmp 0x409ad1
add edx, dword [esp + 0xc]
xor ebp, ebp
jmp 0x409b27
mov eax, dword [esp + 0x10]
add eax, ebp
mov esi, dword [esp + 0xc]
lea edx, [eax + esi]
movzx ebx, byte [eax + esi]
lea esi, [ebx - 0x30]
xor ebp, ebp
cmp esi, 9
mov eax, edi
ja 0x409b20
xor ebp, ebp
nop
nop
nop
nop
nop
nop
mov esi, ebp
and esi, 0xfffffff5
mov edi, ebp
and edi, 0xa
or ebp, 0xa
imul ebp, edi
xor edi, 0xa
imul edi, esi
movsx esi, bl
add esi, ebp
lea ebp, [edi + esi]
add ebp, 0xffffffd0
movzx ebx, byte [edx + 1]
inc edx
mov esi, ebx
add esi, 0xffffffd0
cmp esi, 0xa
jb 0x409af0
cmp ch, 0x2d
jne 0x409b27
neg ebp
movzx ecx, byte [esp + 0xb]
add ebp, eax
mov esi, ebp
sar esi, 0x1f
mov eax, ebp
xor eax, esi
sub eax, esi
cmp eax, 0x200
jl 0x409b57
mov eax, 0x1ff
mov esi, dword [esp + 0x40]
test esi, esi
je 0x409b53
mov dword [esi], 0x22
fldz
jmp 0x409b5d
fld1
test ebp, ebp
je 0x409b86
fstp st(0)
fld1
mov esi, 0x4392d0
jmp 0x409b7e
mov ebx, eax
sar ebx, 1
add esi, 8
cmp eax, 2
mov eax, ebx
jb 0x409b86
test al, 1
je 0x409b70
fmul qword [esi]
jmp 0x409b70
fld st(1)
fmul st(1)
test ebp, ebp
jns 0x409b9a
fstp st(0)
fdivp st(1)
fldz
fldz
fxch st(1)
fxch st(2)
fstp st(2)
fstp st(0)
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x409ba8
mov dword [eax], edx
fld st(0)
fchs
cmp cl, 0x2d
je 0x409bb7
fstp st(0)
fldz
fxch st(1)
fstp st(1)
add esp, 0x24
pop esi
pop edi
pop ebx
pop ebp
ret