Function at 0x10035d50
Capabilities:
Encode data using xor

Disassembly:
push 0x44
mov eax, 0x10048ef1
call fcn.10044ac9
mov ebx, ecx
mov esi, dword [ebp + 8]
xor edx, edx
mov edi, dword [ebp + 0xc]
mov dword [ebp - 4], edx
mov byte [ebp - 0x29], dl
jmp 0x10035fa1
mov eax, dword [esi]
mov dword [ebp - 0x30], eax
test eax, eax
je 0x10035f9e
push eax
call fcn.100062d1
mov dword [ebp - 0x34], eax
pop ecx
test eax, eax
je 0x10035e9f
and dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0xf
mov byte [ebp - 0x28], 0
push dword [ebp - 0x30]
movzx eax, byte [eax + 4]
push eax
mov byte [ebp - 4], 1
call fcn.10006302
mov dword [ebp - 0x38], eax
pop ecx
pop ecx
test eax, eax
je 0x10035dc7
cmp dword [eax + 0x48], 0
je 0x10035dc7
push dword [ebp - 0x30]
push eax
push 0
jmp 0x10035dcf
push dword [ebp - 0x30]
push 0
push dword [ebp - 0x34]
lea eax, [ebp - 0x50]
push eax
call fcn.100073aa
add esp, 0x10
lea ecx, [ebp - 0x28]
push eax
call fcn.10006163
push 0
push 1
lea ecx, [ebp - 0x50]
call fcn.10001cd4
movzx ecx, byte [ebp - 0x29]
mov eax, dword [ebx + 0xc]
mov dword [ebp - 0x30], ecx
mov eax, dword [eax + ecx*4]
test eax, eax
je 0x10035e8a
lea ecx, [ebp - 0x28]
add eax, 4
push ecx
push eax
call fcn.1000aa9f
mov eax, dword [ebx + 0xc]
mov edx, dword [ebp - 0x30]
pop ecx
pop ecx
mov ecx, dword [ebp - 0x34]
mov eax, dword [eax + edx*4]
mov dword [eax + 0x50], ecx
mov eax, dword [ebx + 0xc]
mov ecx, dword [ebp - 0x30]
mov eax, dword [eax + edx*4]
mov edx, dword [ebp - 0x38]
mov dword [eax + 0x54], edx
mov eax, dword [ebx + 0xc]
mov eax, dword [eax + ecx*4]
mov ecx, dword [ebp - 0x34]
and dword [eax + 0x58], 0
test edx, edx
je 0x10035e4f
movsx edx, word [edx + 0x56]
movsx eax, word [ecx + 0x66]
add edx, eax
jmp 0x10035e53
movsx edx, word [ecx + 0x66]
mov eax, dword [ebx + 0xc]
mov ecx, dword [ebp - 0x30]
mov eax, dword [eax + ecx*4]
mov dword [eax + 0x5c], edx
mov eax, dword [ebx + 0xc]
mov eax, dword [eax + ecx*4]
cmp dword [eax], 0
je 0x10035e8a
lea ecx, [ebp - 0x28]
push ecx
push dword [eax]
call fcn.1000ed98
mov eax, dword [ebx + 0xc]
mov ecx, dword [ebp - 0x30]
push 1
mov eax, dword [eax + ecx*4]
push dword [eax]
call fcn.1000e8b6
add esp, 0x10
push 0
push 1
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 0
call fcn.10001cd4
jmp 0x10035f9b
movzx ecx, byte [ebp - 0x29]
xor edx, edx
mov eax, dword [ebx + 0xc]
mov dword [ebp - 0x30], ecx
cmp dword [eax + ecx*4], edx
je 0x10035f9b
movaps xmm0, xmmword [0x10050a80]
mov ecx, edx
movups xmmword [ebp - 0x28], xmm0
mov dword [ebp - 0x18], 0x258495e
mov dword [ebp - 0x14], 0x585448
mov al, byte [ebp - 0x28]
xor byte [ebp + ecx - 0x27], al
inc ecx
cmp ecx, 0x16
jb 0x10035ecf
lea eax, [ebp - 0x27]
mov byte [ebp - 0x11], dl
push eax
lea ecx, [ebp - 0x50]
call fcn.100012e0
mov ecx, dword [ebp - 0x30]
lea eax, [ebp - 0x50]
push eax
mov eax, dword [ebx + 0xc]
mov byte [ebp - 4], 2
mov eax, dword [eax + ecx*4]
add eax, 4
push eax
call fcn.1000aa9f
pop ecx
pop ecx
push 0
push 1
lea ecx, [ebp - 0x50]
mov byte [ebp - 4], 0
call fcn.10001cd4
mov eax, dword [ebx + 0xc]
xor edx, edx
mov ecx, dword [ebp - 0x30]
mov eax, dword [eax + ecx*4]
cmp dword [eax], edx
je 0x10035f9b
movaps xmm0, xmmword [0x10050a70]
mov ecx, edx
movups xmmword [ebp - 0x28], xmm0
mov dword [ebp - 0x18], 0x6e342532
mov dword [ebp - 0x14], 0x343824
mov al, byte [ebp - 0x28]
xor byte [ebp + ecx - 0x27], al
inc ecx
cmp ecx, 0x16
jb 0x10035f41
lea eax, [ebp - 0x27]
mov byte [ebp - 0x11], dl
push eax
lea ecx, [ebp - 0x50]
call fcn.100012e0
mov ecx, dword [ebp - 0x30]
lea eax, [ebp - 0x50]
push eax
mov eax, dword [ebx + 0xc]
mov byte [ebp - 4], 3
mov eax, dword [eax + ecx*4]
push dword [eax]
call fcn.1000ed98
pop ecx
pop ecx
push 0
push 1
lea ecx, [ebp - 0x50]
mov byte [ebp - 4], 0
call fcn.10001cd4
mov eax, dword [ebx + 0xc]
mov ecx, dword [ebp - 0x30]
push 0
mov eax, dword [eax + ecx*4]
push dword [eax]
call fcn.1000e8b6
pop ecx
pop ecx
inc byte [ebp - 0x29]
add esi, 4
cmp esi, edi
jne 0x10035d71
mov ecx, ebx
call fcn.10035a76
lea ecx, [ebp + 8]
call fcn.10007ebd
call fcn.10044a84
ret 0xc