Function at 0x10001000
Capabilities:
Extract resource via kernel32 functions
Link many functions at runtime
Terminate process

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
mov eax, dword [0x10013004]
xor eax, ebp
mov dword [ebp - 4], eax
cmp dword [ebp + 0xc], 1
push esi
push edi
mov edi, dword [ebp + 8]
jne 0x100011e2
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
test eax, eax
je 0x1000124a
cmp dword [eax + 0x10000], 0x1b786814
jne 0x1000124a
cmp dword [eax + 0x10004], 0x4c8d0050
jne 0x1000124a
cmp word [eax + 0x10008], 0x1b24
jne 0x1000124a
mov ecx, str.DDRAW.dll
mov eax, 0x4ff618
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x10001088
test dl, dl
je 0x10001084
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x10001088
add eax, 2
add ecx, 2
test dl, dl
jne 0x10001068
xor eax, eax
jmp 0x1000108d
sbb eax, eax
or eax, 1
test eax, eax
je 0x100010ab
cmp byte [0x49e9c0], 3
jne 0x100011f9
cmp byte [0x49e9c9], 1
jne 0x100011f9
push ebx
push 0xa
push 0x3e8
push edi
call dword [sym.imp.KERNEL32.dll_FindResourceA]
mov esi, eax
test esi, esi
je 0x10001142
push esi
push edi
call dword [sym.imp.KERNEL32.dll_LoadResource]
push esi
push edi
mov ebx, eax
call dword [sym.imp.KERNEL32.dll_SizeofResource]
mov edi, eax
test ebx, ebx
je 0x10001142
test edi, edi
je 0x10001142
push ebx
call dword [sym.imp.KERNEL32.dll_LockResource]
mov ebx, eax
test ebx, ebx
je 0x10001142
xor edx, edx
mov ecx, edi
add ecx, 0xa
setb dl
neg edx
or edx, ecx
push edx
push 1
call fcn.10003aab
mov esi, eax
add esp, 8
test esi, esi
je 0x10001142
push edi
push ebx
push esi
call fcn.10002e00
mov ecx, esi
mov dword [ebp - 0xc], esi
add esp, 0xc
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10001120
sub ecx, edx
sub esp, 8
lea edx, [ebp - 0xc]
mov dword [ebp - 8], ecx
call fcn.10001380
push esi
call fcn.10003e6a
add esp, 0xc
jmp 0x10001149
mov byte [0x100142a0], 0x78
mov ebx, dword [sym.imp.KERNEL32.dll_LoadLibraryA]
push str.tplayx.dll
call ebx
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov edi, eax
test edi, edi
je 0x100011ca
push 0x10011e3c
push edi
call esi
push 0x10011e50
push edi
mov dword [0x100144bc], eax
call esi
push 0x10011e68
push edi
mov dword [0x100144b0], eax
call esi
push 0x10011e80
push edi
mov dword [0x100144c0], eax
call esi
push 0x10011e98
push edi
mov dword [0x100144ac], eax
call esi
push 0x10011eb0
push edi
mov dword [0x100144a4], eax
call esi
push 0x10011ec4
push edi
mov dword [0x100144b4], eax
call esi
push 0x10011ed4
push edi
mov dword [0x100144a0], eax
call esi
mov dword [0x100144a8], eax
push str.tdraw.dll
call ebx
pop ebx
test eax, eax
je 0x10001214
push str.DirectDrawCreate
push eax
call esi
test eax, eax
je 0x1000122f
mov ecx, dword [ebp - 4]
mov eax, 1
pop edi
xor ecx, ebp
pop esi
call fcn.100018e5
mov esp, ebp
pop ebp
ret 0xc
push 0
push str.Total_Annihilation_Community_Patch
push str.Incompatible_game_files_detected._You_cannot_mix_different_versions_of_the_Community_Patch._nPlease_perform_a_clean_re_install_of_Total_Annihilation_3.1_and_then_apply_the_latest_Community_Patch_again.
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
push 1
call fcn.10003851
push 0
push str.Total_Annihilation_Community_Patch
push str.tdraw.dll_not_found__please_re_install_the_Total_Annihilation_Community_Patch.
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
push 1
call fcn.10003851
push 0
push str.Total_Annihilation_Community_Patch
push str.Incompatible_tdraw.dll_found__please_re_install_the_Total_Annihilation_Community_Patch.
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
push 1
call fcn.10003851
push 0
push str.Total_Annihilation_Community_Patch
push str.Game_version_not_supported._Please_install_the_official_3.1_patch_and_then_try_again.
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
push 1
call fcn.10003851
int3