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

Disassembly:
sub esp, 0x64
mov eax, dword [0x991fc0]
xor eax, esp
mov dword [esp + 0x60], eax
push ebx
mov ebx, dword [esp + 0x70]
push ebp
push esi
push edi
cmp dword [ebx + 0x18], 0x3b
mov edi, dword [esp + 0x78]
jne 0x46f35f
push ebx
push edi
call fcn.0046b270
add esp, 8
jmp 0x46f46a
movups xmm0, xmmword [ebx + 0x58]
sub esp, 0x10
lea esi, [ebx + 0x58]
mov eax, esp
movups xmmword [eax], xmm0
call fcn.0040a4f0
add esp, 0x10
mov dword [esp + 0x18], eax
test eax, eax
je 0x46f393
mov ecx, dword [eax]
mov eax, dword [edi + ecx*4 + 0x63ee0]
mov dword [esp + 0x10], eax
test eax, eax
jne 0x46f46e
movups xmm0, xmmword [esi]
psrldq xmm0, 0xc
movd eax, xmm0
mov eax, dword [eax]
cmp dword [eax + 0xc], 1
jne 0x46f3af
test eax, eax
jne 0x46f458
mov eax, dword [edi + 4]
mov ecx, dword [eax + 0x10]
cmp ecx, 2
je 0x46f458
xor eax, eax
test ecx, ecx
push 4
push 0
sete al
push esi
push edi
mov dword [esp + 0x2c], eax
call fcn.00476aa0
mov edx, dword [edi + 0x63fec]
add esp, 0x10
mov ebp, dword [edi + 0x640fc]
mov esi, dword [edi + 0x63bc8]
shr ebp, 2
shr edx, 2
add ebp, edx
shr esi, 2
add ebp, esi
mov dword [esp + 0x14], eax
cmp dword [edi + 0x24], 6
mov edx, ebp
mov dword [esp + 0x10], ebp
sbb eax, eax
and eax, 0xfffffff8
add eax, 0x18
mov ecx, eax
imul ecx, ebp
mov ebp, dword [esp + 0x1c]
add ecx, dword [edi + 0x64208]
nop dword [eax + eax]
cmp dword [ecx + 4], ebp
jne 0x46f42c
mov esi, dword [ecx + 8]
test esi, esi
je 0x46f431
inc edx
add ecx, eax
jmp 0x46f420
cmp dword [esp + 0x18], 0
sete al
sub edx, dword [esp + 0x10]
movzx eax, al
push eax
push dword [esp + 0x18]
push edx
push ebp
push dword [ecx + 0xc]
push esi
push 1
push edi
call fcn.0046da80
add esp, 0x20
jmp 0x46f46a
mov eax, dword [ebx + 0x64]
mov ecx, dword [eax + 0xc]
mov eax, dword [edi + 0x64230]
shl ecx, 6
mov eax, dword [ecx + eax]
mov dword [esp + 0x10], eax
mov edx, 0x58
mov ecx, ebx
lea ebp, [ecx + edx]
test eax, eax
je 0x46f702
mov eax, dword [ebx + 0x18]
cmp eax, 0x9c
jne 0x46f4b6
movups xmm0, xmmword [ebp]
xor ecx, ecx
psrldq xmm0, 0xc
movd eax, xmm0
mov eax, dword [eax]
cmp dword [eax + 0xc], 1
cmovne eax, ecx
mov eax, dword [eax + 0x20]
mov eax, dword [eax + 4]
shr eax, 0x15
and eax, 0xffffff01
mov dword [esp + 0x14], eax
jmp 0x46f4cc
imul eax, eax, 0x64
movzx eax, byte [eax + 0x52383c]
cmp dword [ebx + eax*4 + 0x30], 0
setne al
mov byte [esp + 0x14], al
lea esi, [edi + 0x10]
push 0x20
push esi
call fcn.0047ee70
add esp, 8
test eax, eax
je 0x46f702
push eax
push esi
call fcn.0047feb0
add esp, 8
mov dword [esp + 0x18], eax
test eax, eax
je 0x46f702
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], eax
mov eax, dword [ebx + 0x18]
cmp eax, 0x9c
jne 0x46f532
movups xmm0, xmmword [ebp]
xor ecx, ecx
psrldq xmm0, 0xc
movd eax, xmm0
mov eax, dword [eax]
cmp dword [eax + 0xc], 1
cmovne eax, ecx
mov eax, dword [eax + 0x20]
movzx eax, word [eax + 6]
and eax, 0xf
jmp 0x46f540
imul eax, eax, 0x64
movzx eax, byte [eax + 0x52383b]
mov eax, dword [ebx + eax*4 + 0x30]
push eax
mov dword [esp + 0x20], eax
call fcn.0045dca0
add esp, 4
mov ebp, eax
cmp byte [esp + 0x14], 0
je 0x46f557
inc ebp
mov edx, dword [esp + 0x18]
xor esi, esi
mov dword [esp + 0x14], edx
test ebp, ebp
je 0x46f597
lea eax, [ebx + 0x68]
mov dword [esp + 0x14], edx
nop dword [eax]
push 4
push esi
push eax
push edi
call fcn.00476aa0
add esp, 0x10
mov dword [esp + esi*4 + 0x2c], eax
test eax, eax
je 0x46f702
inc esi
lea eax, [ebx + 0x68]
cmp esi, ebp
jb 0x46f570
mov ebp, dword [esp + 0x2c]
jmp 0x46f59b
mov ebp, dword [esp + 0x18]
imul eax, dword [ebx + 0x18], 0x64
push 0x20
movzx eax, byte [eax + 0x523844]
mov edx, dword [ebx + eax*4 + 0x30]
push edx
mov dword [esp + 0x28], edx
call fcn.004767e0
movups xmm0, xmmword [ebx + 0x88]
mov dword [esp + 0x20], eax
add esp, 8
lea eax, [ebx + 0x88]
xor esi, esi
psrldq xmm0, 0xc
movd ecx, xmm0
mov dword [esp + 0x24], eax
movzx ebx, byte [ecx + 0x10]
mov dword [esp + 0x28], ebx
test ebx, ebx
je 0x46f60a
push edx
push esi
push eax
push edi
call fcn.00476aa0
add esp, 0x10
mov dword [esp + esi*4 + 0x38], eax
test eax, eax
je 0x46f702
mov edx, dword [esp + 0x20]
inc esi
mov eax, dword [esp + 0x24]
cmp esi, ebx
jb 0x46f5e5
mov esi, ebx
cmp ebx, 4
lea ebx, [edi + 0x10]
jae 0x46f631
push dword [esp + 0x38]
call fcn.00480180
push eax
push ebx
call fcn.0047feb0
mov dword [esp + esi*4 + 0x44], eax
add esp, 0xc
inc esi
cmp esi, 4
jl 0x46f614
mov ecx, dword [esp + 0x28]
mov al, 1
shl al, cl
dec al
movzx eax, al
push eax
push ebx
call fcn.0047ec50
mov esi, eax
add esp, 8
test esi, esi
je 0x46f702
cmp dword [esp + 0x1c], 5
push dword [esp + 0x18]
jne 0x46f691
mov eax, dword [esp + 0x18]
mov dword [esp + 0x34], eax
lea eax, [esp + 0x3c]
push esi
push eax
lea eax, [esp + 0x38]
push eax
mov eax, dword [esp + 0x20]
push eax
push edi
call fcn.0046d090
add esp, 0x18
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x60]
xor ecx, esp
call fcn.004eef15
add esp, 0x64
ret
push str.dx.op.textureStore
push ebx
call fcn.00482ab0
mov edi, eax
add esp, 0xc
test edi, edi
je 0x46f702
push 0x43
push ebx
call fcn.0047ebb0
movups xmm0, xmmword [esp + 0x40]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x60], eax
lea eax, [esp + 0x50]
push 0xa
push eax
push edi
push ebx
mov dword [esp + 0x68], ebp
movups xmmword [esp + 0x74], xmm0
mov dword [esp + 0x84], esi
call fcn.0047d1b0
add esp, 0x18
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x60]
xor ecx, esp
call fcn.004eef15
add esp, 0x64
ret
mov ecx, dword [esp + 0x70]
xor al, al
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.004eef15
add esp, 0x64
ret