Function at 0x408590
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x28
mov edi, 1
mov ebx, 2
xor edx, edx
mov eax, dword [esp + 0x3c]
jmp 0x4085b3
inc edi
inc ebx
inc edx
mov ch, byte [eax + edx]
movzx esi, ch
lea ebp, [esi - 9]
cmp ebp, 5
jb 0x4085b0
cmp esi, 0x20
je 0x4085b0
mov dword [esp + 0x10], ebx
mov byte [esp + 8], ch
add ch, 0xd5
xor ebx, ebx
test ch, 0xfd
sete bl
add ebx, eax
mov dword [esp + 4], ebx
xor ecx, ecx
mov ebp, 0xffffffff
jmp 0x4085f8
mov esi, ebp
mov ecx, dword [esp]
inc ecx
mov ebp, esi
mov esi, dword [esp + 4]
mov dword [esp], ecx
add ecx, esi
movzx ebx, byte [edi + ecx - 1]
lea esi, [ebx - 0x30]
cmp esi, 0xa
jb 0x4085f0
mov dword [esp + 0x18], ebx
cmp ebx, 0x2e
jne 0x40861e
mov esi, dword [esp]
test ebp, ebp
js 0x4085f2
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp]
mov esi, ecx
mov ebx, ecx
test ebp, ebp
js 0x408635
mov ecx, dword [esp]
lea ebx, [ecx - 1]
mov esi, ebp
add edx, dword [esp + 4]
cmp ebx, 0x10
jl 0x408659
mov dword [esp + 0xc], edi
add esi, 0xfffffff1
mov edi, 0xf
mov dword [esp + 0x14], esi
mov esi, dword [esp + 4]
movzx ecx, byte [esp + 8]
jmp 0x408689
test ebx, ebx
movzx ecx, byte [esp + 8]
je 0x4086c8
mov dword [esp + 0xc], edi
mov eax, ebx
xor eax, esi
mov edi, esi
mov esi, ebx
not esi
and esi, edi
add esi, esi
sub esi, eax
mov dword [esp + 0x14], esi
cmp ebx, 9
jle 0x408719
mov edi, ebx
mov esi, dword [esp + 4]
mov eax, dword [esp + 0xc]
lea ebx, [esi + eax]
movzx eax, byte [esi + eax - 1]
cmp al, 0x2e
jne 0x4086a4
movzx eax, byte [ebx]
mov ebx, dword [esp + 0x10]
add esi, ebx
jmp 0x4086a6
mov esi, ebx
movsx ebp, al
lea eax, [ebp - 0x30]
cmp edi, 0xb
jb 0x4087e8
mov ch, byte [esi]
cmp ch, 0x2e
mov dword [esp + 8], edi
jne 0x4086d9
mov ch, byte [esi + 1]
add esi, 2
jmp 0x4086da
mov edx, dword [esp + 0x40]
test edx, edx
je 0x4086d2
mov dword [edx], eax
fldz
jmp 0x408948
inc esi
and ebp, 0xa
mov ebx, ebp
xor ebx, 0xa
mov edi, eax
and eax, 0xfffffff5
imul eax, ebx
or edi, 0xa
imul edi, ebp
movsx ebp, ch
add edi, eax
mov eax, edi
lea eax, [edi + ebp]
add eax, 0xffffffd0
mov ebx, dword [esp + 8]
cmp ebx, 0xb
je 0x4087e8
mov ch, byte [esi]
cmp ch, 0x2e
jne 0x408732
mov ch, byte [esi + 1]
add esi, 2
jmp 0x408733
fldz
mov edi, ebx
mov ebx, edx
fld st(0)
test edi, edi
mov esi, dword [esp + 0x18]
jg 0x4087f9
jmp 0x40884d
inc esi
mov ebp, eax
and ebp, 0xa
mov edi, eax
or edi, 0xa
imul edi, ebp
xor ebp, 0xa
and eax, 0xfffffff5
imul eax, ebp
movsx ebp, ch
add edi, eax
mov eax, edi
lea eax, [edi + ebp]
add eax, 0xffffffd0
cmp ebx, 0xd
jb 0x4087e8
mov ch, byte [esi]
cmp ch, 0x2e
jne 0x40876e
mov ch, byte [esi + 1]
add esi, 2
jmp 0x40876f
inc esi
mov ebp, eax
and ebp, 0xa
mov edi, eax
or edi, 0xa
imul edi, ebp
xor ebp, 0xa
and eax, 0xfffffff5
imul eax, ebp
movsx ebp, ch
add edi, eax
mov eax, edi
lea eax, [edi + ebp]
add eax, 0xffffffd0
cmp ebx, 0xd
je 0x4087e8
mov ch, byte [esi]
cmp ch, 0x2e
jne 0x4087a6
mov ch, byte [esi + 1]
add esi, 2
jmp 0x4087a7
inc esi
mov ebp, eax
and ebp, 0xa
mov edi, eax
or edi, 0xa
imul edi, ebp
xor ebp, 0xa
and eax, 0xfffffff5
imul eax, ebp
movsx ebp, ch
add edi, eax
mov eax, edi
lea eax, [edi + ebp]
add eax, 0xffffffd0
cmp ebx, 0xf
jb 0x4087e8
mov edi, eax
movzx eax, byte [esi]
cmp al, 0x2e
jne 0x408961
movzx eax, byte [esi + 1]
add esi, 2
jmp 0x408962
mov ebx, esi
mov dword [esp + 0x24], eax
mov edi, 9
fild dword [esp + 0x24]
fldz
fstp st(0)
inc edi
xor eax, eax
jmp 0x40883b
mov ch, byte [ebx + 1]
add ebx, 2
mov ebp, eax
and ebp, 0xa
mov esi, eax
or eax, 0xa
imul eax, ebp
xor ebp, 0xa
and esi, 0xfffffff5
imul esi, ebp
add eax, esi
movsx esi, ch
add esi, 0xffffffd0
mov ebp, esi
and ebp, eax
xor esi, eax
lea eax, [esi + ebp*2]
mov esi, edi
dec esi
mov edi, esi
cmp esi, 1
mov esi, dword [esp + 0x18]
jle 0x408845
mov ch, byte [ebx]
cmp ch, 0x2e
je 0x408800
inc ebx
jmp 0x408806
mov dword [esp + 0x20], eax
fild dword [esp + 0x20]
fxch st(1)
fmul dword [str._knN]
faddp st(1)
or esi, 0x20
cmp esi, 0x65
jne 0x40887a
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0xc]
mov ch, byte [edx + eax]
mov al, ch
add al, 0xd5
test al, 0xfd
je 0x408881
mov eax, dword [esp + 4]
add eax, edx
jmp 0x408889
add edx, dword [esp]
xor edi, edi
jmp 0x4088ca
mov eax, dword [esp + 4]
add eax, dword [esp + 0x10]
mov esi, dword [esp]
lea edx, [eax + esi]
movzx ebx, byte [eax + esi]
lea esi, [ebx - 0x30]
xor edi, edi
cmp esi, 9
ja 0x4088c3
xor edi, edi
nop
add edi, edi
lea eax, [edi + edi*4]
movsx esi, bl
add esi, 0xffffffd0
mov edi, esi
and edi, eax
xor esi, eax
lea edi, [esi + edi*2]
movzx ebx, byte [edx + 1]
inc edx
mov esi, ebx
add esi, 0xffffffd0
cmp esi, 0xa
jb 0x4088a0
cmp ch, 0x2d
jne 0x4088ca
neg edi
add edi, dword [esp + 0x14]
mov esi, edi
sar esi, 0x1f
mov eax, edi
xor eax, esi
sub eax, esi
cmp eax, 0x200
jb 0x4088f7
mov eax, 0x1ff
mov esi, dword [esp + 0x44]
test esi, esi
je 0x4088f3
mov dword [esi], 0x22
fldz
jmp 0x4088fd
fld1
test edi, edi
je 0x408926
fstp st(0)
fld1
mov esi, 0x443250
jmp 0x40891e
mov ebx, eax
shr ebx, 1
add esi, 8
cmp eax, 2
mov eax, ebx
jb 0x408926
test al, 1
je 0x408910
fmul qword [esi]
jmp 0x408910
fld st(1)
fmul st(1)
test edi, edi
jns 0x40893a
fstp st(0)
fdivp st(1)
fldz
fldz
fxch st(1)
fxch st(2)
fstp st(2)
fstp st(0)
mov eax, dword [esp + 0x40]
test eax, eax
je 0x408948
mov dword [eax], edx
fld st(0)
fchs
cmp cl, 0x2d
je 0x408957
fstp st(0)
fldz
fxch st(1)
fstp st(1)
add esp, 0x28
pop esi
pop edi
pop ebx
pop ebp
ret
inc esi
mov ebx, esi
mov esi, edi
and esi, 0xa
mov ebp, edi
or edi, 0xa
imul edi, esi
xor esi, 0xa
and ebp, 0xfffffff5
imul ebp, esi
movsx eax, al
add edi, ebp
add eax, edi
add eax, 0xffffffd0
jmp 0x4087ea