Function at 0x416bff
Capabilities:
Check for time delay via gettickcount

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xd4
push ebx
push edi
imul edi, dword [ebp + 8], 0x28
lea edi, [edi + 0x123e264]
mov dword [ebp - 0x38], edi
mov dword [ebp - 0x6c], 0
mov edi, dword [ebp + 8]
cmp byte [edi + 0x123e1b0], 0
je 0x4171c7
cmp byte [0x123ff48], 0
jne 0x416c56
push dword [ebp + 8]
push str.CalcBallHitBatPos__d__called_when_bht_not_done
movsx edi, byte [0x1581008]
push edi
call fcn.004201cd
add esp, 0xc
jmp 0x4171c7
mov edi, dword [ebp + 8]
cmp byte [edi + 0x123ff49], 0
je 0x416c6c
mov dword [ebp - 0x6c], 1
jmp 0x416cc8
push dword [ebp + 8]
call fcn.0040df2c
add esp, 4
mov ebx, eax
cmp bl, 0
jne 0x416c87
mov dword [ebp - 0x6c], 1
jmp 0x416cc8
push dword [ebp + 8]
call fcn.00406ba7
add esp, 4
cmp eax, 0
je 0x416ca0
mov dword [ebp - 0x6c], 1
jmp 0x416cc8
cmp byte [0x123e14c], 0
je 0x416cc8
mov dword [ebp - 0x6c], 1
push dword [ebp + 8]
push str.CalcBallHitBatPos__d_:_doing_loop_
movsx edi, byte [0x1581008]
push edi
call fcn.004201cd
add esp, 0xc
cmp dword [ebp - 0x6c], 0
je 0x416cda
mov byte [0x123e14c], 0
jmp 0x4171c7
mov edi, dword [ebp + 8]
mov edi, dword [edi*4 + 0x123ff38]
fld dword [edi*4 + 0x157ad68]
fstp dword [ebp - 0x64]
fld dword [0x123fef8]
fstp dword [ebp - 0x28]
fld dword [0x123fefc]
fstp dword [ebp - 0x24]
fld dword [0x123ff00]
fstp dword [ebp - 0x20]
fld dword [0x123ff04]
fstp dword [ebp - 0x10]
fld dword [0x123ff08]
fstp dword [ebp - 0xc]
fld dword [0x123ff0c]
fstp dword [ebp - 8]
fld dword [0x123ff10]
fstp dword [ebp - 0x1c]
fld dword [0x123ff14]
fstp dword [ebp - 0x18]
fld dword [0x123ff18]
fstp dword [ebp - 0x14]
call sub.KERNEL32.DLL_GetTickCount
mov dword [ebp - 0x68], eax
mov dword [ebp - 0x44], 0
fld qword [0x157aed8]
fstp qword [ebp - 0x40]
fld dword [ebp - 0x10]
fadd dword [ebp - 0x28]
fstp dword [ebp - 0x28]
fld dword [ebp - 0xc]
fadd dword [ebp - 0x24]
fstp dword [ebp - 0x24]
fld dword [ebp - 8]
fadd dword [ebp - 0x20]
fstp dword [ebp - 0x20]
mov edi, dword [0x123ff50]
mov dword [ebp - 0x60], edi
mov byte [0x123e14c], 2
inc dword [ebp - 0x44]
cmp dword [ebp - 0x44], 0x28
jle 0x416dc2
mov dword [ebp - 0x44], 0
call sub.KERNEL32.DLL_GetTickCount
mov edi, eax
sub edi, dword [ebp - 0x68]
mov dword [ebp - 0x70], edi
cmp dword [ebp - 0x70], 0x3e8
jbe 0x416dc2
push str.CalcBallHitBatPos__:_Loop_Got_Caught
movsx edi, byte [0x1581008]
push edi
call fcn.004201cd
add esp, 8
jmp case.default.0x416ef7
fld dword [0x123e0d8]
sub esp, 4
fstp dword [esp]
lea edi, [ebp - 0x28]
push edi
call fcn.0040ddb2
add esp, 8
push 1
lea edi, [ebp - 0x28]
push edi
call fcn.0040ddd0
add esp, 8
fld dword [ebp - 0x28]
mov edi, dword [ebp - 0x38]
fsub dword [edi]
sub esp, 8
fstp qword [esp]
call sub.CRTDLL.DLL_fabs
add esp, 8
fstp qword [ebp - 0x78]
fld qword [ebp - 0x78]
fstp dword [ebp - 0x34]
fld dword [ebp - 0x24]
mov edi, dword [ebp - 0x38]
fsub dword [edi + 4]
sub esp, 8
fstp qword [esp]
call sub.CRTDLL.DLL_fabs
add esp, 8
fstp qword [ebp - 0x80]
fld qword [ebp - 0x80]
fstp dword [ebp - 0x30]
fld dword [ebp - 0x20]
mov edi, dword [ebp - 0x38]
fsub dword [edi + 8]
sub esp, 8
fstp qword [esp]
call sub.CRTDLL.DLL_fabs
add esp, 8
fstp qword [ebp - 0x88]
fld qword [ebp - 0x88]
fstp dword [ebp - 0x2c]
fld dword [ebp - 0x34]
fstp dword [ebp - 0x8c]
fld dword [ebp - 0x8c]
fmul dword [ebp - 0x8c]
fld dword [ebp - 0x30]
fmul dword [ebp - 0x30]
faddp st(1)
fld dword [ebp - 0x2c]
fmul dword [ebp - 0x2c]
faddp st(1)
fstp qword [ebp - 0x50]
fld dword [0x157aeac]
fcomp dword [ebp - 0x20]
fnstsw ax
sahf
jb 0x416ec4
fld qword [ebp - 0x40]
fstp qword [ebp - 0x98]
fld qword [ebp - 0x98]
fcomp qword [ebp - 0x50]
fnstsw ax
sahf
ja 0x416eac
fldz
fcomp qword [ebp - 0x98]
fnstsw ax
sahf
jbe 0x416ec4
fld dword [ebp - 0x28]
fstp dword [ebp - 0x5c]
fld dword [ebp - 0x24]
fstp dword [ebp - 0x58]
fld dword [ebp - 0x20]
fstp dword [ebp - 0x54]
fld qword [ebp - 0x50]
fstp qword [ebp - 0x40]
fld dword [ebp - 0x64]
fchs
fcomp dword [ebp - 0x20]
fnstsw ax
sahf
jbe 0x417154
cmp byte [0x123ed68], 2
jne 0x416f90
mov edi, dword [ebp + 8]
cmp edi, 0
jl case.default.0x416ef7
cmp edi, 3
jg case.default.0x416ef7
jmp dword [edi*4 + 0x157addc]
fld dword [ebp - 0x28]
fstp dword [0x123fe98]
fld dword [ebp - 0x24]
fstp dword [0x123fe9c]
fld dword [ebp - 0x20]
fstp dword [0x123fea0]
fld dword [ebp - 0x28]
fstp dword [0x123fea4]
fld dword [ebp - 0x24]
fstp dword [0x123fea8]
fld dword [ebp - 0x20]
fstp dword [0x123feac]
mov byte [0x123ff49], 1
mov byte [0x123ff4a], 1
jmp case.default.0x416ef7
fld dword [ebp - 0x28]
fstp dword [0x123feb0]
fld dword [ebp - 0x24]
fstp dword [0x123feb4]
fld dword [ebp - 0x20]
fstp dword [0x123feb8]
fld dword [ebp - 0x28]
fstp dword [0x123febc]
fld dword [ebp - 0x24]
fstp dword [0x123fec0]
fld dword [ebp - 0x20]
fstp dword [0x123fec4]
mov byte [0x123ff4b], 1
mov byte [0x123ff4c], 1
jmp case.default.0x416ef7
imul edi, dword [ebp + 8], 0xc
fld dword [ebp - 0x28]
fstp dword [edi + 0x123fe98]
imul edi, dword [ebp + 8], 0xc
fld dword [ebp - 0x24]
fstp dword [edi + 0x123fe9c]
imul edi, dword [ebp + 8], 0xc
fld dword [ebp - 0x20]
fstp dword [edi + 0x123fea0]
mov ebx, dword [ebp + 8]
mov byte [ebx + 0x123ff49], 1
mov edi, dword [ebp - 0x38]
fld dword [edi]
fsub dword [ebp - 0x28]
sub esp, 8
fstp qword [esp]
call sub.CRTDLL.DLL_fabs
add esp, 8
fstp qword [ebp - 0xb8]
fld qword [ebp - 0xb8]
fstp dword [ebp - 0xa4]
mov edi, dword [ebp - 0x38]
fld dword [edi + 4]
fsub dword [ebp - 0x24]
sub esp, 8
fstp qword [esp]
call sub.CRTDLL.DLL_fabs
add esp, 8
fstp qword [ebp - 0xc0]
fld qword [ebp - 0xc0]
fstp dword [ebp - 0xa0]
mov edi, dword [ebp - 0x38]
fld dword [edi + 8]
fsub dword [ebp - 0x20]
sub esp, 8
fstp qword [esp]
call sub.CRTDLL.DLL_fabs
add esp, 8
fstp qword [ebp - 0xc8]
fld qword [ebp - 0xc8]
fstp dword [ebp - 0x9c]
fld dword [ebp - 0xa0]
fcomp dword [ebp - 0xa4]
fnstsw ax
sahf
jae 0x417063
fld dword [ebp - 0xa4]
fstp dword [ebp - 0xa8]
jmp 0x41706f
fld dword [ebp - 0xa0]
fstp dword [ebp - 0xa8]
fld dword [ebp - 0xa8]
fcomp dword [ebp - 0x9c]
fnstsw ax
sahf
jae 0x41708c
fld dword [ebp - 0x9c]
fstp dword [ebp - 0xa8]
fldz
fcomp dword [ebp - 0xa8]
fnstsw ax
sahf
je case.default.0x416ef7
mov edi, dword [ebp - 0x38]
imul edi, dword [edi + 0x24], 0x138
lea edi, [edi + str.User1_Controls]
mov dword [ebp - 0xcc], edi
mov edi, dword [ebp - 0xcc]
fld dword [edi + 0xd4]
fmul dword [0x123e0fc]
fstp dword [ebp - 0xd0]
push 0
push dword [ebp - 0x60]
fild qword [esp]
add esp, 8
sub esp, 4
fstp dword [esp]
fld dword [esp]
add esp, 4
fmul dword [ebp - 0xd0]
fadd dword [0x157aea8]
mov edi, eax
call fcn.0043143c
xchg edi, eax
mov dword [ebp - 0xd4], edi
push dword [ebp - 0xd4]
fild dword [esp]
add esp, 4
fld dword [ebp - 0xa8]
fcompp
fnstsw ax
sahf
jbe case.default.0x416ef7
fldz
fcomp qword [ebp - 0x40]
fnstsw ax
sahf
ja case.default.0x416ef7
imul edi, dword [ebp + 8], 0xc
fld dword [ebp - 0x5c]
fstp dword [edi + 0x123fe98]
imul edi, dword [ebp + 8], 0xc
fld dword [ebp - 0x58]
fstp dword [edi + 0x123fe9c]
imul edi, dword [ebp + 8], 0xc
fld dword [ebp - 0x54]
fstp dword [edi + 0x123fea0]
jmp case.default.0x416ef7
fldz
fcomp dword [ebp - 8]
fnstsw ax
sahf
ja 0x417189
mov ebx, dword [ebp + 8]
mov byte [ebx + 0x123ff49], 0
mov edi, dword [ebp + 8]
cmp dword [edi*4 + 0x123ff38], 0
jle case.default.0x416ef7
mov edi, dword [ebp + 8]
lea edi, [edi*4 + 0x123ff38]
dec dword [edi]
jmp case.default.0x416ef7
fld dword [ebp - 8]
fadd dword [ebp - 0x20]
fstp dword [0x123e188]
fld dword [ebp - 0x10]
fadd dword [ebp - 0x28]
fstp dword [ebp - 0x28]
fld dword [ebp - 0xc]
fadd dword [ebp - 0x24]
fstp dword [ebp - 0x24]
fld dword [ebp - 8]
fadd dword [ebp - 0x20]
fstp dword [ebp - 0x20]
inc dword [ebp - 0x60]
jmp 0x416d7b
mov byte [0x123e14c], 0
fldz
fstp dword [0x123e188]
pop edi
pop ebx
leave
ret