Function at 0x10909770
Capabilities:
Execute anti-debugging instructions

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x10917ec0
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x40
mov eax, dword [sym.imp.core.dll_int_GIsRunning]
push ebx
push esi
mov esi, ecx
mov ecx, dword [eax]
xor ebx, ebx
cmp ecx, ebx
push edi
mov dword [ebp - 0x10], esp
je 0x10909b35
mov ecx, dword [sym.imp.core.dll_int_GIsRequestingExit]
cmp dword [ecx], ebx
jne 0x10909b35
mov ecx, dword [sym.imp.engine.dll_class_FStats_GStats]
call dword [sym.imp.engine.dll_public:_void___thiscall_FStats::Clear_void_]
mov edx, dword [sym.imp.core.dll_int_GIsBenchmarking]
cmp dword [edx], ebx
jne 0x109097d1
mov eax, dword [sym.imp.core.dll_int_GIsRecordingMovie]
cmp dword [eax], ebx
je 0x109097f3
mov eax, dword [esi + 0x30]
cmp eax, ebx
je 0x109097f3
mov ecx, dword [esi + 0x28]
cmp ecx, dword [esi + 0x2c]
jne 0x109097e5
mov dword [esi + 0x34], ebx
jmp 0x109097f3
cmp ecx, eax
jle 0x109097f3
push ebx
call dword [sym.imp.core.dll_void___cdecl_appRequestExit_int_]
add esp, 4
call dword [sym.imp.core.dll_double___cdecl_appSeconds_void_]
fst qword [ebp - 0x30]
mov ecx, dword [sym.imp.core.dll_int_GUseFixedTimeStep]
fsub qword [esi + 0x10]
cmp dword [ecx], ebx
mov dword [ebp - 4], ebx
je 0x10909849
mov edx, dword [sym.imp.core.dll_float_GFixedTimeStep]
mov eax, dword [edx]
mov ecx, dword [sym.imp.core.dll_float_GDeltaTime]
mov dword [ecx], eax
mov edx, dword [sym.imp.core.dll_float_GFixedTimeStep]
mov eax, dword [sym.imp.core.dll_double_GCurrentTime]
fld dword [edx]
fadd qword [eax]
fstp qword [eax]
mov eax, dword [esi + 0x28]
cmp eax, dword [esi + 0x30]
jge 0x10909841
fadd dword [esi + 0x34]
inc eax
mov dword [esi + 0x28], eax
fstp dword [esi + 0x34]
jmp 0x1090985b
inc eax
fstp st(0)
mov dword [esi + 0x28], eax
jmp 0x1090985b
mov eax, dword [sym.imp.core.dll_double_GCurrentTime]
fld qword [ebp - 0x30]
fstp qword [eax]
mov ecx, dword [sym.imp.core.dll_float_GDeltaTime]
fstp dword [ecx]
mov eax, dword [sym.imp.core.dll_float_GDeltaTime]
mov ecx, dword [esi]
mov eax, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 0x74]
call dword [sym.imp.core.dll_double___cdecl_appSeconds_void_]
fst qword [ebp - 0x18]
fcomp qword [ebp - 0x30]
fnstsw ax
test ah, 5
jp 0x1090989c
call dword [sym.imp.core.dll_double___cdecl_appSeconds_void_]
fst qword [ebp - 0x30]
mov ecx, dword [sym.imp.core.dll_double_GCurrentTime]
fstp qword [ecx]
mov edx, dword [sym.imp.core.dll_double_GCurrentTime]
fld qword [edx]
fst qword [ebp - 0x30]
fstp qword [esi + 0x18]
mov eax, dword [sym.imp.core.dll_class_USubsystem__GWindowManager]
mov ecx, dword [eax]
cmp ecx, ebx
je 0x109098b4
mov eax, dword [sym.imp.core.dll_float_GDeltaTime]
mov eax, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 0x74]
fld qword [ebp - 0x30]
mov eax, dword [esi + 0x20]
fstp qword [esi + 0x10]
inc eax
fld qword [esi + 0x18]
mov ecx, eax
fadd qword [0x1091e4f8]
mov dword [esi + 0x20], eax
mov dword [ebp - 0x14], ecx
fcomp qword [ebp - 0x30]
fnstsw ax
test ah, 5
jp 0x10909916
mov edx, dword [sym.imp.core.dll_int_GUseFixedTimeStep]
cmp dword [edx], ebx
je 0x109098fa
mov eax, dword [sym.imp.core.dll_float_GFixedTimeStep]
fld dword [0x1091e440]
fdiv dword [eax]
mov ecx, dword [esi]
fstp dword [ecx + 0xbc]
jmp 0x1090990d
fild dword [ebp - 0x14]
mov edx, dword [esi]
fld qword [ebp - 0x30]
fsub qword [esi + 0x18]
fdivp st(1)
fstp dword [edx + 0xbc]
fld qword [esi + 0x10]
mov dword [esi + 0x20], ebx
fstp qword [esi + 0x18]
mov eax, dword [sym.imp.core.dll_int_GUseFixedTimeStep]
cmp dword [eax], ebx
mov dword [ebp - 4], 2
jne 0x10909990
cmp dword [esi + 4], ebx
je 0x10909a67
mov ecx, dword [esi]
mov edx, dword [ecx]
call dword [edx + 0xb0]
fst dword [ebp - 0x14]
fst dword [ebp - 0x14]
fcomp qword [0x1091cac0]
fnstsw ax
test ah, 0x41
jne 0x10909990
call dword [sym.imp.core.dll_double___cdecl_appSeconds_void_]
fstp qword [ebp - 0x30]
fld dword [ebp - 0x14]
fdivr qword [0x1091e4f8]
fld qword [ebp - 0x30]
fsub qword [esi + 0x10]
fsubp st(1)
fld dword [0x1091e4f0]
fcomp st(1)
fnstsw ax
test ah, 1
jne 0x10909980
fstp st(0)
mov dword [ebp - 0x14], 0
jmp 0x10909983
fstp dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
push eax
call dword [sym.imp.core.dll_void___cdecl_appSleep_float_]
add esp, 4
cmp dword [esi + 4], ebx
je 0x10909a67
mov edi, dword [sym.imp.user32.dll_PeekMessageW]
mov ebx, dword [sym.imp.user32.dll_PeekMessageA]
mov eax, dword [sym.imp.core.dll_int_GUnicodeOS]
cmp dword [eax], 0
push 1
push 0
push 0
mov dword [ebp - 4], 4
push 0
je 0x109099e4
lea ecx, [ebp - 0x4c]
push ecx
call edi
jmp 0x109099ea
lea edx, [ebp - 0x4c]
push edx
call ebx
test eax, eax
je 0x10909a65
cmp dword [ebp - 0x48], 0x12
jne 0x10909a15
mov eax, dword [sym.imp.core.dll_int_GIsEditor]
cmp dword [eax], 0
je 0x10909a09
mov ecx, dword [esi]
push ecx
call fcn.10909310
add esp, 4
mov ecx, dword [sym.imp.core.dll_int_GIsRequestingExit]
mov dword [ecx], 1
lea edx, [ebp - 0x4c]
push edx
call dword [sym.imp.user32.dll_TranslateMessage]
mov eax, dword [sym.imp.core.dll_int_GUnicodeOS]
cmp dword [eax], 0
je 0x10909a56
lea ecx, [ebp - 0x4c]
push ecx
call dword [sym.imp.user32.dll_DispatchMessageW]
jmp 0x109099a5
lea edx, [ebp - 0x4c]
push edx
call dword [sym.imp.user32.dll_DispatchMessageA]
jmp 0x109099a5
xor ebx, ebx
mov eax, dword [sym.imp.core.dll_int_GIsEditor]
cmp dword [eax], ebx
je 0x10909ab7
cmp dword [esi + 4], ebx
je 0x10909ab7
push ebx
call dword [sym.imp.user32.dll_GetForegroundWindow]
push eax
call dword [sym.imp.user32.dll_GetWindowThreadProcessId]
mov edi, eax
sub edi, dword [esi + 8]
mov eax, dword [0x109290dc]
neg edi
sbb edi, edi
inc edi
cmp eax, ebx
je 0x10909b46
cmp edi, ebx
jne 0x10909ab1
mov ecx, dword [esi + 0xc]
push 0xffffffffffffffff
push ecx
call dword [sym.imp.kernel32.dll_SetThreadPriority]
push ebx
call dword [sym.imp.kernel32.dll_Sleep]
mov dword [0x109290dc], edi
mov dword [ebp - 4], 0xffffffff
rdtsc
mov edx, dword [esi + 0x24]
mov ecx, dword [sym.imp.engine.dll_class_FEngineStats_GEngineStats]
sub eax, edx
mov edx, dword [ecx + 4]
mov ecx, dword [sym.imp.engine.dll_class_FStats_GStats]
mov ecx, dword [ecx + 0x24]
mov dword [ecx + edx*4], eax
mov edx, dword [sym.imp.engine.dll_class_FEngineStats_GEngineStats]
mov ecx, dword [sym.imp.engine.dll_class_FStats_GStats]
mov eax, dword [edx + 0x13c]
mov edx, dword [ecx + 0x24]
mov ecx, dword [sym.imp.core.dll_int_GScriptCycles]
mov ecx, dword [ecx]
mov dword [edx + eax*4], ecx
mov edx, dword [sym.imp.core.dll_int_GScriptCycles]
mov dword [edx], ebx
rdtsc
mov dword [esi + 0x24], eax
mov eax, dword [sym.imp.core.dll_int_GIsBenchmarking]
cmp dword [eax], ebx
je 0x10909b35
mov ecx, dword [esi + 0x30]
cmp ecx, ebx
je 0x10909b35
mov eax, dword [esi + 0x28]
cmp eax, 1
jne 0x10909b5e
mov ecx, dword [esi + 0x38]
push eax
push ecx
mov ecx, dword [sym.imp.engine.dll_class_FStats_GStats]
call dword [sym.imp.engine.dll_public:_void___thiscall_FStats::UpdateString_class_FString___int_]
mov edx, dword [esi + 0x44]
mov dword [edx], ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp edi, ebx
je 0x10909aaa
mov edx, dword [esi + 0xc]
push ebx
push edx
call dword [sym.imp.kernel32.dll_SetThreadPriority]
jmp 0x10909ab1
mov edx, dword [esi + 0x2c]
sub eax, edx
sub ecx, edx
cmp eax, 2
jge 0x10909b71
mov edi, 2
jmp 0x10909b79
cmp eax, ecx
mov edi, eax
jl 0x10909b79
mov edi, ecx
mov ecx, dword [esi + 0x38]
lea eax, [edi + edi*2]
lea edx, [ecx + eax*4 - 0xc]
mov ecx, dword [sym.imp.engine.dll_class_FStats_GStats]
push ebx
push edx
call dword [sym.imp.engine.dll_public:_void___thiscall_FStats::UpdateString_class_FString___int_]
mov eax, dword [sym.imp.engine.dll_class_FEngineStats_GEngineStats]
mov ecx, dword [eax + 4]
mov edx, dword [sym.imp.engine.dll_class_FStats_GStats]
mov eax, dword [edx + 0x24]
mov ecx, dword [eax + ecx*4]
test ecx, ecx
mov dword [ebp - 0x28], ecx
fild dword [ebp - 0x28]
jge 0x10909bb5
fadd qword [0x1091e4b0]
mov edx, dword [sym.imp.core.dll_double_GSecondsPerCycle]
fmul qword [edx]
mov eax, dword [esi + 0x44]
mov ecx, dword [ebp - 0xc]
fmul qword [0x1091e4a8]
fstp dword [eax + edi*4 - 4]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret