Function at 0x405230
Capabilities:
Create process on windows
Create process suspended
Create thread
Inject thread
Resume thread
Use process replacement

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4072f4
mov eax, dword fs:[0]
push eax
sub esp, 0x108
mov eax, dword [0x40b040]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
push 0xfffffffffffffffc
mov dword [ebp - 0xd0], 0
call dword [sym.imp.USER32.dll_SetProcessDpiAwarenessContext]
mov byte [ebp - 0xd8], 0
lea eax, [ebp - 0x28]
push dword [ebp - 0xd8]
push 0xa
push str.Indy3D.exe
push eax
call fcn.00401420
mov eax, 1
add esp, 0x10
mov dword [ebp - 0xd8], eax
mov dword [ebp - 4], 0
cmp dword [ebp + 8], eax
jle 0x4052fa
mov eax, dword [ebp + 0xc]
mov byte [ebp - 0xd8], 0
mov edx, dword [eax + 4]
mov ecx, edx
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4052b8
push dword [ebp - 0xd8]
sub ecx, esi
lea eax, [ebp - 0x70]
push ecx
push edx
push eax
call fcn.00401420
add esp, 0x10
lea ecx, [ebp - 0x28]
mov eax, 3
mov dword [ebp - 0xd8], eax
call fcn.004032b0
movups xmm0, xmmword [ebp - 0x70]
movups xmmword [ebp - 0x28], xmm0
movq xmm0, qword [ebp - 0x60]
movq qword [ebp - 0x18], xmm0
lea eax, [ebp - 0xd4]
mov dword [ebp - 0xd4], 0
push eax
lea eax, [ebp - 0x28]
mov dword [ebp - 0xd0], 0x40b008
push eax
call fcn.00403a30
add esp, 8
cmp dword [ebp - 0xd4], 0
jne 0x4059f8
test al, al
jne 0x405540
cmp dword [ebp - 0x14], 7
lea esi, [ebp - 0x28]
push 2
cmova esi, dword [ebp - 0x28]
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll___acrt_iob_func]
push esi
push str.Cant_find__ls_to_inject_DLL__n
push eax
call fcn.00405200
add esp, 0x10
lea eax, [ebp - 0x28]
lea ecx, [ebp - 0x70]
push eax
call fcn.00401e40
push 6
push str.File_
push 0
lea ecx, [ebp - 0x70]
mov byte [ebp - 4], 1
call fcn.00403b10
mov dword [ebp - 0xfc], 0
xorps xmm0, xmm0
movups xmmword [ebp - 0x10c], xmm0
mov dword [ebp - 0xf8], 0
xor ecx, ecx
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x10c], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0xfc], xmm0
mov dword [eax + 0x14], 7
mov dword [eax + 0x10], 0
mov word [eax], cx
push str._doesnt_exist_
lea ecx, [ebp - 0x10c]
mov byte [ebp - 4], 2
call fcn.00403820
mov dword [ebp - 0xe4], 0
xorps xmm0, xmm0
movups xmmword [ebp - 0xf4], xmm0
mov dword [ebp - 0xe0], 0
xor ecx, ecx
movups xmm0, xmmword [eax]
push 0x10
push str.Jones3D_Error
movups xmmword [ebp - 0xf4], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0xe4], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 7
mov word [eax], cx
lea eax, [ebp - 0xf4]
cmp dword [ebp - 0xe0], 7
cmova eax, dword [ebp - 0xf4]
push eax
push ecx
call dword [sym.imp.USER32.dll_MessageBoxW]
mov ecx, dword [ebp - 0xe0]
cmp ecx, 7
jbe 0x405480
mov edx, dword [ebp - 0xf4]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x405476
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x405526
push ecx
push edx
call fcn.00405ffa
add esp, 8
mov ecx, dword [ebp - 0xf8]
xor eax, eax
mov dword [ebp - 0xe4], 0
mov dword [ebp - 0xe0], 7
mov word [ebp - 0xf4], ax
cmp ecx, 7
jbe 0x4054d9
mov edx, dword [ebp - 0x10c]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x4054cf
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x405526
push ecx
push edx
call fcn.00405ffa
add esp, 8
mov ecx, dword [ebp - 0x5c]
xor eax, eax
mov dword [ebp - 0xfc], 0
mov dword [ebp - 0xf8], 7
mov word [ebp - 0x10c], ax
cmp ecx, 7
jbe 0x405630
mov edx, dword [ebp - 0x70]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x40552c
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x40552c
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push ecx
push edx
call fcn.00405ffa
add esp, 8
mov esi, 1
jmp 0x4059d3
mov eax, dword [0x4084ac]
mov esi, dword [str.3fbaf8cd401b4af80967cbe42e3420fb803288b336ebbe72a9a01b6dfd661a53]
mov dword [ebp - 0xd0], eax
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x74]
push eax
call fcn.004029b0
add esp, 8
cmp byte [ebp - 0x5c], 0
jne 0x405578
lea ecx, [ebp - 0x74]
mov byte [ebp - 4], 0
call fcn.004025e0
jmp 0x4055fa
cmp dword [ebp - 0x60], 0xf
lea edi, [ebp - 0x74]
mov eax, dword [ebp - 0x64]
cmova edi, dword [ebp - 0x74]
mov dword [ebp - 0xdc], eax
cmp eax, dword [ebp - 0xd0]
je 0x40559d
mov byte [ebp - 0xc9], 0
jmp 0x4055e5
test eax, eax
je 0x4055de
sub esi, edi
mov dword [ebp - 0xd0], esi
nop dword [eax]
movzx eax, byte [esi + edi]
push eax
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_tolower]
movzx ecx, byte [edi]
mov esi, eax
push ecx
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_tolower]
add esp, 8
cmp eax, esi
jne 0x405594
mov esi, dword [ebp - 0xd0]
inc edi
sub dword [ebp - 0xdc], 1
jne 0x4055b0
mov byte [ebp - 0xc9], 1
lea ecx, [ebp - 0x74]
mov byte [ebp - 4], 0
call fcn.004025e0
cmp byte [ebp - 0xc9], 0
jne 0x40563a
cmp dword [ebp - 0x14], 7
lea esi, [ebp - 0x28]
push 2
cmova esi, dword [ebp - 0x28]
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll___acrt_iob_func]
push esi
push str.Invalid_Indy3D_exe_to_inject_DLL:__ls._n
push eax
call fcn.00405200
add esp, 0x10
push 0x10
push str.Jones3D_Error
push str.Only_Indy3D.exe_version_1.0_is_supported_
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
mov esi, 1
jmp 0x4059d3
mov byte [ebp - 0xd0], 0
lea eax, [ebp - 0x58]
push dword [ebp - 0xd0]
push 0xb
push str.Jones3D.dll
push eax
call fcn.00401420
mov esi, dword [ebp - 0xd8]
or esi, 0x20
lea eax, [ebp - 0xd4]
mov byte [ebp - 4], 4
push eax
lea eax, [ebp - 0x58]
mov dword [ebp - 0xd4], 0
push eax
mov dword [ebp - 0xd0], 0x40b008
call fcn.00403a30
add esp, 0x18
cmp dword [ebp - 0xd4], 0
jne 0x405a0d
test al, al
jne 0x4056dc
cmp dword [ebp - 0x44], 7
lea esi, [ebp - 0x58]
push 2
cmova esi, dword [ebp - 0x58]
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll___acrt_iob_func]
push esi
push str.Cant_find__ls._n
push eax
call fcn.00405200
add esp, 0x10
push 0x10
push str.Jones3D_Error
push str.Cant_find_Jones3D.dll_
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
mov esi, 1
jmp 0x4059cb
cmp dword [ebp - 0x44], 7
lea ecx, [ebp - 0x58]
mov eax, dword [ebp - 0x48]
cmova ecx, dword [ebp - 0x58]
mov dword [ebp - 0xdc], ecx
mov dword [ebp - 0xd8], eax
xorps xmm0, xmm0
mov byte [ebp - 4], 5
xor edi, edi
mov dword [ebp - 0x2c], 0xf
or esi, 0x80
mov dword [ebp - 0x30], edi
mov dword [ebp - 0xd0], esi
movups xmmword [ebp - 0x40], xmm0
mov byte [ebp - 0x40], 0
test eax, eax
je 0x40579b
cmp eax, 0x7fffffff
ja 0x405a22
push edi
push edi
push eax
push ecx
push 0xfde9
call fcn.00405b72
mov esi, eax
test edx, edx
jne 0x405a29
mov ecx, dword [ebp - 0x30]
cmp esi, ecx
ja 0x40575e
cmp dword [ebp - 0x2c], 0xf
lea eax, [ebp - 0x40]
mov dword [ebp - 0x30], esi
cmova eax, dword [ebp - 0x40]
mov byte [eax + esi], dl
jmp 0x40576d
mov eax, esi
sub eax, ecx
lea ecx, [ebp - 0x40]
push 0
push eax
call fcn.00403630
cmp dword [ebp - 0x2c], 0xf
lea eax, [ebp - 0x40]
push esi
cmova eax, dword [ebp - 0x40]
push eax
push dword [ebp - 0xd8]
push dword [ebp - 0xdc]
push 0xfde9
call fcn.00405b72
test edx, edx
jne 0x405a2f
mov edi, dword [ebp - 0x30]
cmp dword [ebp - 0x14], 7
lea ecx, [ebp - 0xc8]
push ecx
lea ecx, [ebp - 0xb8]
mov dword [ebp - 0xb8], 0x44
push ecx
push 0
push 0
push 4
push 0
xorps xmm0, xmm0
lea eax, [ebp - 0x28]
cmova eax, dword [ebp - 0x28]
push 0
push 0
push 0
push eax
movlpd qword [ebp - 0xb4], xmm0
movlpd qword [ebp - 0xac], xmm0
movlpd qword [ebp - 0xa4], xmm0
movlpd qword [ebp - 0x9c], xmm0
movlpd qword [ebp - 0x94], xmm0
movlpd qword [ebp - 0x8c], xmm0
movlpd qword [ebp - 0x84], xmm0
movlpd qword [ebp - 0x7c], xmm0
movups xmmword [ebp - 0xc8], xmm0
call dword [sym.imp.KERNEL32.dll_CreateProcessW]
test eax, eax
jne 0x405867
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp dword [ebp - 0x14], 7
lea edi, [ebp - 0x28]
push 2
cmova edi, dword [ebp - 0x28]
mov esi, eax
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll___acrt_iob_func]
push esi
push edi
push str.CreateProcess___ls___failed__error_code__0x_08X_n
push eax
call fcn.00405200
add esp, 0x14
push 0x10
push str.Jones3D_Error
push str.Failed_to_start_Indy3D.exe_
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
mov esi, 1
jmp 0x4059c3
push 4
push 0x3000
push edi
push 0
push dword [ebp - 0xc8]
call dword [sym.imp.KERNEL32.dll_VirtualAllocEx]
mov esi, eax
test esi, esi
jne 0x40589e
call dword [sym.imp.KERNEL32.dll_GetLastError]
push 2
mov esi, eax
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll___acrt_iob_func]
push esi
push str.VirtualAllocEx_failed__error_code__0x_08X_n
jmp 0x405968
cmp dword [ebp - 0x2c], 0xf
lea eax, [ebp - 0x40]
push 0
cmova eax, dword [ebp - 0x40]
push edi
push eax
push esi
push dword [ebp - 0xc8]
call dword [sym.imp.KERNEL32.dll_WriteProcessMemory]
test eax, eax
jne 0x4058d9
call dword [sym.imp.KERNEL32.dll_GetLastError]
push 2
mov esi, eax
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll___acrt_iob_func]
push esi
push str.WriteProcessMemory_failed__error_code__0x_08X_n
jmp 0x405968
push 0
push 0
push esi
push dword [sym.imp.KERNEL32.dll_LoadLibraryA]
push 0
push 0
push dword [ebp - 0xc8]
call dword [sym.imp.KERNEL32.dll_CreateRemoteThread]
mov edi, eax
test edi, edi
jne 0x405912
call dword [sym.imp.KERNEL32.dll_GetLastError]
push 2
mov esi, eax
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll___acrt_iob_func]
push esi
push str.CreateRemoteThread_failed__error_code__0x_08X_n
jmp 0x405968
push 0xffffffffffffffff
push edi
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0xffffffff
jne 0x405938
call dword [sym.imp.KERNEL32.dll_GetLastError]
push 2
mov esi, eax
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll___acrt_iob_func]
push esi
push str.WaitForSingleObject_failed__error_code__0x_08X_n
jmp 0x405968
push edi
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
call edi
push dword [ebp - 0xc4]
call dword [sym.imp.KERNEL32.dll_ResumeThread]
cmp eax, 0xffffffff
jne 0x40598c
call dword [sym.imp.KERNEL32.dll_GetLastError]
push 2
mov esi, eax
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll___acrt_iob_func]
push esi
push str.ResumeThread_failed__error_code__0x_08X_n
push eax
call fcn.00405200
add esp, 0x10
push 0x10
push str.Jones3D_Error
push str.Failed_to_inject_Jones3D.dll_
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
mov esi, 1
jmp 0x4059c3
push 0x8000
push 0
push esi
push dword [ebp - 0xc8]
call dword [sym.imp.KERNEL32.dll_VirtualFreeEx]
push dword [ebp - 0xc8]
call edi
cmp dword [ebp - 0x44], 7
lea eax, [ebp - 0x58]
cmova eax, dword [ebp - 0x58]
push eax
push str._ls_successfully_injected__n
call fcn.00405a40
add esp, 8
xor esi, esi
lea ecx, [ebp - 0x40]
call fcn.00402580
lea ecx, [ebp - 0x58]
call fcn.004032b0
lea ecx, [ebp - 0x28]
call fcn.004032b0
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00406008
mov esp, ebp
pop ebp
ret
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0xd4]
push eax
push str.exists
call fcn.004031c0
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0xd4]
push eax
push str.exists
call fcn.004031c0
push 0x16
call fcn.00403230
push edx
call fcn.00403270
push edx
call fcn.00403270
int3