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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3c
push ebx
push esi
xor esi, esi
push edi
push dword [ebp + 0xc]
mov ebx, ecx
push dword [ebp + 8]
mov dword [ebx + 0x9c], esi
mov dword [ebp - 4], esi
mov dword [ebp - 8], esi
mov dword [ebp - 0x2c], esi
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x24], esi
mov dword [ebp - 0xc], esi
mov dword [ebp - 0x10], esi
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x1c], esi
call fcn.004da7ba
mov edi, eax
cmp edi, esi
jl 0x4f1e5e
xor edi, edi
cmp dword [ebx + 8], esi
jbe 0x4f166b
mov eax, dword [ebx + 0x14]
mov ecx, dword [eax + edi*4]
mov eax, dword [ecx]
mov edx, dword [ebx + 0x10]
mov eax, dword [edx + eax*4]
mov eax, dword [eax + 4]
test al, 8
je 0x4f164e
test ah, 1
je 0x4f1652
test al, 0x10
je 0x4f1665
mov eax, dword [ebx]
push esi
push ecx
mov ecx, ebx
call dword [eax + 8]
test eax, eax
jl 0x4f1d2f
xor esi, esi
inc edi
cmp edi, dword [ebx + 8]
jb 0x4f1634
mov eax, dword [ebx + 0x108]
cmp eax, esi
mov dword [ebx + 0xa0], esi
mov dword [ebx + 0xa4], esi
mov dword [ebx + 0xa8], esi
mov dword [ebx + 0xb0], esi
mov dword [ebx + 0xb4], esi
je 0x4f169f
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov dword [ebx + 0x108], esi
test byte [ebx + 0x34], 4
jne 0x4f16f4
mov edi, 0x5816e8
push edi
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
cmp eax, esi
jne 0x4f16c0
push edi
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
cmp eax, esi
je 0x4f16f4
push str.Direct3DShaderValidatorCreate9
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp eax, esi
je 0x4f16f4
call eax
cmp eax, esi
mov dword [ebx + 0x108], eax
je 0x4f16f4
mov ecx, dword [eax]
push 1
push ebx
push 0x4ee33f
push eax
call dword [ecx + 0xc]
mov edi, eax
cmp edi, esi
jl 0x4f1e5e
test byte [ebx + 0x34], 1
je 0x4f1729
mov eax, dword [ebx + 0xc]
lea eax, [eax + eax*2]
shl eax, 4
push eax
call fcn.00548137
cmp eax, esi
pop ecx
mov dword [ebx + 0xb8], eax
je 0x4f1b7c
mov eax, dword [ebx + 0xc]
shl eax, 1
mov dword [ebx + 0xbc], esi
mov dword [ebx + 0xc0], eax
or dword [ebx + 0xcc], 0xffffffff
xor eax, eax
cmp dword [ebx + 8], esi
mov dword [ebx + 0xe0], esi
jbe 0x4f1755
mov ecx, dword [ebx + 0x14]
mov ecx, dword [ecx + eax*4]
mov dword [ecx + 0x1c], esi
mov ecx, dword [ebx + 0x14]
mov ecx, dword [ecx + eax*4]
inc eax
mov dword [ecx + 0x20], esi
cmp eax, dword [ebx + 8]
jb 0x4f173d
cmp dword [ebx + 8], esi
mov dword [ebp - 0x28], esi
mov dword [ebp + 0xc], esi
jbe 0x4f17a0
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebx + 0x14]
mov eax, dword [eax + ecx*4]
mov ecx, dword [eax]
mov edx, dword [ebx + 0x10]
mov edi, dword [edx + ecx*4]
mov ecx, dword [edi + 4]
test cl, 8
je 0x4f177e
test ch, 1
je 0x4f1783
test cl, 0x10
je 0x4f178c
mov edx, dword [ebx]
push esi
push eax
mov ecx, ebx
call dword [edx + 8]
test byte [edi + 4], 0x40
je 0x4f1795
inc dword [ebp - 0x28]
inc dword [ebp + 0xc]
mov eax, dword [ebp + 0xc]
cmp eax, dword [ebx + 8]
jb 0x4f1760
mov eax, dword [ebp - 0x28]
cmp eax, dword [ebx + 0x88]
jbe 0x4f1805
lea eax, [ebp - 0x3c]
push eax
push esi
push dword [ebx + 0x30]
call fcn.004a9cea
test eax, eax
jl 0x4f1d2f
mov eax, dword [ebx + 0x88]
test eax, eax
je 0x4f17e8
push eax
push dword [ebp - 0x3c]
push str.maximum_number_of_samplers_exceeded.__s_target_can_have_a_maximum_of__i_samplers
push 0x119e
push 0
push ebx
call fcn.004d3b5d
add esp, 0x18
jmp 0x4f1d2f
push dword [ebp - 0x3c]
push str._s_target_does_not_support_texture_lookups
push 0x11c1
push 0
push ebx
call fcn.004d3b5d
add esp, 0x14
jmp 0x4f1d2f
mov ecx, dword [ebx + 0x30]
mov eax, 0xffff0000
and ecx, eax
cmp ecx, 0xfffe0000
jne 0x4f183c
push 0x76
push 0x100
push 8
push dword [ebx + 0x6c]
mov ecx, ebx
push dword [ebx + 0x58]
call fcn.004eba0d
mov edi, eax
cmp edi, esi
jl 0x4f1e5e
mov eax, 0xffff0000
mov ecx, dword [ebx + 0x30]
and ecx, eax
cmp ecx, eax
jne 0x4f1863
push 0x73
push esi
push 0x40
push dword [ebx + 0x88]
mov ecx, ebx
push 0xffffffffffffffff
call fcn.004eba0d
mov edi, eax
cmp edi, esi
jl 0x4f1e5e
cmp dword [ebx + 8], esi
jbe 0x4f18ce
mov eax, dword [ebx + 8]
mov edi, dword [ebx + 0x14]
mov dword [ebp + 0xc], eax
mov eax, dword [edi]
mov ecx, dword [eax]
cmp dword [ebx + 0x60], ecx
jne 0x4f1888
mov edx, dword [eax + 8]
inc edx
cmp edx, dword [ebp - 0x2c]
jbe 0x4f1888
mov dword [ebp - 0x2c], edx
jmp 0x4f18c6
cmp dword [ebx + 0x58], ecx
jne 0x4f189b
mov edx, dword [eax + 8]
inc edx
cmp edx, dword [ebp - 4]
jbe 0x4f189b
mov dword [ebp - 4], edx
jmp 0x4f18c6
cmp dword [ebx + 0x5c], ecx
jne 0x4f18ae
mov edx, dword [eax + 8]
inc edx
cmp edx, dword [ebp - 8]
jbe 0x4f18ae
mov dword [ebp - 8], edx
jmp 0x4f18c6
mov edx, dword [ebx + 0x10]
mov ecx, dword [edx + ecx*4]
test byte [ecx + 4], 0x40
je 0x4f18c6
mov eax, dword [eax + 8]
inc eax
cmp eax, dword [ebp - 0x18]
jbe 0x4f18c6
mov dword [ebp - 0x18], eax
add edi, 4
dec dword [ebp + 0xc]
jne 0x4f1871
mov eax, dword [ebp - 4]
shl eax, 2
push eax
mov dword [ebp - 0x28], eax
call fcn.00548137
cmp eax, esi
pop ecx
mov dword [ebp - 0xc], eax
je 0x4f1b7c
mov edi, dword [ebp - 8]
shl edi, 2
push edi
mov dword [ebp + 0xc], edi
call fcn.00548137
cmp eax, esi
pop ecx
mov dword [ebp - 0x10], eax
je 0x4f1b7c
mov eax, dword [ebp - 0x18]
shl eax, 2
push eax
mov dword [ebp - 0x2c], eax
call fcn.00548137
cmp eax, esi
pop ecx
mov dword [ebp - 0x20], eax
je 0x4f1b7c
push dword [ebp - 0x28]
call fcn.00548137
cmp eax, esi
pop ecx
mov dword [ebp - 0x30], eax
je 0x4f1b7c
push edi
call fcn.00548137
cmp eax, esi
pop ecx
mov dword [ebp - 0x14], eax
je 0x4f1b7c
mov ecx, dword [ebp - 0x28]
mov edi, dword [ebp - 0xc]
mov edx, ecx
shr ecx, 2
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov ecx, dword [ebp + 0xc]
mov edi, dword [ebp - 0x10]
mov edx, ecx
shr ecx, 2
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov ecx, dword [ebp - 0x2c]
mov edi, dword [ebp - 0x20]
mov edx, ecx
shr ecx, 2
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
xor edx, edx
cmp dword [ebx + 8], esi
jbe 0x4f19d9
mov eax, dword [ebx + 0x14]
mov eax, dword [eax + edx*4]
mov ecx, dword [eax]
cmp dword [ebx + 0x5c], ecx
jne 0x4f19aa
cmp dword [eax + 0x50], 0xffffffff
je 0x4f1b05
mov edi, dword [ebp - 0x10]
jmp 0x4f19cd
cmp dword [ebx + 0x58], ecx
jne 0x4f19be
cmp dword [eax + 0x50], 0xffffffff
je 0x4f1b0c
mov edi, dword [ebp - 0xc]
jmp 0x4f19cd
mov edi, dword [ebx + 0x10]
mov ecx, dword [edi + ecx*4]
test byte [ecx + 4], 0x40
je 0x4f19d3
mov edi, dword [ebp - 0x20]
mov ecx, dword [eax + 8]
mov dword [edi + ecx*4], eax
inc edx
cmp edx, dword [ebx + 8]
jb 0x4f198e
cmp dword [ebx + 8], esi
mov dword [ebp + 0xc], esi
jbe 0x4f1a1e
mov eax, dword [ebx + 0x14]
mov ecx, dword [ebp + 0xc]
mov edx, dword [eax + ecx*4]
mov eax, dword [ebx + 0x58]
cmp eax, dword [edx]
jne 0x4f1a13
xor eax, eax
cmp dword [ebp - 4], esi
jbe 0x4f1a13
mov ecx, dword [ebp - 0xc]
mov ecx, dword [ecx + eax*4]
cmp ecx, esi
je 0x4f1a0d
mov edi, dword [edx + 0x50]
cmp edi, dword [ecx + 0x50]
jne 0x4f1a0d
mov dword [edx + 8], eax
inc eax
cmp eax, dword [ebp - 4]
jb 0x4f19f8
inc dword [ebp + 0xc]
mov eax, dword [ebp + 0xc]
cmp eax, dword [ebx + 8]
jb 0x4f19e1
mov ecx, dword [ebp - 0x28]
mov edx, dword [ebp - 0xc]
mov esi, ecx
shr ecx, 2
xor eax, eax
mov edi, edx
rep stosd dword es:[edi], eax
mov ecx, esi
and ecx, 3
xor esi, esi
rep stosb byte es:[edi], al
cmp dword [ebx + 8], esi
jbe 0x4f1a64
mov eax, dword [ebx + 0x14]
mov eax, dword [eax + esi*4]
mov ecx, dword [eax]
mov edi, dword [ebx + 0x10]
mov edi, dword [edi + ecx*4]
mov ecx, dword [edi + 4]
test cl, 8
je 0x4f1a5e
test ch, 1
jne 0x4f1a5e
mov ecx, dword [eax + 8]
mov dword [edx + ecx*4], eax
inc esi
cmp esi, dword [ebx + 8]
jb 0x4f1a3d
xor ecx, ecx
xor eax, eax
cmp dword [ebp - 4], ecx
mov dword [ebp - 0x2c], ecx
jbe 0x4f1a7e
cmp dword [edx + eax*4], ecx
je 0x4f1a78
inc dword [ebp - 0x2c]
inc eax
cmp eax, dword [ebp - 4]
jb 0x4f1a70
mov ecx, ebx
call fcn.004ee41a
mov edi, eax
xor esi, esi
cmp edi, esi
jl 0x4f1e5e
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x30]
mov edi, eax
cmp edi, esi
jl 0x4f1e5e
test byte [ebx + 0x34], 8
je 0x4f1ab1
test byte [ebx + 0x92], 0x10
je 0x4f1ad3
mov ecx, ebx
call fcn.004ee3dc
mov edi, eax
cmp edi, esi
jl 0x4f1e5e
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x2c]
mov edi, eax
cmp edi, esi
jl 0x4f1e5e
push 0x63
push 0x40
push 0x100
push dword [ebx + 0x78]
mov ecx, ebx
push dword [ebx + 0x54]
call fcn.004eba0d
mov edi, eax
cmp edi, esi
jl 0x4f1e5e
cmp dword [ebx + 0xc], esi
mov dword [ebx + 0x9c], esi
jbe 0x4f1b18
mov eax, dword [ebx + 0x18]
mov eax, dword [eax]
jmp 0x4f1b1a
push str.internal_error:_output_register_missing_semantic
jmp 0x4f1b11
push str.internal_error:_input_register_missing_semantic
push esi
push esi
jmp 0x4f1ef1
xor eax, eax
mov dword [ebx + 0x98], eax
mov eax, dword [ebx]
mov ecx, ebx
mov dword [ebx + 0x94], esi
call dword [eax + 0x38]
mov edi, eax
cmp edi, esi
jl 0x4f1e5e
and dword [ebp + 0xc], 0
cmp dword [ebx + 8], 0
jbe 0x4f1b69
mov eax, dword [ebx + 8]
mov edx, dword [ebx + 0x10]
mov ecx, dword [ebx + 0x14]
mov dword [ebp - 0x28], eax
mov eax, dword [ecx]
mov edi, dword [eax]
mov edi, dword [edx + edi*4]
test byte [edi + 4], 0x80
je 0x4f1b61
cmp dword [eax + 4], 0xffffffff
jne 0x4f1b61
inc esi
add ecx, 4
dec dword [ebp - 0x28]
jne 0x4f1b4d
mov edi, esi
shl edi, 4
push edi
call fcn.00548137
test eax, eax
pop ecx
mov dword [ebp - 0x1c], eax
jne 0x4f1b86
mov edi, 0x8007000e
jmp 0x4f1e5e
shl esi, 2
push esi
call fcn.00548137
test eax, eax
pop ecx
mov dword [ebp - 0x24], eax
je 0x4f1d2f
mov ecx, edi
mov edi, dword [ebp - 0x1c]
mov edx, ecx
shr ecx, 2
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov ecx, esi
mov esi, dword [ebp - 0x24]
mov edx, ecx
shr ecx, 2
xor eax, eax
mov edi, esi
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
xor edi, edi
cmp dword [ebx + 8], edi
jbe 0x4f1c2a
mov eax, dword [ebx + 0x14]
mov eax, dword [eax + edi*4]
mov ecx, dword [eax]
mov edx, dword [ebx + 0x10]
mov ecx, dword [edx + ecx*4]
test byte [ecx + 4], 0x80
je 0x4f1c24
cmp dword [eax + 4], 0xffffffff
jne 0x4f1c24
cmp dword [eax + 0x24], 0xffffffff
jne 0x4f1c24
xor ecx, ecx
cmp dword [ebp + 0xc], ecx
jbe 0x4f1c03
mov edx, dword [eax + 8]
cmp dword [esi + ecx*4], edx
je 0x4f1c03
inc ecx
cmp ecx, dword [ebp + 0xc]
jb 0x4f1bf8
cmp ecx, dword [ebp + 0xc]
jne 0x4f1c11
mov edx, dword [eax + 8]
inc dword [ebp + 0xc]
mov dword [esi + ecx*4], edx
fld qword [eax + 0x10]
mov eax, dword [eax + 0xc]
lea eax, [eax + ecx*4]
fld st(0)
mov ecx, dword [ebp - 0x1c]
fstp dword [ecx + eax*4]
fstp st(0)
inc edi
cmp edi, dword [ebx + 8]
jb 0x4f1bce
xor esi, esi
cmp dword [ebp + 0xc], esi
jbe 0x4f1c5b
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x28], eax
push dword [ebp - 0x28]
mov ecx, dword [ebp - 0x24]
push dword [ecx + esi*4]
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x3c]
mov edi, eax
test edi, edi
jl 0x4f1e5e
add dword [ebp - 0x28], 0x10
inc esi
cmp esi, dword [ebp + 0xc]
jb 0x4f1c37
mov eax, dword [ebp - 0x2c]
cmp eax, dword [ebx + 0x80]
jbe 0x4f1c77
push str.maximum_number_of_inputs_exceeded
push 0x119a
push 0
jmp 0x4f1ef1
mov eax, dword [ebp - 4]
and dword [ebp + 0xc], 0
test eax, eax
jbe 0x4f1cb2
mov edi, dword [ebp - 0xc]
mov esi, dword [ebp - 0x30]
sub esi, edi
mov dword [ebp - 0x2c], eax
mov eax, dword [edi]
test eax, eax
je 0x4f1caa
mov edx, dword [ebx]
lea ecx, [esi + edi]
push ecx
push eax
mov ecx, ebx
call dword [edx + 0x40]
test eax, eax
jge 0x4f1caa
mov dword [ebp + 0xc], 1
add edi, 4
dec dword [ebp - 0x2c]
jne 0x4f1c8d
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x48]
mov edi, eax
xor esi, esi
cmp edi, esi
jl 0x4f1e5e
cmp dword [ebp - 0x18], esi
jbe 0x4f1ced
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + esi*4]
test eax, eax
je 0x4f1ce7
mov edx, dword [ebx]
push eax
mov ecx, ebx
call dword [edx + 0x44]
test eax, eax
jge 0x4f1ce7
mov dword [ebp + 0xc], 1
inc esi
cmp esi, dword [ebp - 0x18]
jb 0x4f1cca
cmp dword [ebp - 8], 0
jbe 0x4f1d28
mov edi, dword [ebp - 0x10]
mov esi, dword [ebp - 0x14]
mov eax, dword [ebp - 8]
sub esi, edi
mov dword [ebp - 0x2c], eax
mov eax, dword [edi]
test eax, eax
je 0x4f1d20
mov edx, dword [ebx]
push 0
lea ecx, [esi + edi]
push ecx
push eax
mov ecx, ebx
call dword [edx + 0x5c]
test eax, eax
jge 0x4f1d20
mov dword [ebp + 0xc], 1
add edi, 4
dec dword [ebp - 0x2c]
jne 0x4f1d01
xor ecx, ecx
cmp dword [ebp + 0xc], ecx
je 0x4f1d39
mov edi, 0x80004005
jmp 0x4f1e5e
xor esi, esi
cmp dword [ebp - 8], ecx
jbe 0x4f1d7e
mov edx, dword [ebp - 0x10]
cmp dword [ecx + edx], 0
je 0x4f1d75
and dword [ebp + 0xc], 0
test ecx, ecx
jbe 0x4f1d75
mov eax, dword [ebp - 0x14]
sub edx, eax
cmp dword [edx + eax], 0
je 0x4f1d6a
mov edi, dword [ebp - 0x14]
mov edi, dword [ecx + edi]
cmp edi, dword [eax]
je 0x4f1ede
inc dword [ebp + 0xc]
add eax, 4
cmp dword [ebp + 0xc], esi
jb 0x4f1d56
inc esi
add ecx, 4
cmp esi, dword [ebp - 8]
jb 0x4f1d40
mov ecx, ebx
call fcn.004ee3dc
mov edi, eax
test edi, edi
jl 0x4f1e5e
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x28]
mov edi, eax
test edi, edi
jl 0x4f1e5e
mov ecx, ebx
call fcn.004f08f4
mov edi, eax
test edi, edi
jl 0x4f1e5e
test byte [ebx + 0x34], 1
je 0x4f1dc8
mov ecx, ebx
call fcn.004f0f99
mov edi, eax
test edi, edi
jl 0x4f1e5e
push 0xffff
mov ecx, ebx
call fcn.004f08c9
mov edi, eax
test edi, edi
jl 0x4f1e5e
mov ecx, ebx
call fcn.004ee2cf
mov edi, eax
test edi, edi
jl 0x4f1e5e
mov eax, dword [ebx + 0x108]
test eax, eax
je 0x4f1e07
cmp dword [ebx + 0x38], 0
jne 0x4f1e07
mov ecx, dword [eax]
push eax
call dword [ecx + 0x14]
mov edi, eax
test edi, edi
jl 0x4f1e5e
cmp dword [ebp + 8], 0
je 0x4f1e5c
lea eax, [ebp + 0xc]
push eax
mov eax, dword [ebx + 0xa4]
shl eax, 2
push eax
call fcn.00474c41
mov edi, eax
test edi, edi
jl 0x4f1e5e
mov eax, dword [ebx + 0xa4]
mov esi, dword [ebx + 0xa0]
shl eax, 2
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax]
push eax
call dword [ecx + 0xc]
mov edi, eax
mov eax, dword [ebp - 0x2c]
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
mov dword [ecx], eax
xor edi, edi
push dword [ebp - 0xc]
call fcn.00547cdc
push dword [ebp - 0x10]
call fcn.00547cdc
push dword [ebp - 0x30]
call fcn.00547cdc
push dword [ebp - 0x14]
call fcn.00547cdc
push 0
call fcn.00547cdc
push dword [ebp - 0x1c]
call fcn.00547cdc
push dword [ebp - 0x24]
call fcn.00547cdc
push dword [ebp - 0x20]
call fcn.00547cdc
lea esi, [ebx + 0xa0]
push dword [esi]
call fcn.00547cdc
and dword [esi], 0
lea esi, [ebx + 0xb8]
push dword [esi]
call fcn.00547cdc
and dword [esi], 0
add ebx, 0x108
mov eax, dword [ebx]
add esp, 0x28
test eax, eax
je 0x4f1ed5
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
and dword [ebx], 0
mov eax, edi
pop edi
pop esi
pop ebx
leave
ret 8
mov eax, dword [ebp - 0x10]
mov eax, dword [eax + esi*4]
push str.overlapping_output_semantics
push 0x1198
push dword [eax + 0x4c]
push ebx
call fcn.004d3b5d
add esp, 0x10
jmp 0x4f1d2f