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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
push 0xffffffffffffffff
push 0x1009a896
mov eax, dword fs:[0]
push eax
sub esp, 0xa4
push ebx
push ebp
push esi
push edi
mov eax, dword [0x100b8070]
xor eax, esp
push eax
lea eax, [esp + 0xb8]
mov dword fs:[0], eax
mov ebx, ecx
mov eax, dword [ebx + 0x14]
mov ecx, dword [eax + 0x597c4]
cmp ecx, 2
je 0x100411fb
xor eax, eax
mov dword [ebx + 0x78], eax
mov dword [ebx + 0x80], eax
mov dword [ebx + 0x84], eax
xor eax, eax
jmp 0x1004242d
mov ebp, dword [eax + 0x5975c]
test ebp, ebp
je 0x100411f4
mov eax, dword [eax + 0x597c8]
cmp eax, 4
jne 0x1004122a
mov ecx, dword [0x100bb2cc]
mov eax, dword [ecx]
mov edx, dword [eax + 0x18]
call edx
mov ecx, dword [0x100bb2cc]
mov eax, dword [ecx]
mov edx, dword [eax + 0x1c]
call edx
mov eax, dword [ebx + 0x14]
push eax
call fcn.1001ad10
push ebx
call fcn.10003bc0
mov ecx, dword [ebx + 0x14]
cmp dword [ecx + 0x59798], 0
ja 0x10041281
mov ecx, dword [0x100bb2cc]
mov edx, dword [ecx]
mov eax, dword [edx + 0x28]
call eax
mov dword [ebp + 0xec], 0
mov ebx, dword [ebx + 0x14]
lea eax, [ebx + 0x597d0]
lea ebx, [esp + 0x3c]
mov dword [esp + 0x3c], 2
call fcn.1001d970
mov dword [eax], 0
jmp 0x10042428
mov eax, ebx
call fcn.100015c0
mov edx, dword [ebp]
mov eax, dword [edx + 8]
mov ecx, ebp
call eax
cmp dword [ebp + 0x94], 0
jne 0x10042428
cmp dword [ebp + 0x98], 0
jne 0x10042428
mov eax, dword [ebx + 0x14]
add eax, 0x59790
cmp dword [eax + 8], 0
mov dword [esp + 0x34], eax
jne 0x100412c9
push ebp
call fcn.10021900
jmp 0x10042428
call fcn.10004a40
mov esi, eax
mov dword [esp + 0x30], esi
call fcn.1006f5f0
fld dword [esi + 0xc]
fstp dword [esp + 0x60]
lea eax, [esp + 0x70]
fld dword [esi + 8]
lea ecx, [esp + 0x5c]
fstp dword [esp + 0x5c]
fld dword [esi + 0x10]
fstp dword [esp + 0x64]
fld dword [esi + 0x14]
fstp dword [esp + 0x68]
fld dword [ebp + 0x34]
fstp dword [esp + 0x74]
fld dword [ebp + 0x30]
fstp dword [esp + 0x70]
fld dword [ebp + 0x38]
fstp dword [esp + 0x78]
fld dword [ebp + 0x3c]
fstp dword [esp + 0x7c]
call fcn.10003a50
fst qword [esp + 0x44]
fcomp qword [0x100a9868]
fnstsw ax
test ah, 5
jp 0x100413d5
fld dword [esp + 0x5c]
sub esp, 0x10
fsub dword [esp + 0x80]
fstp qword [esp + 8]
fld dword [esp + 0x70]
fsub dword [esp + 0x84]
fstp qword [esp]
call fcn.1006ddc0
fstp dword [esp + 0x3c]
add esp, 4
fld dword [0x100a982c]
fstp dword [esp + 8]
fld dword [esp + 0x88]
fstp dword [esp + 4]
fld dword [esp + 0x38]
fstp dword [esp]
call fcn.100218b0
add esp, 0xc
test eax, eax
jne 0x1004139f
push ebp
call fcn.10021900
fld dword [esp + 0x2c]
push ecx
fstp dword [esp]
call fcn.10021920
jmp 0x10042428
mov edi, dword [esp + 0x30]
call fcn.10055280
test eax, eax
jne 0x100413d5
mov eax, edi
call fcn.10003b20
cmp eax, 0x64
jne 0x10042428
mov ecx, dword [ebx + 0x14]
push ecx
mov eax, edi
call fcn.1001b910
mov eax, dword [esp + 0x34]
call fcn.10004a60
jmp 0x10042428
call fcn.1007e120
test eax, eax
mov esi, dword [esp + 0x30]
je 0x1004140b
mov eax, esi
call fcn.10003ac0
test eax, eax
jne 0x1004140b
mov al, 0
mov ecx, dword [0x100bb500]
mov byte [ecx], al
mov edx, dword [ebx + 0x14]
push edx
mov eax, esi
call fcn.1001b910
mov eax, dword [esp + 0x34]
call fcn.10004a60
call fcn.1007ec20
test eax, eax
mov edi, 1
je 0x10041426
mov al, 0
mov ecx, dword [0x100bb500]
mov byte [ecx], al
add dword [ebx + 0x7c], edi
cmp dword [ebx + 0x7c], edi
jle 0x10041437
call fcn.10024010
mov dword [ebx + 0x7c], 0
cmp dword [ebx + 0x38], 0
jne 0x10041459
fld dword [ebp + 0x34]
fstp dword [ebx + 0x28]
fld dword [ebp + 0x30]
fstp dword [ebx + 0x24]
fld dword [ebp + 0x38]
fstp dword [ebx + 0x2c]
mov dword [ebx + 0x34], 0x211
mov dword [ebx + 0x38], edi
mov ecx, dword [esi + 0x48]
mov eax, dword [esi + 0x44]
push ecx
push eax
mov eax, ebp
call fcn.10003b80
test eax, eax
je 0x100414f4
fld qword [0x100a9870]
fld qword [esp + 0x44]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 0x41
jne 0x100414f2
fld dword [esp + 0x60]
lea eax, [ebx + 0x24]
fld dword [esp + 0x74]
mov edx, 0x211
fsubr st(1)
mov ecx, 2
fld qword [0x100a9920]
mov esi, ebp
mov dword [ebx + 0x34], edx
fmul st(1), st(0)
mov dword [ebx + 0x38], edi
fxch st(1)
fdiv st(3)
fsubp st(2)
fxch st(1)
fstp dword [ebx + 0x28]
fld dword [esp + 0x5c]
fld dword [esp + 0x70]
fsubr st(1)
fmulp st(2)
fxch st(1)
fdivrp st(2)
fsubrp st(1)
fstp dword [eax]
call fcn.10056b10
cmp eax, 2
jne 0x100414eb
mov eax, dword [ebx + 0x14]
push eax
mov eax, dword [esp + 0x34]
call fcn.1001b910
mov eax, dword [esp + 0x34]
call fcn.10004a60
mov eax, edi
jmp 0x1004242d
fstp st(0)
push ebp
call fcn.10021900
fld dword [esp + 0x5c]
fsub dword [esp + 0x70]
sub esp, 0x10
xor esi, esi
mov dword [ebx + 0x38], esi
fst qword [esp + 0x64]
fld dword [esp + 0x70]
fsub dword [esp + 0x84]
fst qword [esp + 0x5c]
fxch st(1)
fstp qword [esp + 8]
fstp qword [esp]
call fcn.1006ddc0
fstp dword [esp + 0x3c]
add esp, 4
fld dword [0x100a982c]
fstp dword [esp + 8]
fld dword [esp + 0x88]
fstp dword [esp + 4]
fld dword [esp + 0x38]
fstp dword [esp]
call fcn.100218b0
add esp, 0xc
test eax, eax
jne 0x1004156d
push ebp
call fcn.10021900
fld dword [esp + 0x2c]
push ecx
fstp dword [esp]
call fcn.10021920
push 0x11
call fcn.100579d0
test eax, eax
je 0x100415a5
mov eax, dword [ebx + 0x14]
mov edx, dword [ebp]
add eax, 0xc
push eax
mov eax, dword [edx + 0x38]
mov ecx, ebp
call eax
test eax, eax
je 0x100415a5
mov edx, dword [ebp]
mov eax, dword [edx + 0x4c]
mov ecx, ebp
call eax
test eax, eax
jle 0x100415a5
mov edx, dword [ebp]
mov eax, dword [edx + 0x58]
mov ecx, ebp
call eax
push 0x12
call fcn.100579d0
test eax, eax
je 0x100415dd
mov eax, dword [ebx + 0x14]
mov edx, dword [ebp]
add eax, 0xc
push eax
mov eax, dword [edx + 0x3c]
mov ecx, ebp
call eax
test eax, eax
je 0x100415dd
mov edx, dword [ebp]
mov eax, dword [edx + 0x50]
mov ecx, ebp
call eax
test eax, eax
jle 0x100415dd
mov edx, dword [ebp]
mov eax, dword [edx + 0x5c]
mov ecx, ebp
call eax
push 0x19
call fcn.100579d0
test eax, eax
je 0x10041604
mov edx, dword [ebp]
mov eax, dword [edx + 0x54]
push 0x19
mov ecx, ebp
call eax
test eax, eax
jle 0x10041604
mov edx, dword [ebp]
mov eax, dword [edx + 0x64]
push 0x19
mov ecx, ebp
call eax
push 0x1a
call fcn.100579d0
test eax, eax
je 0x1004162b
mov edx, dword [ebp]
mov eax, dword [edx + 0x54]
push 0x1a
mov ecx, ebp
call eax
test eax, eax
jle 0x1004162b
mov edx, dword [ebp]
mov eax, dword [edx + 0x64]
push 0x1a
mov ecx, ebp
call eax
mov eax, ebp
call fcn.10003b60
mov ecx, dword [ebx + 0x14]
cmp eax, dword [ecx + 0x2a8]
jae 0x1004182f
lea edx, [esp + 0x38]
push edx
mov ecx, str.IceBarrier
call fcn.10003700
lea eax, [esp + 0x38]
lea edi, [ebx + 0x68]
push eax
mov ecx, edi
mov dword [esp + 0xc4], esi
call fcn.100048e0
mov eax, dword [eax]
push ecx
sub eax, 0x10
mov dword [esp + 0x40], esp
mov esi, esp
call fcn.10001820
add eax, 0x10
mov ecx, ebx
mov dword [esi], eax
call fcn.10001420
mov esi, eax
lea eax, [esp + 0x38]
mov dword [esp + 0x2c], esi
mov dword [esp + 0xc0], 0xffffffff
call fcn.10001660
test esi, esi
je 0x100416f2
cmp dword [esi + 0x10], 0
jne 0x100416f2
mov eax, esi
call fcn.10023fd0
test eax, eax
jne 0x100416f2
mov ecx, esi
mov esi, dword [ecx]
call fcn.1007e040
test eax, eax
je 0x100416f2
mov edx, dword [esp + 0x2c]
mov esi, dword [edx]
mov eax, ebp
call fcn.10056f10
test eax, eax
jne 0x100416f2
mov ecx, dword [esp + 0x2c]
mov edx, dword [ecx]
mov eax, dword [ebp]
mov eax, dword [eax + 0x14]
push edx
mov ecx, ebp
call eax
mov edi, ebp
call fcn.100574b0
push 0xc8
jmp 0x10042422
lea ecx, [esp + 0x38]
push ecx
mov ecx, str.ManaShield
call fcn.10003700
lea edx, [esp + 0x38]
push edx
mov ecx, edi
mov dword [esp + 0xc4], 1
call fcn.100048e0
mov eax, dword [eax]
push ecx
sub eax, 0x10
mov dword [esp + 0x40], esp
mov esi, esp
call fcn.10001820
add eax, 0x10
mov ecx, ebx
mov dword [esi], eax
call fcn.10001420
mov esi, eax
lea eax, [esp + 0x38]
mov dword [esp + 0x2c], esi
mov dword [esp + 0xc0], 0xffffffff
call fcn.10001660
lea eax, [esp + 0x3c]
push eax
mov ecx, str.IceBarrier
call fcn.10003700
lea ecx, [esp + 0x3c]
push ecx
mov ecx, edi
mov dword [esp + 0xc4], 2
call fcn.100048e0
mov eax, dword [eax]
push ecx
sub eax, 0x10
mov dword [esp + 0x44], esp
mov edi, esp
call fcn.10001820
add eax, 0x10
mov ecx, ebx
mov dword [edi], eax
call fcn.10001420
mov edi, eax
lea eax, [esp + 0x3c]
mov dword [esp + 0xc0], 0xffffffff
call fcn.10001660
test edi, edi
je 0x100417d2
test esi, esi
je 0x1004182f
cmp dword [esi + 0x10], 0
jne 0x1004182f
mov eax, esi
call fcn.10023fd0
test eax, eax
jne 0x1004182f
mov edx, esi
mov esi, dword [edx]
call fcn.1007e040
test eax, eax
je 0x1004182f
mov esi, dword [edi]
jmp 0x100417fc
test esi, esi
je 0x1004182f
cmp dword [esi + 0x10], 0
jne 0x1004182f
mov eax, esi
call fcn.10023fd0
test eax, eax
jne 0x1004182f
mov ecx, dword [esp + 0x2c]
mov esi, dword [ecx]
call fcn.1007e040
test eax, eax
je 0x1004182f
mov edx, dword [esp + 0x2c]
mov esi, dword [edx]
mov eax, ebp
call fcn.10056f10
test eax, eax
jne 0x1004182f
mov eax, ebp
call fcn.1002ec10
cmp eax, 0x14
jbe 0x1004182f
mov eax, dword [esp + 0x2c]
mov eax, dword [eax]
mov edx, dword [ebp]
push eax
mov eax, dword [edx + 0x14]
mov ecx, ebp
call eax
push 0xc8
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, ebp
call fcn.1002ec10
mov ecx, dword [ebx + 0x14]
cmp eax, dword [ecx + 0x2ac]
jae 0x10041860
call fcn.1003dac0
cmp eax, 1
jl 0x10041860
mov edx, dword [ebp]
mov eax, dword [edx + 0x60]
mov ecx, ebp
call eax
push 0xc8
call dword [sym.imp.KERNEL32.dll_Sleep]
fld qword [0x100a9870]
fcomp qword [esp + 0x44]
fnstsw ax
test ah, 1
jne 0x100421da
mov esi, dword [ebx + 0x14]
cmp dword [esi + 0x2d4], 0
je 0x10041a4b
mov eax, dword [esp + 0x30]
call fcn.10003b20
cmp eax, dword [esi + 0x2d0]
jae 0x10041a4b
cmp dword [esi + 0x2b4], 0
je 0x10041952
lea ecx, [esp + 0x3c]
push ecx
mov ecx, str.Shoot
call fcn.10003700
lea edx, [esp + 0x3c]
push edx
lea ecx, [ebx + 0x68]
mov dword [esp + 0xc4], 3
call fcn.100048e0
mov eax, dword [eax]
push ecx
sub eax, 0x10
mov dword [esp + 0x44], esp
mov esi, esp
call fcn.10001820
add eax, 0x10
mov ecx, ebx
mov dword [esi], eax
call fcn.10001420
mov edi, eax
lea eax, [esp + 0x3c]
mov dword [esp + 0xc0], 0xffffffff
call fcn.10001660
test edi, edi
je 0x10041952
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [ebx + 0x3c]
cmp eax, 0x3e8
jbe 0x10041952
cmp dword [edi + 0x10], 0
jne 0x10041952
mov eax, edi
call fcn.10023fd0
test eax, eax
jne 0x10041952
mov esi, dword [edi]
call fcn.1007e040
test eax, eax
je 0x10041952
mov eax, edi
call fcn.1002ebf0
test eax, eax
jne 0x10041952
mov edi, dword [edi]
mov eax, dword [ebp]
mov edx, dword [eax + 0x14]
push edi
mov ecx, ebp
call edx
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [ebx + 0x3c], eax
mov eax, dword [ebx + 0x14]
cmp dword [eax + 0x2b8], 0
je 0x10042428
fld qword [0x100a98b0]
fld qword [esp + 0x44]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 0x41
jne 0x100419eb
fld dword [esp + 0x60]
lea eax, [ebx + 0x24]
fld qword [esp + 0x4c]
mov edx, 0x211
fld qword [0x100a9840]
mov ecx, 2
fmul st(1), st(0)
mov esi, ebp
fxch st(1)
mov dword [ebx + 0x34], edx
mov dword [ebx + 0x38], 1
fdiv st(3)
fsubp st(2)
fxch st(1)
fstp dword [ebx + 0x28]
fld qword [esp + 0x54]
fmulp st(1)
fdivrp st(1)
fsubr dword [esp + 0x5c]
fstp dword [eax]
call fcn.10056b10
cmp eax, 2
jne 0x100419db
mov ecx, dword [ebx + 0x14]
mov eax, dword [esp + 0x30]
push ecx
call fcn.1001b910
mov eax, dword [esp + 0x34]
call fcn.10004a60
jmp 0x100419e0
cmp eax, 1
jne 0x100419e7
mov dword [ebx + 0x38], 0
fld qword [esp + 0x44]
fcomp qword [0x100a98b0]
fnstsw ax
test ah, 5
jp 0x10042428
lea edx, [esp + 0x3c]
push edx
mov ecx, str.Attack
call fcn.10003700
lea eax, [esp + 0x3c]
push eax
lea ecx, [ebx + 0x68]
mov dword [esp + 0xc4], 4
call fcn.100048e0
mov eax, dword [eax]
push ecx
sub eax, 0x10
mov dword [esp + 0x44], esp
mov esi, esp
call fcn.10001820
add eax, 0x10
mov ecx, ebx
mov dword [esi], eax
call fcn.10001420
mov edi, eax
lea eax, [esp + 0x3c]
jmp 0x100423c9
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [ebx + 0x3c]
cmp eax, 0x3e8
jbe 0x100421da
lea eax, [esp + 0x3c]
push eax
mov ecx, str.SummonWaterElemental
call fcn.10003700
lea ecx, [esp + 0x3c]
lea edi, [ebx + 0x68]
push ecx
mov ecx, edi
mov dword [esp + 0xc4], 5
call fcn.100048e0
mov eax, dword [eax]
push ecx
sub eax, 0x10
mov dword [esp + 0x44], esp
mov esi, esp
call fcn.10001820
add eax, 0x10
mov ecx, ebx
mov dword [esi], eax
call fcn.10001420
mov esi, eax
lea eax, [esp + 0x3c]
mov dword [esp + 0x2c], esi
mov dword [esp + 0xc0], 0xffffffff
call fcn.10001660
test esi, esi
je 0x10041bd7
cmp dword [ebp + 0x18c], 0
jne 0x10041bd7
cmp dword [esi + 0x10], 0
jne 0x10041b39
mov eax, esi
call fcn.10023fd0
test eax, eax
jne 0x10041bd7
mov edx, esi
mov esi, dword [edx]
call fcn.1007e040
test eax, eax
je 0x10041bd7
mov eax, ebp
call fcn.1002ec10
cmp eax, 0xa
jbe 0x10041bd7
mov eax, dword [esp + 0x2c]
mov eax, dword [eax]
mov edx, dword [ebp]
push eax
mov eax, dword [edx + 0x14]
mov ecx, ebp
call eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [0x100bb2cc]
mov dword [ebx + 0x3c], eax
mov edx, dword [ecx]
mov eax, dword [edx + 0x8c]
call eax
jmp 0x100421da
lea ecx, [esp + 0x3c]
push ecx
mov ecx, str.ColdSnap
call fcn.10003700
lea edx, [esp + 0x3c]
push edx
mov ecx, edi
mov dword [esp + 0xc4], 6
call fcn.100048e0
mov eax, dword [eax]
push ecx
sub eax, 0x10
mov dword [esp + 0x44], esp
mov esi, esp
call fcn.10001820
add eax, 0x10
mov ecx, ebx
mov dword [esi], eax
call fcn.10001420
mov esi, eax
lea eax, [esp + 0x3c]
mov dword [esp + 0x38], esi
mov dword [esp + 0xc0], 0xffffffff
call fcn.10001660
test esi, esi
je 0x10041bd7
cmp dword [esi + 0x10], 0
jne 0x10041bd7
mov eax, esi
call fcn.10023fd0
test eax, eax
jne 0x10041bd7
mov eax, esi
mov esi, dword [eax]
call fcn.1007e040
test eax, eax
je 0x10041bd7
mov eax, dword [esp + 0x38]
mov ecx, dword [eax]
mov edx, dword [ebp]
mov edx, dword [edx + 0x14]
push ecx
mov ecx, ebp
call edx
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [ebx + 0x3c], eax
jmp 0x10042428
lea eax, [esp + 0x3c]
push eax
mov ecx, str.ArcanePower
call fcn.10003700
lea ecx, [esp + 0x3c]
push ecx
mov ecx, edi
mov dword [esp + 0xc4], 7
call fcn.100048e0
mov eax, dword [eax]
push ecx
sub eax, 0x10
mov dword [esp + 0x44], esp
mov esi, esp
call fcn.10001820
add eax, 0x10
mov ecx, ebx
mov dword [esi], eax
call fcn.10001420
mov esi, eax
lea eax, [esp + 0x3c]
mov dword [esp + 0x2c], esi
mov dword [esp + 0xc0], 0xffffffff
call fcn.10001660
test esi, esi
je 0x10041c86
mov edx, esi
cmp dword [edx + 0x10], 0
jne 0x10041c86
mov eax, esi
call fcn.10023fd0
test eax, eax
jne 0x10041c86
mov eax, esi
mov esi, dword [eax]
call fcn.1007e040
test eax, eax
je 0x10041c86
mov ecx, dword [esp + 0x2c]
mov esi, dword [ecx]
mov eax, ebp
call fcn.10056f10
test eax, eax
jne 0x10041c86
mov edi, ebp
call fcn.100574b0
mov edx, dword [esp + 0x2c]
mov eax, dword [edx]
mov edx, dword [ebp]
push eax
mov eax, dword [edx + 0x14]
mov ecx, ebp
call eax
jmp 0x100421d1
mov esi, 0xe1a1
mov eax, ebp
call fcn.10056f10
test eax, eax
je 0x10041dbe
lea ecx, [esp + 0x3c]
push ecx
mov ecx, str.FrostfireBolt
call fcn.10003700
lea edx, [esp + 0x3c]
push edx
mov ecx, edi
mov dword [esp + 0xc4], 8
call fcn.100048e0
mov eax, dword [eax]
push ecx
sub eax, 0x10
mov dword [esp + 0x44], esp
mov esi, esp
call fcn.10001820
add eax, 0x10
mov ecx, ebx
mov dword [esi], eax
call fcn.10001420
mov esi, eax
lea eax, [esp + 0x3c]
mov dword [esp + 0x2c], esi
mov dword [esp + 0xc0], 0xffffffff
call fcn.10001660
test esi, esi
je 0x10041d2f
cmp dword [esi + 0x10], 0
jne 0x10041d2f
mov eax, esi
call fcn.10023fd0
test eax, eax
jne 0x10041d2f
mov eax, esi
mov esi, dword [eax]
call fcn.1007e040
test eax, eax
je 0x10041d2f
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx]
mov edx, dword [ebp]
push eax
mov eax, dword [edx + 0x14]
mov ecx, ebp
call eax
jmp 0x100421d1
lea ecx, [esp + 0x3c]
push ecx
mov ecx, str.Fireball
call fcn.10003700
lea edx, [esp + 0x3c]
push edx
mov ecx, edi
mov dword [esp + 0xc4], 9
call fcn.100048e0
mov eax, dword [eax]
push ecx
sub eax, 0x10
mov dword [esp + 0x44], esp
mov esi, esp
call fcn.10001820
add eax, 0x10
mov ecx, ebx
mov dword [esi], eax
call fcn.10001420
mov esi, eax
lea eax, [esp + 0x3c]
mov dword [esp + 0x2c], esi
mov dword [esp + 0xc0], 0xffffffff
call fcn.10001660
test esi, esi
je 0x10041dbe
cmp dword [esi + 0x10], 0
jne 0x10041dbe
mov eax, esi
call fcn.10023fd0
test eax, eax
jne 0x10041dbe
mov eax, esi
mov esi, dword [eax]
call fcn.1007e040
test eax, eax
je 0x10041dbe
mov eax, ebp
call fcn.1002ec10
cmp eax, 2
ja 0x10041d19
mov esi, 0xadff
mov eax, ebp
call fcn.10056f10
test eax, eax
jne 0x10041e02
mov esi, 0xae00
mov eax, ebp
call fcn.10056f10
test eax, eax
jne 0x10041e02
mov esi, 0xae01
mov eax, ebp
call fcn.10056f10
test eax, eax
jne 0x10041e02
mov esi, 0x14482
mov eax, ebp
call fcn.10056f10
test eax, eax
je 0x10041e91
lea ecx, [esp + 0x3c]
push ecx
mov ecx, str.IceLance
call fcn.10003700
lea edx, [esp + 0x3c]
push edx
mov ecx, edi
mov dword [esp + 0xc4], 0xa
call fcn.100048e0
mov eax, dword [eax]
push ecx
sub eax, 0x10
mov dword [esp + 0x44], esp
mov esi, esp
call fcn.10001820
add eax, 0x10
mov ecx, ebx
mov dword [esi], eax
call fcn.10001420
mov esi, eax
lea eax, [esp + 0x3c]
mov dword [esp + 0x2c], esi
mov dword [esp + 0xc0], 0xffffffff
call fcn.10001660
test esi, esi
je 0x10041e91
cmp dword [esi + 0x10], 0
jne 0x10041e91
mov eax, esi
call fcn.10023fd0
test eax, eax
jne 0x10041e91
mov eax, esi
mov esi, dword [eax]
call fcn.1007e040
test eax, eax
je 0x10041e91
mov eax, ebp
call fcn.1002ec10
cmp eax, 1
ja 0x10041d19
mov ecx, dword [ebx + 0x14]
cmp dword [ecx + 0x2cc], 0
je 0x10041f30
lea edx, [esp + 0x3c]
push edx
mov ecx, str.MirrorImage
call fcn.10003700
lea eax, [esp + 0x3c]
push eax
mov ecx, edi
mov dword [esp + 0xc4], 0xb
call fcn.100048e0
mov eax, dword [eax]
push ecx
sub eax, 0x10
mov dword [esp + 0x44], esp
mov esi, esp
call fcn.10001820
add eax, 0x10
mov ecx, ebx
mov dword [esi], eax
call fcn.10001420
mov esi, eax
lea eax, [esp + 0x3c]
mov dword [esp + 0x2c], esi
mov dword [esp + 0xc0], 0xffffffff
call fcn.10001660
test esi, esi
je 0x10041f30
cmp dword [esi + 0x10], 0
jne 0x10041f30
mov eax, esi
call fcn.10023fd0
test eax, eax
jne 0x10041f30
mov ecx, esi
mov esi, dword [ecx]
call fcn.1007e040
test eax, eax
je 0x10041f30
mov eax, ebp
call fcn.1002ec10
cmp eax, 2
ja 0x10041c70
fld qword [0x100a9918]
fcomp qword [esp + 0x44]
fnstsw ax
test ah, 1
jne 0x1004213f
lea ecx, [esp + 0x3c]
push ecx
mov ecx, str.FrostNova
call fcn.10003700
lea edx, [esp + 0x3c]
push edx
mov ecx, edi
mov dword [esp + 0xc4], 0xc
call fcn.100048e0
mov eax, dword [eax]
push ecx
sub eax, 0x10
mov dword [esp + 0x44], esp
mov esi, esp
call fcn.10001820
add eax, 0x10
mov ecx, ebx
mov dword [esi], eax
call fcn.10001420
mov esi, eax
lea eax, [esp + 0x3c]
mov dword [esp + 0x2c], esi
mov dword [esp + 0xc0], 0xffffffff
call fcn.10001660
test esi, esi
je 0x10042002
cmp dword [esi + 0x10], 0
jne 0x10042002
mov eax, esi
call fcn.10023fd0
test eax, eax
jne 0x10042002
mov eax, esi
mov esi, dword [eax]
call fcn.1007e040
test eax, eax
je 0x10042002
mov eax, dword [esp + 0x30]
call fcn.10003b20
cmp eax, 8
jbe 0x10042002
mov eax, ebp
call fcn.1002ec10
cmp eax, 3
jbe 0x10042002
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx]
mov edx, dword [ebp]
push eax
mov eax, dword [edx + 0x14]
mov ecx, ebp
call eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [ebx + 0x3c], eax
call fcn.1003db00
jmp 0x100421da
lea ecx, [esp + 0x3c]
push ecx
mov ecx, str.FireBlast
call fcn.10003700
lea edx, [esp + 0x3c]
push edx
mov ecx, edi
mov dword [esp + 0xc4], 0xd
call fcn.100048e0
mov eax, dword [eax]
push ecx
sub eax, 0x10
mov dword [esp + 0x44], esp
mov esi, esp
call fcn.10001820
add eax, 0x10
mov ecx, ebx
mov dword [esi], eax
call fcn.10001420
mov esi, eax
lea eax, [esp + 0x3c]
mov dword [esp + 0x2c], esi
mov dword [esp + 0xc0], 0xffffffff
call fcn.10001660
test esi, esi
je 0x10042097
cmp dword [esi + 0x10], 0
jne 0x10042097
mov eax, esi
call fcn.10023fd0
test eax, eax
jne 0x10042097
mov eax, esi
mov esi, dword [eax]
call fcn.1007e040
test eax, eax
je 0x10042097
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx]
mov edx, dword [ebp]
push eax
mov eax, dword [edx + 0x14]
mov ecx, ebp
call eax
jmp 0x100421d1
lea ecx, [esp + 0x3c]
push ecx
mov ecx, str.ConeOfCold
call fcn.10003700
lea edx, [esp + 0x3c]
push edx
mov ecx, edi
mov dword [esp + 0xc4], 0xe
call fcn.100048e0
mov eax, dword [eax]
push ecx
sub eax, 0x10
mov dword [esp + 0x44], esp
mov esi, esp
call fcn.10001820
add eax, 0x10
mov ecx, ebx
mov dword [esi], eax
call fcn.10001420
mov esi, eax
lea eax, [esp + 0x3c]
mov dword [esp + 0x2c], esi
mov dword [esp + 0xc0], 0xffffffff
call fcn.10001660
test esi, esi
je 0x1004213f
mov eax, esi
call fcn.1006e760
cmp dword [esi + 0x10], 0
jne 0x1004213f
mov eax, esi
call fcn.10023fd0
test eax, eax
je 0x1004213f
mov eax, esi
mov esi, dword [eax]
call fcn.1007e040
test eax, eax
je 0x1004213f
mov eax, ebp
call fcn.1002ec10
cmp eax, 0xa
jbe 0x1004213f
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx]
mov edx, dword [ebp]
push eax
mov eax, dword [edx + 0x14]
mov ecx, ebp
call eax
jmp 0x100421d1
lea ecx, [esp + 0x3c]
push ecx
mov ecx, str.Frostbolt
call fcn.10003700
lea edx, [esp + 0x3c]
push edx
mov ecx, edi
mov dword [esp + 0xc4], 0xf
call fcn.100048e0
mov eax, dword [eax]
push ecx
sub eax, 0x10
mov dword [esp + 0x44], esp
mov esi, esp
call fcn.10001820
add eax, 0x10
mov ecx, ebx
mov dword [esi], eax
call fcn.10001420
mov edi, eax
lea eax, [esp + 0x3c]
mov dword [esp + 0xc0], 0xffffffff
call fcn.10001660
test edi, edi
je 0x100421da
cmp dword [edi + 0x10], 0
jne 0x100421da
mov eax, edi
call fcn.10023fd0
test eax, eax
jne 0x100421da
mov esi, dword [edi]
call fcn.1007e040
test eax, eax
je 0x100421da
mov eax, ebp
call fcn.1002ec10
cmp eax, 1
jbe 0x100421da
mov edi, dword [edi]
mov eax, dword [ebp]
mov edx, dword [eax + 0x14]
push edi
mov ecx, ebp
call edx
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [ebx + 0x3c], eax
mov eax, dword [ebx + 0x14]
cmp dword [eax + 0x2b4], 0
je 0x100422b6
mov eax, ebp
call fcn.1002ec10
cmp eax, 8
jae 0x100422b6
lea ecx, [esp + 0x3c]
push ecx
mov ecx, str.Shoot
call fcn.10003700
lea edx, [esp + 0x3c]
push edx
lea ecx, [ebx + 0x68]
mov dword [esp + 0xc4], 0x10
call fcn.100048e0
mov eax, dword [eax]
push ecx
sub eax, 0x10
mov dword [esp + 0x44], esp
mov esi, esp
call fcn.10001820
add eax, 0x10
mov ecx, ebx
mov dword [esi], eax
call fcn.10001420
mov edi, eax
lea eax, [esp + 0x3c]
mov dword [esp + 0xc0], 0xffffffff
call fcn.10001660
test edi, edi
je 0x100422b6
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [ebx + 0x3c]
cmp eax, 0x3e8
jbe 0x100422b6
cmp dword [edi + 0x10], 0
jne 0x100422b6
mov eax, edi
call fcn.10023fd0
test eax, eax
jne 0x100422b6
mov esi, dword [edi]
call fcn.1007e040
test eax, eax
je 0x100422b6
mov eax, edi
call fcn.1002ebf0
test eax, eax
jne 0x100422b6
mov eax, ebp
call fcn.1002ec10
cmp eax, 5
jae 0x100422b6
mov ecx, dword [edi]
mov eax, dword [ebp]
mov edx, dword [eax + 0x14]
push ecx
mov ecx, ebp
call edx
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [ebx + 0x3c], eax
jmp 0x10042428
mov eax, dword [ebx + 0x14]
cmp dword [eax + 0x2b8], 0
je 0x10042428
mov eax, ebp
call fcn.1002ec10
cmp eax, 0xa
ja 0x10042428
fld qword [0x100a98b0]
fld qword [esp + 0x44]
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x10042372
fstp st(1)
lea eax, [ebx + 0x24]
fld dword [esp + 0x60]
mov edx, 0x211
fld qword [esp + 0x4c]
mov ecx, 2
fld qword [0x100a9840]
mov esi, ebp
fmul st(1), st(0)
mov dword [ebx + 0x34], edx
fxch st(1)
mov dword [ebx + 0x38], 1
fdiv st(3)
fsubp st(2)
fxch st(1)
fstp dword [ebx + 0x28]
fld qword [esp + 0x54]
fmulp st(1)
fdivrp st(1)
fsubr dword [esp + 0x5c]
fstp dword [eax]
call fcn.10056b10
cmp eax, 2
jne 0x1004235d
mov ecx, dword [ebx + 0x14]
mov eax, dword [esp + 0x30]
push ecx
call fcn.1001b910
mov eax, dword [esp + 0x34]
call fcn.10004a60
mov dword [ebx + 0x38], 0
jmp 0x10042428
cmp eax, 1
jne 0x10042428
mov dword [ebx + 0x38], 0
jmp 0x10042428
fcompp
fnstsw ax
test ah, 5
jp 0x10042428
lea edx, [esp + 0x34]
push edx
mov ecx, str.Attack
call fcn.10003700
lea eax, [esp + 0x34]
push eax
lea ecx, [ebx + 0x68]
mov dword [esp + 0xc4], 0x11
call fcn.100048e0
mov eax, dword [eax]
push ecx
sub eax, 0x10
mov dword [esp + 0x44], esp
mov esi, esp
call fcn.10001820
add eax, 0x10
mov ecx, ebx
mov dword [esi], eax
call fcn.10001420
mov edi, eax
lea eax, [esp + 0x34]
mov dword [esp + 0xc0], 0xffffffff
call fcn.10001660
test edi, edi
je 0x10042428
mov eax, dword [edi]
mov ecx, dword [0x100bb2cc]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 0x64]
call eax
test eax, eax
jne 0x10042428
mov esi, dword [edi]
call fcn.1007e040
test eax, eax
je 0x10042428
mov eax, edi
call fcn.1002ebf0
test eax, eax
jne 0x10042428
mov eax, dword [edi]
mov edx, dword [ebp]
mov edx, dword [edx + 0x14]
push eax
mov ecx, ebp
call edx
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push 0x1f4
mov dword [ebx + 0x3c], eax
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, 1
mov ecx, dword [esp + 0xb8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret 4