Function at 0x629865ca
Capabilities:
Access peb ldr_data
Get file size
Get process heap flags
Get process heap force flags
Read file on windows

Disassembly:
lea ecx, [esp + 4]
and esp, 0xfffffff0
push dword [ecx - 4]
push ebp
mov ebp, esp
push edi
push esi
push ebx
push ecx
sub esp, 0x48
mov eax, dword [ecx + 4]
mov ebx, dword [ecx]
mov dword [ebp - 0x2c], eax
test byte [0x6299e038], 8
jne 0x62986768
mov dword [esp], ebx
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], pe_nt_image_headers32
mov dword [esp + 0x10], 3
mov dword [esp + 0xc], 0
mov dword [esp + 8], 1
mov dword [esp + 4], 0x80000000
call dword [sym.imp.kernel32.dll_CreateFileW]
sub esp, 0x1c
mov ebx, eax
cmp eax, 0xffffffff
je 0x6298673c
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_GetFileSize]
sub esp, 8
mov esi, eax
cmp eax, 0xffffffff
je 0x62986730
mov ecx, dword fs:[0x18]
mov dword [esp + 8], 0x10
mov edx, dword [sym.imp.kernel32.dll_HeapAlloc]
mov dword [esp + 4], 8
mov eax, dword [ecx + 0x30]
mov dword [ebp - 0x34], ecx
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x30], edx
mov dword [esp], eax
call edx
mov edx, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x34]
sub esp, 0xc
test eax, eax
mov edi, eax
je 0x62986869
mov dword [eax], sym._d3dcompiler_blob_QueryInterface_12
mov dword [eax + 4], 1
mov dword [eax + 8], esi
mov dword [esp + 8], esi
mov dword [esp + 4], 8
mov eax, dword [ecx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call edx
mov dword [edi + 0xc], eax
sub esp, 0xc
test eax, eax
je 0x6298687d
lea ecx, [ebp - 0x1c]
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], ecx
mov dword [esp + 8], esi
mov dword [esp + 4], eax
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_ReadFile]
sub esp, 0x14
test eax, eax
je 0x629867e0
cmp dword [ebp - 0x1c], esi
jne 0x629867e0
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_CloseHandle]
mov eax, dword [ebp - 0x1c]
xor ecx, ecx
sub esp, 4
mov dword [edi + 8], eax
mov eax, dword [ebp - 0x2c]
mov dword [eax], edi
test byte [0x6299e038], 8
jne 0x629867a8
lea esp, [ebp - 0x10]
mov eax, ecx
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret 8
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_CloseHandle]
sub esp, 4
mov eax, dword fs:[0x18]
mov ecx, dword [eax + 0x34]
movzx eax, cx
or eax, 0x80070000
test ecx, ecx
cmovg ecx, eax
lea esp, [ebp - 0x10]
mov eax, ecx
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret 8
mov eax, ebx
call sym._wine_dbgstr_wn.constprop.0
mov edx, dword [ebp - 0x2c]
mov dword [esp + 0xc], str.filename__s__contents__p._n
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
mov dword [esp + 8], str.D3DReadFileToBlob
mov dword [esp + 4], 0x6299e038
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0
jmp 0x629865e9
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], str.Returning_ID3DBlob__p._n
mov dword [esp + 8], str.D3DReadFileToBlob
mov dword [esp + 4], 0x6299e038
mov dword [esp], 3
mov dword [ebp - 0x2c], ecx
call sym._wine_dbg_log.constprop.0
mov ecx, dword [ebp - 0x2c]
jmp 0x6298671f
test byte [0x6299e038], 4
jne 0x62986843
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_CloseHandle]
mov eax, dword [edi + 0xc]
mov ebx, dword [sym.imp.kernel32.dll_HeapFree]
sub esp, 4
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov esi, dword fs:[0x18]
mov eax, dword [esi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call ebx
sub esp, 0xc
mov dword [esp + 8], edi
mov dword [esp + 4], 0
mov eax, dword [esi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call ebx
mov ecx, 0x80004005
sub esp, 0xc
jmp 0x6298671f
mov dword [esp + 0xc], 0x629a1698
mov dword [esp + 8], str.D3DReadFileToBlob
mov dword [esp + 4], 0x6299e038
mov dword [esp], 2
call sym._wine_dbg_log.constprop.0
jmp 0x629867e9
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_CloseHandle]
mov ecx, 0x8007000e
push eax
jmp 0x6298671f
call sym._d3dcompiler_blob_init.part.0
mov ecx, eax
test eax, eax
jns 0x62986910
test byte [0x6299e038], 4
jne 0x629868e0
mov dword [ebp - 0x2c], ecx
mov dword [esp], ebx
call dword [sym.imp.kernel32.dll_CloseHandle]
sub esp, 4
mov dword [esp + 8], edi
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapFree]
mov ecx, dword [ebp - 0x2c]
sub esp, 0xc
lea esp, [ebp - 0x10]
mov eax, ecx
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret 8
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.Failed_to_initialise_blob__hr__lx._n
mov dword [esp + 8], str.D3DReadFileToBlob
mov dword [esp + 4], 0x6299e038
mov dword [esp], 2
mov dword [ebp - 0x2c], eax
call sym._wine_dbg_log.constprop.0
mov ecx, dword [ebp - 0x2c]
jmp 0x62986895
mov eax, dword [edi + 0xc]
jmp 0x629866c5