Function at 0x4036e0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x68
mov dword [esp + 0x14], edx
fld qword [ebp + 0x10]
fst qword [esp + 0x48]
mov edi, dword [esp + 0x4c]
mov eax, edi
shr eax, 0x14
fld st(0)
fchs
test edi, edi
js 0x40370c
fstp st(0)
fld st(0)
mov edx, dword [ebp + 0xc]
mov esi, dword [ebp + 8]
mov ebx, dword [esp + 0x48]
and eax, 0x7ff
mov dword [esp + 0x24], edi
je 0x403763
fstp st(1)
mov dword [esp + 0x10], ecx
cmp eax, 0x7ff
jne 0x4037a5
fstp st(0)
mov ecx, edi
and ecx, 0xfffff
or ebx, ecx
mov eax, 0x446715
je 0x403746
mov eax, 0x446963
mov ecx, dword [esp + 0x10]
mov dword [ecx], eax
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x7000
mov edi, 3
mov eax, dword [esp + 0x14]
jmp 0x403b91
fxch st(1)
fstp qword [esp + 0x40]
mov eax, SysReAllocString
and eax, dword [esp + 0x44]
or eax, dword [esp + 0x40]
je 0x4037c8
mov dword [esp + 0x10], ecx
test edi, 0x80000
jne 0x4037e3
mov edx, 0x80000
xor esi, esi
xor eax, eax
mov ecx, ebx
nop
dec eax
shrd esi, edx, 1
shr edx, 1
mov edi, edx
and edi, dword [esp + 0x24]
mov ebx, esi
and ebx, ecx
or ebx, edi
je 0x403790
lea ecx, [eax - 0x3ff]
cmp eax, 0x3fe
jle 0x4037e8
imul eax, ecx, 0x4d1
mov ebx, eax
sar ebx, 0x1f
shr ebx, 0x14
add ebx, eax
sar ebx, 0xc
inc ebx
jmp 0x4037fb
fstp st(0)
mov dword [edx], 1
mov dword [ecx], esi
mov byte [esi], 0x30
mov edi, 1
mov eax, dword [esp + 0x14]
jmp 0x403b91
mov ecx, 0xfffffc01
imul eax, ecx, 0x269
mov ebx, eax
sar ebx, 0x1f
shr ebx, 0x15
add ebx, eax
sar ebx, 0xb
mov edi, dword [ebp + 0x18]
mov eax, 0x12
sub eax, ebx
sub esp, 0x14
mov dword [esp + 0x10], eax
fstp qword [esp + 8]
lea eax, [esp + 0x64]
mov dword [esp + 4], eax
lea eax, [esp + 0x6c]
mov dword [esp], eax
call fcn.00405d30
add esp, 0x14
fld qword [esp + 0x58]
fnstcw word [esp + 0xe]
movzx eax, word [esp + 0xe]
or eax, 0xc00
mov word [esp + 0x22], ax
fldcw word [esp + 0x22]
fld st(0)
fistp qword [esp + 0x38]
fldcw word [esp + 0xe]
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x34], edx
mov dword [esp + 0x30], eax
fild qword [esp + 0x30]
fld st(1)
fsub st(1)
fld st(0)
fsub st(3)
fld st(1)
fsub st(1)
fsubp st(4)
faddp st(2)
fxch st(2)
fsubrp st(1)
faddp st(1)
fadd qword [esp + 0x50]
fnstcw word [esp + 0xc]
movzx ecx, word [esp + 0xc]
or ecx, 0xc00
mov word [esp + 0x20], cx
fldcw word [esp + 0x20]
fistp qword [esp + 0x28]
fldcw word [esp + 0xc]
add eax, dword [esp + 0x28]
adc edx, dword [esp + 0x2c]
mov ecx, 0xa763ffff
cmp ecx, eax
mov ecx, 0xde0b6b3
sbb ecx, edx
adc ebx, 0
test edi, edi
js 0x4038c0
add edi, ebx
cmp edi, 0x17
jbe 0x4038cc
jmp 0x403938
and edi, 0x7ffffff
inc edi
cmp edi, 0x17
ja 0x403938
mov dword [esp + 8], ebx
xor esi, esi
mov ecx, 0x3b9ac9ff
mov ebx, eax
cmp ecx, eax
mov dword [esp], edx
sbb esi, edx
setb al
movzx eax, al
lea edx, [eax + eax*8]
inc edx
mov eax, edx
mov dword [esp + 4], edi
sub eax, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [edx*8 + 0x4440fc]
mov edi, dword [edx*8 + 0x4440f8]
cmp ebx, edi
mov esi, dword [esp]
sbb esi, ecx
jb 0x403920
inc edx
inc eax
cmp edx, 0x14
jne 0x403900
jmp 0x40392f
cmp dword [esp + 4], edx
jae 0x40392f
cmp eax, 0x17
jbe 0x403bad
mov edx, dword [esp]
mov eax, ebx
mov ebx, dword [esp + 8]
xor edi, edi
mov ecx, eax
or ecx, edx
mov dword [esp + 8], ebx
je 0x4039db
test edx, edx
jle 0x40399b
nop
nop
nop
nop
mov dword [esp + 4], eax
push 0
push 0x3e8
push edx
push eax
mov ebx, edx
call fcn.0040c400
mov ecx, edx
mov dword [esp], eax
mov edx, 0x3e8
mul edx
imul esi, ecx, 0x3e8
add esi, edx
mov edx, dword [esp + 4]
sub edx, eax
mov eax, ebx
sbb eax, esi
or eax, edx
jne 0x403ba2
shr ebx, 3
mov esi, dword [esp]
mov eax, esi
cmp ebx, 0x7c
mov edx, ecx
ja 0x403950
mov eax, esi
mov edx, eax
imul eax, eax, 0x26e978d5
ror eax, 3
cmp eax, 0x418937
ja 0x4039d7
mov ecx, 0x10624dd3
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, edx
mul ecx
shr edx, 6
imul eax, edx, 0x26e978d5
ror eax, 3
cmp eax, 0x418938
jb 0x4039c0
mov ecx, edx
jmp 0x4039dd
xor ecx, ecx
xor edx, edx
mov eax, dword [ebp + 8]
lea esi, [eax + 0x40]
mov dword [esp + 0x18], esi
add eax, 0x3e
mov dword [esp + 4], eax
jmp 0x403a13
mov edx, dword [esp]
add dword [esp + 0x18], 0xfffffff8
add ebx, 0xfffffff8
mov dword [esp + 4], ebx
mov ecx, dword [esp + 0x1c]
mov ebx, 0x51eb851f
cmp ecx, 0x5f5e100
mov eax, edx
sbb eax, 0
jl 0x403a50
push 0
push 0x5f5e100
push edx
push ecx
mov esi, ecx
call fcn.0040c400
mov ecx, esi
mov dword [esp + 0x1c], eax
imul eax, eax, 0x5f5e100
sub ecx, eax
je 0x403abd
mov dword [esp], edx
jmp 0x403a67
test ecx, ecx
je 0x403b60
mov dword [esp], 0
mov dword [esp + 0x1c], 0
xor esi, esi
nop
nop
nop
nop
nop
nop
nop
mov eax, ecx
mul ebx
shr edx, 5
imul eax, edx, 0x64
mov ebx, ecx
sub ecx, eax
movzx eax, word [ecx + ecx + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov ecx, dword [esp + 4]
mov word [ecx + esi], ax
add esi, 0xfffffffe
cmp ebx, 0x63
mov ebx, 0x51eb851f
mov ecx, edx
ja 0x403a70
mov eax, dword [esp + 0x1c]
mov edx, dword [esp]
sub edi, esi
or eax, edx
je 0x403b62
cmp esi, 0xfffffff8
mov ebx, dword [esp + 4]
je 0x403a03
jmp 0x403ac3
xor esi, esi
mov ebx, dword [esp + 4]
mov dword [esp], edx
mov eax, dword [esp + 0x18]
add eax, 0xfffffff8
lea ecx, [esi + 8]
push ecx
push 0x30
push eax
call fcn.0040c520
add esp, 0xc
mov eax, esi
and eax, 3
je 0x403b10
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, edi
and edx, 1
xor edi, 1
lea edi, [edi + edx*2]
inc ecx
cmp eax, ecx
jne 0x403af0
mov eax, esi
sub eax, ecx
jmp 0x403b12
mov eax, esi
add esi, 7
cmp esi, 3
jb 0x403a00
add eax, 8
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, edi
and ecx, 1
xor edi, 1
lea ecx, [edi + ecx*2]
and edi, 1
xor ecx, 1
lea edx, [ecx + edi*2]
and ecx, 1
xor edx, 1
lea ecx, [edx + ecx*2]
and edx, 1
xor ecx, 1
lea edi, [ecx + edx*2]
add eax, 0xfffffffc
jne 0x403b30
jmp 0x403a00
xor esi, esi
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
add ebx, esi
test edi, edi
mov esi, dword [esp + 8]
je 0x403b84
cmp byte [ebx], 0x30
mov ecx, dword [esp + 0x10]
mov edx, dword [ebp + 0xc]
jne 0x403b8d
inc ebx
dec edi
jmp 0x403b8d
xor edi, edi
mov ecx, dword [esp + 0x10]
mov edx, dword [ebp + 0xc]
mov dword [edx], esi
mov dword [ecx], ebx
mov dword [eax], edi
mov eax, dword [esp + 0x24]
shr eax, 0x1f
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov edx, ebx
mov ecx, dword [esp + 4]
jmp 0x4039df
mov esi, dword [eax*8 + 0x4440f8]
mov dword [esp + 4], esi
mov edx, dword [eax*8 + 0x4440fc]
mov eax, edx
shld eax, esi, 0x1f
mov esi, edx
shr esi, 1
add eax, ebx
adc esi, dword [esp]
cmp eax, edi
mov edi, esi
sbb edi, ecx
mov ebx, dword [esp + 8]
sbb ebx, 0xffffffff
push edx
push dword [esp + 8]
push esi
push eax
call fcn.0040c400
jmp 0x403938