Function at 0x1012fb54
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x24
mov eax, dword [0x101be6c0]
push ebx
push esi
push edi
mov edi, dword [eax + 0x10]
mov dword [ebp - 0xc], ecx
mov ecx, dword [eax + 0x1c]
mov edx, dword [edi]
mov eax, dword [ecx]
mov esi, dword [edx + 0xc]
call dword [eax + 0x30]
push eax
mov ecx, edi
call esi
mov ecx, dword [0x101be6c0]
mov dword [ebp - 8], eax
mov edi, dword [ecx + 0x10]
mov ecx, eax
mov edx, dword [edi]
mov esi, dword [edx + 0x10]
call fcn.10049740
mov ecx, edi
push dword [eax]
call esi
mov eax, dword fs:[0x2c]
mov esi, dword [0x101bf848]
mov ecx, dword [eax + esi*4]
mov eax, dword [0x101c6d3c]
cmp eax, dword [ecx + 4]
jg 0x1012fba8
mov ecx, dword [0x101c6d40]
cmp dword [ecx + 0x2c], 2
je 0x1012f7b9
mov eax, dword [ecx]
push 2
mov eax, dword [eax + 0x24]
call eax
mov eax, dword fs:[0x2c]
mov ecx, dword [eax + esi*4]
mov eax, dword [0x101c6e1c]
cmp eax, dword [ecx + 4]
jg 0x1012fc13
mov eax, dword [0x101be6c0]
mov edi, dword [eax + 0x10]
mov ecx, dword [eax + 0x1c]
mov edx, dword [edi]
mov eax, dword [ecx]
mov esi, dword [edx + 0xc]
call dword [eax + 0x30]
push eax
mov ecx, edi
call esi
neg eax
sbb ebx, ebx
and ebx, dword [0x101c6e14]
push ebx
call fcn.1015ef70
mov edi, dword [ebp - 8]
mov ecx, dword [0x101be6c4]
push edi
call fcn.1015ee80
mov eax, dword [0x101be6c0]
mov ecx, edi
mov eax, dword [eax + 0x18]
mov byte [eax + 4], 1
mov eax, dword [0x101be6c0]
mov eax, dword [eax + 0x18]
mov byte [eax + 5], 0
mov eax, dword [0x101be6c0]
mov eax, dword [eax]
movss xmm0, dword [eax + 0x1c]
movss dword [eax + 0x10], xmm0
mov esi, dword [0x101be6c0]
call fcn.10011010
mov ecx, dword [esi]
push 0xa4
push 0
movd xmm0, dword [eax]
mov eax, dword [0x101be6c0]
cvtdq2ps xmm0, xmm0
push 0x101c6c98
mov eax, dword [eax]
mulss xmm0, dword [ecx + 0x1c]
movss dword [eax + 0xc], xmm0
call fcn.10079280
mov eax, dword [ebp - 0xc]
add esp, 0xc
mov eax, dword [eax]
mov dword [ebp - 4], eax
mov eax, dword [0x101be6c0]
mov edi, dword [eax + 0x10]
mov ecx, dword [eax + 0x1c]
mov edx, dword [edi]
mov eax, dword [ecx]
mov esi, dword [edx + 0xc]
call dword [eax + 0x30]
push eax
mov ecx, edi
call esi
mov ecx, dword [0x101be6c0]
mov dword [ebp - 0x10], eax
mov edi, dword [ecx + 0x10]
mov ecx, eax
mov edx, dword [edi]
mov esi, dword [edx + 0x10]
call fcn.10049740
mov ecx, edi
push dword [eax]
call esi
mov esi, eax
test esi, esi
je 0x1012f8fe
mov ecx, esi
call fcn.10014070
xorps xmm1, xmm1
movss xmm0, dword [eax]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jnp 0x1012f8d1
mov al, 1
jmp 0x1012f8d3
xor al, al
mov edi, dword [ebp - 4]
mov ecx, esi
mov byte [edi + 0x17], al
call fcn.10014320
xorps xmm1, xmm1
movss xmm0, dword [eax]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jnp 0x1012f8f7
mov al, 1
mov byte [edi + 0x18], al
jmp 0x1012f901
xor al, al
mov byte [edi + 0x18], al
jmp 0x1012f901
mov edi, dword [ebp - 4]
mov eax, dword [0x101be6c0]
mov esi, dword [ebp - 0x10]
mov ecx, esi
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov dword [edi], eax
mov eax, dword [0x101be6c0]
mov eax, dword [eax]
mov eax, dword [eax + 0x10]
mov dword [edi + 4], eax
call fcn.10013820
mov ecx, esi
mov eax, dword [eax]
mov dword [edi + 8], eax
call fcn.10030720
mov ecx, esi
mov eax, dword [eax]
mov dword [edi + 0xc], eax
call fcn.10011010
mov ecx, esi
mov eax, dword [eax]
mov dword [edi + 0x10], eax
mov eax, dword [0x101be6c0]
mov eax, dword [eax + 0x18]
mov al, byte [eax + 4]
mov byte [edi + 0x14], al
mov eax, dword [0x101be6c0]
mov eax, dword [eax + 0x18]
mov al, byte [eax + 5]
mov byte [edi + 0x15], al
call fcn.1001a0c0
mov ecx, esi
mov al, byte [eax]
mov byte [edi + 0x16], al
call fcn.10030a00
mov ecx, esi
movss xmm0, dword [eax]
movss xmm1, dword [eax + 4]
movss xmm2, dword [eax + 8]
movss dword [edi + 0x1c], xmm0
movss dword [edi + 0x20], xmm1
movss dword [edi + 0x24], xmm2
call fcn.10019b80
mov ecx, dword [eax]
mov dword [edi + 0x28], ecx
mov ecx, dword [eax + 4]
mov dword [edi + 0x2c], ecx
mov ecx, esi
mov eax, dword [eax + 8]
mov dword [edi + 0x30], eax
call fcn.10030470
mov ecx, dword [eax]
mov dword [edi + 0x40], ecx
mov ecx, dword [eax + 4]
mov dword [edi + 0x44], ecx
mov ecx, esi
mov eax, dword [eax + 8]
mov dword [edi + 0x48], eax
call fcn.10012470
mov esi, dword [ebp - 8]
push esi
mov ecx, dword [eax]
mov dword [edi + 0x34], ecx
mov ecx, dword [eax + 4]
mov dword [edi + 0x38], ecx
mov eax, dword [eax + 8]
mov dword [edi + 0x3c], eax
mov eax, dword [0x101be6c0]
mov ecx, dword [eax + 0x48]
mov eax, dword [ecx]
mov eax, dword [eax + 0x34]
call eax
mov eax, dword [0x101be6c0]
push 0x101c6c98
mov ecx, dword [eax + 0x18]
push dword [eax + 0x48]
push ebx
mov edx, dword [ecx]
push esi
mov eax, dword [edx + 0x50]
call eax
mov eax, dword [0x101be6c0]
push 0x101c6c98
push esi
mov ecx, dword [eax + 0x14]
mov eax, dword [ecx]
mov eax, dword [eax + 4]
call eax
mov eax, dword [0x101be6c0]
push 0x101c6c98
push ebx
push esi
mov ecx, dword [eax + 0x18]
mov eax, dword [ecx]
mov eax, dword [eax + 0x54]
call eax
mov eax, dword [ebp - 0xc]
mov ebx, dword [eax]
mov eax, dword [0x101be6c0]
mov edi, dword [eax + 0x10]
mov ecx, dword [eax + 0x1c]
mov edx, dword [edi]
mov eax, dword [ecx]
mov esi, dword [edx + 0xc]
call dword [eax + 0x30]
push eax
mov ecx, edi
call esi
mov ecx, dword [0x101be6c0]
mov dword [ebp - 0x10], eax
mov edi, dword [ecx + 0x10]
mov ecx, eax
mov edx, dword [edi]
mov esi, dword [edx + 0x10]
call fcn.10049740
mov ecx, edi
push dword [eax]
call esi
mov eax, dword [0x101be6c0]
mov edi, dword [ebp - 0x10]
mov ecx, edi
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov dword [ebx + 0x4c], eax
call fcn.10013820
mov ecx, edi
mov eax, dword [eax]
mov dword [ebx + 0x50], eax
call fcn.1001a0c0
mov ecx, edi
mov al, byte [eax]
mov byte [ebx + 0x54], al
call fcn.10030a00
mov ecx, edi
movss xmm0, dword [eax]
movss xmm1, dword [eax + 4]
movss xmm2, dword [eax + 8]
movss dword [ebx + 0x58], xmm0
movss dword [ebx + 0x5c], xmm1
movss dword [ebx + 0x60], xmm2
mov esi, dword [ebx + 8]
call fcn.10013820
mov ecx, edi
mov dword [eax], esi
mov esi, dword [ebx + 8]
call fcn.10030720
mov ecx, edi
mov dword [eax], esi
mov esi, dword [ebx + 0x10]
call fcn.10011010
mov ecx, edi
mov dword [eax], esi
mov esi, ebx
mov bl, byte [esi + 0x16]
call fcn.1001a0c0
mov ecx, edi
mov byte [eax], bl
call fcn.10019b80
mov ecx, dword [esi + 0x28]
mov dword [eax], ecx
mov ecx, dword [esi + 0x2c]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x30]
mov dword [eax + 8], ecx
mov ecx, edi
call fcn.10030470
mov ecx, dword [esi + 0x40]
mov dword [eax], ecx
mov ecx, dword [esi + 0x44]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x48]
mov dword [eax + 8], ecx
mov ecx, edi
call fcn.10030a00
mov ecx, dword [esi + 0x1c]
mov dword [eax], ecx
mov ecx, dword [esi + 0x20]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x24]
mov dword [eax + 8], ecx
mov ecx, edi
call fcn.10012470
mov ecx, dword [esi + 0x34]
push 0
mov dword [eax], ecx
mov ecx, dword [esi + 0x38]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x3c]
mov dword [eax + 8], ecx
mov eax, dword [0x101be6c0]
mov ecx, dword [eax]
mov eax, dword [esi]
mov dword [ecx + 0xc], eax
mov eax, dword [0x101be6c0]
mov ecx, dword [eax]
mov eax, dword [esi + 4]
mov dword [ecx + 0x10], eax
mov eax, dword [0x101be6c0]
mov ecx, dword [eax + 0x18]
mov al, byte [esi + 0x14]
mov byte [ecx + 4], al
mov eax, dword [0x101be6c0]
mov ecx, dword [eax + 0x18]
mov al, byte [esi + 0x15]
mov byte [ecx + 5], al
call fcn.1015ef70
mov ecx, dword [0x101be6c4]
push 0
call fcn.1015ee80
mov eax, dword [0x101be6c0]
push 0
mov ecx, dword [eax + 0x48]
mov eax, dword [ecx]
mov eax, dword [eax + 0x34]
call eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push 0x101c6d3c
call fcn.100774e5
add esp, 4
cmp dword [0x101c6d3c], 0xffffffff
jne 0x1012f7a4
mov eax, dword [0x101be6c0]
xor edx, edx
movaps xmm0, xmmword [0x101b0f20]
mov ecx, dword [eax + 0x34]
movups xmmword [ebp - 0x22], xmm0
mov word [ebp - 0x12], 0x54
jmp 0x1012fbe0
mov al, byte [ebp - 0x22]
xor byte [ebp + edx - 0x21], al
inc edx
cmp edx, 0x10
jb 0x1012fbe0
mov byte [ebp - 0x11], 0
lea edx, [ebp - 0x21]
mov eax, dword [ecx]
push edx
mov eax, dword [eax + 0x1c]
call eax
push 0x101c6d3c
mov dword [0x101c6d40], eax
call fcn.1007749b
add esp, 4
jmp 0x1012f7a4
push 0x101c6e1c
call fcn.100774e5
add esp, 4
cmp dword [0x101c6e1c], 0xffffffff
jne 0x1012f7d3
push 0x101c6e1c
mov dword [0x101c6e14], 0
call fcn.1007749b
add esp, 4
jmp 0x1012f7d3