Function at 0x10002c7f
Capabilities:
Link many functions at runtime

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x110
push edi
mov dword [ebp - 0x110], ecx
mov dword [ebp - 4], 0
mov eax, dword [ebp - 0x110]
cmp dword [eax + 8], 0
jne 0x10002ca7
jmp 0x10002f80
mov ecx, dword [ebp + 8]
push ecx
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov edx, dword [ebp - 0x110]
mov dword [edx + 0x324], eax
mov eax, dword [ebp - 0x110]
cmp dword [eax + 0x324], 0
jne 0x10002cd1
jmp 0x10002f80
push str.MsmPlug_new
mov ecx, dword [ebp - 0x110]
mov edx, dword [ecx + 0x324]
push edx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov ecx, dword [ebp - 0x110]
mov dword [ecx + 0x348], eax
push str.MsmPlug_delete
mov edx, dword [ebp - 0x110]
mov eax, dword [edx + 0x324]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov ecx, dword [ebp - 0x110]
mov dword [ecx + 0x34c], eax
push str.MsmPlug_init
mov edx, dword [ebp - 0x110]
mov eax, dword [edx + 0x324]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov ecx, dword [ebp - 0x110]
mov dword [ecx + 0x350], eax
push str.MsmPlug_exit
mov edx, dword [ebp - 0x110]
mov eax, dword [edx + 0x324]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov ecx, dword [ebp - 0x110]
mov dword [ecx + 0x354], eax
push str.MsmPlug_getItf
mov edx, dword [ebp - 0x110]
mov eax, dword [edx + 0x324]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov ecx, dword [ebp - 0x110]
mov dword [ecx + 0x358], eax
mov edx, dword [ebp - 0x110]
cmp dword [edx + 0x348], 0
je 0x10002dd0
mov eax, dword [ebp - 0x110]
cmp dword [eax + 0x34c], 0
je 0x10002dd0
mov ecx, dword [ebp - 0x110]
cmp dword [ecx + 0x350], 0
je 0x10002dd0
mov edx, dword [ebp - 0x110]
cmp dword [edx + 0x354], 0
je 0x10002dd0
mov eax, dword [ebp - 0x110]
cmp dword [eax + 0x358], 0
jne 0x10002df8
mov ecx, dword [ebp - 0x110]
mov edx, dword [ecx + 0x324]
push edx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov eax, dword [ebp - 0x110]
mov dword [eax + 0x324], 0
jmp 0x10002f80
mov byte [ebp - 0x104], 0
mov ecx, 0x3f
xor eax, eax
lea edi, [ebp - 0x103]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea ecx, [ebp - 0x104]
push ecx
mov edx, dword [ebp - 0x110]
mov eax, dword [edx + 8]
push eax
mov ecx, dword [ebp - 0x110]
call dword [ecx + 0x348]
add esp, 8
mov edx, dword [ebp - 0x110]
mov dword [edx + 0x35c], eax
mov eax, dword [ebp - 0x110]
cmp dword [eax + 0x35c], 0
jne 0x10002e74
mov ecx, dword [ebp - 0x110]
mov edx, dword [ecx + 0x324]
push edx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov eax, dword [ebp - 0x110]
mov dword [eax + 0x324], 0
jmp 0x10002f80
mov ecx, dword [ebp - 0x110]
mov edx, dword [ecx + 0x35c]
push edx
mov eax, dword [ebp - 0x110]
call dword [eax + 0x350]
add esp, 4
mov dword [ebp - 0x108], eax
cmp dword [ebp - 0x108], 0
je 0x10002ef3
mov ecx, dword [ebp - 0x110]
mov edx, dword [ecx + 0x35c]
push edx
mov eax, dword [ebp - 0x110]
call dword [eax + 0x34c]
add esp, 4
mov ecx, dword [ebp - 0x110]
mov dword [ecx + 0x35c], 0
mov edx, dword [ebp - 0x110]
mov eax, dword [edx + 0x324]
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov ecx, dword [ebp - 0x110]
mov dword [ecx + 0x324], 0
jmp 0x10002f80
mov dword [ebp - 0x10c], 0
lea edx, [ebp - 0x10c]
push edx
push 0x83
mov ecx, dword [ebp - 0x110]
call fcn.10003ad8
mov dword [ebp - 0x108], eax
cmp dword [ebp - 0x108], 0
jne 0x10002f63
push 0x100
push 0
mov eax, dword [ebp - 0x110]
add eax, 0x214
push eax
call fcn.1001bb10
add esp, 0xc
push 0x100
mov ecx, dword [ebp - 0x110]
add ecx, 0x214
push ecx
mov edx, dword [ebp - 0x10c]
push edx
mov eax, dword [ebp - 0x10c]
call dword [eax + 0x30]
add esp, 0xc
mov ecx, dword [ebp - 0x110]
mov dword [ecx], 1
mov dword [ebp - 4], 1
xor edx, edx
test edx, edx
jne 0x10002c96
mov eax, dword [ebp - 4]
pop edi
mov esp, ebp
pop ebp
ret 4