Function at 0x1024f850
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x102636b3
mov eax, dword fs:[0]
push eax
sub esp, 0x14
push esi
push edi
mov eax, dword [0x102a5f40]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, ecx
mov dword [ebp - 0x10], eax
push dword [ebp + 0x1c]
mov esi, dword [ebp + 0x18]
mov edi, dword [ebp + 8]
mov ecx, dword [ebp + 0x14]
push esi
push edi
push ecx
mov ecx, eax
call fcn.1024f400
xor ecx, ecx
lea eax, [edi + 1]
mov edx, 8
mul edx
seto cl
mov dword [ebp - 4], 0
neg ecx
or ecx, eax
push ecx
call fcn.10251cd1
mov ecx, dword [ebp - 0x10]
inc esi
mov dword [ecx + 0xb8], eax
xor ecx, ecx
mov eax, esi
mov edx, 8
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.10251cd1
mov ecx, dword [ebp - 0x10]
xorps xmm0, xmm0
mov dword [ecx + 0xbc], eax
movsd qword [ecx + 0xc0], xmm0
xor ecx, ecx
mov eax, esi
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.10251cd1
mov ecx, dword [ebp - 0x10]
mov edx, 4
mov dword [ecx + 0xc8], eax
xor ecx, ecx
mov eax, esi
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.10251cd1
mov esi, dword [ebp - 0x10]
push edi
mov dword [esi + 0xcc], eax
call fcn.10251cd1
mov dword [esi + 0xd8], eax
xor ecx, ecx
mov eax, edi
mov edx, 4
mul edx
seto cl
xorps xmm0, xmm0
mov byte [esi + 0xdd], 0
movsd qword [esi + 0xe0], xmm0
movsd qword [esi + 0xe8], xmm0
mov dword [esi + 0xf0], 0xffffffff
mov dword [esi + 0xf8], 3
neg ecx
or ecx, eax
push ecx
call fcn.10251cd1
mov dword [esi + 0x100], eax
mov dword [esi + 0x104], 0
xor ecx, ecx
mov eax, edi
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.10251cd1
mov edi, esi
xor ecx, ecx
mov dword [edi + 0x108], eax
mov eax, dword [ebp + 0x18]
mov edx, 4
mul edx
seto cl
mov dword [edi + 0x10c], 0
neg ecx
or ecx, eax
push ecx
call fcn.10251cd1
mov dword [edi + 0x114], eax
mov eax, dword [ebp + 0x18]
xor ecx, ecx
mov esi, 4
mul esi
seto cl
mov dword [edi + 0x118], 0
neg ecx
or ecx, eax
push ecx
call fcn.10251cd1
mov dword [edi + 0x11c], eax
mov eax, dword [edi + 0x18]
xor ecx, ecx
mov edx, 8
mul edx
seto cl
mov dword [edi + 0x120], 0
mov dword [edi + 0x124], 0
neg ecx
or ecx, eax
push ecx
call fcn.10251cd1
mov dword [edi + 0xd0], eax
mov eax, dword [edi + 0x18]
xor ecx, ecx
mul esi
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.10251cd1
mov esi, dword [ebp + 0x14]
mov dword [edi + 0xd4], eax
mov eax, dword [esi]
add esp, 0x2c
mov eax, dword [eax + 0x70]
mov ecx, esi
call eax
movd xmm0, dword [ebp + 0x1c]
cvtdq2pd xmm0, xmm0
push eax
mulsd xmm0, qword [edi + 0x20]
mov dword [edi + 4], eax
cvttsd2si ecx, xmm0
mov dword [ebp - 0x20], ecx
call fcn.10251cd1
push dword [edi + 4]
mov dword [edi + 0x110], eax
push 0
push eax
call sub.MSVCR110.dll_memset
push dword [edi]
call fcn.10251cd1
push dword [edi]
mov dword [edi + 0xfc], eax
push 0
push eax
call sub.MSVCR110.dll_memset
mov eax, dword [esi]
add esp, 0x20
mov eax, dword [eax + 0xbc]
mov ecx, esi
call eax
mov edx, dword [eax + 0x2c]
mov ecx, dword [eax + 0x28]
movsd xmm1, qword [0x1028cdc0]
mov dword [ebp + 0x18], edx
mov edx, dword [eax + 0x24]
mov eax, dword [eax + 0x20]
mov dword [ebp + 8], eax
mov eax, dword [edi + 0x28]
xor esi, esi
mov dword [eax], esi
mov dword [ebp + 0x1c], ecx
mov dword [ebp - 0x18], edx
mov dword [ebp - 0x14], esi
cmp dword [edi], esi
jle 0x1024fb70
mov eax, dword [ebp + 0x18]
movsd xmm2, qword [0x10268990]
sub eax, ecx
mov dword [ebp + 0x18], eax
mov edx, dword [ecx]
mov eax, dword [eax + ecx]
add eax, edx
cmp edx, eax
jge 0x1024fb44
lea esp, [esp]
mov eax, dword [ebp + 8]
movsd xmm0, qword [eax + edx*8]
andpd xmm0, xmm1
comisd xmm0, xmm2
jbe 0x1024fb34
mov ecx, dword [edi + 0x30]
mov eax, dword [ebp - 0x18]
inc esi
mov eax, dword [eax + edx*4]
mov dword [ecx + esi*4 - 4], eax
mov ecx, dword [ebp + 8]
mov eax, dword [edi + 0x34]
movsd xmm0, qword [ecx + edx*8]
mov ecx, dword [ebp + 0x1c]
movsd qword [eax + esi*8 - 8], xmm0
mov edi, dword [ebp + 0x18]
mov eax, dword [ecx]
add eax, dword [edi + ecx]
mov edi, dword [ebp - 0x10]
inc edx
cmp edx, eax
jl 0x1024fb00
mov edx, dword [ebp - 0x14]
mov eax, dword [edi + 0x28]
mov ecx, esi
sub ecx, dword [eax + edx*4]
mov eax, dword [edi + 0x2c]
inc edx
mov dword [eax + edx*4 - 4], ecx
mov eax, dword [edi + 0x28]
mov ecx, dword [ebp + 0x1c]
mov dword [eax + edx*4], esi
mov eax, dword [ebp + 0x18]
add ecx, 4
mov dword [ebp - 0x14], edx
mov dword [ebp + 0x1c], ecx
cmp edx, dword [edi]
jl 0x1024faf1
push 0x48
call sub.MSVCR110.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
mov dword [ebp + 0x18], eax
mov byte [ebp - 4], 1
test eax, eax
je 0x1024fb93
mov ecx, eax
call fcn.101d56c0
mov esi, eax
mov dword [ebp - 0x18], eax
jmp 0x1024fb98
xor esi, esi
mov dword [ebp - 0x18], esi
mov ecx, dword [ebp + 0x14]
mov byte [ebp - 4], 0
mov eax, dword [ecx]
mov eax, dword [eax + 0xbc]
call eax
push eax
mov ecx, esi
call fcn.101da4a0
push dword [edi + 0xc8]
push dword [edi + 4]
push dword [esi + 0x28]
call fcn.100b8f50
mov edx, dword [edi + 4]
mov ecx, dword [edi + 0xc8]
mov eax, dword [edi + 8]
mov dword [ecx + edx*4], eax
push dword [edi + 0xcc]
push dword [edi + 4]
push dword [esi + 0x2c]
call fcn.100b8f50
push dword [edi + 0xd4]
push dword [edi + 8]
push dword [esi + 0x24]
call fcn.100b8f50
push dword [edi + 0xd0]
push dword [edi + 8]
push dword [esi + 0x20]
call fcn.100284b0
mov eax, dword [esi + 0x2c]
mov ecx, dword [esi + 0x28]
mov dword [ebp + 0x18], eax
mov eax, dword [esi + 0x24]
mov dword [ebp - 0x1c], eax
mov eax, dword [esi + 0x20]
mov dword [ebp + 8], eax
mov eax, dword [edi + 0xc8]
xor esi, esi
add esp, 0x30
mov dword [eax], esi
mov dword [ebp + 0x1c], ecx
mov dword [ebp - 0x14], esi
cmp dword [edi + 4], esi
jle 0x1024fce1
mov eax, dword [ebp + 0x18]
movsd xmm2, qword [0x10268990]
movsd xmm1, qword [0x1028cdc0]
sub eax, ecx
mov dword [ebp + 0x18], eax
lea ecx, [ecx]
mov edx, dword [ecx]
mov eax, dword [ecx + eax]
add eax, edx
cmp edx, eax
jge 0x1024fca7
jmp 0x1024fc60
mov eax, dword [ebp + 8]
movsd xmm0, qword [eax + edx*8]
andpd xmm0, xmm1
comisd xmm0, xmm2
jbe 0x1024fc9a
mov ecx, dword [edi + 0xd4]
mov eax, dword [ebp - 0x1c]
inc esi
mov eax, dword [eax + edx*4]
mov dword [ecx + esi*4 - 4], eax
mov ecx, dword [ebp + 8]
mov eax, dword [edi + 0xd0]
movsd xmm0, qword [ecx + edx*8]
mov ecx, dword [ebp + 0x1c]
movsd qword [eax + esi*8 - 8], xmm0
mov eax, dword [ebp + 0x18]
inc edx
mov eax, dword [ecx + eax]
add eax, dword [ecx]
cmp edx, eax
jl 0x1024fc60
mov edx, dword [ebp - 0x14]
mov eax, dword [edi + 0xc8]
mov ecx, esi
sub ecx, dword [eax + edx*4]
mov eax, dword [edi + 0xcc]
inc edx
mov dword [eax + edx*4 - 4], ecx
mov eax, dword [edi + 0xc8]
mov ecx, dword [ebp + 0x1c]
mov dword [eax + edx*4], esi
mov eax, dword [ebp + 0x18]
add ecx, 4
mov dword [ebp - 0x14], edx
mov dword [ebp + 0x1c], ecx
cmp edx, dword [edi + 4]
jl 0x1024fc50
mov ecx, dword [ebp - 0x18]
mov dword [edi + 8], esi
mov eax, dword [ecx]
push 1
call dword [eax]
xor esi, esi
cmp dword [edi], esi
jle 0x1024fd1a
mov ecx, dword [ebp + 0x14]
push esi
mov eax, dword [ecx]
mov eax, dword [eax + 0xa8]
call eax
test al, al
mov eax, dword [edi + 0xd8]
je 0x1024fd11
mov byte [esi + eax], 1
jmp 0x1024fd15
mov byte [esi + eax], 0
inc esi
cmp esi, dword [edi]
jl 0x1024fcf3
movsd xmm1, qword [ebp + 0x24]
xorps xmm0, xmm0
ucomisd xmm1, xmm0
lahf
test ah, 0x44
jnp 0x1024fdbb
xor esi, esi
mov byte [edi + 0x128], 1
cmp dword [edi], esi
jle 0x1024fdee
mov eax, dword [edi + 0x38]
xor cl, cl
movsd xmm0, qword [eax + esi*8]
ucomisd xmm0, xmm1
mov byte [ebp + 0x1b], cl
lahf
test ah, 0x44
jp 0x1024fd5d
mov cl, 1
mov byte [ebp + 0x1b], cl
mov eax, dword [edi + 0x28]
mov edx, dword [eax + esi*4]
cmp edx, dword [eax + esi*4 + 4]
jge 0x1024fda3
lea esp, [esp]
mov eax, dword [edi + 0x34]
movsd xmm0, qword [eax + edx*8]
ucomisd xmm0, xmm1
lahf
test ah, 0x44
jp 0x1024fd96
mov eax, dword [edi + 0x30]
mov byte [ebp + 0x1b], 1
mov ecx, dword [eax + edx*4]
mov eax, dword [edi + 0x110]
or byte [eax + ecx], 2
mov eax, dword [edi + 0x28]
inc edx
cmp edx, dword [eax + esi*4 + 4]
jl 0x1024fd70
mov cl, byte [ebp + 0x1b]
test cl, cl
je 0x1024fdb1
mov eax, dword [edi + 0xfc]
or byte [esi + eax], 2
inc esi
cmp esi, dword [edi]
jl 0x1024fd41
xorps xmm0, xmm0
jmp 0x1024fdee
mov edx, dword [ebp + 0x2c]
test edx, edx
je 0x1024fde7
xor ecx, ecx
mov byte [edi + 0x128], 1
cmp dword [edi], ecx
jle 0x1024fdee
nop
cmp byte [ecx + edx], 0
je 0x1024fde0
mov eax, dword [edi + 0xfc]
or byte [ecx + eax], 2
inc ecx
cmp ecx, dword [edi]
jl 0x1024fdd0
jmp 0x1024fdee
mov byte [edi + 0x128], 0
mov edx, dword [ebp + 0x30]
test edx, edx
je 0x1024fe19
xor ecx, ecx
mov byte [edi + 0x128], 1
cmp dword [edi + 4], ecx
jle 0x1024fe19
cmp byte [ecx + edx], 0
je 0x1024fe13
mov eax, dword [edi + 0x110]
or byte [eax + ecx], 2
inc ecx
cmp ecx, dword [edi + 4]
jl 0x1024fe03
comisd xmm0, xmmword [ebp + 0xc]
jbe 0x1024fe55
xor ecx, ecx
cmp dword [edi], ecx
jle 0x1024fe48
movsd xmm1, qword [0x1028cdd0]
mov edi, edi
mov eax, dword [edi + 0x38]
inc ecx
movsd xmm0, qword [eax + ecx*8 - 8]
xorpd xmm0, xmm1
movsd qword [eax + ecx*8 - 8], xmm0
cmp ecx, dword [edi]
jl 0x1024fe30
movsd xmm0, qword [0x1028cd90]
movsd qword [edi + 0x70], xmm0
cmp byte [ebp + 0x20], 0
je 0x1024ffe6
mov eax, dword [edi]
xor ecx, ecx
mov edx, 8
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.10251cd1
mov esi, dword [ebp + 0x14]
mov dword [edi + 0x78], eax
mov eax, dword [esi]
add esp, 4
mov eax, dword [eax + 0xcc]
mov ecx, esi
call eax
mov ecx, dword [edi]
shl ecx, 3
push ecx
push eax
push dword [edi + 0x78]
call sub.MSVCR110.dll_memcpy
mov eax, dword [edi + 4]
xor ecx, ecx
mov edx, 8
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.10251cd1
mov dword [edi + 0x80], eax
mov eax, dword [edi + 4]
shl eax, 3
add esp, 0x10
mov ecx, esi
push eax
mov eax, dword [esi]
mov eax, dword [eax + 0xdc]
call eax
push eax
push dword [edi + 0x80]
call sub.MSVCR110.dll_memcpy
mov eax, dword [esi]
add esp, 0xc
mov eax, dword [eax + 0x54]
push 0
push 0x102a2304
push 0x102a22e8
push 0
mov ecx, esi
call eax
push eax
call sub.MSVCR110.dll___RTDynamicCast
mov ecx, dword [edi + 4]
add ecx, dword [edi]
mov esi, eax
push ecx
call fcn.10251cd1
mov edx, dword [edi]
mov dword [edi + 0x88], eax
add eax, edx
add esp, 0x18
mov dword [edi + 0x8c], eax
test esi, esi
je 0x1024ff91
cmp dword [esi + 8], edx
jne 0x1024ff91
xor ecx, ecx
mov dword [ebp + 0x20], ecx
test edx, edx
jle 0x1024ff5a
mov edi, edi
mov eax, dword [esi + 0x14]
mov edx, ecx
sar edx, 2
and cl, 3
mov dl, byte [edx + eax]
mov eax, dword [edi + 0x88]
add cl, cl
sar dl, cl
mov ecx, dword [ebp + 0x20]
inc ecx
mov dword [ebp + 0x20], ecx
and dl, 3
mov byte [ecx + eax - 1], dl
cmp ecx, dword [edi]
jl 0x1024ff30
xor ecx, ecx
mov dword [ebp + 0x20], ecx
cmp dword [edi + 4], ecx
jle 0x1024ffd1
mov eax, dword [esi + 0x18]
mov edx, ecx
sar edx, 2
and cl, 3
mov dl, byte [edx + eax]
mov eax, dword [edi + 0x8c]
add cl, cl
sar dl, cl
mov ecx, dword [ebp + 0x20]
inc ecx
mov dword [ebp + 0x20], ecx
and dl, 3
mov byte [ecx + eax - 1], dl
cmp ecx, dword [edi + 4]
jl 0x1024ff64
jmp 0x1024ffd1
xor ecx, ecx
test edx, edx
jle 0x1024ffb0
jmp 0x1024ffa0
mov eax, dword [edi + 0x88]
inc ecx
mov byte [ecx + eax - 1], 3
cmp ecx, dword [edi]
jl 0x1024ffa0
xor ecx, ecx
cmp dword [edi + 4], ecx
jle 0x1024ffd1
jmp 0x1024ffc0
mov eax, dword [edi + 0x8c]
inc ecx
mov byte [ecx + eax - 1], 1
cmp ecx, dword [edi + 4]
jl 0x1024ffc0
test esi, esi
je 0x1024ffe6
mov eax, dword [esi + 4]
push 1
mov ecx, dword [eax + 4]
add ecx, 4
add ecx, esi
mov eax, dword [ecx]
call dword [eax]
push dword [edi]
push dword [edi + 0xb8]
push dword [edi + 0x2c]
call fcn.10213990
push dword [edi + 4]
push dword [edi + 0xbc]
push dword [edi + 0xcc]
call fcn.10213990
mov ecx, dword [edi]
mov eax, dword [edi + 0x28]
mov edx, dword [ebp - 0x20]
dec edx
mov dword [eax + ecx*4], edx
mov ecx, dword [edi + 4]
mov eax, dword [edi + 0xc8]
add esp, 0x18
mov dword [eax + ecx*4], edx
mov ecx, edi
call fcn.10212f60
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x2c