Function at 0x4083d0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x2c
mov edi, 1
mov ebx, 2
xor esi, esi
mov edx, dword [esp + 0x40]
jmp 0x4083f3
inc edi
inc ebx
inc esi
mov ch, byte [edx + esi]
movzx eax, ch
lea ebp, [eax - 9]
cmp ebp, 5
jb 0x4083f0
cmp eax, 0x20
je 0x4083f0
mov byte [esp + 3], ch
add ch, 0xd5
xor eax, eax
test ch, 0xfd
sete al
add eax, edx
mov dword [esp + 8], eax
xor ecx, ecx
mov eax, 0xffffffff
jmp 0x408439
mov ebp, eax
mov ecx, dword [esp + 0xc]
inc ecx
mov eax, ebp
mov ebp, dword [esp + 8]
mov dword [esp + 0xc], ecx
add ecx, ebp
movzx edx, byte [edi + ecx - 1]
lea ebp, [edx - 0x30]
cmp ebp, 0xa
jb 0x408430
mov dword [esp + 0x18], edx
cmp edx, 0x2e
jne 0x408461
mov ebp, dword [esp + 0xc]
test eax, eax
js 0x408432
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0xc]
mov edx, ecx
mov ebp, ecx
test eax, eax
js 0x408476
lea ebp, [ecx - 1]
mov edx, eax
mov eax, 0xfffffff1
cmp ebp, 0x10
jge 0x408484
mov eax, ebp
neg eax
mov dword [esp + 0x14], eax
test ebp, ebp
movzx ecx, byte [esp + 3]
mov eax, dword [esp + 0x18]
je 0x4084be
cmp ebp, 9
mov dword [esp + 0x1c], ebx
jle 0x4084d3
mov dword [esp + 4], ebp
mov dword [esp + 0x10], edx
mov eax, dword [esp + 8]
lea ecx, [eax + edi]
movzx edx, byte [eax + edi - 1]
cmp dl, 0x2e
jne 0x4084ef
movzx edx, byte [ecx]
add eax, ebx
jmp 0x4084f1
mov eax, dword [esp + 0x44]
test eax, eax
je 0x4084cc
mov edx, dword [esp + 0x40]
mov dword [eax], edx
fldz
jmp 0x408775
fldz
mov ebx, ebp
test ebp, ebp
mov ebp, dword [esp + 8]
jle 0x408518
mov dword [esp + 0x10], edx
lea eax, [esi + ebp]
mov dword [esp + 4], eax
jmp 0x4085fc
mov eax, ecx
movsx ebp, dl
add ebp, 0xffffffd0
cmp dword [esp + 4], 0xa
movzx ecx, byte [esp + 3]
je 0x4085eb
movzx edx, byte [eax]
cmp dl, 0x2e
jne 0x40851f
movzx edx, byte [eax + 1]
add eax, 2
jmp 0x408520
fld st(0)
jmp 0x40865b
inc eax
mov ecx, eax
lea eax, [ebp*4]
add eax, ebp
movsx edx, dl
lea ebp, [edx + eax*2]
add ebp, 0xffffffd0
cmp dword [esp + 4], 0xc
jl 0x4085e4
movzx edx, byte [ecx]
cmp dl, 0x2e
jne 0x408550
movzx edx, byte [ecx + 1]
add ecx, 2
jmp 0x408551
inc ecx
lea eax, [ebp*4]
add eax, ebp
movsx edx, dl
lea ebp, [edx + eax*2]
add ebp, 0xffffffd0
cmp dword [esp + 4], 0xc
je 0x4085e4
movzx edx, byte [ecx]
cmp dl, 0x2e
jne 0x40857b
movzx edx, byte [ecx + 1]
add ecx, 2
jmp 0x40857c
inc ecx
lea eax, [ebp*4]
add eax, ebp
movsx edx, dl
lea ebp, [edx + eax*2]
add ebp, 0xffffffd0
cmp dword [esp + 4], 0xe
jl 0x4085e4
movzx edx, byte [ecx]
cmp dl, 0x2e
jne 0x4085a6
movzx edx, byte [ecx + 1]
add ecx, 2
jmp 0x4085a7
inc ecx
lea eax, [ebp*4]
add eax, ebp
movsx edx, dl
lea ebp, [edx + eax*2]
add ebp, 0xffffffd0
cmp dword [esp + 4], 0xe
je 0x4085e4
movzx edx, byte [ecx]
cmp dl, 0x2e
jne 0x4085d1
movzx edx, byte [ecx + 1]
add ecx, 2
jmp 0x4085d2
inc ecx
lea eax, [ebp*4]
add eax, ebp
movsx edx, dl
lea ebp, [edx + eax*2]
add ebp, 0xffffffd0
mov eax, ecx
movzx ecx, byte [esp + 3]
mov dword [esp + 4], eax
mov dword [esp + 0x28], ebp
mov ebx, 9
fild dword [esp + 0x28]
inc ebx
xor edx, edx
jmp 0x40863d
mov ch, byte [eax + 1]
add eax, 2
mov dword [esp + 4], eax
lea eax, [edx + edx*4]
movsx edx, ch
mov ebp, edx
or ebp, 0xffffffcf
and edx, 0xffffffcf
lea eax, [edx + eax*2]
lea edx, [eax + ebp]
inc edx
mov eax, ebx
dec eax
mov ebx, eax
cmp eax, 1
mov eax, dword [esp + 0x18]
jle 0x40864b
mov eax, dword [esp + 4]
mov ch, byte [eax]
cmp ch, 0x2e
je 0x408610
inc eax
jmp 0x408616
mov dword [esp + 0x24], edx
fild dword [esp + 0x24]
mov ebp, dword [esp + 8]
mov edx, dword [esp + 0x10]
fxch st(1)
fmul dword [str._knN]
add dword [esp + 0x14], edx
faddp st(1)
or eax, 0x20
cmp eax, 0x65
mov ebx, dword [esp + 0x1c]
jne 0x40868d
mov eax, dword [esp + 0x20]
movzx edx, byte [edi + eax]
mov eax, edx
add al, 0xd5
test al, 0xfd
je 0x408697
mov esi, dword [esp + 8]
add esi, edi
jmp 0x40869d
add esi, dword [esp + 0xc]
add ebp, esi
xor eax, eax
jmp 0x4086eb
mov esi, dword [esp + 8]
add esi, ebx
mov eax, esi
mov ecx, dword [esp + 0xc]
lea ebp, [esi + ecx]
movzx ebx, byte [esi + ecx]
lea esi, [ebx - 0x30]
xor eax, eax
cmp esi, 9
ja 0x40878e
xor eax, eax
movzx ecx, byte [esp + 3]
nop
lea eax, [eax + eax*4]
movsx esi, bl
mov edi, esi
xor edi, 0xffffffcf
lea eax, [edi + eax*2]
and esi, 0xffffffcf
lea eax, [eax + esi*2]
inc eax
movzx ebx, byte [ebp + 1]
inc ebp
mov esi, ebx
add esi, 0xffffffd0
cmp esi, 0xa
jb 0x4086c0
cmp dl, 0x2d
jne 0x4086eb
neg eax
mov edi, dword [esp + 0x44]
mov edx, eax
mov esi, dword [esp + 0x14]
and edx, esi
xor eax, esi
lea eax, [eax + edx*2]
mov esi, eax
sar esi, 0x1f
mov edx, eax
xor edx, esi
sub edx, esi
cmp edx, 0x200
jl 0x408726
mov edx, 0x1ff
mov esi, dword [esp + 0x48]
test esi, esi
je 0x408722
mov dword [esi], 0x22
fldz
jmp 0x40872c
fld1
test eax, eax
je 0x408757
fstp st(0)
fld1
mov esi, 0x43e250
jmp 0x40874e
mov ebx, edx
sar ebx, 1
add esi, 8
cmp edx, 2
mov edx, ebx
jb 0x408757
test dl, 1
je 0x408740
fmul qword [esi]
jmp 0x408740
fld st(1)
fmul st(1)
test eax, eax
jns 0x40876b
fstp st(0)
fdivp st(1)
fldz
fldz
fxch st(1)
fxch st(2)
fstp st(2)
fstp st(0)
test edi, edi
je 0x408775
mov dword [edi], ebp
fld st(0)
fchs
cmp cl, 0x2d
je 0x408784
fstp st(0)
fldz
fxch st(1)
fstp st(1)
add esp, 0x2c
pop esi
pop edi
pop ebx
pop ebp
ret
movzx ecx, byte [esp + 3]
cmp dl, 0x2d
je 0x4086e9
jmp 0x4086eb