Function at 0x18003af98
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 - 0x98]
sub rsp, 0x198
mov ebx, ecx
lea rcx, [rbp - 0x68]
call fcn.18006138c
mov edx, ebx
mov rcx, rax
call fcn.180061e5c
test al, al
je 0x18003afe3
lea rdx, [rbp + 0xe0]
call fcn.1800612b8
mov eax, dword [rax]
jmp 0x18003ba09
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 - 0x58], 0
mov rbx, rax
mov qword [rbp - 0x50], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
lea rdx, [rbp - 0x58]
mov rcx, rbx
call rax
mov rcx, qword [0x1801a8db0]
lea rdx, str.il2cpp_domain_get_assemblies
xor esi, esi
mov qword [rbp - 0x48], rax
and qword [rbp + 0xf8], rsi
mov r14, rax
mov dword [rbp + 0xf0], esi
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
lea rdx, [rbp + 0xf8]
mov rcx, rbx
call rax
cmp qword [rbp + 0xf8], rsi
jbe 0x18003ba07
xor edi, edi
movabs r13, 0x7fffffffffffffff
mov qword [rbp - 0x70], 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 + 0xe8], 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 0x18003b9c0
xor esi, esi
mov r14, qword [r15]
or rdi, 0xffffffffffffffff
mov qword [rsp + 0x40], rsi
mov qword [rsp + 0x50], rsi
mov qword [rsp + 0x58], 0xf
inc rdi
cmp byte [r14 + rdi], sil
jne 0x18003b0c8
cmp rdi, 0xf
ja 0x18003b0fb
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], sil
mov rsi, qword [rsp + 0x40]
jmp 0x18003b192
cmp rdi, r13
ja 0x18003bae8
mov rbx, rdi
or rbx, 0xf
cmp rbx, r13
jbe 0x18003b11f
mov rbx, r13
movabs rax, 0x8000000000000027
jmp 0x18003b145
mov eax, 0x16
cmp rbx, rax
cmovb rbx, rax
lea rcx, [rbx + 1]
cmp rcx, 0x1000
jb 0x18003b164
lea rax, [rcx + 0x27]
cmp rax, rcx
jbe 0x18003baee
mov rcx, rax
call fcn.180065280
test rax, rax
je 0x18003badb
lea rsi, [rax + 0x27]
and rsi, 0xffffffffffffffe0
mov qword [rsi - 8], rax
jmp 0x18003b171
test rcx, rcx
je 0x18003b171
call fcn.180065280
mov rsi, rax
mov r8, rdi
mov qword [rsp + 0x50], rdi
mov rdx, r14
mov qword [rsp + 0x58], rbx
mov rcx, rsi
call sub.VCRUNTIME140.dll_memcpy
mov byte [rsi + rdi], 0
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 0x18003bae2
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
xor edi, edi
mov qword [rbp - 0x18], 0xf
mov r13, rax
mov qword [rbp - 0x30], rdi
or rsi, 0xffffffffffffffff
mov r12, qword [rax + 0x10]
mov r14, qword [rax + 0x18]
inc rsi
cmp byte [r14 + rsi], dil
jne 0x18003b224
cmp rsi, 0xf
ja 0x18003b25c
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], dil
mov rbx, qword [rbp - 0x18]
mov rsi, qword [rbp - 0x20]
mov rdi, qword [rbp - 0x30]
jmp 0x18003b2ee
movabs rax, 0x7fffffffffffffff
cmp rsi, rax
ja 0x18003bae8
mov rbx, rsi
or rbx, 0xf
cmp rbx, rax
jbe 0x18003b28a
mov rbx, rax
movabs rax, 0x8000000000000027
jmp 0x18003b2b0
mov eax, 0x16
cmp rbx, rax
cmovb rbx, rax
lea rcx, [rbx + 1]
cmp rcx, 0x1000
jb 0x18003b2cf
lea rax, [rcx + 0x27]
cmp rax, rcx
jbe 0x18003baee
mov rcx, rax
call fcn.180065280
test rax, rax
je 0x18003badb
lea rdi, [rax + 0x27]
and rdi, 0xffffffffffffffe0
mov qword [rdi - 8], rax
jmp 0x18003b2dc
test rcx, rcx
je 0x18003b2dc
call fcn.180065280
mov rdi, rax
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 0x18003b32f
lea rdx, [rbx + 1]
mov rax, rdi
mov ebx, 0x1000
cmp rdx, rbx
jb 0x18003b325
mov rdi, qword [rdi - 8]
add rdx, 0x27
sub rax, rdi
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18003badb
mov rcx, rdi
call fcn.1800652bc
jmp 0x18003b334
mov ebx, 0x1000
mov rcx, qword [rsp + 0x50]
xor edi, edi
test sil, sil
je 0x18003b451
movabs r14, 0x7fffffffffffffff
mov rax, r14
sub rax, rcx
cmp rax, 2
jb 0x18003baf4
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
xor esi, esi
lea r12d, [rdi + 0xf]
movups xmm0, xmmword [rax]
movups xmm1, xmmword [rax + 0x10]
mov qword [rax + 0x10], rsi
mov qword [rax + 0x18], r12
mov byte [rax], sil
mov rdx, qword [rsp + 0x58]
movups xmmword [rbp - 0x40], xmm0
movups xmmword [rbp - 0x68], xmm1
cmp rdx, 0x10
jb 0x18003b3ff
mov rcx, qword [rsp + 0x40]
inc rdx
mov rax, rcx
cmp rdx, rbx
jb 0x18003b3f2
mov rcx, qword [rcx - 8]
add rdx, 0x27
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18003ba1d
call fcn.1800652bc
movups xmm0, xmmword [rbp - 0x40]
movups xmm1, xmmword [rbp - 0x68]
mov rdx, qword [rbp + 0x28]
movups xmmword [rsp + 0x40], xmm0
movups xmmword [rsp + 0x50], xmm1
cmp rdx, 0x10
jb 0x18003b440
mov rcx, qword [rbp + 0x10]
inc rdx
mov rax, rcx
cmp rdx, rbx
jb 0x18003b43b
mov rcx, qword [rcx - 8]
add rdx, 0x27
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18003ba1d
call fcn.1800652bc
mov qword [rbp + 0x20], rsi
mov qword [rbp + 0x28], r12
mov byte [rbp + 0x10], sil
jmp 0x18003b756
movabs rax, 0x7fffffffffffffff
mov ebx, 2
sub rax, rcx
cmp rax, rbx
jb 0x18003bb06
cmp qword [rsp + 0x58], 0x10
lea rax, [0x18015476c]
mov qword [rsp + 0x30], rbx
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], rdi
movq rsi, xmm1
mov qword [rax + 0x18], 0xf
mov byte [rax], dil
movups xmmword [rsp + 0x70], xmm1
psrldq xmm1, 8
movq r14, xmm1
mov rax, r14
sub rax, rsi
movups xmmword [rsp + 0x60], xmm0
cmp rax, rbx
jb 0x18003b50d
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], dil
jmp 0x18003b637
movabs rdx, 0x7fffffffffffffff
mov rax, rdx
sub rax, rsi
cmp rax, rbx
jb 0x18003bb06
lea r15, [rsi + 2]
mov rbx, r15
or rbx, 0xf
cmp rbx, rdx
ja 0x18003b547
mov rcx, r14
mov rax, rdx
shr rcx, 1
sub rax, rcx
cmp r14, rax
jbe 0x18003b556
mov rbx, rdx
movabs rax, 0x8000000000000027
jmp 0x18003b57b
lea rax, [r14 + rcx]
cmp rbx, rax
cmovb rbx, rax
lea rcx, [rbx + 1]
cmp rcx, 0x1000
jb 0x18003b59a
lea rax, [rcx + 0x27]
cmp rax, rcx
jbe 0x18003bafa
mov rcx, rax
call fcn.180065280
test rax, rax
je 0x18003ba24
lea rdi, [rax + 0x27]
and rdi, 0xffffffffffffffe0
mov qword [rdi - 8], rax
jmp 0x18003b5a7
test rcx, rcx
je 0x18003b5a7
call fcn.180065280
mov rdi, rax
mov qword [rsp + 0x70], r15
mov r8, rsi
mov qword [rsp + 0x78], rbx
mov rcx, rdi
cmp r14, 0x10
jb 0x18003b616
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 0x18003b603
mov rbx, qword [rbx - 8]
add rdx, 0x27
sub rax, rbx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18003ba24
mov rcx, rbx
call fcn.1800652bc
mov r15, qword [rbp - 0x80]
mov qword [rsp + 0x60], rdi
jmp 0x18003b63d
lea rdx, [rsp + 0x60]
call sub.VCRUNTIME140.dll_memcpy
mov r15, qword [rbp - 0x80]
mov eax, 0x3a3a
mov word [rdi + rsi], ax
mov byte [rdi + rsi + 2], 0
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
xor esi, esi
movups xmm0, xmmword [rax]
lea r12d, [rsi + 0xf]
movups xmm1, xmmword [rax + 0x10]
mov qword [rax + 0x18], r12
mov qword [rax + 0x10], rsi
mov byte [rax], sil
mov rdx, qword [rsp + 0x58]
movups xmmword [rbp - 0x68], xmm0
movups xmmword [rbp - 0x40], xmm1
cmp rdx, 0x10
jb 0x18003b6bc
mov rcx, qword [rsp + 0x40]
inc rdx
mov rax, rcx
cmp rdx, r14
jb 0x18003b6af
mov rcx, qword [rcx - 8]
add rdx, 0x27
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18003ba24
call fcn.1800652bc
movups xmm0, xmmword [rbp - 0x68]
movups xmm1, xmmword [rbp - 0x40]
mov rdx, qword [rbp + 8]
movups xmmword [rsp + 0x40], xmm0
movups xmmword [rsp + 0x50], xmm1
cmp rdx, 0x10
jb 0x18003b6fd
mov rcx, qword [rbp - 0x10]
inc rdx
mov rax, rcx
cmp rdx, r14
jb 0x18003b6f8
mov rcx, qword [rcx - 8]
add rdx, 0x27
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18003ba24
call fcn.1800652bc
mov rdx, qword [rbp + 0x48]
mov qword [rbp], rsi
mov qword [rbp + 8], r12
mov byte [rbp - 0x10], sil
cmp rdx, 0x10
jb 0x18003b740
mov rcx, qword [rbp + 0x30]
inc rdx
mov rax, rcx
cmp rdx, r14
jb 0x18003b73b
mov rcx, qword [rcx - 8]
add rdx, 0x27
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18003ba24
call fcn.1800652bc
mov qword [rbp + 0x40], rsi
movabs r14, 0x7fffffffffffffff
mov qword [rbp + 0x48], r12
mov byte [rbp + 0x30], sil
mov rcx, qword [0x1801a8db0]
lea rdx, str.il2cpp_class_get_fields
mov qword [rbp - 0x78], rsi
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
lea rdx, [rbp - 0x78]
mov rcx, r13
call rax
jmp 0x18003b916
mov rcx, qword [0x1801a8db0]
lea rdx, str.il2cpp_field_get_name
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, rbx
call rax
mov rdx, qword [rsp + 0x50]
mov rdi, rax
sub r14, rdx
cmp r14, 2
jb 0x18003bb00
cmp qword [rsp + 0x58], 0x10
lea rax, [0x18015476c]
mov qword [rsp + 0x30], 2
lea r9, [rsp + 0x40]
cmovae r9, qword [rsp + 0x40]
lea rcx, [rbp + 0x50]
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rdx
call fcn.1800030a8
mov rdx, rdi
lea rcx, [rbp + 0x50]
call fcn.180061674
mov r14d, 0x1000
movups xmm0, xmmword [rax]
movups xmm1, xmmword [rax + 0x10]
mov qword [rax + 0x10], rsi
mov qword [rax + 0x18], r12
mov byte [rax], sil
mov rdx, qword [rbp + 0x68]
movups xmmword [rbp + 0x70], xmm0
movups xmmword [rbp + 0x80], xmm1
cmp rdx, 0x10
jb 0x18003b844
mov rcx, qword [rbp + 0x50]
inc rdx
mov rax, rcx
cmp rdx, r14
jb 0x18003b83f
mov rcx, qword [rcx - 8]
add rdx, 0x27
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18003ba2b
call fcn.1800652bc
mov rdi, qword [rbp + 0x70]
lea rcx, [rbp + 0x70]
mov qword [rbp + 0x60], rsi
mov byte [rbp + 0x50], sil
mov rsi, qword [rbp + 0x88]
cmp rsi, 0x10
mov qword [rbp + 0x68], r12
cmovae rcx, rdi
or rax, 0xffffffffffffffff
inc rax
cmp byte [rcx + rax], 0
jne 0x18003b86b
cmp rsi, 0x10
lea r8, [rbp + 0x70]
cmovae r8, rdi
or edx, 0xffffffff
test eax, eax
je 0x18003b8ac
mov r9d, eax
movsx ecx, byte [r8]
mov eax, edx
xor rcx, rax
shr edx, 8
movzx eax, cl
inc r8
lea rcx, [0x1800f37c0]
xor edx, dword [rcx + rax*4]
sub r9, 1
jne 0x18003b88a
not edx
cmp edx, dword [rbp + 0xe0]
je 0x18003ba32
cmp rsi, 0x10
jb 0x18003b8ed
lea rdx, [rsi + 1]
mov rax, rdi
cmp rdx, r14
jb 0x18003b8e5
mov rdi, qword [rdi - 8]
add rdx, 0x27
sub rax, rdi
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18003badb
mov rcx, rdi
call fcn.1800652bc
mov rcx, qword [0x1801a8db0]
lea rdx, str.il2cpp_class_get_fields
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
lea rdx, [rbp - 0x78]
mov rcx, r13
call rax
xor esi, esi
movabs r14, 0x7fffffffffffffff
mov rbx, rax
test rax, rax
jne 0x18003b77c
mov rdx, qword [rsp + 0x58]
cmp rdx, 0x10
jb 0x18003b95f
mov rcx, qword [rsp + 0x40]
inc rdx
mov rax, rcx
cmp rdx, 0x1000
jb 0x18003b95a
mov rcx, qword [rcx - 8]
add rdx, 0x27
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18003badb
call fcn.1800652bc
mov rcx, qword [0x1801a8db0]
lea rdx, str.il2cpp_image_get_class_count
mov qword [rsp + 0x58], r12
mov r12d, dword [rbp + 0xe8]
inc r12d
mov qword [rsp + 0x50], rsi
mov dword [rbp + 0xe8], r12d
mov byte [rsp + 0x40], sil
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, r15
call rax
movsxd rcx, r12d
movabs r13, 0x7fffffffffffffff
cmp rcx, rax
jb 0x18003b0ae
mov rbx, qword [rbp - 0x50]
mov rdi, qword [rbp - 0x70]
mov esi, dword [rbp + 0xf0]
mov r14, qword [rbp - 0x48]
mov rcx, qword [0x1801a8db0]
lea rdx, str.il2cpp_domain_get_assemblies
and qword [rbp + 0xf8], 0
inc esi
inc rdi
mov dword [rbp + 0xf0], esi
mov qword [rbp - 0x70], rdi
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
lea rdx, [rbp + 0xf8]
mov rcx, rbx
call rax
movsxd rax, esi
cmp rax, qword [rbp + 0xf8]
jb 0x18003b075
xor eax, eax
add rsp, 0x198
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
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
mov rcx, qword [0x1801a8db0]
lea rdx, str.il2cpp_field_get_offset
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, rbx
call rax
mov ecx, dword [rbp + 0xe0]
lea r8, [rbp + 0xe8]
mov ebx, eax
lea rdx, [rbp - 0x68]
mov dword [rbp + 0xec], ebx
mov dword [rbp + 0xe8], ecx
call fcn.18006209c
cmp rsi, 0x10
jb 0x18003ba9e
lea rdx, [rsi + 1]
mov rax, rdi
cmp rdx, r14
jb 0x18003ba96
mov rdi, qword [rdi - 8]
add rdx, 0x27
sub rax, rdi
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18003badb
mov rcx, rdi
call fcn.1800652bc
mov rdx, qword [rsp + 0x58]
cmp rdx, 0x10
jb 0x18003bad3
mov rcx, qword [rsp + 0x40]
inc rdx
mov r8, rcx
cmp rdx, r14
jb 0x18003bace
mov rcx, qword [rcx - 8]
add rdx, 0x27
sub r8, rcx
add r8, 0xfffffffffffffff8
cmp r8, 0x1f
ja 0x18003badb
call fcn.1800652bc
mov rax, rbx
jmp 0x18003ba09
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
call fcn.180001c9c
int3
call fcn.180001894
int3
call fcn.1800017f4
int3
call fcn.180001894
int3
call fcn.1800017f4
int3
call fcn.180001894
int3
call fcn.180001894
int3