Function at 0x1402ddc40
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, 0x278
mov rdi, rcx
mov rax, qword [0x1406a7e00]
xor rax, rsp
mov qword [rsp + 0x270], rax
mov eax, dword [0x1406addb0]
mov ecx, dword [0x1406affd8]
mov r8, qword gs:[0x58]
mov rcx, qword [r8 + rcx*8]
cmp eax, dword [rcx + 0x30]
jg 0x1402de861
mov dword [rdx], 0
pcmpeqd xmm0, xmm0
movdqu xmmword [rdx + 4], xmm0
movdqu xmmword [rdx + 0x14], xmm0
mov qword [rsp + 0x30], rdx
mov dword [rdx + 0x24], 0xffffffff
mov eax, dword [rdi + 0x6c]
cmp eax, 0x5c
je 0x1402ddcbe
cmp eax, 0x20
jne 0x1402de82e
mov rax, qword [rsp + 0x30]
add rax, 4
mov qword [rsp + 0x58], rax
lea rax, [rdi + 0x6c]
mov qword [rsp + 0x50], rax
lea rsi, [rsp + 0xd0]
nop dword [rax]
mov rcx, rdi
mov rdx, rsi
call fcn.1402d5e80
mov eax, dword [rsp + 0xd0]
lea ecx, [rax - 0x58]
cmp ecx, 3
jb 0x1402ddce0
cmp eax, 0x20
jne 0x1402de814
lea r8, [0x1405ce395]
mov rcx, rdi
mov edx, 0x2b
xor r9d, r9d
call fcn.1402d6780
test al, al
je 0x1402de82e
lea rsi, [rsp + 0x60]
mov dword [rsp + 0x3c], 0
nop
mov rcx, rdi
mov rdx, rsi
call fcn.1402d5e80
mov eax, dword [rsp + 0x60]
add eax, 0xffffffa8
cmp eax, 3
jb 0x1402ddd30
movsxd rax, dword [rsp + 0x64]
movsxd rdx, dword [rsp + 0x68]
mov rcx, qword [rdi + 0x48]
cmp qword [rcx + 0x18], 0x10
jb 0x1402ddd5f
mov rcx, qword [rcx]
mov qword [rsp + 0x48], rax
add rcx, rax
mov qword [rsp + 0x40], rcx
mov rbp, rdx
xor r8d, r8d
call fcn.14004c4e0
mov r15d, eax
test eax, eax
mov eax, 1
cmove r15d, eax
mov r13d, dword [0x1406adda4]
test r13d, r13d
mov edx, 0
jle 0x1402dde9b
lea ebx, [r13 - 1]
and ebx, r15d
mov r14, qword [0x1406adda8]
mov esi, r13d
jmp 0x1402dddc4
test ebx, ebx
mov eax, r13d
cmovg eax, edx
add ebx, eax
dec ebx
dec esi
je 0x1402dde9b
movsxd rax, ebx
shl rax, 5
mov ecx, dword [r14 + rax]
test ecx, ecx
je 0x1402dde9b
cmp r15d, ecx
jne 0x1402dddb0
cmp qword [r14 + rax + 0x10], rbp
jne 0x1402dddb0
lea r12, [r14 + rax]
add r12, 8
mov rdx, qword [r12]
mov rcx, qword [rsp + 0x40]
mov r8, rbp
call fcn.140562c40
xor edx, edx
test eax, eax
jne 0x1402dddb0
mov eax, dword [r12 + 0x10]
test dword [rsp + 0x3c], eax
mov rdx, qword [rsp + 0x30]
lea rbx, [rsp + 0xd0]
je 0x1402de6ec
mov qword [rsp + 0x90], 0
mov qword [rsp + 0xa0], 0
mov qword [rsp + 0xa8], 0xf
mov byte [rsp + 0x90], 0
mov r13, rbp
cmp r13d, 0xf
jbe 0x1402de336
test r13d, r13d
js 0x1402de85c
mov rsi, r13
or rsi, 0xf
cmp rsi, 0x17
mov eax, 0x16
cmovb rsi, rax
cmp rsi, 0xfff
jb 0x1402de35e
lea rcx, [rsi + 0x28]
call fcn.140560580
lea r15, [rax + 0x27]
and r15, 0xffffffffffffffe0
mov qword [r15 - 8], rax
jmp 0x1402de36a
mov qword [rsp + 0x90], 0
mov qword [rsp + 0xa0], 0
mov qword [rsp + 0xa8], 0xf
mov byte [rsp + 0x90], 0
mov r12, rbp
cmp r12d, 0xf
jbe 0x1402ddf1c
test r12d, r12d
lea rbx, [rsp + 0xd0]
lea r14, [0x1405b85f0]
js 0x1402de85c
mov rsi, r12
or rsi, 0xf
cmp rsi, 0x17
mov eax, 0x16
cmovb rsi, rax
cmp rsi, 0xfff
jb 0x1402ddf53
lea rcx, [rsi + 0x28]
call fcn.140560580
lea r15, [rax + 0x27]
and r15, 0xffffffffffffffe0
mov qword [r15 - 8], rax
jmp 0x1402ddf5f
mov qword [rsp + 0xa0], r12
lea rcx, [rsp + 0x90]
mov rdx, qword [rsp + 0x40]
mov r8, r12
call fcn.140562340
mov byte [rsp + r12 + 0x90], 0
lea rbx, [rsp + 0xd0]
lea r14, [0x1405b85f0]
jmp 0x1402ddf8c
lea rcx, [rsi + 1]
call fcn.140560580
mov r15, rax
mov qword [rsp + 0xa0], r12
mov qword [rsp + 0xa8], rsi
mov rcx, r15
mov rdx, qword [rsp + 0x40]
mov r8, r12
call fcn.140562340
mov byte [r15 + r12], 0
mov qword [rsp + 0x90], r15
mov rdx, qword [rsp + 0xa0]
mov rax, qword [rsp + 0xa8]
cmp rax, rdx
jne 0x1402ddfc9
mov qword [rsp + 0x20], r14
mov qword [rsp + 0x28], 1
mov edx, 1
lea rcx, [rsp + 0x90]
xor r9d, r9d
call fcn.1401b7d80
jmp 0x1402de057
lea r8, [rdx + 1]
mov qword [rsp + 0xa0], r8
cmp rax, 0x10
mov rcx, qword [rsp + 0x90]
lea r15, [rsp + 0x90]
cmovae r15, rcx
mov ebp, 1
lea r9, [0x1405b85f1]
cmp r15, r9
jae 0x1402de010
add rdx, r15
cmp rdx, r14
jb 0x1402de010
mov rbp, r15
sub rbp, r14
ja 0x1402de010
xor ebp, ebp
cmp rax, 0x10
lea rsi, [rsp + 0x90]
cmovb rcx, rsi
inc rcx
mov rdx, r15
call fcn.140562340
mov rcx, r15
mov rdx, r14
mov r8, rbp
call fcn.140562340
mov r8d, 1
sub r8, rbp
lea rdx, [r14 + rbp]
inc rdx
add r15, rbp
mov rcx, r15
call fcn.140562340
mov rax, rsi
movups xmm0, xmmword [rax]
movups xmm1, xmmword [rax + 0x10]
movaps xmmword [rsp + 0xc0], xmm1
movaps xmmword [rsp + 0xb0], xmm0
mov qword [rax + 0x10], 0
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
mov rax, qword [rsp + 0xc0]
mov rcx, qword [rsp + 0xc8]
mov rdx, rcx
sub rdx, rax
cmp rdx, 0x21
jae 0x1402de0c1
mov qword [rsp + 0x20], 0x21
mov edx, 0x21
lea rcx, [rsp + 0xb0]
lea r9, str._is_not_a_valid_layout_qualifier
call fcn.140047c20
jmp 0x1402de109
lea rdx, [rax + 0x21]
mov qword [rsp + 0xc0], rdx
lea rdx, [rsp + 0xb0]
cmp rcx, 0x10
jb 0x1402de0e3
mov rdx, qword [rsp + 0xb0]
movups xmm0, xmmword [0x1405ce3a9]
movups xmmword [rdx + rax + 0x10], xmm0
movups xmm0, xmmword [str._is_not_a_valid_layout_qualifier]
movups xmmword [rdx + rax], xmm0
mov word [rdx + rax + 0x20], 0x72
lea rax, [rsp + 0xb0]
mov r8, qword [rsp + 0x48]
movdqu xmm0, xmmword [rax]
movups xmm1, xmmword [rax + 0x10]
movaps xmmword [rsp + 0xe0], xmm1
movdqa xmmword [rsp + 0xd0], xmm0
mov qword [rax + 0x10], 0
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
mov rax, qword [rsp + 0xe0]
cmp qword [rsp + 0xe8], 0x10
mov rcx, rbx
jb 0x1402de158
mov rcx, qword [rsp + 0xd0]
test r8d, r8d
js 0x1402de17d
and r8d, 0xffffff
cmp r12d, 0xff
mov edx, 0xff
cmovge r12d, edx
shl r12d, 0x18
or r12d, r8d
jmp 0x1402de183
mov r12d, 0xffffff
mov qword [rsp + 0x80], rcx
mov qword [rsp + 0x88], rax
lea rcx, [rsp + 0x80]
mov edx, r12d
call fcn.1402e67a0
mov rax, qword [rsp + 0xe8]
cmp rax, 0x10
jb 0x1402de1ea
mov rcx, qword [rsp + 0xd0]
lea rdx, [rax + 1]
cmp rdx, 0x1000
jb 0x1402de1e5
mov r8, qword [rcx - 8]
add rcx, 0xfffffffffffffff8
sub rcx, r8
cmp rcx, 0x20
jae 0x1402de857
add rax, 0x28
mov rdx, rax
mov rcx, r8
call fcn.140560310
mov qword [rsp + 0xe0], 0
mov qword [rsp + 0xe8], 0xf
mov byte [rsp + 0xd0], 0
mov rax, qword [rsp + 0xc8]
cmp rax, 0x10
jb 0x1402de251
mov rcx, qword [rsp + 0xb0]
lea rdx, [rax + 1]
cmp rdx, 0x1000
jb 0x1402de24c
mov r8, qword [rcx - 8]
add rcx, 0xfffffffffffffff8
sub rcx, r8
cmp rcx, 0x20
jae 0x1402de857
add rax, 0x28
mov rdx, rax
mov rcx, r8
call fcn.140560310
mov qword [rsp + 0xc0], 0
mov qword [rsp + 0xc8], 0xf
mov byte [rsp + 0xb0], 0
mov rax, qword [rsp + 0xa8]
cmp rax, 0x10
jb 0x1402de2b8
mov rcx, qword [rsp + 0x90]
lea rdx, [rax + 1]
cmp rdx, 0x1000
jb 0x1402de2b3
mov r8, qword [rcx - 8]
add rcx, 0xfffffffffffffff8
sub rcx, r8
cmp rcx, 0x20
jae 0x1402de857
add rax, 0x28
mov rdx, rax
mov rcx, r8
call fcn.140560310
mov rax, qword [rsp + 0x50]
mov eax, dword [rax]
cmp eax, 0x5c
je 0x1402de2d0
cmp eax, 0x2c
jne 0x1402de30d
nop dword [rax]
mov rcx, rdi
mov rdx, rbx
call fcn.1402d5e80
mov eax, dword [rsp + 0xd0]
lea ecx, [rax - 0x58]
cmp ecx, 3
jb 0x1402de2d0
cmp eax, 0x2c
je 0x1402de82e
mov eax, dword [rsp + 0xd8]
mov rcx, qword [rsp + 0x50]
mov dword [rcx + 8], eax
mov rax, qword [rsp + 0xd0]
mov qword [rcx], rax
mov rcx, rdi
mov edx, 0x32
lea r8, [0x1405ce3e7]
xor r9d, r9d
call fcn.1402d6780
test al, al
je 0x1402de82e
lea rsi, [rsp + 0x60]
jmp 0x1402ddd30
mov qword [rsp + 0xa0], r13
lea rcx, [rsp + 0x90]
mov rdx, qword [rsp + 0x40]
mov r8, r13
call fcn.140562340
mov byte [rsp + r13 + 0x90], 0
jmp 0x1402de397
lea rcx, [rsi + 1]
call fcn.140560580
mov r15, rax
mov qword [rsp + 0xa0], r13
mov qword [rsp + 0xa8], rsi
mov rcx, r15
mov rdx, qword [rsp + 0x40]
mov r8, r13
call fcn.140562340
mov byte [r15 + r13], 0
mov qword [rsp + 0x90], r15
mov r8, qword [rsp + 0xa0]
mov rax, qword [rsp + 0xa8]
mov rcx, rax
sub rcx, r8
cmp rcx, 0x12
lea rsi, str.layout_qualifier_
jae 0x1402de3e2
mov qword [rsp + 0x20], rsi
mov qword [rsp + 0x28], 0x12
mov edx, 0x12
lea rcx, [rsp + 0x90]
xor r9d, r9d
call fcn.1401b7d80
jmp 0x1402de476
lea rcx, [r8 + 0x12]
mov qword [rsp + 0xa0], rcx
cmp rax, 0x10
mov rcx, qword [rsp + 0x90]
lea r15, [rsp + 0x90]
cmovae r15, rcx
mov ebp, 0x12
lea rdx, [0x1405ce3e6]
cmp r15, rdx
jae 0x1402de42a
lea rdx, [r15 + r8]
cmp rdx, rsi
jb 0x1402de42a
mov rbp, r15
sub rbp, rsi
ja 0x1402de42a
xor ebp, ebp
inc r8
cmp rax, 0x10
lea r14, [rsp + 0x90]
cmovb rcx, r14
add rcx, 0x12
mov rdx, r15
call fcn.140562340
mov rcx, r15
mov rdx, rsi
mov r8, rbp
call fcn.140562340
mov r8d, 0x12
sub r8, rbp
lea rdx, [rsi + rbp]
add rdx, 0x12
add r15, rbp
mov rcx, r15
call fcn.140562340
mov rax, r14
movups xmm0, xmmword [rax]
movups xmm1, xmmword [rax + 0x10]
movaps xmmword [rsp + 0xc0], xmm1
movaps xmmword [rsp + 0xb0], xmm0
mov qword [rax + 0x10], 0
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
mov rax, qword [rsp + 0xc0]
mov rcx, qword [rsp + 0xc8]
mov rdx, rcx
sub rdx, rax
cmp rdx, 0x18
jae 0x1402de4e0
mov qword [rsp + 0x20], 0x18
mov edx, 0x18
lea rcx, [rsp + 0xb0]
lea r9, str._appears_more_than_once
call fcn.140047c20
jmp 0x1402de529
lea rdx, [rax + 0x18]
mov qword [rsp + 0xc0], rdx
lea rdx, [rsp + 0xb0]
cmp rcx, 0x10
jb 0x1402de502
mov rdx, qword [rsp + 0xb0]
movups xmm0, xmmword [str._appears_more_than_once]
movups xmmword [rdx + rax], xmm0
movabs rcx, 0x65636e6f206e6168
mov qword [rdx + rax + 0x10], rcx
mov byte [rdx + rax + 0x18], 0
lea rax, [rsp + 0xb0]
mov r8, qword [rsp + 0x48]
movdqu xmm0, xmmword [rax]
movups xmm1, xmmword [rax + 0x10]
movaps xmmword [rsp + 0xe0], xmm1
movdqa xmmword [rsp + 0xd0], xmm0
mov qword [rax + 0x10], 0
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
mov rax, qword [rsp + 0xe0]
cmp qword [rsp + 0xe8], 0x10
mov rcx, rbx
jb 0x1402de578
mov rcx, qword [rsp + 0xd0]
test r8d, r8d
js 0x1402de59d
and r8d, 0xffffff
cmp r13d, 0xff
mov edx, 0xff
cmovge r13d, edx
shl r13d, 0x18
or r13d, r8d
jmp 0x1402de5a3
mov r13d, 0xffffff
mov qword [rsp + 0x80], rcx
mov qword [rsp + 0x88], rax
lea rcx, [rsp + 0x80]
mov edx, r13d
call fcn.1402e67a0
mov rax, qword [rsp + 0xe8]
cmp rax, 0x10
jb 0x1402de60a
mov rcx, qword [rsp + 0xd0]
lea rdx, [rax + 1]
cmp rdx, 0x1000
jb 0x1402de605
mov r8, qword [rcx - 8]
add rcx, 0xfffffffffffffff8
sub rcx, r8
cmp rcx, 0x20
jae 0x1402de857
add rax, 0x28
mov rdx, rax
mov rcx, r8
call fcn.140560310
mov qword [rsp + 0xe0], 0
mov qword [rsp + 0xe8], 0xf
mov byte [rsp + 0xd0], 0
mov rax, qword [rsp + 0xc8]
cmp rax, 0x10
mov rdx, qword [rsp + 0x30]
jb 0x1402de67b
mov rcx, qword [rsp + 0xb0]
lea rdx, [rax + 1]
cmp rdx, 0x1000
jb 0x1402de671
mov r8, qword [rcx - 8]
add rcx, 0xfffffffffffffff8
sub rcx, r8
cmp rcx, 0x20
jae 0x1402de857
add rax, 0x28
mov rdx, rax
mov rcx, r8
call fcn.140560310
mov rdx, qword [rsp + 0x30]
mov qword [rsp + 0xc0], 0
mov qword [rsp + 0xc8], 0xf
mov byte [rsp + 0xb0], 0
mov rax, qword [rsp + 0xa8]
cmp rax, 0x10
jb 0x1402de6e7
mov rcx, qword [rsp + 0x90]
lea rdx, [rax + 1]
cmp rdx, 0x1000
jb 0x1402de6dd
mov r8, qword [rcx - 8]
add rcx, 0xfffffffffffffff8
sub rcx, r8
cmp rcx, 0x20
jae 0x1402de857
add rax, 0x28
mov rdx, rax
mov rcx, r8
call fcn.140560310
mov rdx, qword [rsp + 0x30]
mov eax, dword [r12 + 0x10]
mov ecx, dword [rsp + 0x3c]
or ecx, eax
mov dword [rsp + 0x3c], ecx
mov dword [rdx], ecx
cmp eax, 0xff
jle 0x1402de73c
cmp eax, 0x3ff
jle 0x1402de768
cmp eax, 0x400
je 0x1402de7b4
cmp eax, 0x800
je 0x1402de7c7
cmp eax, 0x1000
jne 0x1402de2b8
mov rcx, rdi
call fcn.1402dd870
mov rcx, qword [rsp + 0x30]
mov dword [rcx + 0x24], eax
jmp 0x1402de2b8
cmp eax, 0x3f
jg 0x1402de78f
cmp eax, 0x10
je 0x1402de7da
cmp eax, 0x20
jne 0x1402de2b8
mov rcx, rdi
call fcn.1402dd870
mov rcx, qword [rsp + 0x30]
mov dword [rcx + 8], eax
jmp 0x1402de2b8
cmp eax, 0x100
je 0x1402de7ee
cmp eax, 0x200
jne 0x1402de2b8
mov rcx, rdi
call fcn.1402dd870
mov rcx, qword [rsp + 0x30]
mov dword [rcx + 0x18], eax
jmp 0x1402de2b8
cmp eax, 0x40
je 0x1402de801
cmp eax, 0x80
jne 0x1402de2b8
mov rcx, rdi
call fcn.1402dd870
mov rcx, qword [rsp + 0x30]
mov dword [rcx + 0x10], eax
jmp 0x1402de2b8
mov rcx, rdi
mov rsi, rdx
call fcn.1402dd870
mov dword [rsi + 0x1c], eax
jmp 0x1402de2b8
mov rcx, rdi
mov rsi, rdx
call fcn.1402dd870
mov dword [rsi + 0x20], eax
jmp 0x1402de2b8
mov rcx, rdi
call fcn.1402dd870
mov rcx, qword [rsp + 0x58]
mov dword [rcx], eax
jmp 0x1402de2b8
mov rcx, rdi
mov rsi, rdx
call fcn.1402dd870
mov dword [rsi + 0x14], eax
jmp 0x1402de2b8
mov rcx, rdi
mov rsi, rdx
call fcn.1402dd870
mov dword [rsi + 0xc], eax
jmp 0x1402de2b8
mov eax, dword [rsp + 0xd8]
mov rcx, qword [rsp + 0x50]
mov dword [rcx + 8], eax
mov rax, qword [rsp + 0xd0]
mov qword [rcx], rax
mov rcx, qword [rsp + 0x270]
xor rcx, rsp
call fcn.1405602f0
mov rax, qword [rsp + 0x30]
add rsp, 0x278
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
call fcn.140568720
call fcn.140554170
lea rcx, [0x1406addb0]
mov rsi, rdx
call fcn.140560470
mov rdx, rsi
cmp dword [0x1406addb0], 0xffffffff
jne 0x1402ddc8d
lea rax, str.location
mov qword [rsp + 0xd0], rax
mov qword [rsp + 0xd8], 8
mov dword [rsp + 0xe0], 0x10
lea rax, str.offset
mov qword [rsp + 0xe8], rax
mov qword [rsp + 0xf0], 6
mov dword [rsp + 0xf8], 0x20
lea rax, str.binding
mov qword [rsp + 0x100], rax
mov qword [rsp + 0x108], 7
mov dword [rsp + 0x110], 0x40
lea rax, str.texture
mov qword [rsp + 0x118], rax
mov qword [rsp + 0x120], 7
mov dword [rsp + 0x128], 0x80
lea rax, str.sampler
mov qword [rsp + 0x130], rax
mov qword [rsp + 0x138], 7
mov dword [rsp + 0x140], 0x100
lea rax, [0x1405ce31c]
mov qword [rsp + 0x148], rax
mov qword [rsp + 0x150], 5
mov dword [rsp + 0x158], 0x200
lea rax, [0x1405ce322]
mov qword [rsp + 0x160], rax
mov qword [rsp + 0x168], 3
mov dword [rsp + 0x170], 0x400
lea rax, str.builtin
mov qword [rsp + 0x178], rax
mov qword [rsp + 0x180], 7
mov dword [rsp + 0x188], 0x800
lea rax, str.input_attachment_index
mov qword [rsp + 0x190], rax
mov qword [rsp + 0x198], 0x16
mov dword [rsp + 0x1a0], 0x1000
lea rax, str.origin_upper_left
mov qword [rsp + 0x1a8], rax
mov qword [rsp + 0x1b0], 0x11
mov dword [rsp + 0x1b8], 1
lea rax, str.blend_support_all_equations
mov qword [rsp + 0x1c0], rax
mov qword [rsp + 0x1c8], 0x1b
mov dword [rsp + 0x1d0], 4
lea rax, str.push_constant
mov qword [rsp + 0x1d8], rax
mov qword [rsp + 0x1e0], 0xd
mov dword [rsp + 0x1e8], 2
lea rax, str.color
mov qword [rsp + 0x1f0], rax
mov qword [rsp + 0x1f8], 5
mov dword [rsp + 0x200], 8
lea rax, str.spirv
mov qword [rsp + 0x208], rax
mov qword [rsp + 0x210], 5
mov dword [rsp + 0x218], 0x2000
lea rax, str.metal
mov qword [rsp + 0x220], rax
mov qword [rsp + 0x228], 5
mov dword [rsp + 0x230], 0x4000
lea rax, [0x1405ce38d]
mov qword [rsp + 0x238], rax
mov qword [rsp + 0x240], 2
mov dword [rsp + 0x248], 0x8000
lea rax, str.wgsl
mov qword [rsp + 0x250], rax
mov qword [rsp + 0x258], 4
mov dword [rsp + 0x260], 0x10000
lea rax, [rsp + 0xd0]
mov qword [rsp + 0x70], rax
lea rax, [rsp + 0x268]
mov qword [rsp + 0x78], rax
lea rbx, [rsp + 0xb0]
lea rdx, [rsp + 0x70]
mov rcx, rbx
call fcn.1402deb60
lea rcx, [0x1406adda0]
mov rdx, rbx
call fcn.1402dec40
mov rcx, rbx
call fcn.1402decc0
lea rcx, [0x1406addb0]
call fcn.140560410
mov rdx, rsi
jmp 0x1402ddc8d