Function at 0x100016348
Capabilities:
Encode data using xor
Extract resource via kernel32 functions

Disassembly:
mov r11, rsp
mov qword [r11 + 0x10], rbx
mov qword [r11 + 0x18], rbp
mov qword [r11 + 0x20], rsi
push rdi
sub rsp, 0x60
movsxd rsi, r8d
mov rbp, rdx
mov rdi, rcx
lea rbx, [rcx + rsi*8 + 8]
cmp qword [rbx], 0
jne 0x100016532
and qword [r11 - 0x38], 0
mov rax, qword [rdx]
mov qword [r11 - 0x40], rbx
mov edx, 0x990
mov r9d, 0x142
mov r8d, 8
mov rcx, rbp
mov dword [rsp + 0x20], 1
call qword [rax + 0xd0]
mov rcx, qword [rbx]
and qword [rsp + 0x70], 0
mov rax, qword [rcx]
and dword [rsp + 0x20], 0
lea r9, [rsp + 0x70]
xor edx, edx
mov r8d, 0x990
call qword [rax + 0x58]
xor r11d, r11d
xor r10d, r10d
xorps xmm0, xmm0
movss xmm2, dword [0x10001564c]
movss xmm3, dword [0x1000155e0]
lea r9d, [r11 + 0x18]
movss dword [rsp + 0x48], xmm0
movss dword [rsp + 0x44], xmm0
movss dword [rsp + 0x40], xmm0
movss dword [rsp + 0x54], xmm0
movss dword [rsp + 0x50], xmm0
movss dword [rsp + 0x4c], xmm0
mov ecx, dword [rdi + 0xa20]
movd xmm1, r11d
mov edx, 0xff
inc r11d
cvtdq2ps xmm1, xmm1
movaps xmm0, xmm1
divss xmm1, xmm2
mulss xmm0, dword [0x100015624]
mulss xmm1, dword [0x100015600]
subss xmm1, xmm3
divss xmm0, xmm2
cvttss2si eax, xmm0
movaps xmm0, xmm1
mulss xmm0, xmm1
mulss xmm0, xmm1
sub edx, eax
mov rax, qword [rsp + 0x70]
shl edx, 0x18
or ecx, edx
mov dword [r10 + rax + 0xc], ecx
mov ecx, dword [rdi + 0xa20]
mov rax, qword [rsp + 0x70]
addss xmm0, xmm3
mulss xmm0, dword [0x100003ab4]
xor ecx, 0x3f3f3f
or ecx, edx
mov dword [r9 + rax + 0xc], ecx
mov eax, dword [rdi + 0xa20]
lea ecx, [rax + rax*2]
mov rax, qword [rsp + 0x70]
or ecx, edx
lea rdx, [rsp + 0x40]
mov dword [r9 + rax + 0xc], ecx
mov rcx, qword [rsp + 0x70]
mov eax, dword [rdx]
mov dword [r10 + rcx], eax
mov eax, dword [rdx + 4]
add r10, 0x30
mov dword [r10 + rcx - 0x2c], eax
mov eax, dword [rdx + 8]
lea rdx, [rsp + 0x4c]
mov dword [r10 + rcx - 0x28], eax
mov rcx, qword [rsp + 0x70]
mov eax, dword [rdx]
mov dword [r9 + rcx], eax
mov eax, dword [rdx + 4]
add r9, 0x30
mov dword [r9 + rcx - 0x2c], eax
mov eax, dword [rdx + 8]
mov dword [r9 + rcx - 0x28], eax
mov rax, qword [rsp + 0x70]
movss dword [r10 + rax - 0x20], xmm0
mov rax, qword [rsp + 0x70]
and dword [r10 + rax - 0x1c], 0
cmp r11d, 0x33
mov rax, qword [rsp + 0x70]
movss dword [r9 + rax - 0x20], xmm0
mov rax, qword [rsp + 0x70]
mov dword [r9 + rax - 0x1c], 0x3f800000
jl 0x100016404
mov rdx, qword [rsp + 0x70]
lea rcx, [rdi + 0x58]
mov r8d, 0x990
call sub.msvcrt.dll_memcpy
mov rcx, qword [rbx]
mov rax, qword [rcx]
call qword [rax + 0x60]
lea rax, [0x10002fff0]
lea rbx, [rax + rsi*8]
cmp qword [rbx], 0
jne 0x1000165b8
lea r8, [0x100001740]
mov edx, 0x66
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_FindResourceW]
and qword [rbx], 0
mov rdi, rax
test rax, rax
je 0x1000165b8
mov rdx, rax
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_SizeofResource]
mov esi, eax
test eax, eax
je 0x1000165b8
mov rdx, rdi
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_LoadResource]
test rax, rax
je 0x1000165b8
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_LockResource]
test rax, rax
je 0x1000165b8
mov qword [rsp + 0x30], rbx
xor r9d, r9d
mov r8d, esi
mov rdx, rax
mov rcx, rbp
mov dword [rsp + 0x28], 0x15
mov dword [rsp + 0x20], 0x400
call fcn.100024b14
lea r11, [rsp + 0x60]
mov rbx, qword [r11 + 0x18]
mov rbp, qword [r11 + 0x20]
mov rsi, qword [r11 + 0x28]
mov rsp, r11
pop rdi
ret