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

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x100bf20d
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x18
push esi
push edi
mov eax, dword [0x1010d024]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ecx, dword [0x1010f088]
push str._0XD3F__installing_hooks..._n
push ecx
mov eax, dword [ecx]
call dword [eax + 0x1c]
add esp, 8
mov edx, 0x1005c200
mov ecx, str.snapshot
call fcn.1005c4c0
test al, al
je 0x1005a550
mov edx, 0x1005c210
mov ecx, str.screenshot
call fcn.1005c4c0
test al, al
je 0x1005a550
mov edx, 0x1005c220
mov ecx, 0x100ddae4
call fcn.1005c4c0
test al, al
je 0x1005a550
mov edx, 0x1005c2e0
mov ecx, str._jump
call fcn.1005c4c0
test al, al
je 0x1005a550
mov edx, 0x1005c3c0
mov ecx, 0x100ddbf8
call fcn.1005c4c0
test al, al
je 0x1005a550
cmp dword [0x1010f2cc], 0
je 0x1005a550
mov edx, 0x1005eab0
mov ecx, str.ResetHUD
call fcn.1005f360
test al, al
je 0x1005a550
mov edx, 0x1005e860
mov ecx, str.BombDrop
call fcn.1005f360
test al, al
je 0x1005a550
mov edx, 0x1005ec30
mov ecx, str.Battery
call fcn.1005f360
test al, al
je 0x1005a550
mov edx, 0x1005ed50
mov ecx, str.Health
call fcn.1005f360
test al, al
je 0x1005a550
mov edx, 0x1005ee70
mov ecx, str.DeathMsg
call fcn.1005f360
test al, al
je 0x1005a550
mov edx, 0x1005e590
mov ecx, str.SetFOV
call fcn.1005f360
test al, al
je 0x1005a550
mov edx, 0x1005e6b0
mov ecx, str.TeamInfo
call fcn.1005f360
test al, al
je 0x1005a550
mov edx, 0x1005e410
mov ecx, str.MOTD
call fcn.1005f360
test al, al
je 0x1005a550
mov edx, 0x1005e2b0
mov ecx, str.ScoreAttrib
call fcn.1005f360
test al, al
je 0x1005a550
mov edx, 0x1005f0f0
mov ecx, str.Damage
call fcn.1005f360
test al, al
je 0x1005a550
mov edx, 0x1005f280
mov ecx, str.HideWeapon
call fcn.1005f360
test al, al
je 0x1005a550
mov ecx, 0x1010f278
mov byte [0x10133449], 1
call fcn.1005dbe0
test al, al
je 0x1005a550
cmp dword [0x1010f270], 0
je 0x1005a4ca
mov edx, 0x1005caa0
mov ecx, 0x39
call fcn.1005d140
test al, al
je 0x1005a550
mov edx, 0x1005cd10
mov ecx, 0x3a
call fcn.1005d140
test al, al
je 0x1005a550
mov edx, 0x1005cfa0
mov ecx, 0x29
call fcn.1005d140
test al, al
je 0x1005a550
mov edx, 0x1005d0d0
mov ecx, 9
call fcn.1005d140
test al, al
je 0x1005a550
mov edi, dword [0x1010f274]
mov byte [0x1010f26c], 1
test edi, edi
je 0x1005a550
nop dword [eax + eax]
mov eax, dword [edi + 4]
mov ecx, str.events_createsmoke.sc
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1005a508
test dl, dl
je 0x1005a504
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1005a508
add eax, 2
add ecx, 2
test dl, dl
jne 0x1005a4e8
xor eax, eax
jmp 0x1005a50d
sbb eax, eax
or eax, 1
test eax, eax
je 0x1005a566
mov edi, dword [edi]
test edi, edi
jne 0x1005a4e0
push str.events_createsmoke.sc
push str.HookEventMsg
push str.___s:_failed_to_hook__s._n
call fcn.100afcd0
mov ecx, dword [0x1010f088]
add esp, 0xc
test ecx, ecx
je 0x1005a550
mov eax, dword [ecx]
push str.events_createsmoke.sc
push str.HookEventMsg
push str.___s:_failed_to_hook__s._n
push ecx
call dword [eax + 0x1c]
add esp, 0x10
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
mov esi, dword [edi + 8]
lea ecx, [ebp - 0x28]
push 0x15
xorps xmm0, xmm0
mov dword [ebp - 0x18], 0
push str.events_createsmoke.sc
movups xmmword [ebp - 0x28], xmm0
mov dword [ebp - 0x14], 0
call fcn.100444b0
lea eax, [ebp - 0x28]
mov dword [ebp - 4], 0
push eax
call fcn.1005d9e0
mov dword [ebp - 4], 0xffffffff
mov dword [eax], esi
mov ecx, dword [ebp - 0x14]
cmp ecx, 0x10
jb 0x1005a5dc
mov edx, dword [ebp - 0x28]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x1005a5d2
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x1005a5d2
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push ecx
push edx
call fcn.100bd366
add esp, 8
push 0x10059dc0
push 0xfffffffffffffffc
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0xf
mov byte [ebp - 0x28], 0
mov dword [edi + 8], 0x1005d910
push dword [0x1010d714]
mov byte [0x10133448], 1
call dword [sym.imp.USER32.dll_SetWindowLongA]
mov dword [0x1010f2d0], eax
test eax, eax
jne 0x1005a650
push str.InstallHooks
push str._s:_windowproc_not_hooked._n
call fcn.100afcd0
mov ecx, dword [0x1010f088]
add esp, 8
test ecx, ecx
je 0x1005a550
mov eax, dword [ecx]
push str.InstallHooks
push str._s:_windowproc_not_hooked._n
push ecx
call dword [eax + 0x1c]
add esp, 0xc
jmp 0x1005a550
mov eax, dword [0x1010f038]
test eax, eax
je 0x1005a674
push fcn.10059e40
push eax
mov ecx, 0x1012c20c
call fcn.1005b880
push ecx
mov ecx, 0x1012c20c
call fcn.1005b560
mov eax, dword [0x1010f1b8]
mov edi, dword [sym.imp.KERNEL32.dll_VirtualProtect]
push 0x10128c20
push 0x40
mov dword [eax + 0x84], 0x10055f00
mov dword [eax + 0x80], 0x100596e0
mov dword [eax + 0x1c], 0x100594b0
mov dword [eax + 0x64], 0x100565f0
mov dword [eax + 0xc], 0x10056a00
mov dword [eax + 0x5c], 0x100566f0
mov dword [eax + 0x38], 0x10056220
mov dword [eax + 0x3c], 0x100594d0
mov dword [eax + 0x4c], 0x10057c60
mov dword [eax + 0x88], 0x10059700
mov dword [eax + 0x68], 0x10059b50
mov eax, dword [0x1010f0fc]
push 0x64
push dword [0x1010f090]
mov dword [eax + 0x1d8], 0x10059530
mov dword [eax + 0x10], 0x10059570
call edi
test eax, eax
je 0x1005a734
mov esi, dword [0x1010f090]
push 0x10128c20
mov dword [esi + 0x48], 0x10058fd0
mov dword [esi + 0x18], 0x100594a0
push dword [0x10128c20]
push 0x64
push esi
call edi
push 0x64
push esi
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.dll_FlushInstructionCache]
mov eax, dword [0x1010f094]
mov dword [eax + 0x54], 0x100570a0
mov dword [eax + 0x7c], 0x100593d0
mov eax, dword [0x1010f05c]
test eax, eax
je 0x1005a76b
push 0x10057440
push eax
mov ecx, 0x1012c1d4
call fcn.1005b880
push ecx
mov ecx, 0x1012c1d4
call fcn.1005b560
mov eax, dword [0x1010f058]
test eax, eax
je 0x1005a78f
push 0x10059b80
push eax
mov ecx, 0x1012c1f0
call fcn.1005b880
push ecx
mov ecx, 0x1012c1f0
call fcn.1005b560
mov eax, dword [0x1010efec]
test eax, eax
je 0x1005a7b3
push 0x1005a130
push eax
mov ecx, 0x1012c228
call fcn.1005b880
push ecx
mov ecx, 0x1012c228
call fcn.1005b560
mov eax, dword [0x1010efe8]
test eax, eax
je 0x1005a7d7
push 0x10056bb0
push eax
mov ecx, 0x1012c244
call fcn.1005b880
push ecx
mov ecx, 0x1012c244
call fcn.1005b560
mov eax, dword [0x1010efe4]
test eax, eax
je 0x1005a7fb
push 0x10056c00
push eax
mov ecx, 0x1012c260
call fcn.1005b880
push ecx
mov ecx, 0x1012c260
call fcn.1005b560
mov eax, dword [0x1010efe0]
test eax, eax
je 0x1005a81f
push 0x10056c80
push eax
mov ecx, 0x1012c27c
call fcn.1005b880
push ecx
mov ecx, 0x1012c27c
call fcn.1005b560
mov eax, dword [0x1010efdc]
test eax, eax
je 0x1005a843
push 0x10056570
push eax
mov ecx, 0x1012c298
call fcn.1005b880
push ecx
mov ecx, 0x1012c298
call fcn.1005b560
mov eax, dword [0x1010efd8]
test eax, eax
je 0x1005a867
push 0x100565a0
push eax
mov ecx, 0x1012c2b4
call fcn.1005b880
push ecx
mov ecx, 0x1012c2b4
call fcn.1005b560
mov eax, dword [0x1010efcc]
test eax, eax
je 0x1005a88b
push 0x10056fc0
push eax
mov ecx, 0x1012c2d0
call fcn.1005b880
push ecx
mov ecx, 0x1012c2d0
call fcn.1005b560
mov eax, dword [0x1010efc8]
test eax, eax
je 0x1005a8af
push 0x10056ff0
push eax
mov ecx, 0x1012c2ec
call fcn.1005b880
push ecx
mov ecx, 0x1012c2ec
call fcn.1005b560
mov eax, dword [0x1010edac]
test eax, eax
je 0x1005a8d3
push 0x10057040
push eax
mov ecx, 0x1012c308
call fcn.1005b880
push ecx
mov ecx, 0x1012c308
call fcn.1005b560
mov esi, dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push 0x1005a1b0
push str.SDL_SetCursor
push str.sdl2.dll
call esi
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push eax
call edi
push eax
mov ecx, 0x1012c324
call fcn.1005b880
push ecx
mov ecx, 0x1012c324
call fcn.1005b560
call fcn.100aed00
test al, al
je 0x1005a550
push str.opengl32.dll
call esi
mov esi, eax
cmp esi, 0xffffffff
je 0x1005aaa7
test esi, esi
je 0x1005aaa7
push str.glBegin
push esi
call edi
mov dword [0x101334c8], eax
test eax, eax
jne 0x1005a959
mov eax, str.___s:_glBegin_not_found._n
push str.HookOpenGL
push eax
call fcn.100afcd0
add esp, 8
jmp 0x1005a550
push 0x100e67f4
push esi
call edi
mov dword [0x101334d0], eax
test eax, eax
jne 0x1005a982
mov eax, str.___s:_color4f_not_found._n
push str.HookOpenGL
push eax
call fcn.100afcd0
add esp, 8
jmp 0x1005a550
push str.glVertex3f
push esi
call edi
mov dword [0x101334d4], eax
test eax, eax
jne 0x1005a9ab
mov eax, str.___s:_glVertex3f_not_found._n
push str.HookOpenGL
push eax
call fcn.100afcd0
add esp, 8
jmp 0x1005a550
push str.wglSwapBuffers
push esi
call edi
mov dword [0x101334cc], eax
test eax, eax
jne 0x1005a9d4
mov eax, str.___s:_swapbuffers_not_found._n
push str.HookOpenGL
push eax
call fcn.100afcd0
add esp, 8
jmp 0x1005a550
push 0x100aa4d0
push dword [0x101334c8]
mov ecx, 0x1012dd5c
call fcn.1005b880
push ecx
mov ecx, 0x1012dd5c
call fcn.1005b560
push 0x100aa650
push dword [0x101334cc]
mov ecx, 0x1012dd24
call fcn.1005b880
push ecx
mov ecx, 0x1012dd24
call fcn.1005b560
push 0x100aa660
push dword [0x101334d0]
mov ecx, 0x1012dd40
call fcn.1005b880
push ecx
mov ecx, 0x1012dd40
call fcn.1005b560
push 0x100aa700
push dword [0x101334d4]
mov ecx, 0x1012dd78
call fcn.1005b880
push ecx
mov ecx, 0x1012dd78
call fcn.1005b560
push str._attack
call dword [0x1010ee00]
add esp, 4
push str._attack2
call dword [0x1010ee00]
add esp, 4
push 0x1010d864
call fcn.100b7b80
push 0x1010d884
call fcn.100b7b80
push 0x1010d52c
call fcn.100b7b80
mov eax, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
mov eax, str.___s:_handle_opengl32.dll_not_found._n
push str.HookOpenGL
push eax
call fcn.100afcd0
add esp, 8
jmp 0x1005a550