Function at 0x1403e5ee0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x158
mov rsi, r9
mov r14, r8
mov rdi, rdx
mov rbx, rcx
mov rax, qword [0x1406a7e00]
xor rax, rsp
mov qword [rsp + 0x150], rax
mov rax, qword [rcx]
mov rcx, qword [rax + 0xe0]
mov rax, qword [rcx]
call qword [rax + 0x18]
mov r15, qword [rax + 0x10]
mov r12, qword [rax + 0x18]
mov rax, qword [r14]
mov rcx, r14
call qword [rax + 0x18]
cmp qword [rax + 0x18], r12
jne 0x1403e5f4f
mov rcx, qword [rax + 0x10]
mov rdx, r15
mov r8, r12
call fcn.140562c40
test eax, eax
je 0x1403e6060
cmp byte [r14 + 0x2c], 0xc
jne 0x1403e5f85
mov rcx, qword [rbx + 0x20]
lea rax, str.variables_of_type_void_are_not_allowed
mov qword [rsp + 0xd0], rax
mov qword [rsp + 0xd8], 0x28
mov edx, dword [rdi + 8]
lea r8, [rsp + 0xd0]
jmp 0x1403e617d
movzx eax, byte [rdi + 0x3c]
mov rcx, qword [rdi + 0x20]
mov r9, qword [rdi + 0x30]
mov r8d, dword [rdi + 0x38]
mov edx, dword [rdi + 8]
mov byte [rsp + 0x30], al
mov qword [rsp + 0x28], r14
mov qword [rsp + 0x20], rcx
mov rcx, rbx
call fcn.1403e4660
mov rax, qword [rsi]
test rax, rax
je 0x1403e608f
mov rcx, qword [rdi + 0x20]
movzx edx, byte [rcx + 0x2c]
cmp edx, 0xf
ja 0x1403e6519
mov r8d, 0xe4c2
bt r8d, edx
jae 0x1403e6519
mov rdi, qword [rbx + 0x20]
mov rax, qword [rcx]
call qword [rax + 0xa8]
mov r14, qword [rax + 0x10]
mov rbx, qword [rax + 0x18]
mov qword [rsp + 0xf0], 0
mov qword [rsp + 0x108], 0xf
mov byte [rsp + 0xf0], 0
cmp rbx, 0xf
jbe 0x1403e6134
test rbx, rbx
js 0x1403e695c
mov rax, rbx
or rax, 0xf
cmp rax, 0x17
mov r12d, 0x16
cmovae r12, rax
cmp r12, 0xfff
jb 0x1403e61aa
lea rcx, [r12 + 0x28]
call fcn.140560580
lea r15, [rax + 0x27]
and r15, 0xffffffffffffffe0
mov qword [r15 - 8], rax
jmp 0x1403e61b7
mov rcx, qword [rbx + 0x20]
lea rax, str.invalid_type
mov qword [rsp + 0xe0], rax
mov qword [rsp + 0xe8], 0xc
mov edx, dword [rdi + 8]
lea r8, [rsp + 0xe0]
jmp 0x1403e617d
mov rax, qword [rdi + 0x30]
test byte [rax + 0x28], 4
jne 0x1403e615c
movzx eax, byte [rdi + 0x3c]
mov bpl, 1
test eax, eax
je 0x1403e656b
cmp eax, 1
jne 0x1403e6184
mov rcx, qword [rdi + 0x20]
movzx eax, byte [rcx + 0x2c]
cmp eax, 0xf
ja 0x1403e6184
mov edx, 0xe4c2
bt edx, eax
jae 0x1403e6184
mov rsi, qword [rbx + 0x20]
mov rax, qword [rcx]
call qword [rax + 0xa8]
mov r9, qword [rax + 0x10]
mov rbx, qword [rax + 0x18]
mov qword [rsp + 0xf0], 0
mov qword [rsp + 0x100], 0
mov qword [rsp + 0x108], 0xf
mov byte [rsp + 0xf0], 0
cmp rbx, 0xf
jbe 0x1403e65dc
lea rcx, [rsp + 0xf0]
mov rdx, rbx
call fcn.1400a7100
jmp 0x1403e65ff
mov qword [rsp + 0x100], rbx
lea rcx, [rsp + 0xf0]
mov rdx, r14
mov r8, rbx
call fcn.140562340
mov byte [rsp + rbx + 0xf0], 0
jmp 0x1403e61e2
mov rcx, qword [rbx + 0x20]
lea rax, str.const_variables_must_be_initialized
mov qword [rsp + 0x68], rax
mov qword [rsp + 0x70], 0x25
mov edx, dword [rdi + 8]
lea r8, [rsp + 0x68]
call fcn.1402cec20
xor ebp, ebp
mov rcx, qword [rsp + 0x150]
xor rcx, rsp
call fcn.1405602f0
mov eax, ebp
add rsp, 0x158
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
lea rcx, [r12 + 1]
call fcn.140560580
mov r15, rax
mov qword [rsp + 0x100], rbx
mov qword [rsp + 0x108], r12
mov rcx, r15
mov rdx, r14
mov r8, rbx
call fcn.140562340
mov byte [r15 + rbx], 0
mov qword [rsp + 0xf0], r15
mov r8, qword [rsp + 0x100]
mov rax, qword [rsp + 0x108]
mov rcx, rax
sub rcx, r8
cmp rcx, 0xd
jae 0x1403e6230
lea rax, str.opaque_type_
mov qword [rsp + 0x20], rax
mov qword [rsp + 0x28], 0xd
lea rcx, [rsp + 0xf0]
mov edx, 0xd
xor r9d, r9d
call fcn.1401b7d80
mov rbx, rax
jmp 0x1403e62cf
lea rcx, [r8 + 0xd]
mov qword [rsp + 0x100], rcx
cmp rax, 0x10
mov rcx, qword [rsp + 0xf0]
lea rbx, [rsp + 0xf0]
mov r14, rbx
cmovae r14, rcx
lea rdx, [0x1405e2ab9]
mov r15d, 0xd
mov r12d, 0xd
cmp r14, rdx
jae 0x1403e628a
lea r9, [r14 + r8]
lea rdx, str.opaque_type_
cmp r9, rdx
jb 0x1403e628a
mov r12, r14
sub r12, rdx
ja 0x1403e628a
xor r12d, r12d
inc r8
cmp rax, 0x10
cmovb rcx, rbx
add rcx, 0xd
mov rdx, r14
call fcn.140562340
lea r13, str.opaque_type_
mov rcx, r14
mov rdx, r13
mov r8, r12
call fcn.140562340
sub r15, r12
lea rdx, [r12 + r13]
add rdx, 0xd
add r14, r12
mov rcx, r14
mov r8, r15
call fcn.140562340
movups xmm0, xmmword [rbx]
movups xmm1, xmmword [rbx + 0x10]
movaps xmmword [rsp + 0x120], xmm1
movaps xmmword [rsp + 0x110], xmm0
mov qword [rbx + 0x10], 0
mov qword [rbx + 0x18], 0xf
mov byte [rbx], 0
mov rcx, qword [rsp + 0x120]
mov rdx, qword [rsp + 0x128]
mov rax, rdx
sub rax, rcx
cmp rax, 0x24
jae 0x1403e6339
mov qword [rsp + 0x20], 0x24
lea r9, str._cannot_use_initializer_expressions
lea rcx, [rsp + 0x110]
mov edx, 0x24
call fcn.140047c20
jmp 0x1403e6386
lea rax, [rcx + 0x24]
mov qword [rsp + 0x120], rax
lea rax, [rsp + 0x110]
mov r8, rax
cmp rdx, 0x10
jb 0x1403e635e
mov r8, qword [rsp + 0x110]
movups xmm0, xmmword [0x1405e6fb9]
movups xmmword [r8 + rcx + 0x10], xmm0
movups xmm0, xmmword [str._cannot_use_initializer_expressions]
movups xmmword [r8 + rcx], xmm0
mov dword [r8 + rcx + 0x20], 0x736e6f69
mov byte [r8 + rcx + 0x24], 0
movups xmm0, xmmword [rax]
movups xmm1, xmmword [rax + 0x10]
movaps xmmword [rsp + 0x140], xmm1
movaps xmmword [rsp + 0x130], xmm0
mov qword [rax + 0x10], 0
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
mov rax, qword [rsp + 0x140]
cmp qword [rsp + 0x148], 0x10
jb 0x1403e63cd
mov rcx, qword [rsp + 0x130]
jmp 0x1403e63d5
lea rcx, [rsp + 0x130]
mov qword [rsp + 0xc0], rcx
mov qword [rsp + 0xc8], rax
mov rax, qword [rsi]
mov edx, dword [rax + 8]
lea r8, [rsp + 0xc0]
mov rcx, rdi
call fcn.1402cec20
mov rax, qword [rsp + 0x148]
cmp rax, 0x10
jb 0x1403e6442
mov rcx, qword [rsp + 0x130]
lea rdx, [rax + 1]
cmp rdx, 0x1000
jb 0x1403e643d
mov r8, qword [rcx - 8]
add rcx, 0xfffffffffffffff8
sub rcx, r8
cmp rcx, 0x20
jae 0x1403e6957
add rax, 0x28
mov rdx, rax
mov rcx, r8
call fcn.140560310
mov qword [rsp + 0x140], 0
mov qword [rsp + 0x148], 0xf
mov byte [rsp + 0x130], 0
mov rax, qword [rsp + 0x128]
cmp rax, 0x10
jb 0x1403e64a9
mov rcx, qword [rsp + 0x110]
lea rdx, [rax + 1]
cmp rdx, 0x1000
jb 0x1403e64a4
mov r8, qword [rcx - 8]
add rcx, 0xfffffffffffffff8
sub rcx, r8
cmp rcx, 0x20
jae 0x1403e6957
add rax, 0x28
mov rdx, rax
mov rcx, r8
call fcn.140560310
mov qword [rsp + 0x120], 0
mov qword [rsp + 0x128], 0xf
mov byte [rsp + 0x110], 0
mov rax, qword [rsp + 0x108]
cmp rax, 0x10
jb 0x1403e6182
mov rcx, qword [rsp + 0xf0]
lea rdx, [rax + 1]
cmp rdx, 0x1000
jb 0x1403e650f
mov r8, qword [rcx - 8]
add rcx, 0xfffffffffffffff8
sub rcx, r8
cmp rcx, 0x20
jae 0x1403e6957
add rax, 0x28
mov rdx, rax
mov rcx, r8
call fcn.140560310
jmp 0x1403e6182
mov rdx, qword [rdi + 0x30]
mov edx, dword [rdx + 0x28]
test dl, 0x10
jne 0x1403e65ad
test dl, 8
jne 0x1403e680f
cmp byte [rdi + 0x3c], 1
jne 0x1403e683e
mov rcx, qword [rbx + 0x20]
lea rdx, str.initializers_are_not_permitted_on_interface_block_fields
mov qword [rsp + 0x90], rdx
mov qword [rsp + 0x98], 0x38
mov edx, dword [rax + 8]
lea r8, [rsp + 0x90]
jmp 0x1403e617d
mov rcx, qword [rsi]
test rcx, rcx
je 0x1403e6184
call fcn.1402eaea0
test al, al
jne 0x1403e6184
mov rcx, qword [rbx + 0x20]
lea rax, str.global_variable_initializer_must_be_a_constant_expression
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x40], 0x39
mov rax, qword [rsi]
mov edx, dword [rax + 8]
lea r8, [rsp + 0x38]
jmp 0x1403e617d
mov rcx, qword [rbx + 0x20]
lea rdx, str.in_variables_cannot_use_initializer_expressions
mov qword [rsp + 0xb0], rdx
mov qword [rsp + 0xb8], 0x31
mov edx, dword [rax + 8]
lea r8, [rsp + 0xb0]
jmp 0x1403e617d
mov qword [rsp + 0x100], rbx
lea rcx, [rsp + 0xf0]
mov rdx, r9
mov r8, rbx
call fcn.140562340
mov byte [rsp + rbx + 0xf0], 0
mov r8, qword [rsp + 0x100]
mov rax, qword [rsp + 0x108]
mov rcx, rax
sub rcx, r8
cmp rcx, 0xd
jae 0x1403e664d
lea rax, str.opaque_type_
mov qword [rsp + 0x20], rax
mov qword [rsp + 0x28], 0xd
lea rcx, [rsp + 0xf0]
mov edx, 0xd
xor r9d, r9d
call fcn.1401b7d80
mov rbx, rax
jmp 0x1403e66ec
lea rcx, [r8 + 0xd]
mov qword [rsp + 0x100], rcx
cmp rax, 0x10
mov rcx, qword [rsp + 0xf0]
lea rbx, [rsp + 0xf0]
mov r14, rbx
cmovae r14, rcx
lea rdx, [0x1405e2ab9]
mov r15d, 0xd
mov r12d, 0xd
cmp r14, rdx
jae 0x1403e66a7
lea r9, [r14 + r8]
lea rdx, str.opaque_type_
cmp r9, rdx
jb 0x1403e66a7
mov r12, r14
sub r12, rdx
ja 0x1403e66a7
xor r12d, r12d
inc r8
cmp rax, 0x10
cmovb rcx, rbx
add rcx, 0xd
mov rdx, r14
call fcn.140562340
lea r13, str.opaque_type_
mov rcx, r14
mov rdx, r13
mov r8, r12
call fcn.140562340
sub r15, r12
lea rdx, [r12 + r13]
add rdx, 0xd
add r14, r12
mov rcx, r14
mov r8, r15
call fcn.140562340
movups xmm0, xmmword [rbx]
movups xmm1, xmmword [rbx + 0x10]
movaps xmmword [rsp + 0x120], xmm1
movaps xmmword [rsp + 0x110], xmm0
mov qword [rbx + 0x10], 0
mov qword [rbx + 0x18], 0xf
mov byte [rbx], 0
mov rcx, qword [rsp + 0x120]
mov r8, qword [rsp + 0x128]
mov rax, r8
sub rax, rcx
cmp rax, 0x28
jae 0x1403e6756
mov qword [rsp + 0x20], 0x28
lea r9, str._is_not_permitted_in_an_interface_block
lea rcx, [rsp + 0x110]
mov edx, 0x28
call fcn.140047c20
jmp 0x1403e67a6
lea rax, [rcx + 0x28]
mov qword [rsp + 0x120], rax
lea rax, [rsp + 0x110]
mov rdx, rax
cmp r8, 0x10
jb 0x1403e677b
mov rdx, qword [rsp + 0x110]
movups xmm0, xmmword [0x1405e7129]
movups xmmword [rdx + rcx + 0x10], xmm0
movups xmm0, xmmword [str._is_not_permitted_in_an_interface_block]
movups xmmword [rdx + rcx], xmm0
movabs r8, 0x6b636f6c62206563
mov qword [rdx + rcx + 0x20], r8
mov byte [rdx + rcx + 0x28], 0
movups xmm0, xmmword [rax]
movups xmm1, xmmword [rax + 0x10]
movaps xmmword [rsp + 0x140], xmm1
movaps xmmword [rsp + 0x130], xmm0
mov qword [rax + 0x10], 0
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
mov rax, qword [rsp + 0x140]
cmp qword [rsp + 0x148], 0x10
jb 0x1403e67ed
mov rcx, qword [rsp + 0x130]
jmp 0x1403e67f5
lea rcx, [rsp + 0x130]
mov qword [rsp + 0x48], rcx
mov qword [rsp + 0x50], rax
mov edx, dword [rdi + 8]
lea r8, [rsp + 0x48]
mov rcx, rsi
jmp 0x1403e63f6
mov rcx, qword [rbx + 0x20]
lea rdx, str.uniform_variables_cannot_use_initializer_expressions
mov qword [rsp + 0xa0], rdx
mov qword [rsp + 0xa8], 0x36
mov edx, dword [rax + 8]
lea r8, [rsp + 0xa0]
jmp 0x1403e617d
mov rdx, qword [rbx + 0x18]
mov r8d, dword [rdx + 0x28]
or r8d, dword [rdx + 0x30]
jne 0x1403e689a
movzx edx, byte [rdx + 1]
add dl, 0xfb
cmp dl, 7
ja 0x1403e689a
call fcn.1403d9b40
test al, al
je 0x1403e6893
mov rcx, qword [rbx + 0x20]
lea rax, str.initializers_are_not_permitted_on_arrays__or_structs_containing_arrays_
mov qword [rsp + 0x80], rax
mov qword [rsp + 0x88], 0x47
mov rax, qword [rsi]
mov edx, dword [rax + 8]
lea r8, [rsp + 0x80]
jmp 0x1403e617d
mov rcx, qword [rdi + 0x20]
mov rax, qword [rsi]
mov qword [rsi], 0
mov qword [rsp + 0x78], rax
lea r14, [rsp + 0x130]
lea r8, [rsp + 0x78]
mov rdx, r14
mov r9, rbx
call fcn.1403d9200
cmp r14, rsi
je 0x1403e68f0
mov rcx, qword [rsp + 0x130]
mov qword [rsp + 0x130], 0
mov rax, qword [rsi]
mov qword [rsi], rcx
test rax, rax
je 0x1403e690a
mov r8, qword [rax]
mov rcx, rax
mov edx, 1
call qword [r8]
mov rcx, qword [rsp + 0x130]
test rcx, rcx
je 0x1403e6907
mov rax, qword [rcx]
mov edx, 1
call qword [rax]
mov rcx, qword [rsi]
test rcx, rcx
je 0x1403e6182
mov rax, qword [rdi + 0x30]
test byte [rax + 0x28], 4
je 0x1403e609d
call fcn.1402eaea0
test al, al
jne 0x1403e609d
mov rcx, qword [rbx + 0x20]
lea rax, str.const_variable_initializer_must_be_a_constant_expression
mov qword [rsp + 0x58], rax
mov qword [rsp + 0x60], 0x3a
mov rax, qword [rsi]
mov edx, dword [rax + 8]
lea r8, [rsp + 0x58]
jmp 0x1403e617d
call fcn.140568720
call fcn.140554170
int3