Function at 0x180039554
Capabilities:
Encode data using xor
Hash data with crc32
Link many functions at runtime

Disassembly:
mov dword [rsp + 8], ecx
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x58]
sub rsp, 0x158
mov ebx, ecx
lea rcx, [rbp - 0x70]
call fcn.18006138c
mov edx, ebx
mov rcx, rax
call fcn.180061e5c
test al, al
je 0x18003959d
lea rdx, [rbp + 0xa0]
call fcn.1800612b8
mov rax, qword [rax]
jmp 0x180039e48
mov rcx, qword [0x1801a8db0]
lea rdx, str.il2cpp_domain_get
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov rcx, qword [0x1801a8db0]
lea rdx, str.il2cpp_domain_get_assemblies
and qword [rbp - 0x50], 0
mov rbx, rax
mov qword [rbp - 0x48], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
lea rdx, [rbp - 0x50]
mov rcx, rbx
call rax
mov rcx, qword [0x1801a8db0]
lea rdx, str.il2cpp_domain_get_assemblies
xor esi, esi
mov qword [rbp - 0x60], rax
and qword [rbp + 0xb8], rsi
mov r14, rax
mov dword [rbp + 0xb0], esi
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
lea rdx, [rbp + 0xb8]
mov rcx, rbx
call rax
cmp qword [rbp + 0xb8], rsi
jbe 0x180039e46
xor edi, edi
movabs r13, 0x7fffffffffffffff
mov qword [rbp - 0x78], rdi
mov rax, qword [r14 + rdi*8]
lea rdx, str.il2cpp_image_get_class_count
mov rcx, qword [0x1801a8db0]
xor r12d, r12d
mov dword [rbp + 0xa8], r12d
mov r15, qword [rax]
mov qword [rbp - 0x80], r15
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, r15
call rax
test rax, rax
je 0x180039dff
xor ebx, ebx
lea esi, [rbx + 0xf]
mov r14, qword [r15]
or rdi, 0xffffffffffffffff
mov qword [rsp + 0x40], rbx
mov qword [rsp + 0x50], rbx
mov qword [rsp + 0x58], rsi
inc rdi
cmp byte [r14 + rdi], bl
jne 0x180039681
cmp rdi, rsi
ja 0x1800396b2
mov r8, rdi
mov qword [rsp + 0x50], rdi
mov rdx, r14
lea rcx, [rsp + 0x40]
call sub.VCRUNTIME140.dll_memmove
mov byte [rsp + rdi + 0x40], bl
mov rsi, qword [rsp + 0x40]
jmp 0x18003974d
cmp rdi, r13
ja 0x180039ec9
mov rbx, rdi
or rbx, rsi
cmp rbx, r13
jbe 0x1800396d5
mov rbx, r13
movabs rax, 0x8000000000000027
jmp 0x1800396fb
mov eax, 0x16
cmp rbx, rax
cmovb rbx, rax
lea rcx, [rbx + 1]
cmp rcx, 0x1000
jb 0x18003971a
lea rax, [rcx + 0x27]
cmp rax, rcx
jbe 0x180039ecf
mov rcx, rax
call fcn.180065280
test rax, rax
je 0x180039eb2
lea rsi, [rax + 0x27]
and rsi, 0xffffffffffffffe0
mov qword [rsi - 8], rax
jmp 0x18003972b
test rcx, rcx
je 0x180039729
call fcn.180065280
mov rsi, rax
jmp 0x18003972b
xor esi, esi
mov r8, rdi
mov qword [rsp + 0x50], rdi
mov rdx, r14
mov qword [rsp + 0x58], rbx
mov rcx, rsi
call sub.VCRUNTIME140.dll_memcpy
xor ebx, ebx
mov byte [rsi + rdi], bl
mov qword [rsp + 0x40], rsi
lea rdx, str..dll
lea rcx, [rsp + 0x40]
call fcn.1800615b8
mov r8, qword [rsp + 0x50]
cmp r8, rax
jb 0x180039ec3
mov rcx, r8
mov edx, 4
sub rcx, rax
cmp rcx, rdx
cmovb rdx, rcx
cmp qword [rsp + 0x58], 0x10
lea rcx, [rsp + 0x40]
cmovae rcx, rsi
sub r8, rdx
mov qword [rsp + 0x50], r8
add rcx, rax
sub r8, rax
add rdx, rcx
inc r8
call sub.VCRUNTIME140.dll_memmove
mov rcx, qword [0x1801a8db0]
lea rdx, str.il2cpp_image_get_class
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
movsxd rdx, r12d
mov rcx, r15
call rax
mov r13, rax
mov qword [rbp - 0x30], rbx
mov qword [rbp - 0x18], 0xf
or rsi, 0xffffffffffffffff
mov r12, qword [rax + 0x10]
mov r14, qword [rax + 0x18]
inc rsi
cmp byte [r14 + rsi], bl
jne 0x1800397dd
cmp rsi, 0xf
ja 0x180039814
mov r8, rsi
mov qword [rbp - 0x20], rsi
mov rdx, r14
lea rcx, [rbp - 0x30]
call sub.VCRUNTIME140.dll_memmove
mov byte [rbp + rsi - 0x30], bl
mov rbx, qword [rbp - 0x18]
mov rsi, qword [rbp - 0x20]
mov rdi, qword [rbp - 0x30]
jmp 0x1800398aa
movabs rax, 0x7fffffffffffffff
cmp rsi, rax
ja 0x180039ec9
mov rbx, rsi
or rbx, 0xf
cmp rbx, rax
jbe 0x180039842
mov rbx, rax
movabs rax, 0x8000000000000027
jmp 0x180039868
mov eax, 0x16
cmp rbx, rax
cmovb rbx, rax
lea rcx, [rbx + 1]
cmp rcx, 0x1000
jb 0x180039887
lea rax, [rcx + 0x27]
cmp rax, rcx
jbe 0x180039ecf
mov rcx, rax
call fcn.180065280
test rax, rax
je 0x180039eb2
lea rdi, [rax + 0x27]
and rdi, 0xffffffffffffffe0
mov qword [rdi - 8], rax
jmp 0x180039898
test rcx, rcx
je 0x180039896
call fcn.180065280
mov rdi, rax
jmp 0x180039898
xor edi, edi
mov r8, rsi
mov rdx, r14
mov rcx, rdi
call sub.VCRUNTIME140.dll_memcpy
mov byte [rdi + rsi], 0
test rsi, rsi
sete sil
cmp rbx, 0x10
jb 0x1800398e8
lea rdx, [rbx + 1]
mov rax, rdi
cmp rdx, 0x1000
jb 0x1800398e0
mov rdi, qword [rdi - 8]
add rdx, 0x27
sub rax, rdi
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180039eb2
mov rcx, rdi
call fcn.1800652bc
mov rcx, qword [rsp + 0x50]
xor ebx, ebx
test sil, sil
je 0x180039a05
movabs rax, 0x7fffffffffffffff
sub rax, rcx
cmp rax, 2
jb 0x180039ed5
cmp qword [rsp + 0x58], 0x10
lea rax, [0x18015476c]
mov qword [rsp + 0x30], 2
lea r9, [rsp + 0x40]
cmovae r9, qword [rsp + 0x40]
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rcx
lea rcx, [rbp + 0x10]
call fcn.1800030a8
mov rdx, r12
lea rcx, [rbp + 0x10]
call fcn.180061674
lea esi, [rbx + 0xf]
movups xmm0, xmmword [rax]
movups xmm1, xmmword [rax + 0x10]
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rsi
mov byte [rax], bl
mov rdx, qword [rsp + 0x58]
movups xmmword [rbp - 0x40], xmm0
movups xmmword [rbp - 0x70], xmm1
cmp rdx, 0x10
jb 0x1800399b0
mov rcx, qword [rsp + 0x40]
inc rdx
mov rax, rcx
cmp rdx, 0x1000
jb 0x1800399a3
mov rcx, qword [rcx - 8]
add rdx, 0x27
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180039e5c
call fcn.1800652bc
movups xmm0, xmmword [rbp - 0x40]
movups xmm1, xmmword [rbp - 0x70]
mov rdx, qword [rbp + 0x28]
movups xmmword [rsp + 0x40], xmm0
movups xmmword [rsp + 0x50], xmm1
cmp rdx, 0x10
jb 0x1800399f5
mov rcx, qword [rbp + 0x10]
inc rdx
mov rax, rcx
cmp rdx, 0x1000
jb 0x1800399f0
mov rcx, qword [rcx - 8]
add rdx, 0x27
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180039e5c
call fcn.1800652bc
mov qword [rbp + 0x20], rbx
mov qword [rbp + 0x28], rsi
mov byte [rbp + 0x10], bl
jmp 0x180039cfc
movabs rdi, 0x7fffffffffffffff
mov rax, rdi
sub rax, rcx
cmp rax, 2
jb 0x180039ee1
cmp qword [rsp + 0x58], 0x10
lea rax, [0x18015476c]
mov qword [rsp + 0x30], 2
lea r9, [rsp + 0x40]
cmovae r9, qword [rsp + 0x40]
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rcx
lea rcx, [rbp + 0x30]
call fcn.1800030a8
mov rdx, r14
lea rcx, [rbp + 0x30]
call fcn.180061674
movups xmm1, xmmword [rax + 0x10]
movups xmm0, xmmword [rax]
mov qword [rax + 0x10], rbx
movq rsi, xmm1
mov qword [rax + 0x18], 0xf
mov byte [rax], bl
movups xmmword [rsp + 0x70], xmm1
psrldq xmm1, 8
movq r14, xmm1
mov rax, r14
sub rax, rsi
movups xmmword [rsp + 0x60], xmm0
cmp rax, 2
jb 0x180039ac3
lea rax, [rsi + 2]
cmp r14, 0x10
mov qword [rsp + 0x70], rax
mov ecx, 0x3a3a
lea rax, [rsp + 0x60]
cmovae rax, qword [rsp + 0x60]
mov word [rax + rsi], cx
mov byte [rax + rsi + 2], bl
jmp 0x180039beb
mov rax, rdi
sub rax, rsi
cmp rax, 2
jb 0x180039ee1
lea r15, [rsi + 2]
mov rbx, r15
or rbx, 0xf
cmp rbx, rdi
ja 0x180039af4
mov rcx, r14
mov rax, rdi
shr rcx, 1
sub rax, rcx
cmp r14, rax
jbe 0x180039b03
mov rbx, rdi
movabs rax, 0x8000000000000027
jmp 0x180039b28
lea rax, [rcx + r14]
cmp rbx, rax
cmovb rbx, rax
lea rcx, [rbx + 1]
cmp rcx, 0x1000
jb 0x180039b47
lea rax, [rcx + 0x27]
cmp rax, rcx
jbe 0x180039edb
mov rcx, rax
call fcn.180065280
test rax, rax
je 0x180039e63
lea rdi, [rax + 0x27]
and rdi, 0xffffffffffffffe0
mov qword [rdi - 8], rax
jmp 0x180039b58
test rcx, rcx
je 0x180039b56
call fcn.180065280
mov rdi, rax
jmp 0x180039b58
xor edi, edi
mov qword [rsp + 0x70], r15
mov r8, rsi
mov qword [rsp + 0x78], rbx
mov rcx, rdi
cmp r14, 0x10
jb 0x180039bc9
mov rbx, qword [rsp + 0x60]
mov rdx, rbx
call sub.VCRUNTIME140.dll_memcpy
lea rdx, [r14 + 1]
mov eax, 0x3a3a
mov word [rdi + rsi], ax
mov r14d, 0x1000
mov byte [rdi + rsi + 2], 0
mov rax, rbx
cmp rdx, r14
jb 0x180039bb4
mov rbx, qword [rbx - 8]
add rdx, 0x27
sub rax, rbx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180039e63
mov rcx, rbx
call fcn.1800652bc
mov r15, qword [rbp - 0x80]
xor ebx, ebx
mov qword [rsp + 0x60], rdi
jmp 0x180039bf1
lea rdx, [rsp + 0x60]
call sub.VCRUNTIME140.dll_memcpy
mov r15, qword [rbp - 0x80]
mov eax, 0x3a3a
xor ebx, ebx
mov word [rdi + rsi], ax
mov byte [rdi + rsi + 2], bl
mov qword [rsp + 0x60], rdi
mov r14d, 0x1000
movups xmm0, xmmword [rsp + 0x60]
mov rdx, r12
lea rcx, [rbp - 0x10]
movups xmm1, xmmword [rsp + 0x70]
movups xmmword [rbp - 0x10], xmm0
movups xmmword [rbp], xmm1
call fcn.180061674
mov esi, 0xf
movups xmm0, xmmword [rax]
movups xmm1, xmmword [rax + 0x10]
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rsi
mov byte [rax], bl
mov rdx, qword [rsp + 0x58]
movups xmmword [rbp - 0x70], xmm0
movups xmmword [rbp - 0x40], xmm1
cmp rdx, 0x10
jb 0x180039c6e
mov rcx, qword [rsp + 0x40]
inc rdx
mov rax, rcx
cmp rdx, r14
jb 0x180039c61
mov rcx, qword [rcx - 8]
add rdx, 0x27
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180039e63
call fcn.1800652bc
movups xmm0, xmmword [rbp - 0x70]
movups xmm1, xmmword [rbp - 0x40]
mov rdx, qword [rbp + 8]
movups xmmword [rsp + 0x40], xmm0
movups xmmword [rsp + 0x50], xmm1
cmp rdx, 0x10
jb 0x180039caf
mov rcx, qword [rbp - 0x10]
inc rdx
mov rax, rcx
cmp rdx, r14
jb 0x180039caa
mov rcx, qword [rcx - 8]
add rdx, 0x27
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180039e63
call fcn.1800652bc
mov rdx, qword [rbp + 0x48]
mov qword [rbp], rbx
mov qword [rbp + 8], rsi
mov byte [rbp - 0x10], bl
cmp rdx, 0x10
jb 0x180039cf1
mov rcx, qword [rbp + 0x30]
inc rdx
mov rax, rcx
cmp rdx, r14
jb 0x180039cec
mov rcx, qword [rcx - 8]
add rdx, 0x27
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180039e63
call fcn.1800652bc
mov qword [rbp + 0x40], rbx
mov qword [rbp + 0x48], rsi
mov byte [rbp + 0x30], bl
mov r10, qword [rsp + 0x58]
lea rcx, [rsp + 0x40]
mov r8, qword [rsp + 0x40]
cmp r10, 0x10
cmovae rcx, r8
or rax, 0xffffffffffffffff
inc rax
cmp byte [rcx + rax], bl
jne 0x180039d17
cmp r10, 0x10
lea r9, [rsp + 0x40]
cmovae r9, r8
or edx, 0xffffffff
test eax, eax
je 0x180039d58
mov r11d, eax
movsx ecx, byte [r9]
mov eax, edx
xor rcx, rax
shr edx, 8
movzx eax, cl
inc r9
lea rcx, [0x1800f37c0]
xor edx, dword [rcx + rax*4]
sub r11, 1
jne 0x180039d36
mov eax, dword [rbp + 0xa0]
not edx
cmp eax, edx
je 0x180039e6a
cmp r10, 0x10
jb 0x180039d9f
lea rdx, [r10 + 1]
mov rax, r8
cmp rdx, 0x1000
jb 0x180039d97
mov r8, qword [r8 - 8]
add rdx, 0x27
sub rax, r8
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180039eb2
mov rcx, r8
call fcn.1800652bc
mov r12d, dword [rbp + 0xa8]
lea rdx, str.il2cpp_image_get_class_count
mov rcx, qword [0x1801a8db0]
inc r12d
mov dword [rbp + 0xa8], r12d
mov qword [rsp + 0x50], rbx
mov qword [rsp + 0x58], rsi
mov byte [rsp + 0x40], bl
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, r15
call rax
movsxd rcx, r12d
movabs r13, 0x7fffffffffffffff
cmp rcx, rax
jb 0x18003966b
mov rbx, qword [rbp - 0x48]
mov rdi, qword [rbp - 0x78]
mov esi, dword [rbp + 0xb0]
mov r14, qword [rbp - 0x60]
mov rcx, qword [0x1801a8db0]
lea rdx, str.il2cpp_domain_get_assemblies
and qword [rbp + 0xb8], 0
inc esi
inc rdi
mov dword [rbp + 0xb0], esi
mov qword [rbp - 0x78], rdi
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
lea rdx, [rbp + 0xb8]
mov rcx, rbx
call rax
movsxd rax, esi
cmp rax, qword [rbp + 0xb8]
jb 0x18003962f
xor eax, eax
add rsp, 0x158
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
lea r8, [rbp - 0x60]
mov dword [rbp - 0x60], eax
lea rdx, [rbp - 0x70]
mov qword [rbp - 0x58], r13
call fcn.180061fa8
mov rdx, qword [rsp + 0x58]
cmp rdx, 0x10
jb 0x180039ebe
mov rcx, qword [rsp + 0x40]
inc rdx
mov rax, rcx
cmp rdx, 0x1000
jb 0x180039eb9
mov rcx, qword [rcx - 8]
add rdx, 0x27
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x180039eb9
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
call fcn.1800652bc
mov rax, r13
jmp 0x180039e48
call fcn.180001c9c
int3
call fcn.180001894
int3
call fcn.1800017f4
int3
call fcn.180001894
int3
call fcn.1800017f4
int3
call fcn.180001894
int3