Function at 0x403a40
Capabilities:
Link many functions at runtime

Disassembly:
push ebp
mov ebp, esp
sub esp, 8
xor eax, eax
push ebx
push esi
push edi
sub esp, 0x18
mov ecx, esp
push 0xe
mov dword [ecx + 0x14], 7
mov dword [ecx + 0x10], 0
push str.Loading_AddIn_n
mov word [ecx], ax
call fcn.004054c0
push 0x8000
call fcn.0042fa30
mov edi, dword [ebp + 8]
add esp, 0x1c
test edi, edi
je 0x403df1
mov eax, dword [ebp + 0x10]
test eax, eax
je 0x403df1
mov ebx, dword [ebp + 0xc]
lea esi, [edi + 8]
push esi
mov dword [edi + 4], ebx
call eax
mov eax, dword [esi]
test eax, eax
je 0x403abf
push eax
sub esp, 0x18
mov ecx, esp
push str.Loading___ws__n
call fcn.00402ad0
push 0x8000
call fcn.0042fa30
add esp, 0x20
push ebx
call fcn.00403340
add esp, 4
mov dword [ebp - 4], eax
push eax
sub esp, 0x18
mov ecx, esp
push str.AddIn_version___u_n
call fcn.00402ad0
push 0x8000
call fcn.0042fa30
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
add esp, 0x20
push str.GetMenus
push ebx
call esi
mov ecx, eax
test ecx, ecx
jne 0x403b16
push str._LPGETMENUS_GetProcAddress_hMod__szGetMenus_
push 0x76
push str.AddIns.cpp
push eax
call fcn.00409b10
add esp, 0x10
jmp 0x403c55
lea esi, [edi + 0x14]
lea eax, [edi + 0x10]
push esi
push eax
call ecx
cmp dword [edi + 0x10], 0
je 0x403b2b
cmp dword [esi], 0
jne 0x403b54
sub esp, 0x18
mov ecx, esp
push str.AddIn_returned_invalid_menus_n
call fcn.00402ad0
push 0x8000
call fcn.0042fa30
add esp, 0x1c
mov dword [edi + 0x10], 0
mov dword [esi], 0
mov eax, dword [edi + 0x10]
test eax, eax
je 0x403c4f
cmp dword [esi], 0
je 0x403c4f
mov dword [ebp + 8], 0
test eax, eax
je 0x403c4f
xor ebx, ebx
lea esp, [esp]
mov eax, dword [esi]
mov dword [ebx + eax + 0x14], edi
mov eax, dword [esi]
mov eax, dword [ebx + eax]
test eax, eax
je 0x403bac
push eax
sub esp, 0x18
mov ecx, esp
push str.Menu:__ws_n
call fcn.00402ad0
push 0x8000
call fcn.0042fa30
add esp, 0x20
mov eax, dword [esi]
mov eax, dword [ebx + eax + 4]
test eax, eax
je 0x403bd3
push eax
sub esp, 0x18
mov ecx, esp
push str.Help:__ws_n
call fcn.00402ad0
push 0x8000
call fcn.0042fa30
add esp, 0x20
mov eax, dword [esi]
push dword [ebx + eax + 0x10]
sub esp, 0x18
mov ecx, esp
push str.ID:_0x_08X_n
call fcn.00402ad0
push 0x8000
call fcn.0042fa30
mov eax, dword [esi]
add esp, 0x20
push dword [ebx + eax + 8]
sub esp, 0x18
mov ecx, esp
push str.Context:_0x_08X_n
call fcn.00402ad0
push 0x8000
call fcn.0042fa30
mov eax, dword [esi]
add esp, 0x20
push dword [ebx + eax + 0xc]
sub esp, 0x18
mov ecx, esp
push str.Flags:_0x_08X_n
call fcn.00402ad0
push 0x8000
call fcn.0042fa30
mov ecx, dword [ebp + 8]
add esp, 0x20
inc ecx
add ebx, 0x18
mov dword [ebp + 8], ecx
cmp ecx, dword [edi + 0x10]
jb 0x403b80
mov ebx, dword [ebp + 0xc]
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.GetPropTagsV2
push ebx
mov dword [edi + 0x50], 0
call esi
mov ecx, eax
test ecx, ecx
jne 0x403c99
push str._LPGETPROPTAGSV2_GetProcAddress_hMod__szGetPropTagsV2_
push 0x95
push str.AddIns.cpp
push eax
call fcn.00409b10
lea eax, [edi + 0x1c]
push eax
lea eax, [edi + 0x18]
push eax
push ebx
call fcn.00403990
add esp, 0x1c
mov dword [edi + 0x50], 1
jmp 0x403ca3
lea eax, [edi + 0x1c]
push eax
lea eax, [edi + 0x18]
push eax
call ecx
push str.GetPropTypes
push ebx
call esi
mov ecx, eax
test ecx, ecx
jne 0x403ccb
push str._LPGETPROPTYPES_GetProcAddress_hMod__szGetPropTypes_
push 0xa2
push str.AddIns.cpp
push eax
call fcn.00409b10
add esp, 0x10
jmp 0x403cd5
lea eax, [edi + 0x24]
push eax
lea eax, [edi + 0x20]
push eax
call ecx
push str.GetPropGuids
push ebx
call esi
mov ecx, eax
test ecx, ecx
jne 0x403cfd
push str._LPGETPROPGUIDS_GetProcAddress_hMod__szGetPropGuids_
push 0xaa
push str.AddIns.cpp
push eax
call fcn.00409b10
add esp, 0x10
jmp 0x403d07
lea eax, [edi + 0x2c]
push eax
lea eax, [edi + 0x28]
push eax
call ecx
cmp dword [ebp - 4], 2
jb 0x403d3f
push str.GetNameIDs
push ebx
call esi
mov ecx, eax
test ecx, ecx
jne 0x403d35
push str._LPGETNAMEIDS_GetProcAddress_hMod__szGetNameIDs_
push 0xb5
push str.AddIns.cpp
push eax
call fcn.00409b10
add esp, 0x10
jmp 0x403d3f
lea eax, [edi + 0x34]
push eax
lea eax, [edi + 0x30]
push eax
call ecx
push str.GetPropFlags
push ebx
call esi
mov ecx, eax
test ecx, ecx
jne 0x403d67
push str._LPGETPROPFLAGS_GetProcAddress_hMod__szGetPropFlags_
push 0xbe
push str.AddIns.cpp
push eax
call fcn.00409b10
add esp, 0x10
jmp 0x403d71
lea eax, [edi + 0x3c]
push eax
lea eax, [edi + 0x38]
push eax
call ecx
push str.GetSmartViewParserArray
push ebx
call esi
mov ecx, eax
test ecx, ecx
jne 0x403d99
push str._LPGETSMARTVIEWPARSERARRAY_GetProcAddress_hMod__szGetSmartViewParserArray_
push 0xc6
push str.AddIns.cpp
push eax
call fcn.00409b10
add esp, 0x10
jmp 0x403da3
lea eax, [edi + 0x44]
push eax
lea eax, [edi + 0x40]
push eax
call ecx
push str.GetSmartViewParserTypeArray
push ebx
call esi
mov ecx, eax
test ecx, ecx
jne 0x403dcb
push str._LPGETSMARTVIEWPARSERTYPEARRAY_GetProcAddress_hMod__szGetSmartViewParserTypeArray_
push 0xce
push str.AddIns.cpp
push eax
call fcn.00409b10
add esp, 0x10
jmp 0x403dd5
lea eax, [edi + 0x4c]
push eax
lea eax, [edi + 0x48]
push eax
call ecx
sub esp, 0x18
mov ecx, esp
push str.Done_loading_AddIn_n
call fcn.00402ad0
push 0x8000
call fcn.0042fa30
add esp, 0x1c
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret