Function at 0x402150
Capabilities:
Allocate or change rwx memory
Enumerate process modules
Execute shellcode via indirect call

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x421c75
mov eax, dword fs:[0]
push eax
sub esp, 0x278
mov eax, dword [0x431010]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
sub esp, 0x18
mov byte [ebp - 0x259], 0
mov ecx, esp
xorps xmm0, xmm0
push 0x10
movups xmmword [ecx], xmm0
push str.GeometryDash.exe
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0
call fcn.00402b60
call fcn.00402080
mov esi, eax
add esp, 0x18
test esi, esi
jne 0x4021c4
push str.Could_not_find_Geometry_Dash
call fcn.004010e0
add esp, 4
push esi
push 0
push 0x1fffff
call dword [sym.imp.KERNEL32.dll_OpenProcess]
push esi
mov edi, eax
push 0x18
mov dword [ebp - 0x284], edi
call dword [sym.imp.KERNEL32.dll_CreateToolhelp32Snapshot]
mov esi, eax
mov dword [ebp - 0x258], 0x224
lea eax, [ebp - 0x258]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_Module32First]
test eax, eax
je 0x40224f
mov eax, str.GeometryDash.exe
lea ecx, [ebp - 0x238]
nop dword [eax]
mov dl, byte [ecx]
cmp dl, byte [eax]
jne 0x402230
test dl, dl
je 0x40222c
mov dl, byte [ecx + 1]
cmp dl, byte [eax + 1]
jne 0x402230
add ecx, 2
add eax, 2
test dl, dl
jne 0x402210
xor eax, eax
jmp 0x402235
sbb eax, eax
or eax, 1
test eax, eax
je 0x40242d
lea eax, [ebp - 0x258]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_Module32Next]
test eax, eax
jne 0x402201
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor esi, esi
lea ecx, [ebp - 0x18]
mov dword [ebp - 0x260], esi
push ecx
lea eax, [ebp - 0x12]
mov dword [ebp - 0x2c], 0
push eax
xorps xmm0, xmm0
mov dword [ebp - 0x18], 0x909023eb
push ecx
lea ecx, [ebp - 0x34]
movq qword [ebp - 0x34], xmm0
mov word [ebp - 0x14], 0x9090
call fcn.004025d0
lea ecx, [ebp - 0x268]
mov dword [ebp - 4], 0
push ecx
lea eax, [ebp - 0x262]
mov dword [ebp - 0x20], 0
push eax
xorps xmm0, xmm0
mov dword [ebp - 0x268], 0x78f850f
push ecx
lea ecx, [ebp - 0x28]
movq qword [ebp - 0x28], xmm0
mov word [ebp - 0x264], 0
call fcn.004025d0
mov edx, str.2.2_Noclip_by_CJ_Link_:3_n
mov byte [ebp - 4], 1
call fcn.004026f0
push eax
call fcn.004029d0
mov edx, str.Press_enter_to_toggle_noclip
call fcn.004026f0
push eax
call fcn.004029d0
mov esi, dword [sym.imp.KERNEL32.dll_VirtualProtectEx]
add esp, 8
call fcn.0040bdd9
xor eax, eax
xor edx, edx
cmp byte [ebp - 0x259], al
je 0x40243f
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 0x274], edx
mov dword [ebp - 0x270], eax
mov dword [ebp - 0x26c], eax
sub ecx, dword [ebp - 0x28]
je 0x402361
push ecx
lea ecx, [ebp - 0x274]
call fcn.00403330
mov esi, dword [ebp - 0x24]
mov eax, dword [ebp - 0x28]
sub esi, eax
mov edi, dword [ebp - 0x274]
push esi
push eax
push edi
call fcn.004068a0
mov edx, dword [ebp - 0x274]
lea eax, [esi + edi]
mov edi, dword [ebp - 0x284]
add esp, 0xc
mov dword [ebp - 0x270], eax
mov esi, dword [ebp - 0x260]
lea ecx, [ebp - 0x18]
push ecx
push 0x40
sub eax, edx
add esi, 0x2e0ae5
push eax
push esi
push edi
call dword [sym.imp.KERNEL32.dll_VirtualProtectEx]
mov eax, dword [ebp - 0x270]
mov ecx, dword [ebp - 0x274]
sub eax, ecx
push 0
push eax
push ecx
push esi
push edi
call dword [sym.imp.KERNEL32.dll_WriteProcessMemory]
lea eax, [ebp - 0x18]
push eax
push dword [ebp - 0x18]
mov eax, dword [ebp - 0x270]
sub eax, dword [ebp - 0x274]
push eax
push esi
mov esi, dword [sym.imp.KERNEL32.dll_VirtualProtectEx]
push edi
call esi
mov edx, dword [ebp - 0x274]
test edx, edx
je 0x40240e
mov ecx, dword [ebp - 0x26c]
mov eax, edx
sub ecx, edx
cmp ecx, 0x1000
jb 0x4023e6
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40256c
push ecx
push edx
call fcn.00405452
add esp, 8
mov dword [ebp - 0x274], 0
mov dword [ebp - 0x270], 0
mov dword [ebp - 0x26c], 0
mov edx, str.NoClip_off
call fcn.004026f0
push eax
mov byte [ebp - 0x259], 0
call fcn.004029d0
add esp, 4
jmp 0x4022f8
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov esi, dword [ebp - 0x244]
jmp 0x402258
mov ecx, dword [ebp - 0x30]
mov dword [ebp - 0x280], edx
mov dword [ebp - 0x27c], eax
mov dword [ebp - 0x278], eax
sub ecx, dword [ebp - 0x34]
je 0x402499
push ecx
lea ecx, [ebp - 0x280]
call fcn.00403330
mov esi, dword [ebp - 0x30]
mov eax, dword [ebp - 0x34]
sub esi, eax
mov edi, dword [ebp - 0x280]
push esi
push eax
push edi
call fcn.004068a0
mov edx, dword [ebp - 0x280]
lea eax, [edi + esi]
mov edi, dword [ebp - 0x284]
add esp, 0xc
mov esi, dword [sym.imp.KERNEL32.dll_VirtualProtectEx]
mov dword [ebp - 0x27c], eax
lea ecx, [ebp - 0x1c]
sub eax, edx
push ecx
push 0x40
push eax
mov eax, dword [ebp - 0x260]
add eax, 0x2e0ae5
push eax
push edi
call esi
mov eax, dword [ebp - 0x27c]
mov ecx, dword [ebp - 0x280]
sub eax, ecx
push 0
push eax
mov eax, dword [ebp - 0x260]
push ecx
add eax, 0x2e0ae5
push eax
push edi
call dword [sym.imp.KERNEL32.dll_WriteProcessMemory]
lea eax, [ebp - 0x1c]
push eax
push dword [ebp - 0x1c]
mov eax, dword [ebp - 0x27c]
sub eax, dword [ebp - 0x280]
push eax
mov eax, dword [ebp - 0x260]
add eax, 0x2e0ae5
push eax
push edi
call esi
mov edx, dword [ebp - 0x280]
test edx, edx
je 0x40254d
mov ecx, dword [ebp - 0x278]
mov eax, edx
sub ecx, edx
cmp ecx, 0x1000
jb 0x402525
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40256c
push ecx
push edx
call fcn.00405452
add esp, 8
mov dword [ebp - 0x280], 0
mov dword [ebp - 0x27c], 0
mov dword [ebp - 0x278], 0
mov edx, str.NoClip_on
call fcn.004026f0
push eax
mov byte [ebp - 0x259], 1
call fcn.004029d0
add esp, 4
jmp 0x4022f8
call fcn.0040c013
int3