Function at 0x6f248430
Capabilities:
Get process heap flags
Link many functions at runtime

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
mov esi, eax
push ebx
sub esp, 0x4c
mov eax, dword [0x6f2662e0]
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x28], ecx
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], eax
test byte [0x6f266618], 8
je 0x6f248498
cmp ecx, 1
mov dword [esp + 0x14], edx
sbb eax, eax
mov dword [esp + 0x10], esi
and eax, 0xfffffff5
mov dword [esp + 0xc], str.__s___s__mapper_c___n
add eax, 0x59
mov dword [esp + 8], str.MMDRV_Install
mov dword [esp + 0x18], eax
mov dword [esp + 4], 0x6f266618
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0_2
mov eax, dword [0x6f2662e0]
mov dword [ebp - 0x1c], eax
mov edx, dword [ebp - 0x1c]
test edx, edx
jle 0x6f2484d8
mov ebx, 0x6f266044
xor edi, edi
jmp 0x6f2484b9
inc edi
add ebx, 0x54
cmp edi, dword [ebp - 0x1c]
je 0x6f2484d8
mov eax, dword [ebx]
mov dword [esp], esi
mov dword [esp + 4], eax
call dword [sym.imp.ucrtbase.dll_strcmp]
test eax, eax
jne 0x6f2484b0
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
cmp dword [ebp - 0x1c], 8
ja 0x6f248868
imul ebx, dword [ebp - 0x20], 0x54
xor eax, eax
mov ecx, 0x15
lea edi, [ebx + 0x6f266040]
mov dword [ebp - 0x2c], edi
rep stosd dword es:[edi], eax
mov eax, dword [ebp - 0x24]
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], eax
call sym.winmm.dll_DrvOpenA
mov dword [ebx + 0x6f266040], eax
sub esp, 0xc
test eax, eax
je 0x6f248890
mov dword [esp], eax
call sym._DRIVER_FindFromHDrvr
mov ebx, eax
mov eax, dword [eax + 8]
test eax, eax
je 0x6f248806
mov dword [esp + 4], str.auxMessage
mov edi, dword [sym.imp.kernel32.dll_GetProcAddress]
mov dword [esp], eax
call edi
mov dword [ebp - 0x1c], 0
sub esp, 8
test eax, eax
je 0x6f248574
mov ecx, dword [ebp - 0x2c]
mov dword [ebp - 0x1c], 1
mov dword [ecx + 0x14], eax
test byte [0x6f266618], 8
jne 0x6f2488cd
mov dword [esp + 4], str.mxdMessage
mov eax, dword [ebx + 8]
mov dword [esp], eax
call edi
sub esp, 8
test eax, eax
je 0x6f2485a5
imul edx, dword [ebp - 0x20], 0x54
inc dword [ebp - 0x1c]
mov dword [edx + 0x6f266060], eax
test byte [0x6f266618], 8
jne 0x6f248906
mov dword [esp + 4], str.midMessage
mov eax, dword [ebx + 8]
mov dword [esp], eax
call edi
sub esp, 8
test eax, eax
je 0x6f2485d6
imul edx, dword [ebp - 0x20], 0x54
inc dword [ebp - 0x1c]
mov dword [edx + 0x6f26606c], eax
test byte [0x6f266618], 8
jne 0x6f2489ea
mov dword [esp + 4], str.modMessage
mov eax, dword [ebx + 8]
mov dword [esp], eax
call edi
sub esp, 8
test eax, eax
je 0x6f248607
imul edx, dword [ebp - 0x20], 0x54
inc dword [ebp - 0x1c]
mov dword [edx + 0x6f266078], eax
test byte [0x6f266618], 8
jne 0x6f2489b1
mov dword [esp + 4], str.widMessage
mov eax, dword [ebx + 8]
mov dword [esp], eax
call edi
sub esp, 8
test eax, eax
je 0x6f2487e0
imul edx, dword [ebp - 0x20], 0x54
mov dword [edx + 0x6f266084], eax
test byte [0x6f266618], 8
jne 0x6f248978
mov dword [esp + 4], str.wodMessage
mov eax, dword [ebx + 8]
mov dword [esp], eax
call edi
sub esp, 8
test eax, eax
je 0x6f248667
imul edx, dword [ebp - 0x20], 0x54
mov dword [edx + 0x6f266090], eax
test byte [0x6f266618], 8
jne 0x6f24893f
imul eax, dword [ebp - 0x20], 0x54
lea ebx, [eax + 0x6f266040]
mov dword [ebp - 0x1c], eax
movzx eax, byte [ebp - 0x28]
movzx ecx, byte [ebx + 8]
and eax, 1
and ecx, 0xfffffffe
or ecx, eax
mov byte [ebx + 8], cl
mov dword [esp], esi
call dword [sym.imp.ucrtbase.dll_strlen]
mov dword [esp + 4], 0
inc eax
mov edx, dword fs:[0x18]
mov dword [esp + 8], eax
mov eax, dword [edx + 0x30]
mov dword [ebp - 0x20], edx
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
sub esp, 0xc
mov dword [esp + 4], esi
mov dword [esp], eax
call dword [sym.imp.ucrtbase.dll_strcpy]
mov esi, dword [ebp - 0x2c]
xor edx, edx
mov ecx, 3
mov dword [ebx + 4], eax
mov eax, esi
call sym._MMDRV_InitPerType
mov ecx, 1
mov edx, 1
mov edi, eax
mov eax, esi
call sym._MMDRV_InitPerType
mov ecx, 0x35
or edi, eax
mov eax, esi
setne dl
mov edi, edx
mov edx, 2
call sym._MMDRV_InitPerType
mov ecx, edi
mov edx, 3
test eax, eax
movzx edi, cl
mov eax, 1
mov ecx, 1
cmovne edi, eax
mov eax, esi
call sym._MMDRV_InitPerType
mov ecx, 0x32
mov edx, 4
test eax, eax
jne 0x6f248a23
mov eax, esi
call sym._MMDRV_InitPerType
test eax, eax
jne 0x6f248a2b
mov eax, dword [ebp - 0x2c]
mov ecx, 3
mov edx, 5
call sym._MMDRV_InitPerType
or eax, edi
jne 0x6f248a3d
mov eax, dword [ebp - 0x1c]
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov eax, dword [eax + 0x6f266040]
mov dword [esp], eax
call sym.winmm.dll_CloseDriver
mov eax, dword [ebx + 4]
sub esp, 0xc
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x20]
mov dword [esp + 4], 0
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapFree]
sub esp, 0xc
test byte [0x6f266618], 4
je 0x6f2484cc
mov dword [esp + 0xc], str.Driver_initialization_failed_n
mov dword [esp + 8], str.MMDRV_Install
mov dword [esp + 4], 0x6f266618
mov dword [esp], 2
call sym._wine_dbg_log.constprop.0_2
jmp 0x6f2484cc
mov dword [esp + 4], str.wodMessage
mov eax, dword [ebx + 8]
mov dword [esp], eax
call edi
sub esp, 8
test eax, eax
jne 0x6f248650
mov eax, dword [ebp - 0x1c]
test eax, eax
jne 0x6f248667
imul eax, dword [ebp - 0x20], 0x54
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov eax, dword [eax + 0x6f266040]
mov dword [esp], eax
call sym.winmm.dll_CloseDriver
sub esp, 0xc
test byte [0x6f266618], 4
je 0x6f2484cc
mov dword [esp + 0xc], str.No_message_functions_found_n
mov dword [esp + 8], str.MMDRV_Install
mov dword [esp + 4], 0x6f266618
mov dword [esp], 2
call sym._wine_dbg_log.constprop.0_2
jmp 0x6f2484cc
mov dword [esp + 8], 0x1a8
mov dword [esp + 4], str..._src_wine_dlls_winmm_lolvldrv.c
mov dword [esp], str.MMDrvsHi___ARRAY_SIZE_MMDrvs_
call dword [sym.imp.ucrtbase.dll__assert]
jmp 0x6f2484e2
test byte [0x6f266618], 4
je 0x6f2484cc
mov eax, dword [ebp - 0x24]
mov dword [esp + 0xc], str.Couldnt_open_driver__s_n
mov dword [esp + 8], str.MMDRV_Install
mov dword [esp + 0x10], eax
mov dword [esp + 4], 0x6f266618
mov dword [esp], 2
call sym._wine_dbg_log.constprop.0_2
jmp 0x6f2484cc
mov dword [esp + 0x14], str.auxMessage
mov dword [esp + 0x10], 0x20
mov dword [esp + 0xc], str.Got__d_bit_func__s_n
mov dword [esp + 8], str.MMDRV_Install
mov dword [esp + 4], 0x6f266618
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0_2
jmp 0x6f248574
mov dword [esp + 0x14], str.mxdMessage
mov dword [esp + 0x10], 0x20
mov dword [esp + 0xc], str.Got__d_bit_func__s_n
mov dword [esp + 8], str.MMDRV_Install
mov dword [esp + 4], 0x6f266618
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0_2
jmp 0x6f2485a5
mov dword [esp + 0x14], str.wodMessage
mov dword [esp + 0x10], 0x20
mov dword [esp + 0xc], str.Got__d_bit_func__s_n
mov dword [esp + 8], str.MMDRV_Install
mov dword [esp + 4], 0x6f266618
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0_2
jmp 0x6f248667
mov dword [esp + 0x14], str.widMessage
mov dword [esp + 0x10], 0x20
mov dword [esp + 0xc], str.Got__d_bit_func__s_n
mov dword [esp + 8], str.MMDRV_Install
mov dword [esp + 4], 0x6f266618
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0_2
jmp 0x6f248639
mov dword [esp + 0x14], str.modMessage
mov dword [esp + 0x10], 0x20
mov dword [esp + 0xc], str.Got__d_bit_func__s_n
mov dword [esp + 8], str.MMDRV_Install
mov dword [esp + 4], 0x6f266618
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0_2
jmp 0x6f248607
mov dword [esp + 0x14], str.midMessage
mov dword [esp + 0x10], 0x20
mov dword [esp + 0xc], str.Got__d_bit_func__s_n
mov dword [esp + 8], str.MMDRV_Install
mov dword [esp + 4], 0x6f266618
mov dword [esp], 3
call sym._wine_dbg_log.constprop.0_2
jmp 0x6f2485d6
mov eax, dword [ebp - 0x2c]
call sym._MMDRV_InitPerType
mov eax, dword [ebp - 0x2c]
mov ecx, 3
mov edx, 5
call sym._MMDRV_InitPerType
inc dword [0x6f2662e0]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret