Function at 0x10002180
Capabilities:
Allocate or change rwx memory
Execute shellcode via indirect call
Link many functions at runtime

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
mov eax, dword [0x100220c0]
xor eax, ebp
mov dword [ebp - 4], eax
push esi
mov esi, dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push ebx
push edi
nop dword [eax]
push 0x1001d3f4
call esi
mov ebx, eax
test ebx, ebx
je 0x100021a0
mov edi, ebx
xor esi, esi
sub edi, str.xx____xx____xx
mov dword [ebp - 0xc], edi
nop word [eax + eax]
lea eax, [esi + ebx]
mov edx, 0x1001d410
mov dword [ebp - 8], eax
mov cl, 0x78
mov eax, str.xx____xx____xx
add edi, esi
cmp cl, 0x78
jne 0x100021e4
mov cl, byte [edi + eax]
cmp cl, byte [edx]
jne 0x10002352
mov cl, byte [eax + 1]
inc eax
inc edx
test cl, cl
jne 0x100021d4
mov ecx, dword [ebp - 8]
mov ecx, dword [ecx + 2]
mov ebx, dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push str.D3DXCreateFontA
push str.d3dx9_38.dll
mov eax, dword [ecx + 0xa8]
mov dword [0x1003b69c], eax
mov eax, dword [ecx + 0xc]
mov dword [0x1003b6ac], eax
mov eax, dword [ecx + 0x1c]
mov dword [0x1003b6b0], eax
mov eax, dword [ecx + 0xe4]
mov dword [0x1003b6a0], eax
mov eax, dword [ecx + 0x164]
mov dword [0x1003b6a4], eax
mov eax, dword [ecx + 0xc0]
mov dword [0x1003b6a8], eax
mov eax, dword [ecx + 0x68]
mov dword [0x1003b6b8], eax
mov eax, dword [ecx + 0x148]
mov dword [0x1003b6bc], eax
mov eax, dword [ecx + 0x40]
mov dword [0x1003b6c0], eax
call ebx
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push eax
call esi
mov dword [0x1003b5cc], eax
add eax, 5
push str.D3DXCreateLine
push str.d3dx9_38.dll
mov dword [0x1003b6e0], eax
call ebx
push eax
call esi
mov dword [0x11dcf78c], eax
add eax, 5
push 0x1001d450
push str.user32.dll
mov dword [0x1003b6f0], eax
call ebx
push eax
call esi
mov dword [0x1003b26c], eax
add eax, 5
push 0x1001d470
push str.user32.dll
mov dword [0x1003b5e4], eax
call ebx
push eax
call esi
mov dword [0x11dcfa90], eax
add eax, 5
push 0x1001d47c
push str.user32.dll
mov dword [0x1003b17c], eax
call ebx
push eax
call esi
mov dword [0x11dcf744], eax
add eax, 5
push str.D3DXCreateTexture
push str.d3dx9_38.dll
mov dword [0x1003b20c], eax
call ebx
push eax
call esi
mov dword [0x1003b620], eax
add eax, 5
push str.GetModuleInformation
push str.kernelbase.dll
mov dword [0x1003afcc], eax
call ebx
push eax
call esi
mov esi, eax
pop edi
pop ebx
mov al, byte [esi]
cmp al, 0x6a
je 0x10002369
cmp al, 0x55
je 0x10002369
lea eax, [ebp - 8]
push eax
push 0x40
push 0xa
push 0x11dcfa20
call dword [sym.imp.KERNEL32.dll_VirtualProtect]
mov eax, dword [esi]
mov dword [0x11dcfa20], eax
mov al, byte [esi + 4]
sub esi, 0x11dcfa25
mov byte [0x11dcfa24], al
mov byte [0x11dcfa25], 0xe9
mov dword [0x11dcfa26], esi
jmp 0x100023ab
mov edi, dword [ebp - 0xc]
inc esi
cmp esi, 0x128000
jb 0x100021c0
xor ecx, ecx
jmp 0x100021f0
lea eax, [ebp - 8]
push eax
push 0x40
push 0xc
push 0x11dcfa20
call dword [sym.imp.KERNEL32.dll_VirtualProtect]
mov eax, dword [esi]
mov dword [0x11dcfa20], eax
mov ax, word [esi + 4]
mov word [0x11dcfa24], ax
mov al, byte [esi + 6]
sub esi, 0x11dcfa27
add esi, 2
mov byte [0x11dcfa26], al
mov byte [0x11dcfa27], 0xe9
mov dword [0x11dcfa28], esi
push dword [0x1003b69c]
push str.AddressDirect3D::dwEndScene_:__p_n
call fcn.10002020
push dword [0x1003b6ac]
push str.AddressDirect3D::dwTestCooperative_:__p_n
call fcn.10002020
push dword [0x1003b6b0]
push str.AddressDirect3D::dwDeviceCaps_:__p_n
call fcn.10002020
push dword [0x1003b6a0]
push str.AddressDirect3D::dwSetRender_:__p_n
call fcn.10002020
push dword [0x1003b6a4]
push str.AddressDirect3D::dwSetFVF_:__p_n
call fcn.10002020
push dword [0x1003b6a8]
push str.AddressDirect3D::dwGetViewPort_:__p_n
call fcn.10002020
push dword [0x1003b6b8]
push str.AddressDirect3D::dwVertextBuffer_:__p_n
call fcn.10002020
push dword [0x1003b6bc]
push str.AddressDirect3D::IndexPrimeWH_:__p_n
call fcn.10002020
mov ecx, dword [ebp - 4]
add esp, 0x40
xor ecx, ebp
pop esi
call fcn.10019955
mov esp, ebp
pop ebp
ret