Function at 0x4965d0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x4c6c1b
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x250
mov eax, dword [0x51eea4]
xor eax, dword [ebp + 4]
push ebx
push esi
mov esi, ecx
fld dword [esi + 0x18c]
mov dword [esp + 0x250], eax
fmul dword [0x4f4094]
mov al, byte [esi + 0x2d4]
test al, al
push edi
fstp dword [esp + 0x30]
mov byte [esi + 0x2a0], 1
fld dword [esi + 0x18c]
fmul dword [0x4f26c8]
fstp dword [esp + 0x40]
jne 0x497132
mov al, byte [esi + 8]
test al, al
jne 0x497132
mov eax, dword [esi + 0x10]
test eax, eax
jne 0x496650
xor ebx, ebx
jmp 0x496658
mov ebx, dword [esi + 0x14]
sub ebx, eax
sar ebx, 2
add ebx, 0xfffffffe
test ebx, ebx
mov dword [esp + 0x24], ebx
jl 0x497132
mov eax, dword [esi + 0x10]
mov edi, dword [eax + ebx*4]
test edi, edi
mov dword [esp + 0x12c], edi
je 0x49667b
inc dword [edi + 4]
mov eax, dword [esi + 0x10]
mov ecx, dword [eax + ebx*4 + 4]
mov eax, dword [edi + 8]
mov edx, dword [edi + 0xc]
mov dword [esp + 0xfc], eax
xor eax, eax
mov dword [esp + 0x264], 0
mov dword [esp + 0x100], edx
add ecx, 8
fld dword [esp + eax*4 + 0xfc]
inc eax
fsub dword [ecx]
add ecx, 4
cmp eax, 2
fstp dword [esp + eax*4 + 0xf8]
jb 0x4966a6
mov eax, dword [esp + 0xfc]
fld dword [0x4fc4b8]
mov ecx, dword [esp + 0x100]
mov dword [esp + 0x154], eax
mov dword [esp + 0x158], ecx
xor eax, eax
fld dword [esp + eax*4 + 0x154]
inc eax
cmp eax, 2
fld st(0)
fmul st(1)
faddp st(2)
fstp st(0)
jb 0x4966e3
fcom dword [0x4fc4b8]
fnstsw ax
test ah, 0x44
jp 0x496711
fstp st(0)
mov dword [esp + 0x14], 0
jmp 0x496717
fsqrt
fstp dword [esp + 0x14]
push ebx
mov ecx, esi
call fcn.0048df50
test al, al
je 0x496731
call fcn.0043f0a0
cmp byte [eax], 0
jne 0x496731
mov byte [edi + 0x22], 1
mov eax, dword [esi + 0x10]
mov eax, dword [eax + ebx*4]
mov cl, byte [eax + 0x22]
test cl, cl
je 0x496cb6
fld dword [esi + 0x1ac]
fadd dword [0x4f460c]
fcomp dword [esp + 0x14]
fnstsw ax
test ah, 5
jp 0x496cb6
call fcn.0043f0a0
cmp byte [eax], 0
jne 0x496cb6
push ebx
mov ecx, esi
call fcn.0048dbf0
fld dword [esp + 0x40]
mov ecx, eax
mov eax, dword [esi + 0x10]
mov eax, dword [eax + ecx*4]
fadd dword [eax + 0x18]
mov dword [esp + 0x38], ecx
fstp dword [eax + 0x18]
mov edx, dword [esi + 0x10]
mov eax, dword [edx + ecx*4]
fld dword [eax + 0x18]
fcomp dword [esi + 0x21c]
fnstsw ax
test ah, 0x41
jne 0x4967ab
mov edx, dword [edx + ecx*4]
mov eax, dword [esi + 0x21c]
mov dword [edx + 0x18], eax
cmp ecx, ebx
mov byte [esp + 0x37], 1
mov eax, ecx
jg 0x4967d5
mov edi, dword [esi + 0x10]
lea esp, [esp]
mov edx, dword [edi + eax*4]
cmp byte [edx + 0x21], 0
jne 0x4967d0
inc eax
cmp eax, ebx
jle 0x4967c0
jmp 0x4967d5
mov byte [esp + 0x37], 0
cmp ecx, ebx
mov edi, ecx
mov dword [esp + 0x54], edi
jg 0x496cb6
jmp 0x4967f0
mov ecx, dword [esp + 0x38]
lea esp, [esp]
mov edx, dword [esi + 0x10]
lea eax, [edi*4]
mov ebx, dword [eax + edx]
test ebx, ebx
mov dword [esp + 0x1fc], ebx
je 0x49680b
inc dword [ebx + 4]
cmp edi, ecx
mov byte [esp + 0x264], 1
jne 0x4969b1
mov eax, dword [esi + 0x10]
mov eax, dword [eax + ecx*4]
fld dword [eax + 0x18]
fdiv dword [esi + 0x1cc]
fld dword [esi + 0x1b8]
fmul dword [esi + 0x1a4]
fmulp st(1)
fmul dword [esp + 0x30]
fst dword [esp + 0x3c]
fld dword [esp + 0x14]
fsub dword [esi + 0x1ac]
fstp dword [esp + 0x28]
fcomp dword [esp + 0x28]
fnstsw ax
test ah, 0x41
jne 0x496867
fld dword [esp + 0x28]
fsub dword [0x4f68d4]
fstp dword [esp + 0x3c]
mov al, byte [esp + 0x37]
test al, al
jne 0x496877
mov dword [esp + 0x3c], 0
push 0x5c
call fcn.004ad909
xor edi, edi
add esp, 4
cmp eax, edi
je 0x4968ab
mov dword [eax + 4], edi
mov dword [eax], 0x4f7340
xor ecx, ecx
mov dword [eax + 8], ecx
mov dword [eax + 0xc], ecx
mov dword [eax + 0x2c], edi
xor edx, edx
mov dword [eax + 0x38], edx
mov dword [eax + 0x3c], edx
mov dword [eax + 0x40], edi
mov dword [eax + 0x44], edi
jmp 0x4968ad
xor eax, eax
cmp eax, edi
mov dword [esp + 0x10], eax
mov dword [esp + 0x138], eax
je 0x4968bf
inc dword [eax + 4]
fld dword [esi + 0x1ac]
fdiv dword [0x51c4b0]
mov byte [esp + 0x264], 2
fld dword [esp + 0x3c]
fcomp st(1)
fnstsw ax
test ah, 0x41
jne 0x4968e6
fstp dword [esp + 0x3c]
jmp 0x4968e8
fstp st(0)
cmp ebx, edi
mov eax, dword [esp + 0x3c]
push 1
push edi
push eax
push ecx
mov eax, esp
mov dword [esp + 0x2c], esp
mov dword [eax], ebx
je 0x496900
inc dword [ebx + 4]
lea ecx, [esp + 0x150]
push ecx
mov ecx, esi
call fcn.0048e770
mov eax, dword [eax]
cmp eax, edi
mov byte [esp + 0x264], 3
je 0x496920
inc dword [eax + 4]
mov edi, eax
mov eax, dword [esp + 0x10]
test eax, eax
mov dword [esp + 0x200], eax
mov dword [esp + 0x138], edi
je 0x49694d
mov edx, dword [eax + 4]
dec edx
mov ecx, edx
test ecx, ecx
mov dword [eax + 4], edx
jne 0x49694d
mov ecx, eax
mov edx, dword [ecx]
push 1
call dword [edx]
mov eax, dword [esp + 0x140]
test eax, eax
mov byte [esp + 0x264], 2
je 0x496979
mov edx, dword [eax + 4]
mov ecx, eax
add eax, 4
dec edx
mov dword [eax], edx
mov eax, edx
mov dword [esp + 0x1c], eax
jne 0x496979
mov edx, dword [ecx]
push 1
call dword [edx]
mov eax, dword [edi + 8]
mov dword [ebx + 8], eax
mov ecx, dword [edi + 0xc]
mov dword [ebx + 0xc], ecx
mov edx, dword [edi + 0x14]
mov dword [ebx + 0x14], edx
mov ecx, dword [edi + 4]
dec ecx
mov eax, ecx
test eax, eax
mov byte [esp + 0x264], 1
mov dword [edi + 4], ecx
jne 0x496c80
mov eax, dword [edi]
push 1
mov ecx, edi
call dword [eax]
jmp 0x496c80
mov ecx, dword [esi + 0x10]
mov eax, dword [eax + ecx - 4]
test eax, eax
mov dword [esp + 0xa4], eax
je 0x4969c6
inc dword [eax + 4]
lea ecx, [eax + 8]
lea eax, [ebx + 8]
mov edx, dword [eax]
mov eax, dword [eax + 4]
mov dword [esp + 0x7c], edx
mov dword [esp + 0x80], eax
lea edx, [esp + 0x7c]
xor eax, eax
mov byte [esp + 0x264], 4
sub ecx, edx
lea esp, [esp]
fld dword [esp + eax*4 + 0x7c]
lea edx, [ecx + eax*4]
fsub dword [esp + edx + 0x7c]
inc eax
cmp eax, 2
fstp dword [esp + eax*4 + 0x78]
jb 0x4969f0
mov eax, dword [esp + 0x7c]
fld dword [0x4fc4b8]
mov ecx, dword [esp + 0x80]
mov dword [esp + 0x10c], eax
mov dword [esp + 0x110], ecx
xor eax, eax
jmp 0x496a30
fld dword [esp + eax*4 + 0x10c]
inc eax
cmp eax, 2
fld st(0)
fmul st(1)
faddp st(2)
fstp st(0)
jb 0x496a30
fcom dword [0x4fc4b8]
fnstsw ax
test ah, 0x44
jp 0x496a5c
fstp st(0)
fld dword [0x4fc4b8]
jmp 0x496a5e
fsqrt
fcomp dword [esi + 0x1ac]
fnstsw ax
test ah, 5
jp 0x496c58
mov eax, dword [esi + 0x10]
mov edx, dword [esp + 0x38]
mov eax, dword [eax + edx*4]
fld dword [eax + 0x18]
xor eax, eax
fst dword [ebx + 0x18]
fdiv dword [esi + 0x1cc]
fld dword [esi + 0x1b8]
fmul dword [esi + 0x1a4]
fmulp st(1)
fmul dword [esp + 0x30]
fst dword [esp + 0x10]
fld dword [0x4fc4b8]
fld dword [esp + eax*4 + 0x10c]
inc eax
cmp eax, 2
fld st(0)
fmul st(1)
faddp st(2)
fstp st(0)
jb 0x496aa3
fcom dword [0x4fc4b8]
fnstsw ax
test ah, 0x44
jp 0x496acf
fstp st(0)
fld dword [0x4fc4b8]
jmp 0x496ad1
fsqrt
fld dword [esi + 0x1ac]
fsub st(1)
fxch st(1)
fxch st(2)
fcompp
fnstsw ax
fstp st(0)
test ah, 0x41
jne 0x496b2c
fld dword [0x4fc4b8]
xor eax, eax
fld dword [esp + eax*4 + 0x10c]
inc eax
cmp eax, 2
fld st(0)
fmul st(1)
faddp st(2)
fstp st(0)
jb 0x496af0
fcom dword [0x4fc4b8]
fnstsw ax
test ah, 0x44
jp 0x496b1c
fstp st(0)
fld dword [0x4fc4b8]
jmp 0x496b1e
fsqrt
fld dword [esi + 0x1ac]
fsub st(1)
fstp dword [esp + 0x10]
fstp st(0)
mov al, byte [ebx + 0x21]
test al, al
jne 0x496c58
mov al, byte [esp + 0x37]
test al, al
jne 0x496b47
mov dword [esp + 0x10], 0
push 0x5c
call fcn.004ad909
xor edi, edi
add esp, 4
cmp eax, edi
je 0x496b7b
mov dword [eax + 4], edi
mov dword [eax], 0x4f7340
xor ecx, ecx
mov dword [eax + 8], ecx
mov dword [eax + 0xc], ecx
mov dword [eax + 0x2c], edi
xor edx, edx
mov dword [eax + 0x38], edx
mov dword [eax + 0x3c], edx
mov dword [eax + 0x40], edi
mov dword [eax + 0x44], edi
jmp 0x496b7d
xor eax, eax
cmp eax, edi
mov dword [esp + 0x20], eax
mov dword [esp + 0x120], eax
je 0x496b8f
inc dword [eax + 4]
fld dword [esp + 0x10]
push 1
push edi
sub esp, 8
mov eax, esp
fstp dword [esp + 4]
mov dword [eax], ebx
inc dword [ebx + 4]
lea eax, [esp + 0x134]
mov dword [esp + 0x2c], esp
push eax
mov ecx, esi
mov byte [esp + 0x278], 5
call fcn.0048e770
mov eax, dword [eax]
cmp eax, edi
mov byte [esp + 0x264], 6
je 0x496bd0
inc dword [eax + 4]
mov edi, eax
mov eax, dword [esp + 0x20]
test eax, eax
mov dword [esp + 0x234], eax
mov dword [esp + 0x120], edi
je 0x496bfd
mov edx, dword [eax + 4]
dec edx
mov ecx, edx
test ecx, ecx
mov dword [eax + 4], edx
jne 0x496bfd
mov ecx, eax
mov edx, dword [ecx]
push 1
call dword [edx]
mov eax, dword [esp + 0x124]
test eax, eax
mov byte [esp + 0x264], 5
je 0x496c29
mov edx, dword [eax + 4]
mov ecx, eax
add eax, 4
dec edx
mov dword [eax], edx
mov eax, edx
mov dword [esp + 0x1c], eax
jne 0x496c29
mov edx, dword [ecx]
push 1
call dword [edx]
mov eax, dword [edi + 8]
mov dword [ebx + 8], eax
mov ecx, dword [edi + 0xc]
mov dword [ebx + 0xc], ecx
mov edx, dword [edi + 0x14]
mov dword [ebx + 0x14], edx
mov ecx, dword [edi + 4]
dec ecx
mov eax, ecx
test eax, eax
mov byte [esp + 0x264], 4
mov dword [edi + 4], ecx
jne 0x496c58
mov eax, dword [edi]
push 1
mov ecx, edi
call dword [eax]
mov eax, dword [esp + 0xa4]
test eax, eax
mov byte [esp + 0x264], 1
je 0x496c80
mov edx, dword [eax + 4]
dec edx
mov ecx, edx
test ecx, ecx
mov dword [eax + 4], edx
jne 0x496c80
mov ecx, eax
mov edx, dword [ecx]
push 1
call dword [edx]
test ebx, ebx
mov byte [esp + 0x264], 0
je 0x496ca1
mov ecx, dword [ebx + 4]
dec ecx
mov eax, ecx
test eax, eax
mov dword [ebx + 4], ecx
jne 0x496ca1
mov eax, dword [ebx]
push 1
mov ecx, ebx
call dword [eax]
mov edi, dword [esp + 0x54]
mov ebx, dword [esp + 0x24]
inc edi
cmp edi, ebx
mov dword [esp + 0x54], edi
jle 0x4967e5
mov eax, dword [esi + 0x10]
mov eax, dword [eax + ebx*4]
mov cl, byte [eax + 0x22]
test cl, cl
je 0x4970fe
fld dword [esi + 0x1ac]
fadd dword [0x4f460c]
fcomp dword [esp + 0x14]
fnstsw ax
test ah, 1
jne 0x4970fe
call fcn.0043f0a0
cmp byte [eax], 0
jne 0x4970fe
mov eax, dword [esi + 0x10]
mov eax, dword [eax + ebx*4]
mov byte [eax + 0x22], 0
mov eax, dword [esi + 0x10]
mov eax, dword [eax + ebx*4]
mov byte [eax + 0x23], 1
mov eax, str._sound_balls_ball_collision.xml
mov dword [esp + 0x1a4], 0xf
mov dword [esp + 0x1a0], 0
mov byte [esp + 0x190], 0
lea edi, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x496d30
sub eax, edi
push eax
push str._sound_balls_ball_collision.xml
lea ecx, [esp + 0x194]
call fcn.00402cd0
lea ecx, [esp + 0x18c]
push ecx
lea edx, [esp + 0xb4]
push edx
mov byte [esp + 0x26c], 7
call fcn.0040e1a0
mov ecx, eax
call fcn.004352d0
cmp dword [esp + 0x1a4], 0x10
mov byte [esp + 0x264], 9
jb 0x496d91
mov eax, dword [esp + 0x190]
push eax
call fcn.004ade5d
add esp, 4
mov ecx, dword [esp + 0xb0]
push 1
mov dword [esp + 0x1a8], 0xf
mov dword [esp + 0x1a4], 0
mov byte [esp + 0x194], 0
call fcn.00431ca0
mov ecx, dword [esp + 0xb0]
call fcn.00432400
push ebx
mov ecx, esi
call fcn.0048dcc0
mov edi, eax
lea ecx, [ebx + 1]
cmp ecx, edi
jg 0x496e08
lea ebx, [ebx]
mov edx, dword [esi + 0x10]
mov eax, dword [edx + ebx*4]
mov eax, dword [eax + 0x18]
mov edx, dword [edx + ecx*4]
mov dword [edx + 0x18], eax
mov eax, dword [esi + 0x10]
mov eax, dword [eax + ecx*4]
mov byte [eax + 0x23], 1
mov eax, dword [esi + 0x10]
mov eax, dword [eax + ecx*4]
inc ecx
cmp ecx, edi
mov byte [eax + 0x22], 0
jle 0x496de0
push ebx
mov ecx, esi
call fcn.0048dbf0
mov edi, eax
lea ecx, [ebx - 1]
cmp ecx, edi
jl 0x496e48
lea esp, [esp]
mov edx, dword [esi + 0x10]
mov eax, dword [edx + ebx*4]
mov eax, dword [eax + 0x18]
mov edx, dword [edx + ecx*4]
mov dword [edx + 0x18], eax
mov eax, dword [esi + 0x10]
mov eax, dword [eax + ecx*4]
mov byte [eax + 0x23], 1
mov eax, dword [esi + 0x10]
mov eax, dword [eax + ecx*4]
dec ecx
cmp ecx, edi
mov byte [eax + 0x22], 0
jge 0x496e20
mov edx, dword [esi + 0x10]
mov eax, dword [edx + ebx*4]
mov edi, dword [eax + 8]
mov ecx, dword [edx + ebx*4 + 4]
add eax, 8
mov eax, dword [eax + 4]
mov dword [esp + 0xe0], eax
xor eax, eax
mov dword [esp + 0xdc], edi
add ecx, 8
mov edi, edi
fld dword [esp + eax*4 + 0xdc]
inc eax
fsub dword [ecx]
add ecx, 4
cmp eax, 2
fstp dword [esp + eax*4 + 0xd8]
jb 0x496e70
mov eax, dword [esp + 0xe0]
fld dword [0x4fc4b8]
mov ecx, dword [esp + 0xdc]
mov dword [esp + 0x170], eax
mov dword [esp + 0x16c], ecx
xor eax, eax
lea ecx, [ecx]
fld dword [esp + eax*4 + 0x16c]
inc eax
cmp eax, 2
fld st(0)
fmul st(1)
faddp st(2)
fstp st(0)
jb 0x496eb0
fcom dword [0x4fc4b8]
fnstsw ax
test ah, 0x44
jp 0x496edc
fstp st(0)
fld dword [0x4fc4b8]
jmp 0x496ede
fsqrt
fld dword [esi + 0x1ac]
fadd dword [0x4f5988]
fxch st(1)
fcompp
fnstsw ax
test ah, 5
jp 0x4970d4
mov eax, dword [edx + ebx*4]
mov edx, dword [edx + ebx*4 + 4]
mov ecx, dword [eax + 0x10]
cmp ecx, dword [edx + 0x10]
jne 0x4970d4
push ebx
mov ecx, esi
call fcn.0048e100
cmp eax, 2
jle 0x4970d4
mov ecx, dword [esi + 0x2b8]
inc ecx
mov eax, ecx
cmp eax, 2
mov dword [esi + 0x2b8], ecx
jl 0x4970b6
mov edi, 0xf
mov eax, str.hierarchy.Hint.combo
mov dword [esp + 0x1c0], edi
mov dword [esp + 0x1bc], 0
mov byte [esp + 0x1ac], 0
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x496f60
sub eax, edx
push eax
push str.hierarchy.Hint.combo
lea ecx, [esp + 0x1b0]
call fcn.00402cd0
lea edx, [esp + 0x1a8]
push edx
lea eax, [esp + 0x1e4]
push eax
mov byte [esp + 0x26c], 0xa
call fcn.00416de0
mov ecx, eax
call fcn.004118f0
cmp dword [esp + 0x1c0], 0x10
mov byte [esp + 0x264], 0xc
jb 0x496fc1
mov ecx, dword [esp + 0x1ac]
push ecx
call fcn.004ade5d
add esp, 4
mov edx, dword [esi + 0x2b8]
push edx
lea eax, [esp + 0x188]
push 0x4f1300
push eax
mov dword [esp + 0x1cc], edi
mov dword [esp + 0x1c8], 0
mov byte [esp + 0x1b8], 0
call fcn.004ae68f
lea eax, [esp + 0x190]
add esp, 0xc
lea edi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x497001
sub eax, edi
push eax
lea ecx, [esp + 0x188]
push ecx
lea ecx, [esp + 0x1e8]
call fcn.00402620
mov eax, dword [esi + 0x10]
mov ecx, dword [eax + ebx*4]
push 0x40000000
push 0x40000000
push 0
push 0x7d0
sub esp, 8
xor eax, eax
mov dword [esp + 0x34], esp
mov edx, esp
add ecx, 8
mov edi, dword [ecx]
mov dword [edx + eax*4], edi
inc eax
add ecx, 4
cmp eax, 2
jl 0x497044
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x50], esp
push 0xffffffffffffffff
xor edi, edi
push edi
lea edx, [esp + 0x21c]
mov dword [ecx + 0x18], 0xf
mov dword [ecx + 0x14], edi
push edx
mov byte [ecx + 4], 0
call fcn.00402aa0
mov ecx, esi
call fcn.004928e0
cmp dword [esp + 0x1f8], 0x10
jb 0x49709c
mov eax, dword [esp + 0x1e4]
push eax
call fcn.004ade5d
add esp, 4
mov dword [esp + 0x1f8], 0xf
mov dword [esp + 0x1f4], edi
mov byte [esp + 0x1e4], 0
mov eax, dword [esi + 0x31c]
test eax, eax
je 0x4970d4
mov ecx, dword [esi + 0x2b8]
cmp dword [eax + 0xa8], ecx
jge 0x4970d4
mov dword [eax + 0xa8], ecx
mov eax, dword [esp + 0xb0]
test eax, eax
mov byte [esp + 0x264], 0
je 0x4970fe
mov edx, dword [eax + 4]
mov ecx, eax
add eax, 4
dec edx
mov dword [eax], edx
mov dword [esp + 0x1c], edx
jne 0x4970fe
mov eax, dword [ecx]
push 1
call dword [eax]
mov ecx, dword [esp + 0x12c]
test ecx, ecx
mov dword [esp + 0x264], 0xffffffff
je 0x497127
mov edx, dword [ecx + 4]
dec edx
mov eax, edx
test eax, eax
mov dword [ecx + 4], edx
jne 0x497127
mov edx, dword [ecx]
push 1
call dword [edx]
dec ebx
mov dword [esp + 0x24], ebx
jns 0x496667
mov ecx, dword [esi + 0x10]
test ecx, ecx
jne 0x49713d
xor eax, eax
jmp 0x497145
mov eax, dword [esi + 0x14]
sub eax, ecx
sar eax, 2
dec eax
cmp eax, 1
mov dword [esp + 0x24], eax
jl 0x497455
dec eax
mov dword [esp + 0x14], eax
jmp 0x497160
mov eax, dword [esp + 0x24]
mov ecx, dword [esi + 0x10]
shl eax, 2
mov ebx, dword [ecx + eax]
test ebx, ebx
mov dword [esp + 0x148], ebx
je 0x49717b
inc dword [ebx + 4]
mov ecx, dword [esi + 0x10]
mov edi, dword [ecx + eax - 4]
test edi, edi
mov dword [esp + 0x264], 0xd
mov dword [esp + 0xf8], edi
je 0x49719b
inc dword [edi + 4]
mov al, byte [ebx + 0x21]
test al, al
jne 0x4973f9
mov al, byte [edi + 0x21]
test al, al
jne 0x4973f9
mov eax, dword [ebx + 0x14]
cmp eax, dword [edi + 0x14]
jl 0x4973f9
mov ecx, dword [esp + 0x14]
push ecx
mov ecx, esi
call fcn.0048dbf0
mov ecx, dword [ebx + 0xc]
mov dword [esp + 0x28], eax
mov eax, dword [ebx + 8]
mov dword [esp + 0x84], eax
lea edx, [edi + 8]
mov dword [esp + 0x88], ecx
lea eax, [esp + 0x84]
xor ecx, ecx
sub edx, eax
nop
fld dword [esp + ecx*4 + 0x84]
lea eax, [edx + ecx*4]
fsub dword [esp + eax + 0x84]
inc ecx
cmp ecx, 2
fstp dword [esp + ecx*4 + 0x80]
jb 0x4971f0
mov ecx, dword [esp + 0x84]
mov eax, dword [esi + 0x1ac]
mov edx, dword [esp + 0x88]
mov dword [esp + 0x208], ecx
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x14]
cmp eax, ecx
mov dword [esp + 0x20c], edx
mov dword [esp + 0x20], eax
jl 0x4973f9
jmp 0x497250
mov eax, dword [esi + 0x10]
mov ecx, dword [esp + 0x20]
mov edi, dword [eax + ecx*4]
test edi, edi
mov dword [esp + 0x210], edi
je 0x497268
inc dword [edi + 4]
push 0x5c
mov byte [esp + 0x268], 0xf
call fcn.004ad909
add esp, 4
test eax, eax
je 0x4972a4
xor ecx, ecx
mov dword [eax + 4], ecx
mov dword [eax], 0x4f7340
xor edx, edx
mov dword [eax + 8], edx
mov dword [eax + 0xc], edx
mov dword [eax + 0x2c], ecx
mov dword [eax + 0x38], edx
mov dword [eax + 0x3c], edx
mov dword [eax + 0x40], ecx
mov dword [eax + 0x44], ecx
mov ebx, eax
jmp 0x4972a8
xor ebx, ebx
xor ecx, ecx
cmp ebx, ecx
mov dword [esp + 0x14c], ebx
je 0x4972b6
inc dword [ebx + 4]
mov eax, dword [edi + 8]
mov dword [ebx + 8], eax
mov ecx, dword [edi + 0xc]
mov dword [ebx + 0xc], ecx
mov edx, dword [edi + 0x14]
mov dword [ebx + 0x14], edx
mov al, byte [edi + 0x29]
mov edx, dword [esp + 0x4c]
mov byte [ebx + 0x29], al
mov cl, byte [edi + 0x21]
push 1
push 1
push edx
mov byte [ebx + 0x21], cl
mov byte [esp + 0x270], 0x10
push ecx
mov eax, esp
mov dword [eax], edi
inc dword [edi + 4]
lea eax, [esp + 0x138]
mov dword [esp + 0x2c], esp
push eax
mov ecx, esi
call fcn.0048e770
mov eax, dword [eax]
test eax, eax
mov byte [esp + 0x264], 0x11
je 0x497311
inc dword [eax + 4]
mov edx, dword [ebx + 4]
dec edx
mov ecx, edx
test ecx, ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0x244], ebx
mov dword [esp + 0x14c], eax
mov dword [ebx + 4], edx
jne 0x49733c
mov edx, dword [ebx]
push 1
mov ecx, ebx
call dword [edx]
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x128]
test ecx, ecx
mov byte [esp + 0x264], 0x10
je 0x49736a
mov ebx, dword [ecx + 4]
lea edx, [ecx + 4]
dec ebx
mov dword [edx], ebx
mov edx, ebx
mov dword [esp + 0x1c], edx
jne 0x49736a
mov eax, dword [ecx]
push 1
call dword [eax]
mov eax, dword [esp + 0x10]
mov cl, byte [edi + 0x21]
test cl, cl
jne 0x497396
mov ecx, dword [eax + 8]
mov dword [edi + 8], ecx
mov edx, dword [eax + 0xc]
mov dword [edi + 0xc], edx
mov ecx, dword [eax + 0x14]
mov dword [edi + 0x14], ecx
mov ecx, dword [esp + 0xf8]
mov edx, dword [ecx + 0x1c]
mov dword [edi + 0x1c], edx
mov ecx, dword [ecx + 0x18]
mov dword [edi + 0x18], ecx
test eax, eax
mov byte [esp + 0x264], 0xf
je 0x4973b9
mov edx, dword [eax + 4]
dec edx
mov ecx, edx
test ecx, ecx
mov dword [eax + 4], edx
jne 0x4973b9
mov ecx, dword [esp + 0x10]
mov edx, dword [ecx]
push 1
call dword [edx]
mov ecx, dword [edi + 4]
dec ecx
mov eax, ecx
test eax, eax
mov byte [esp + 0x264], 0xe
mov dword [edi + 4], ecx
jne 0x4973d6
mov eax, dword [edi]
push 1
mov ecx, edi
call dword [eax]
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x28]
dec eax
cmp eax, ecx
mov dword [esp + 0x20], eax
jge 0x497250
mov edi, dword [esp + 0xf8]
mov ebx, dword [esp + 0x148]
test edi, edi
mov byte [esp + 0x264], 0xd
je 0x49741a
mov ecx, dword [edi + 4]
dec ecx
mov eax, ecx
test eax, eax
mov dword [edi + 4], ecx
jne 0x49741a
mov edx, dword [edi]
push 1
mov ecx, edi
call dword [edx]
mov ecx, dword [ebx + 4]
dec ecx
mov eax, ecx
test eax, eax
mov dword [esp + 0x264], 0xffffffff
mov dword [ebx + 4], ecx
jne 0x49743a
mov eax, dword [ebx]
push 1
mov ecx, ebx
call dword [eax]
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x14]
dec eax
dec edx
cmp eax, 1
mov dword [esp + 0x24], eax
mov dword [esp + 0x14], edx
jge 0x497160
mov al, byte [esi + 0x28c]
test al, al
je 0x49799c
xor ebx, ebx
push ebx
mov ecx, esi
call fcn.0048dcc0
mov ecx, dword [esi + 0x10]
cmp ecx, ebx
mov edi, eax
jne 0x49747a
xor eax, eax
jmp 0x497482
mov eax, dword [esi + 0x14]
sub eax, ecx
sar eax, 2
dec eax
push eax
mov ecx, esi
call fcn.0048dbf0
cmp edi, eax
jl 0x497496
mov byte [esi + 0x2a0], 0
mov edx, dword [esi + 0x190]
mov eax, dword [esi + 0x290]
mov edi, dword [esi + 0x194]
mov ecx, edx
sub ecx, eax
mov eax, edi
sbb eax, dword [esi + 0x294]
cmp eax, dword [esi + 0x29c]
jg 0x497970
jl 0x4974ce
cmp ecx, dword [esi + 0x298]
jae 0x497970
mov ecx, dword [esi + 0x10]
cmp ecx, ebx
je 0x49799c
mov eax, dword [esi + 0x14]
sub eax, ecx
sar eax, 2
cmp eax, ebx
jbe 0x49799c
mov eax, ecx
mov edi, dword [eax]
cmp edi, ebx
mov dword [esp + 0x13c], edi
je 0x4974fb
inc dword [edi + 4]
push 0x5c
mov dword [esp + 0x268], 0x12
call fcn.004ad909
add esp, 4
cmp eax, ebx
je 0x49753a
xor ecx, ecx
mov dword [eax + 4], ecx
mov dword [eax], 0x4f7340
xor edx, edx
mov dword [eax + 8], edx
mov dword [eax + 0xc], edx
mov dword [eax + 0x2c], ecx
mov dword [eax + 0x38], edx
mov dword [eax + 0x3c], edx
mov dword [eax + 0x40], ecx
mov dword [eax + 0x44], ecx
mov ebx, eax
jmp 0x49753e
xor ebx, ebx
xor ecx, ecx
cmp ebx, ecx
mov dword [esp + 0x54], ebx
je 0x497549
inc dword [ebx + 4]
fld dword [esp + 0x30]
mov eax, dword [edi + 8]
mov dword [ebx + 8], eax
mov ecx, dword [edi + 0xc]
mov dword [ebx + 0xc], ecx
mov edx, dword [edi + 0x14]
mov dword [ebx + 0x14], edx
mov al, byte [edi + 0x29]
mov byte [ebx + 0x29], al
mov cl, byte [edi + 0x21]
mov byte [ebx + 0x21], cl
fmul dword [esi + 0x1a4]
push 0
mov ecx, esi
fstp dword [esp + 0x1c]
mov byte [esp + 0x268], 0x13
mov dword [edi + 0x1c], 0
call fcn.0048dcc0
mov ecx, 1
cmp eax, ecx
mov dword [esp + 0x24], eax
jl 0x4975bc
mov edx, dword [esi + 0x10]
lea ecx, [ecx]
mov eax, dword [edx + ecx*4]
cmp byte [eax + 0x21], 0
jne 0x4975b4
mov eax, dword [esp + 0x24]
inc ecx
cmp ecx, eax
jle 0x4975a0
jmp 0x4975bc
mov dword [esp + 0x18], 0
mov al, byte [edi + 0x21]
test al, al
jne 0x497685
fld dword [esi + 0x1ac]
fdiv dword [0x51c4b0]
fld dword [esp + 0x18]
fcomp st(1)
fnstsw ax
test ah, 0x41
jne 0x4975e6
fstp dword [esp + 0x18]
jmp 0x4975e8
fstp st(0)
mov edx, dword [esp + 0x18]
push 1
push 0
push edx
push ecx
mov eax, esp
mov dword [eax], edi
inc dword [edi + 4]
lea eax, [esp + 0x140]
mov dword [esp + 0x2c], esp
push eax
mov ecx, esi
call fcn.0048e770
mov eax, dword [eax]
test eax, eax
mov byte [esp + 0x264], 0x14
je 0x49761d
inc dword [eax + 4]
mov edx, dword [ebx + 4]
dec edx
mov ecx, edx
test ecx, ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x21c], ebx
mov dword [esp + 0x54], eax
mov dword [ebx + 4], edx
jne 0x497645
mov edx, dword [ebx]
push 1
mov ecx, ebx
call dword [edx]
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x130]
test ecx, ecx
mov byte [esp + 0x264], 0x13
je 0x497673
mov ebx, dword [ecx + 4]
lea edx, [ecx + 4]
dec ebx
mov dword [edx], ebx
mov edx, ebx
mov dword [esp + 0x1c], edx
jne 0x497673
mov eax, dword [ecx]
push 1
call dword [eax]
mov eax, dword [esp + 0x28]
mov ecx, dword [eax + 8]
mov dword [edi + 8], ecx
mov edx, dword [eax + 0xc]
mov dword [edi + 0xc], edx
mov eax, dword [eax + 0x14]
mov dword [edi + 0x14], eax
mov ecx, dword [esp + 0x24]
mov eax, 1
cmp ecx, eax
mov dword [esp + 0x20], eax
jl 0x49792d
lea ebx, [ebx]
mov eax, dword [esp + 0x20]
mov ecx, dword [esi + 0x10]
shl eax, 2
mov ebx, dword [ecx + eax]
test ebx, ebx
mov dword [esp + 0x23c], ebx
je 0x4976bb
inc dword [ebx + 4]
mov ecx, dword [esi + 0x10]
mov eax, dword [ecx + eax - 4]
test eax, eax
mov dword [esp + 0xd0], eax
je 0x4976d0
inc dword [eax + 4]
lea ecx, [eax + 8]
lea eax, [ebx + 8]
mov dword [ebx + 0x1c], 0
mov edx, dword [eax]
mov eax, dword [eax + 4]
mov dword [esp + 0x90], edx
mov dword [esp + 0x94], eax
lea edx, [esp + 0x90]
xor eax, eax
mov byte [esp + 0x264], 0x16
sub ecx, edx
fld dword [esp + eax*4 + 0x90]
lea edx, [ecx + eax*4]
fsub dword [esp + edx + 0x90]
inc eax
cmp eax, 2
fstp dword [esp + eax*4 + 0x8c]
jb 0x497703
mov eax, dword [esp + 0x90]
fld dword [0x4fc4b8]
mov ecx, dword [esp + 0x94]
mov dword [esp + 0x17c], eax
mov dword [esp + 0x180], ecx
xor eax, eax
fld dword [esp + eax*4 + 0x17c]
inc eax
cmp eax, 2
fld st(0)
fmul st(1)
faddp st(2)
fstp st(0)
jb 0x497745
fcom dword [0x4fc4b8]
fnstsw ax
test ah, 0x44
jp 0x497771
fstp st(0)
fld dword [0x4fc4b8]
jmp 0x497773
fsqrt
fld dword [esi + 0x1ac]
fadd dword [0x4f1a10]
fxch st(1)
fcompp
fnstsw ax
test ah, 5
jp 0x4978cc
mov al, byte [ebx + 0x21]
test al, al
jne 0x4978cc
push 0x5c
call fcn.004ad909
xor edi, edi
add esp, 4
cmp eax, edi
je 0x4977cd
mov dword [eax + 4], edi
mov dword [eax], 0x4f7340
xor edx, edx
mov dword [eax + 8], edx
mov dword [eax + 0xc], edx
mov dword [eax + 0x2c], edi
xor ecx, ecx
mov dword [eax + 0x38], ecx
mov dword [eax + 0x3c], ecx
mov dword [eax + 0x40], edi
mov dword [eax + 0x44], edi
jmp 0x4977cf
xor eax, eax
cmp eax, edi
mov dword [esp + 0x10], eax
mov dword [esp + 0x150], eax
je 0x4977e1
inc dword [eax + 4]
fld dword [esi + 0x1ac]
fdiv dword [0x51c4b0]
mov byte [esp + 0x264], 0x17
fld dword [esp + 0x18]
fcomp st(1)
fnstsw ax
test ah, 0x41
jne 0x497808
fstp dword [esp + 0x18]
jmp 0x49780a
fstp st(0)
mov edx, dword [esp + 0x18]
push 1
push edi
push edx
push ecx
mov eax, esp
mov dword [eax], ebx
inc dword [ebx + 4]
lea eax, [esp + 0x154]
mov dword [esp + 0x2c], esp
push eax
mov ecx, esi
call fcn.0048e770
mov eax, dword [eax]
cmp eax, edi
mov byte [esp + 0x264], 0x18
je 0x49783e
inc dword [eax + 4]
mov edi, eax
mov eax, dword [esp + 0x10]
test eax, eax
mov dword [esp + 0x228], eax
mov dword [esp + 0x150], edi
je 0x49786b
mov edx, dword [eax + 4]
dec edx
mov ecx, edx
test ecx, ecx
mov dword [eax + 4], edx
jne 0x49786b
mov ecx, eax
mov edx, dword [ecx]
push 1
call dword [edx]
mov eax, dword [esp + 0x144]
test eax, eax
mov byte [esp + 0x264], 0x17
je 0x497897
mov edx, dword [eax + 4]
mov ecx, eax
add eax, 4
dec edx
mov dword [eax], edx
mov eax, edx
mov dword [esp + 0x1c], eax
jne 0x497897
mov edx, dword [ecx]
push 1
call dword [edx]
mov eax, dword [edi + 8]
mov dword [ebx + 8], eax
mov ecx, dword [edi + 0xc]
mov dword [ebx + 0xc], ecx
mov edx, dword [edi + 0x14]
mov dword [ebx + 0x14], edx
mov al, byte [edi + 0x20]
mov byte [ebx + 0x20], al
mov ecx, dword [edi + 4]
dec ecx
mov eax, ecx
test eax, eax
mov byte [esp + 0x264], 0x16
mov dword [edi + 4], ecx
jne 0x4978cc
mov edx, dword [edi]
push 1
mov ecx, edi
call dword [edx]
mov eax, dword [esp + 0xd0]
test eax, eax
mov byte [esp + 0x264], 0x15
je 0x4978f4
mov edx, dword [eax + 4]
dec edx
mov ecx, edx
test ecx, ecx
mov dword [eax + 4], edx
jne 0x4978f4
mov ecx, eax
mov eax, dword [ecx]
push 1
call dword [eax]
mov ecx, dword [ebx + 4]
dec ecx
mov eax, ecx
test eax, eax
mov byte [esp + 0x264], 0x13
mov dword [ebx + 4], ecx
jne 0x497911
mov edx, dword [ebx]
push 1
mov ecx, ebx
call dword [edx]
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
inc eax
cmp eax, ecx
mov dword [esp + 0x20], eax
jle 0x4976a0
mov edi, dword [esp + 0x13c]
mov eax, dword [esp + 0x54]
mov edx, dword [eax + 4]
dec edx
mov ecx, edx
test ecx, ecx
mov byte [esp + 0x264], 0x12
mov dword [eax + 4], edx
jne 0x49794e
mov ecx, eax
mov eax, dword [ecx]
push 1
call dword [eax]
mov ecx, dword [edi + 4]
dec ecx
mov eax, ecx
test eax, eax
mov dword [esp + 0x264], 0xffffffff
mov dword [edi + 4], ecx
jne 0x49799c
mov edx, dword [edi]
push 1
mov ecx, edi
call dword [edx]
jmp 0x49799c
mov byte [esi + 0x28c], 0
mov dword [esi + 0x290], ebx
mov dword [esi + 0x294], ebx
mov byte [esi + 0x219], 1
mov dword [esi + 0x220], edx
mov dword [esi + 0x224], edi
mov dword [esi + 0x210], ebx
mov ecx, dword [esi + 0x10]
test ecx, ecx
mov dword [esp + 0x10], 0xffffffff
jne 0x4979af
xor eax, eax
jmp 0x4979b7
mov eax, dword [esi + 0x14]
sub eax, ecx
sar eax, 2
dec eax
test eax, eax
mov dword [esp + 0x2c], eax
jl 0x497e82
mov eax, dword [esi + 0x10]
mov ecx, dword [esp + 0x2c]
mov ecx, dword [eax + ecx*4]
mov dl, byte [ecx + 0x23]
test dl, dl
je 0x497e3e
cmp dword [esp + 0x10], 0xffffffff
mov ebx, dword [esp + 0x2c]
jne 0x4979e8
mov dword [esp + 0x10], ebx
mov edi, dword [eax + ebx*4]
xor edx, edx
cmp edi, edx
mov dword [esp + 0x24c], edi
je 0x4979fb
inc dword [edi + 4]
mov dword [esp + 0x264], 0x19
mov dword [esp + 0x58], edx
mov ecx, dword [esi + 0x10]
cmp ecx, edx
mov byte [esp + 0x264], 0x1a
jne 0x497a1d
xor eax, eax
jmp 0x497a25
mov eax, dword [esi + 0x14]
sub eax, ecx
sar eax, 2
dec eax
cmp ebx, eax
jge 0x497a43
mov eax, dword [esi + 0x10]
mov eax, dword [eax + ebx*4 + 4]
cmp eax, edx
je 0x497a38
inc dword [eax + 4]
mov dword [esp + 0x238], edx
mov dword [esp + 0x58], eax
mov al, byte [edi + 0x2b]
fld dword [esp + 0x40]
test al, al
je 0x497a82
fmul dword [esi + 0x1d8]
mov al, byte [esi + 0x21a]
test al, al
jne 0x497a63
fadd dword [edi + 0x18]
jmp 0x497a66
fsubr dword [edi + 0x18]
fstp dword [edi + 0x18]
fld dword [edi + 0x18]
fcomp dword [esi + 0x21c]
fnstsw ax
test ah, 0x41
jne 0x497a8e
mov byte [esi + 0x21a], 1
jmp 0x497a8e
fmul dword [esi + 0x1d4]
fsubr dword [edi + 0x18]
fstp dword [edi + 0x18]
fld dword [edi + 0x18]
fcomp dword [0x4f1a10]
fnstsw ax
test ah, 0x41
jp 0x497b07
mov dword [edi + 0x18], edx
mov byte [edi + 0x23], 0
mov byte [esi + 0x21a], 0
mov al, byte [edi + 0x2b]
test al, al
je 0x497afd
push ebx
mov ecx, esi
call fcn.0048dbf0
mov edx, eax
cmp ebx, edx
mov dword [esp + 0x4c], edx
jl 0x497afb
mov eax, dword [esi + 0x10]
mov ecx, dword [eax + ebx*4]
test ecx, ecx
je 0x497ad2
inc dword [ecx + 4]
mov eax, dword [ecx + 4]
dec eax
test eax, eax
mov dword [ecx + 0x18], 0
mov byte [ecx + 0x23], 0
mov byte [ecx + 0x2b], 0
mov dword [ecx + 4], eax
jne 0x497af6
mov edx, dword [ecx]
push 1
call dword [edx]
mov edx, dword [esp + 0x4c]
dec ebx
cmp ebx, edx
jge 0x497ac5
xor edx, edx
mov byte [edi + 0x2b], 0
mov dword [esi + 0x210], edx
push 0x5c
call fcn.004ad909
add esp, 4
test eax, eax
je 0x497b3b
xor ecx, ecx
mov dword [eax + 4], ecx
mov dword [eax], 0x4f7340
xor edx, edx
mov dword [eax + 8], edx
mov dword [eax + 0xc], edx
mov dword [eax + 0x2c], ecx
mov dword [eax + 0x38], edx
mov dword [eax + 0x3c], edx
mov dword [eax + 0x40], ecx
mov dword [eax + 0x44], ecx
mov ebx, eax
jmp 0x497b3f
xor ebx, ebx
xor ecx, ecx
cmp ebx, ecx
mov dword [esp + 0xd8], ebx
je 0x497b4d
inc dword [ebx + 4]
mov eax, dword [edi + 8]
mov dword [ebx + 8], eax
mov edx, dword [edi + 0xc]
mov dword [ebx + 0xc], edx
mov eax, dword [edi + 0x14]
mov dword [ebx + 0x14], eax
mov dl, byte [edi + 0x29]
mov byte [ebx + 0x29], dl
mov al, byte [edi + 0x21]
mov edx, dword [esp + 0x2c]
mov byte [ebx + 0x21], al
mov eax, dword [esi + 0x10]
mov eax, dword [eax + edx*4]
fld dword [eax + 0x18]
mov eax, dword [esp + 0x58]
cmp eax, ecx
fdiv dword [esi + 0x1d0]
mov byte [esp + 0x264], 0x1b
fmul dword [esp + 0x30]
fld dword [esi + 0x1b8]
fmul dword [esi + 0x1a4]
fmul st(1)
fstp dword [esp + 0x18]
fstp st(0)
je 0x497cc3
mov cl, byte [eax + 0x21]
test cl, cl
jne 0x497cc3
mov ecx, dword [eax + 8]
mov edx, dword [eax + 0xc]
add eax, 8
mov dword [esp + 0x9c], ecx
mov dword [esp + 0xa0], edx
lea ecx, [edi + 8]
lea edx, [esp + 0x9c]
xor eax, eax
sub ecx, edx
mov dword [esp + 0x4c], ecx
jmp 0x497be4
mov ecx, dword [esp + 0x4c]
fld dword [esp + eax*4 + 0x9c]
lea ecx, [ecx + eax*4]
fsub dword [esp + ecx + 0x9c]
inc eax
cmp eax, 2
fstp dword [esp + eax*4 + 0x98]
jb 0x497be0
mov eax, dword [esp + 0xa0]
mov edx, dword [esp + 0x9c]
push ecx
mov dword [esp + 0x164], eax
mov eax, esp
mov dword [eax], edi
mov eax, dword [edi + 4]
inc eax
mov dword [esp + 0x20], esp
push ecx
mov dword [edi + 4], eax
mov eax, dword [esp + 0x60]
mov ecx, esp
mov dword [ecx], eax
inc dword [eax + 4]
mov ecx, esi
mov dword [esp + 0x164], edx
mov dword [esp + 0x24], esp
call fcn.0048e9b0
fld dword [0x4fc4b8]
xor eax, eax
lea ecx, [ecx]
fld dword [esp + eax*4 + 0x15c]
inc eax
cmp eax, 2
fld st(0)
fmul st(1)
faddp st(2)
fstp st(0)
jb 0x497c50
fcom dword [0x4fc4b8]
fnstsw ax
test ah, 0x44
jp 0x497c7c
fstp st(0)
fld dword [0x4fc4b8]
jmp 0x497c7e
fsqrt
faddp st(1)
fmul dword [0x4f2588]
fcom dword [esi + 0x1ac]
fnstsw ax
test ah, 0x41
jne 0x497cae
fld st(0)
fsub dword [esi + 0x1ac]
fcom dword [esp + 0x18]
fnstsw ax
test ah, 5
jp 0x497cac
fstp dword [esp + 0x18]
jmp 0x497cae
fstp st(0)
fcomp dword [esi + 0x1ac]
fnstsw ax
test ah, 5
jp 0x497cc3
mov dword [esp + 0x18], 0
mov al, byte [edi + 0x21]
test al, al
jne 0x497d9a
fld dword [esi + 0x1ac]
fdiv dword [0x51c4b0]
fld dword [esp + 0x18]
fcomp st(1)
fnstsw ax
test ah, 0x41
jne 0x497ced
fstp dword [esp + 0x18]
jmp 0x497cef
fstp st(0)
mov ecx, dword [esp + 0x18]
push 1
push 0
push ecx
push ecx
mov eax, esp
mov dword [eax], edi
mov ecx, dword [edi + 4]
inc ecx
lea edx, [esp + 0x128]
mov dword [esp + 0x2c], esp
mov dword [edi + 4], ecx
push edx
mov ecx, esi
call fcn.0048e770
mov eax, dword [eax]
test eax, eax
mov byte [esp + 0x264], 0x1c
je 0x497d28
inc dword [eax + 4]
mov edx, dword [ebx + 4]
dec edx
mov ecx, edx
test ecx, ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x240], ebx
mov dword [esp + 0xd8], eax
mov dword [ebx + 4], edx
jne 0x497d53
mov eax, dword [ebx]
push 1
mov ecx, ebx
call dword [eax]
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x118]
test ecx, ecx
mov byte [esp + 0x264], 0x1b
je 0x497d81
mov ebx, dword [ecx + 4]
lea edx, [ecx + 4]
dec ebx
mov dword [edx], ebx
mov edx, ebx
mov dword [esp + 0x1c], edx
jne 0x497d81
mov eax, dword [ecx]
push 1
call dword [eax]
mov eax, dword [esp + 0x28]
mov ecx, dword [eax + 8]
mov dword [edi + 8], ecx
mov edx, dword [eax + 0xc]
mov ecx, dword [esp + 0x18]
mov dword [edi + 0xc], edx
mov eax, dword [eax + 0x14]
mov dword [edi + 0x14], eax
mov dword [edi + 0x1c], ecx
mov ebx, dword [esp + 0x2c]
push ebx
mov ecx, esi
call fcn.0048dcc0
lea ecx, [ebx + 1]
cmp ecx, eax
jg 0x497dd9
lea ecx, [ecx]
mov edx, dword [esi + 0x10]
mov edx, dword [edx + ecx*4]
mov bl, byte [edi + 0x23]
mov byte [edx + 0x23], bl
mov edx, dword [esi + 0x10]
mov edx, dword [edx + ecx*4]
mov bl, byte [edi + 0x2b]
mov byte [edx + 0x2b], bl
mov edx, dword [esi + 0x10]
mov edx, dword [edx + ecx*4]
mov ebx, dword [edi + 0x18]
inc ecx
cmp ecx, eax
mov dword [edx + 0x18], ebx
jle 0x497db0
mov ecx, dword [esp + 0xd8]
mov edx, dword [ecx + 4]
dec edx
mov eax, edx
test eax, eax
mov byte [esp + 0x264], 0x1a
mov dword [ecx + 4], edx
jne 0x497dfb
mov edx, dword [ecx]
push 1
call dword [edx]
mov ecx, dword [esp + 0x58]
test ecx, ecx
mov byte [esp + 0x264], 0x19
je 0x497e1e
mov edx, dword [ecx + 4]
dec edx
mov eax, edx
test eax, eax
mov dword [ecx + 4], edx
jne 0x497e1e
mov eax, dword [ecx]
push 1
call dword [eax]
mov ecx, dword [edi + 4]
dec ecx
mov eax, ecx
test eax, eax
mov dword [esp + 0x264], 0xffffffff
mov dword [edi + 4], ecx
jne 0x497e3e
mov edx, dword [edi]
push 1
mov ecx, edi
call dword [edx]
dec dword [esp + 0x2c]
jns 0x4979c4
mov ecx, dword [esp + 0x10]
cmp ecx, 0xffffffff
jle 0x497e82
mov eax, dword [esi + 0x10]
test eax, eax
jne 0x497e5c
xor edi, edi
jmp 0x497e64
mov edi, dword [esi + 0x14]
sub edi, eax
sar edi, 2
push ecx
mov ecx, esi
call fcn.0048dcc0
dec edi
cmp eax, edi
jne 0x497e82
mov byte [esi + 0x2a0], 0
mov dword [esi + 0x210], 0
mov ecx, dword [esi + 0x10]
test ecx, ecx
jne 0x497e8d
xor eax, eax
jmp 0x497e95
mov eax, dword [esi + 0x14]
sub eax, ecx
sar eax, 2
dec eax
cmp eax, 1
mov dword [esp + 0x24], eax
jl 0x4981a5
dec eax
mov dword [esp + 0x14], eax
jmp 0x497eb0
mov eax, dword [esp + 0x24]
mov ecx, dword [esi + 0x10]
shl eax, 2
mov ebx, dword [eax + ecx]
test ebx, ebx
mov dword [esp + 0x114], ebx
je 0x497ecb
inc dword [ebx + 4]
mov ecx, dword [esi + 0x10]
mov edi, dword [eax + ecx - 4]
test edi, edi
mov dword [esp + 0x264], 0x1d
mov dword [esp + 0xf0], edi
je 0x497eeb
inc dword [edi + 4]
mov al, byte [ebx + 0x21]
test al, al
jne 0x498149
mov al, byte [edi + 0x21]
test al, al
jne 0x498149
mov eax, dword [ebx + 0x14]
cmp eax, dword [edi + 0x14]
jl 0x498149
mov ecx, dword [esp + 0x14]
push ecx
mov ecx, esi
call fcn.0048dbf0
mov ecx, dword [ebx + 0xc]
mov dword [esp + 0x28], eax
mov eax, dword [ebx + 8]
mov dword [esp + 0xa8], eax
lea edx, [edi + 8]
mov dword [esp + 0xac], ecx
lea eax, [esp + 0xa8]
xor ecx, ecx
sub edx, eax
nop
fld dword [esp + ecx*4 + 0xa8]
lea eax, [edx + ecx*4]
fsub dword [esp + eax + 0xa8]
inc ecx
cmp ecx, 2
fstp dword [esp + ecx*4 + 0xa4]
jb 0x497f40
mov ecx, dword [esp + 0xa8]
mov eax, dword [esi + 0x1ac]
mov edx, dword [esp + 0xac]
mov dword [esp + 0x214], ecx
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x14]
cmp eax, ecx
mov dword [esp + 0x218], edx
mov dword [esp + 0x20], eax
jl 0x498149
jmp 0x497fa0
mov eax, dword [esi + 0x10]
mov ecx, dword [esp + 0x20]
mov edi, dword [eax + ecx*4]
test edi, edi
mov dword [esp + 0x248], edi
je 0x497fb8
inc dword [edi + 4]
push 0x5c
mov byte [esp + 0x268], 0x1f
call fcn.004ad909
add esp, 4
test eax, eax
je 0x497ff4
xor ecx, ecx
mov dword [eax + 4], ecx
mov dword [eax], 0x4f7340
xor edx, edx
mov dword [eax + 8], edx
mov dword [eax + 0xc], edx
mov dword [eax + 0x2c], ecx
mov dword [eax + 0x38], edx
mov dword [eax + 0x3c], edx
mov dword [eax + 0x40], ecx
mov dword [eax + 0x44], ecx
mov ebx, eax
jmp 0x497ff8
xor ebx, ebx
xor ecx, ecx
cmp ebx, ecx
mov dword [esp + 0x11c], ebx
je 0x498006
inc dword [ebx + 4]
mov eax, dword [edi + 8]
mov dword [ebx + 8], eax
mov ecx, dword [edi + 0xc]
mov dword [ebx + 0xc], ecx
mov edx, dword [edi + 0x14]
mov dword [ebx + 0x14], edx
mov al, byte [edi + 0x29]
mov edx, dword [esp + 0x4c]
mov byte [ebx + 0x29], al
mov cl, byte [edi + 0x21]
push 1
push 1
push edx
mov byte [ebx + 0x21], cl
mov byte [esp + 0x270], 0x20
push ecx
mov eax, esp
mov dword [eax], edi
inc dword [edi + 4]
lea eax, [esp + 0x144]
mov dword [esp + 0x2c], esp
push eax
mov ecx, esi
call fcn.0048e770
mov eax, dword [eax]
test eax, eax
mov byte [esp + 0x264], 0x21
je 0x498061
inc dword [eax + 4]
mov edx, dword [ebx + 4]
dec edx
mov ecx, edx
test ecx, ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0x250], ebx
mov dword [esp + 0x11c], eax
mov dword [ebx + 4], edx
jne 0x49808c
mov edx, dword [ebx]
push 1
mov ecx, ebx
call dword [edx]
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x134]
test ecx, ecx
mov byte [esp + 0x264], 0x20
je 0x4980ba
mov ebx, dword [ecx + 4]
lea edx, [ecx + 4]
dec ebx
mov dword [edx], ebx
mov edx, ebx
mov dword [esp + 0x1c], edx
jne 0x4980ba
mov eax, dword [ecx]
push 1
call dword [eax]
mov eax, dword [esp + 0x10]
mov cl, byte [edi + 0x21]
test cl, cl
jne 0x4980e6
mov ecx, dword [eax + 8]
mov dword [edi + 8], ecx
mov edx, dword [eax + 0xc]
mov dword [edi + 0xc], edx
mov ecx, dword [eax + 0x14]
mov dword [edi + 0x14], ecx
mov ecx, dword [esp + 0xf0]
mov edx, dword [ecx + 0x1c]
mov dword [edi + 0x1c], edx
mov ecx, dword [ecx + 0x18]
mov dword [edi + 0x18], ecx
test eax, eax
mov byte [esp + 0x264], 0x1f
je 0x498109
mov edx, dword [eax + 4]
dec edx
mov ecx, edx
test ecx, ecx
mov dword [eax + 4], edx
jne 0x498109
mov ecx, dword [esp + 0x10]
mov edx, dword [ecx]
push 1
call dword [edx]
mov ecx, dword [edi + 4]
dec ecx
mov eax, ecx
test eax, eax
mov byte [esp + 0x264], 0x1e
mov dword [edi + 4], ecx
jne 0x498126
mov eax, dword [edi]
push 1
mov ecx, edi
call dword [eax]
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x28]
dec eax
cmp eax, ecx
mov dword [esp + 0x20], eax
jge 0x497fa0
mov edi, dword [esp + 0xf0]
mov ebx, dword [esp + 0x114]
test edi, edi
mov byte [esp + 0x264], 0x1d
je 0x49816a
mov ecx, dword [edi + 4]
dec ecx
mov eax, ecx
test eax, eax
mov dword [edi + 4], ecx
jne 0x49816a
mov edx, dword [edi]
push 1
mov ecx, edi
call dword [edx]
mov ecx, dword [ebx + 4]
dec ecx
mov eax, ecx
test eax, eax
mov dword [esp + 0x264], 0xffffffff
mov dword [ebx + 4], ecx
jne 0x49818a
mov eax, dword [ebx]
push 1
mov ecx, ebx
call dword [eax]
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x14]
dec eax
dec edx
cmp eax, 1
mov dword [esp + 0x24], eax
mov dword [esp + 0x14], edx
jge 0x497eb0
mov ecx, dword [esi + 0x10]
test ecx, ecx
mov dword [esp + 0x30], 0
jne 0x4981b8
xor eax, eax
jmp 0x4981c0
mov eax, dword [esi + 0x14]
sub eax, ecx
sar eax, 2
lea ebx, [eax - 2]
test ebx, ebx
mov dword [esp + 0x14], ebx
jl 0x498c37
nop
mov ecx, dword [esi + 0x10]
lea eax, [ebx*4]
mov edi, dword [eax + ecx]
test edi, edi
mov dword [esp + 0x50], eax
mov dword [esp + 0x18], edi
je 0x4981ec
inc dword [edi + 4]
mov ecx, dword [esi + 0x10]
mov ecx, dword [eax + ecx + 4]
test ecx, ecx
mov dword [esp + 0x264], 0x22
mov dword [esp + 0x2c], ecx
je 0x498209
inc dword [ecx + 4]
mov dl, byte [edi + 0x29]
test dl, dl
lea eax, [edi + 0x29]
mov dword [esp + 0x8c], eax
jne 0x498221
mov al, byte [edi + 0x21]
test al, al
je 0x498269
test ecx, ecx
mov byte [esp + 0x264], 0x22
je 0x498240
mov edx, dword [ecx + 4]
dec edx
mov dword [ecx + 4], edx
mov eax, edx
test eax, eax
jne 0x498240
mov edx, dword [ecx]
push 1
call dword [edx]
mov ecx, dword [edi + 4]
dec ecx
mov dword [edi + 4], ecx
mov eax, ecx
test eax, eax
mov dword [esp + 0x264], 0xffffffff
jne 0x498c28
mov eax, dword [edi]
push 1
mov ecx, edi
call dword [eax]
jmp 0x498c28
mov al, byte [esi + 0x2a0]
test al, al
je 0x4982ae
mov edx, dword [esi + 0x10]
test edx, edx
jne 0x49827e
xor eax, eax
jmp 0x498286
mov eax, dword [esi + 0x14]
sub eax, edx
sar eax, 2
add eax, 0xfffffffe
cmp ebx, eax
je 0x4982b5
mov edx, dword [esi + 0x10]
test edx, edx
jne 0x498298
xor eax, eax
jmp 0x4982a0
mov eax, dword [esi + 0x14]
sub eax, edx
sar eax, 2
mov edx, dword [esi + 0x10]
mov eax, dword [edx + eax*4 - 4]
mov dl, byte [eax + 0x21]
test dl, dl
jne 0x4982b5
mov dword [edi + 0x1c], 0
lea eax, [edi + 8]
mov dword [esp + 0x5c], eax
mov ebx, dword [eax]
mov eax, dword [eax + 4]
lea edx, [ecx + 8]
mov dword [esp + 0xbc], ebx
mov dword [esp + 0xc0], eax
lea ebx, [esp + 0xbc]
mov dword [esp + 0x60], edx
xor eax, eax
sub edx, ebx
fld dword [esp + eax*4 + 0xbc]
lea ebx, [edx + eax*4]
fsub dword [esp + ebx + 0xbc]
inc eax
cmp eax, 2
fstp dword [esp + eax*4 + 0xb8]
jb 0x4982e1
mov eax, dword [esp + 0xc0]
fld dword [0x4fc4b8]
mov edx, dword [esp + 0xbc]
mov dword [esp + 0x108], eax
mov dword [esp + 0x104], edx
xor eax, eax
fld dword [esp + eax*4 + 0x104]
inc eax
cmp eax, 2
fld st(0)
fmul st(1)
faddp st(2)
fstp st(0)
jb 0x498323
fcom dword [0x4fc4b8]
fnstsw ax
test ah, 0x44
jp 0x498351
fstp st(0)
mov dword [esp + 0x44], 0
jmp 0x498357
fsqrt
fstp dword [esp + 0x44]
mov edx, dword [esi + 0x1ac]
xor ebx, ebx
mov dword [esp + 0xe8], edx
mov dword [esp + 0x20], ebx
mov dl, byte [ecx + 0x21]
test dl, dl
lea eax, [ecx + 0x21]
mov byte [esp + 0x264], 0x24
mov dword [esp + 0x38], eax
jne 0x4983a5
mov al, byte [ecx + 0x28]
test al, al
je 0x49849a
fld dword [esi + 0x1b4]
fsub dword [ecx + 0x24]
fcomp dword [0x4f1a10]
fnstsw ax
test ah, 5
jp 0x49849a
mov edx, dword [esi + 0x10]
test edx, edx
jne 0x4983b0
xor eax, eax
jmp 0x4983b8
mov eax, dword [esi + 0x14]
sub eax, edx
sar eax, 2
mov edx, dword [esp + 0x14]
add edx, 2
cmp edx, eax
jge 0x49849a
mov eax, dword [esi + 0x10]
mov ecx, dword [eax + edx*4]
test ecx, ecx
je 0x4983d4
inc dword [ecx + 4]
mov eax, dword [esp + 0x5c]
mov ebx, dword [eax]
mov eax, dword [eax + 4]
mov dword [esp + 0xb4], ebx
lea edx, [ecx + 8]
mov dword [esp + 0xb8], eax
lea ebx, [esp + 0xb4]
xor eax, eax
mov dword [esp + 0x204], 0
mov dword [esp + 0x20], ecx
sub edx, ebx
jmp 0x498410
fld dword [esp + eax*4 + 0xb4]
lea ebx, [edx + eax*4]
fsub dword [esp + ebx + 0xb4]
inc eax
cmp eax, 2
fstp dword [esp + eax*4 + 0xb0]
jb 0x498410
mov eax, dword [esp + 0xb4]
fld dword [esi + 0x1ac]
mov edx, dword [esp + 0xb8]
fadd st(0), st(0)
push ecx
mov dword [esp + 0x224], eax
mov dword [esp + 0x108], eax
fstp dword [esp + 0xec]
mov eax, esp
mov dword [eax], edi
mov ebx, dword [edi + 4]
mov dword [esp + 0x4c], esp
push ecx
inc ebx
test ecx, ecx
mov eax, esp
mov dword [edi + 4], ebx
mov dword [esp + 0x22c], edx
mov dword [esp + 0x110], edx
mov dword [esp + 0x50], esp
mov dword [eax], ecx
je 0x498487
inc dword [ecx + 4]
mov ecx, esi
call fcn.0048e9b0
fstp dword [esp + 0x44]
mov ecx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x20]
mov edx, dword [esi + 0x10]
test edx, edx
jne 0x4984a5
xor eax, eax
jmp 0x4984ad
mov eax, dword [esi + 0x14]
sub eax, edx
sar eax, 2
mov edx, dword [esp + 0x14]
add eax, 0xfffffffe
cmp edx, eax
jne 0x4984d2
mov edx, dword [esp + 0x50]
mov eax, dword [esi + 0x10]
mov eax, dword [edx + eax + 4]
mov dl, byte [eax + 0x21]
test dl, dl
je 0x4984d2
mov dword [esp + 0x44], 0x447a0000
fld dword [esp + 0xe8]
fadd dword [0x4f68d4]
fcomp dword [esp + 0x44]
fnstsw ax
test ah, 0x41
jne 0x4989fc
mov al, byte [esi + 0x2a0]
test al, al
je 0x498508
test ebx, ebx
mov eax, dword [ecx + 0x1c]
mov dword [edi + 0x1c], eax
je 0x498508
mov ecx, dword [ebx + 0x1c]
mov dword [edi + 0x1c], ecx
mov ebx, dword [esp + 0x2c]
push ecx
mov eax, esp
mov dword [eax], ebx
mov eax, dword [ebx + 4]
add ebx, 4
inc eax
mov dword [ebx], eax
mov dword [esp + 0x4c], esp
push ecx
mov eax, esp
mov dword [eax], edi
mov ecx, dword [edi + 4]
lea eax, [edi + 4]
inc ecx
mov dword [eax], ecx
mov ecx, esi
mov dword [esp + 0xa0], 0
mov dword [esp + 0x50], esp
mov dword [esp + 0x58], eax
call fcn.0048e9b0
fld dword [esi + 0x1ac]
fsub st(1)
fcomp dword [0x4f4550]
fnstsw ax
fstp st(0)
test ah, 0x41
jne 0x498561
mov byte [edi + 0x58], 1
mov edx, dword [esp + 0x2c]
mov edi, dword [esp + 0x50]
push ecx
mov eax, esp
mov dword [eax], edx
mov edx, dword [ebx]
mov dword [esp + 0x4c], esp
push ecx
inc edx
mov dword [ebx], edx
mov ecx, dword [esp + 0x20]
mov eax, esp
mov dword [eax], ecx
mov eax, dword [edi]
inc eax
mov ebx, eax
mov ecx, esi
mov dword [esp + 0x50], esp
mov dword [edi], eax
mov dword [esp + 0x6c], ebx
call fcn.0048e9b0
fld dword [esi + 0x1ac]
mov ecx, dword [esp + 0x18]
fsub st(1)
fcomp dword [0x4f68d4]
fnstsw ax
fstp st(0)
test ah, 5
jp 0x4985b5
mov byte [ecx + 0x58], 0
mov al, byte [ecx + 0x58]
test al, al
je 0x4985ce
fld dword [esi + 0x1ac]
fsub dword [esp + 0x44]
fmul dword [0x4f66f4]
jmp 0x4985d5
fld dword [esp + 0x98]
mov edx, dword [esp + 0x38]
mov dl, byte [edx]
test dl, dl
je 0x49861d
fld dword [esi + 0x1ac]
mov eax, dword [esp + 0x2c]
fadd st(0), st(0)
fsub dword [esp + 0x44]
fld dword [esi + 0x1b4]
fsub dword [eax + 0x24]
fadd dword [0x4f1a10]
fcom dword [0x4f26c8]
fnstsw ax
test ah, 1
jne 0x49860f
fdivp st(1)
jmp 0x498611
fstp st(0)
test dl, dl
fadd dword [esp + 0x30]
fstp dword [esp + 0x30]
jne 0x498642
mov edx, dword [esp + 0x2c]
mov al, byte [edx + 0x28]
test al, al
je 0x498642
fld dword [esi + 0x1ac]
fadd st(0), st(0)
fsub dword [esp + 0x44]
fsub dword [0x4f68d4]
fadd dword [esp + 0x30]
fstp dword [esp + 0x30]
fadd dword [ecx + 0x1c]
push 1
sub esp, 8
mov eax, esp
fadd dword [esp + 0x3c]
inc ebx
mov dword [esp + 0x54], esp
fstp dword [esp + 4]
mov dword [eax], ecx
mov ecx, esi
mov dword [edi], ebx
call fcn.0048eb20
mov eax, dword [esp + 0x38]
cmp byte [eax], 0
jne 0x4989e4
mov eax, dword [esp + 0x2c]
mov cl, byte [eax + 0x28]
add eax, 0x28
test cl, cl
mov dword [esp + 0x48], eax
je 0x4989e4
push 0x5c
call fcn.004ad909
xor edi, edi
add esp, 4
cmp eax, edi
je 0x4986e2
mov dword [eax], 0x4f11dc
mov dword [eax + 4], edi
mov dword [eax], 0x4f6724
mov dword [eax], 0x4f6724
mov dword [eax], 0x4f6724
mov dword [eax], 0x4f7340
lea edx, [eax + 8]
xor ecx, ecx
lea ecx, [ecx]
mov dword [edx + ecx*4], edi
inc ecx
cmp ecx, 2
jl 0x4986c0
mov dword [eax + 0x2c], edi
lea edx, [eax + 0x38]
xor ecx, ecx
mov dword [edx + ecx*4], edi
inc ecx
cmp ecx, 2
jl 0x4986d1
mov dword [eax + 0x40], edi
mov dword [eax + 0x44], edi
jmp 0x4986e4
xor eax, eax
cmp eax, edi
mov dword [esp + 0x38], eax
mov dword [esp + 0x68], eax
je 0x4986f3
inc dword [eax + 4]
mov ecx, dword [esp + 0x5c]
lea edx, [esp + 0x6c]
xor eax, eax
mov byte [esp + 0x264], 0x25
sub ecx, edx
jmp 0x498710
lea edx, [esp + eax*4 + 0x6c]
mov edx, dword [edx + ecx]
mov dword [esp + eax*4 + 0x6c], edx
inc eax
cmp eax, 2
jl 0x498710
mov ebx, dword [esp + 0x60]
mov ecx, ebx
lea edx, [esp + 0x6c]
xor eax, eax
sub ecx, edx
nop
fld dword [esp + eax*4 + 0x6c]
lea edx, [ecx + eax*4]
fsub dword [esp + edx + 0x6c]
inc eax
cmp eax, 2
fstp dword [esp + eax*4 + 0x68]
jb 0x498730
mov eax, dword [esp + 0x6c]
fld dword [0x4fc4b8]
mov ecx, dword [esp + 0x70]
mov dword [esp + 0x164], eax
mov dword [esp + 0x168], ecx
xor eax, eax
fld dword [esp + eax*4 + 0x164]
inc eax
cmp eax, 2
fld st(0)
fmul st(1)
faddp st(2)
fstp st(0)
jb 0x498763
fcom dword [0x4fc4b8]
fnstsw ax
test ah, 0x44
jp 0x49878f
fstp st(0)
fld dword [0x4fc4b8]
jmp 0x498791
fsqrt
mov edi, dword [esp + 0x14]
mov edx, dword [esi + 0x10]
lea edi, [edi*4 + 8]
mov eax, dword [edi + edx]
mov ecx, ebx
mov dword [esp + 0x5c], eax
lea ebx, [esp + 0xc4]
xor eax, eax
sub ecx, ebx
lea ebx, [ecx + eax*4]
mov ebx, dword [esp + ebx + 0xc4]
mov dword [esp + eax*4 + 0xc4], ebx
inc eax
cmp eax, 2
jl 0x4987b3
mov ecx, dword [esp + 0x5c]
xor eax, eax
add ecx, 8
fld dword [esp + eax*4 + 0xc4]
inc eax
fsub dword [ecx]
add ecx, 4
cmp eax, 2
fstp dword [esp + eax*4 + 0xc0]
jb 0x4987d3
mov eax, dword [esp + 0xc8]
fld dword [0x4fc4b8]
mov ecx, dword [esp + 0xc4]
mov dword [esp + 0x178], eax
mov dword [esp + 0x174], ecx
xor eax, eax
fld dword [esp + eax*4 + 0x174]
inc eax
cmp eax, 2
fld st(0)
fmul st(1)
faddp st(2)
fstp st(0)
jb 0x498810
fcom dword [0x4fc4b8]
fnstsw ax
test ah, 0x44
jp 0x49883c
fstp st(0)
fld dword [0x4fc4b8]
jmp 0x49883e
fsqrt
fxch st(1)
push 1
fcomp st(1)
fnstsw ax
fstp st(0)
test ah, 5
jp 0x498901
mov ecx, dword [esi + 0x1ac]
mov edx, dword [esp + 0x1c]
push 0
push ecx
push ecx
mov ecx, dword [esp + 0x60]
mov eax, esp
mov dword [eax], edx
mov eax, dword [esp + 0x74]
lea edx, [esp + 0xfc]
mov dword [esp + 0x6c], esp
mov dword [ecx], eax
push edx
mov ecx, esi
call fcn.0048e770
mov eax, dword [eax]
test eax, eax
mov byte [esp + 0x264], 0x26
mov dword [esp + 0xcc], eax
je 0x49889f
inc dword [eax + 4]
mov eax, dword [esp + 0xcc]
mov ecx, dword [esp + 0x38]
test ecx, ecx
mov dword [esp + 0xcc], ecx
mov dword [esp + 0x68], eax
je 0x4988c5
mov edx, dword [ecx + 4]
dec edx
mov eax, edx
test eax, eax
mov dword [ecx + 4], edx
jne 0x4988c5
mov eax, dword [ecx]
push 1
call dword [eax]
mov eax, dword [esp + 0xec]
test eax, eax
mov byte [esp + 0x264], 0x25
je 0x4989a0
mov edx, dword [eax + 4]
add eax, 4
dec edx
mov ecx, edx
test ecx, ecx
mov dword [eax], edx
jne 0x4989a0
mov ecx, dword [esp + 0xec]
mov edx, dword [ecx]
push 1
call dword [edx]
jmp 0x4989a0
mov eax, dword [esi + 0x1ac]
push 1
push eax
mov eax, dword [edi + edx]
test eax, eax
push ecx
mov ecx, esp
mov dword [esp + 0x74], esp
mov dword [ecx], eax
je 0x49891d
inc dword [eax + 4]
lea ecx, [esp + 0xe4]
push ecx
mov ecx, esi
call fcn.0048e770
mov eax, dword [eax]
test eax, eax
mov byte [esp + 0x264], 0x27
mov dword [esp + 0xf4], eax
je 0x49894b
inc dword [eax + 4]
mov eax, dword [esp + 0xf4]
mov ecx, dword [esp + 0x38]
test ecx, ecx
mov dword [esp + 0xf4], ecx
mov dword [esp + 0x68], eax
je 0x498971
mov edx, dword [ecx + 4]
dec edx
mov eax, edx
test eax, eax
mov dword [ecx + 4], edx
jne 0x498971
mov edx, dword [ecx]
push 1
call dword [edx]
mov eax, dword [esp + 0xd4]
test eax, eax
mov byte [esp + 0x264], 0x25
je 0x4989a0
mov edx, dword [eax + 4]
add eax, 4
dec edx
mov ecx, edx
test ecx, ecx
mov dword [eax], edx
jne 0x4989a0
mov ecx, dword [esp + 0xd4]
mov eax, dword [ecx]
push 1
call dword [eax]
mov ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x60]
mov byte [ecx], 0
mov ecx, dword [esp + 0x68]
mov edx, dword [ecx + 8]
mov dword [eax], edx
mov edx, dword [ecx + 0xc]
mov dword [eax + 4], edx
mov eax, dword [ecx + 0x14]
mov edx, dword [esp + 0x2c]
mov dword [edx + 0x14], eax
lea eax, [ecx + 4]
mov byte [esp + 0x264], 0x24
mov edx, dword [eax]
dec edx
mov ecx, edx
test ecx, ecx
mov dword [eax], edx
jne 0x4989e4
mov ecx, dword [esp + 0x68]
mov eax, dword [ecx]
push 1
call dword [eax]
mov edi, dword [esp + 0x18]
mov edx, dword [edi + 0x14]
xor ebx, ebx
cmp edx, ebx
jl 0x498a15
mov ecx, dword [esi + 0x20]
cmp ecx, ebx
jne 0x498a06
xor eax, eax
jmp 0x498a0e
mov dword [esp + 0x30], 0
jmp 0x4989e8
mov eax, dword [esi + 0x24]
sub eax, ecx
sar eax, 2
add eax, 0xfffffff6
cmp edx, eax
jl 0x498a22
mov ecx, dword [esp + 0x8c]
mov byte [ecx], 1
mov dword [edi + 0x1c], ebx
mov ecx, dword [esi + 0x20]
cmp ecx, ebx
jne 0x498a2d
xor eax, eax
jmp 0x498a35
mov eax, dword [esi + 0x24]
sub eax, ecx
sar eax, 2
mov ecx, dword [edi + 0x14]
add eax, 0xfffffff6
cmp ecx, eax
jl 0x498bb4
mov al, byte [esi + 0x2d4]
test al, al
jne 0x498bb4
cmp dword [esi + 0x31c], ebx
je 0x498bb4
mov eax, dword [esi + 0x388]
cmp eax, ebx
jg 0x498a8e
mov al, byte [esi + 8]
test al, al
jne 0x498a78
mov dword [esi + 0x278], 0x3f800000
mov edx, dword [esi + 0x1e4]
inc edx
mov dword [esi + 0x1e8], edx
mov byte [esi + 8], 1
jmp 0x498bb4
mov ecx, dword [esi + 0x190]
mov edx, dword [esi + 0x194]
dec eax
cmp eax, ebx
mov dword [esi + 0x388], eax
mov byte [esi + 0x28c], 1
mov dword [esi + 0x290], ecx
mov dword [esi + 0x294], edx
jg 0x498ac8
mov ecx, dword [esi + 0x314]
push 1
push 1
push ebx
call fcn.00424960
mov edi, 0xf
mov eax, str._objects_city_defense_fx.xml
mov dword [esp + 0x1dc], edi
mov dword [esp + 0x1d8], ebx
mov byte [esp + 0x1c8], 0
lea edx, [eax + 1]
jmp 0x498af0
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x498af0
sub eax, edx
push eax
push str._objects_city_defense_fx.xml
lea ecx, [esp + 0x1cc]
call fcn.00402cd0
push ebx
push ebx
lea eax, [esp + 0x1cc]
push eax
lea ecx, [esp + 0x30]
push ecx
mov byte [esp + 0x274], 0x28
call fcn.00415620
mov ecx, eax
call fcn.00431b90
cmp dword [esp + 0x1dc], 0x10
mov byte [esp + 0x264], 0x2a
jb 0x498b50
mov edx, dword [esp + 0x1c8]
push edx
call fcn.004ade5d
add esp, 4
mov ecx, dword [esi + 0x314]
mov dword [esp + 0x1dc], edi
mov edi, dword [esp + 0x24]
push 1
mov dword [esp + 0x1dc], ebx
mov byte [esp + 0x1cc], 0
call fcn.00481fe0
push eax
mov ecx, edi
call fcn.00424690
mov ecx, dword [esp + 0x24]
push 1
push ebx
call fcn.0042f400
mov eax, dword [esp + 0x24]
cmp eax, ebx
mov byte [esp + 0x264], 0x24
je 0x498bb4
mov edx, dword [eax + 4]
add eax, 4
dec edx
mov ecx, edx
cmp ecx, ebx
mov dword [eax], edx
jne 0x498bb4
mov ecx, dword [esp + 0x24]
mov eax, dword [ecx]
push 1
call dword [eax]
mov eax, dword [esp + 0x20]
cmp eax, ebx
mov byte [esp + 0x264], 0x23
je 0x498bdd
mov edx, dword [eax + 4]
add eax, 4
dec edx
mov ecx, edx
cmp ecx, ebx
mov dword [eax], edx
jne 0x498bdd
mov ecx, dword [esp + 0x20]
mov edx, dword [ecx]
push 1
call dword [edx]
mov eax, dword [esp + 0x2c]
add eax, 4
mov byte [esp + 0x264], 0x22
mov edx, dword [eax]
dec edx
mov ecx, edx
cmp ecx, ebx
mov dword [eax], edx
jne 0x498c01
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx]
push 1
call dword [eax]
mov eax, dword [esp + 0x18]
add eax, 4
mov dword [esp + 0x264], 0xffffffff
mov edx, dword [eax]
dec edx
mov ecx, edx
cmp ecx, ebx
mov dword [eax], edx
jne 0x498c28
mov ecx, dword [esp + 0x18]
mov edx, dword [ecx]
push 1
call dword [edx]
mov ebx, dword [esp + 0x14]
dec ebx
mov dword [esp + 0x14], ebx
jns 0x4981d0
mov ecx, dword [esi + 0x10]
test ecx, ecx
jne 0x498c42
xor eax, eax
jmp 0x498c4a
mov eax, dword [esi + 0x14]
sub eax, ecx
sar eax, 2
dec eax
cmp eax, 1
mov dword [esp + 0x14], eax
jl 0x498fc5
dec eax
mov dword [esp + 0x30], eax
lea ecx, [ecx]
mov ecx, dword [esp + 0x14]
mov eax, dword [esi + 0x10]
shl ecx, 2
mov ebx, dword [eax + ecx]
test ebx, ebx
mov dword [esp + 0x3c], ebx
je 0x498c7c
inc dword [ebx + 4]
mov ebx, dword [esp + 0x3c]
mov edi, dword [eax + ecx - 4]
test edi, edi
mov dword [esp + 0x264], 0x2b
mov dword [esp + 0x10], edi
je 0x498c9e
inc dword [edi + 4]
mov ebx, dword [esp + 0x3c]
mov edi, dword [esp + 0x10]
mov al, byte [ebx + 0x21]
test al, al
jne 0x498f5e
mov al, byte [edi + 0x21]
test al, al
jne 0x498f5e
mov ecx, dword [ebx + 0x14]
cmp ecx, dword [edi + 0x14]
jl 0x498f5e
mov edx, dword [esp + 0x30]
push edx
mov ecx, esi
call fcn.0048dbf0
mov dword [esp + 0x60], eax
lea edx, [ebx + 8]
lea eax, [esp + 0x74]
xor ecx, ecx
sub edx, eax
jmp 0x498ce0
lea eax, [edx + ecx*4]
mov eax, dword [esp + eax + 0x74]
mov dword [esp + ecx*4 + 0x74], eax
inc ecx
cmp ecx, 2
jl 0x498ce0
lea eax, [edi + 8]
lea edx, [esp + 0x74]
xor ecx, ecx
sub eax, edx
lea esp, [esp]
fld dword [esp + ecx*4 + 0x74]
lea edx, [eax + ecx*4]
fsub dword [esp + edx + 0x74]
inc ecx
cmp ecx, 2
fstp dword [esp + ecx*4 + 0x70]
jb 0x498d00
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x78]
mov edx, dword [esi + 0x1ac]
mov dword [esp + 0x22c], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x230], ecx
cmp eax, dword [esp + 0x60]
mov dword [esp + 0x8c], edx
mov dword [esp + 0x44], eax
jl 0x498f5e
lea ebx, [ebx]
mov eax, dword [esi + 0x10]
mov ecx, dword [esp + 0x44]
mov ebx, dword [eax + ecx*4]
xor edi, edi
cmp ebx, edi
mov dword [esp + 0x40], ebx
je 0x498d6b
inc dword [ebx + 4]
mov ebx, dword [esp + 0x40]
push 0x5c
mov byte [esp + 0x268], 0x2d
call fcn.004ad909
add esp, 4
cmp eax, edi
je 0x498dd1
mov dword [eax], 0x4f11dc
mov dword [eax + 4], edi
mov dword [eax], 0x4f6724
mov dword [eax], 0x4f6724
mov dword [eax], 0x4f6724
mov dword [eax], 0x4f7340
lea edx, [eax + 8]
xor ecx, ecx
mov dword [edx + ecx*4], edi
inc ecx
cmp ecx, 2
jl 0x498da7
mov dword [eax + 0x2c], edi
lea edx, [eax + 0x38]
xor ecx, ecx
mov dword [edx + ecx*4], edi
inc ecx
cmp ecx, 2
jl 0x498db8
xor ecx, ecx
mov dword [eax + 0x40], ecx
mov dword [eax + 0x44], ecx
mov ebx, dword [esp + 0x40]
mov edi, eax
jmp 0x498dd3
xor edi, edi
test edi, edi
mov dword [esp + 0x1c], edi
je 0x498de2
inc dword [edi + 4]
mov ebx, dword [esp + 0x40]
mov edx, dword [ebx + 8]
mov dword [edi + 8], edx
lea eax, [ebx + 8]
mov dword [esp + 0x64], eax
mov eax, dword [eax + 4]
mov dword [edi + 0xc], eax
mov ecx, dword [ebx + 0x14]
mov dword [edi + 0x14], ecx
mov dl, byte [ebx + 0x29]
mov ecx, dword [esp + 0x8c]
lea eax, [ebx + 0x14]
mov dword [esp + 0x98], eax
push 1
lea eax, [ebx + 0x21]
mov byte [edi + 0x29], dl
mov dword [esp + 0x4c], eax
mov al, byte [eax]
push 1
mov byte [edi + 0x21], al
push ecx
push ecx
mov eax, esp
mov byte [esp + 0x274], 0x2e
mov dword [eax], ebx
mov ebx, dword [esp + 0x50]
mov eax, dword [ebx + 4]
add ebx, 4
inc eax
mov edx, eax
mov dword [ebx], eax
mov dword [esp + 0x60], esp
lea eax, [esp + 0x5c]
push eax
mov ecx, esi
mov dword [esp + 0x64], edx
call fcn.0048e770
mov eax, dword [eax]
test eax, eax
mov byte [esp + 0x264], 0x2f
mov dword [esp + 0xe4], eax
je 0x498e72
inc dword [eax + 4]
mov eax, dword [esp + 0xe4]
mov dword [esp + 0xe4], edi
mov dword [esp + 0x1c], eax
mov edx, dword [edi + 4]
dec edx
mov ecx, edx
test ecx, ecx
mov dword [esp + 0x38], eax
mov dword [edi + 4], edx
jne 0x498e9a
mov edx, dword [edi]
push 1
mov ecx, edi
call dword [edx]
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x4c]
test ecx, ecx
mov byte [esp + 0x264], 0x2e
je 0x498ec7
mov edi, dword [ecx + 4]
add ecx, 4
dec edi
mov edx, edi
test edx, edx
mov dword [ecx], edi
jne 0x498ec7
mov ecx, dword [esp + 0x4c]
mov eax, dword [ecx]
push 1
call dword [eax]
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x48]
cmp byte [ecx], 0
jne 0x498eff
mov edx, dword [eax + 8]
mov ecx, dword [esp + 0x64]
mov dword [ecx], edx
mov edx, dword [eax + 0xc]
mov dword [ecx + 4], edx
mov ecx, dword [eax + 0x14]
mov edx, dword [esp + 0x98]
mov dword [edx], ecx
mov ecx, dword [esp + 0x10]
mov edi, dword [ecx + 0x1c]
mov edx, dword [esp + 0x40]
mov dword [edx + 0x1c], edi
mov ecx, dword [ecx + 0x18]
mov dword [edx + 0x18], ecx
test eax, eax
mov byte [esp + 0x264], 0x2d
je 0x498f24
mov edx, dword [eax + 4]
add eax, 4
dec edx
mov ecx, edx
test ecx, ecx
mov dword [eax], edx
jne 0x498f24
mov ecx, dword [esp + 0x38]
mov edx, dword [ecx]
push 1
call dword [edx]
mov eax, dword [esp + 0x50]
dec eax
test eax, eax
mov byte [esp + 0x264], 0x2c
mov dword [ebx], eax
jne 0x498f41
mov ecx, dword [esp + 0x40]
mov eax, dword [ecx]
push 1
call dword [eax]
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x60]
dec eax
cmp eax, ecx
mov dword [esp + 0x44], eax
jge 0x498d50
mov ebx, dword [esp + 0x3c]
mov edi, dword [esp + 0x10]
test edi, edi
mov byte [esp + 0x264], 0x2b
je 0x498f87
mov ecx, dword [edi + 4]
add edi, 4
dec ecx
mov eax, ecx
test eax, eax
mov dword [edi], ecx
jne 0x498f83
mov ecx, dword [esp + 0x10]
mov edx, dword [ecx]
push 1
call dword [edx]
mov ebx, dword [esp + 0x3c]
lea eax, [ebx + 4]
mov dword [esp + 0x264], 0xffffffff
mov edx, dword [eax]
dec edx
mov ecx, edx
test ecx, ecx
mov dword [eax], edx
jne 0x498faa
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx]
push 1
call dword [eax]
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x30]
dec eax
dec edx
cmp eax, 1
mov dword [esp + 0x14], eax
mov dword [esp + 0x30], edx
jge 0x498c60
mov ecx, dword [esi + 0x10]
test ecx, ecx
je 0x499121
mov eax, dword [esi + 0x14]
sub eax, ecx
sar eax, 2
cmp eax, 1
jbe 0x499121
mov al, byte [esi + 0x2c8]
test al, al
jne 0x499121
mov eax, ecx
mov eax, dword [eax]
test eax, eax
mov dword [esp + 0x28], eax
je 0x499002
inc dword [eax + 4]
mov eax, dword [esp + 0x28]
mov ecx, dword [eax + 0x14]
cmp ecx, dword [esi + 0x270]
mov dword [esp + 0x264], 0x30
jge 0x4990f9
mov ebx, dword [esi + 0x10]
xor edi, edi
test ebx, ebx
je 0x499063
mov eax, dword [esi + 0x14]
sub eax, ebx
sar eax, 2
cmp edi, eax
jae 0x499063
mov edx, dword [esi + 0x10]
mov ecx, dword [edx + edi*4]
test ecx, ecx
je 0x49903e
inc dword [ecx + 4]
mov eax, dword [ecx + 4]
dec eax
mov dword [ecx + 0x18], 0
mov byte [ecx + 0x22], 0
mov byte [ecx + 0x23], 0
mov byte [ecx + 0x2b], 0
mov dword [ecx + 4], eax
jne 0x499060
mov eax, dword [ecx]
push 1
call dword [eax]
inc edi
jmp 0x499021
xor edi, edi
push edi
push edi
push edi
mov ecx, esi
call fcn.00495490
push edi
push edi
push edi
mov ecx, esi
call fcn.00490640
cmp dword [esi + 0x274], 2
mov byte [esi + 0x28c], 0
mov dword [esi + 0x290], edi
mov dword [esi + 0x294], edi
mov byte [esi + 0x2a0], 1
mov byte [esi + 0x218], 0
mov dword [esi + 0x248], edi
mov dword [esi + 0x24c], edi
mov byte [esi + 0x219], 0
mov dword [esi + 0x220], edi
mov dword [esi + 0x224], edi
mov byte [esi + 0x26c], 1
jne 0x4990d3
mov dword [esi + 0x274], 1
mov eax, dword [esi + 0x318]
cmp eax, edi
je 0x499103
mov ecx, 0xffffd8f0
mov dword [eax + 0x3c], ecx
mov edx, dword [esi + 0x318]
mov dword [edx + 0x38], ecx
mov eax, dword [esi + 0x318]
mov dword [eax + 0x34], ecx
jmp 0x499103
mov dword [esi + 0x274], 2
mov eax, dword [esp + 0x28]
mov dword [esp + 0x264], 0xffffffff
dec dword [eax + 4]
jne 0x499121
mov ecx, dword [esp + 0x28]
mov edx, dword [ecx]
push 1
call dword [edx]
mov ecx, dword [esp + 0x25c]
mov dword fs:[0], ecx
mov ecx, dword [esp + 0x254]
xor ecx, dword [ebp + 4]
call fcn.004ae650
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret