Function at 0x4562e0
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc4
push ebx
push esi
mov esi, ecx
mov al, byte [esi + 0x50]
test al, al
push edi
mov dword [ebp - 0x30], esi
jne 0x45a0fe
mov eax, dword [esi]
call dword [eax + 0x50]
mov ecx, esi
call fcn.00438410
test al, al
je 0x45634c
mov ecx, dword [ebp + 0x14]
mov edx, dword [ebp + 0x30]
mov eax, dword [ebp + 0x2c]
push ecx
mov ecx, dword [ebp + 0x28]
push edx
mov edx, dword [ebp + 0x24]
push eax
mov eax, dword [ebp + 0x20]
push ecx
mov ecx, dword [ebp + 0x1c]
push edx
mov edx, dword [ebp + 0x18]
push eax
mov eax, dword [ebp + 0x10]
push ecx
mov ecx, dword [ebp + 0xc]
push edx
mov edx, dword [ebp + 8]
push eax
mov eax, dword [esi + 0x48]
push ecx
mov ecx, dword [eax + 0x30]
push edx
call fcn.00456170
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x2c
mov al, byte [esi + 0x56]
test al, al
jne 0x45a0cb
mov al, byte [esi + 0x32]
test al, al
jne 0x45a0cb
mov al, byte [esi + 0x31]
test al, al
je 0x456374
mov al, byte [esi + 0x52]
test al, al
je 0x45a0cb
mov ecx, dword [esi + 0x48]
mov al, byte [ecx + 0x38]
test al, al
jne 0x45a0cb
mov edx, dword [ebp + 0x30]
mov eax, dword [ebp + 0x2c]
push edx
mov edx, dword [ebp + 0x28]
push eax
mov eax, dword [ebp + 0x24]
lea ecx, [ebp - 0xbc]
push ecx
mov ecx, dword [ebp + 0x18]
push edx
mov edx, dword [ebp + 0x14]
push eax
push ecx
push edx
lea eax, [ebp + 0x10]
push eax
lea ecx, [ebp + 0xc]
push ecx
mov ecx, esi
mov dword [ebp - 0xbc], 0
mov dword [ebp - 0xb8], 0
mov dword [ebp - 0xb4], 0
mov dword [ebp - 0xb0], 0
mov dword [ebp - 0xac], 0
mov dword [ebp - 0xa8], 0
mov dword [ebp - 0xa4], 0
mov dword [ebp - 0xa0], 0
call fcn.004461e0
test al, al
je 0x45a0fe
mov ebx, dword [ebp + 8]
push 0
push 0x511118
push 0x512140
push 0
push ebx
call fcn.004c4679
push 0
push 0x511138
push 0x512140
push 0
push ebx
mov edi, eax
call fcn.004c4679
add esp, 0x28
test edi, edi
je 0x45a0ba
mov edx, dword [edi]
mov ecx, edi
call dword [edx + 0x50]
mov eax, dword [ebp + 0x20]
test eax, eax
mov esi, dword [edi + 0x28]
mov dword [ebp - 0x3c], esi
mov ecx, edi
jne 0x458b58
call fcn.0043e6f0
test esi, esi
jne 0x45776f
mov esi, eax
mov eax, dword [ebp + 0x14]
imul esi, dword [eax + 4]
mov edx, dword [eax]
mov eax, dword [edi]
add esi, edx
call dword [eax + 0x64]
lea ecx, [eax + esi*4]
fld qword [ebp + 0x24]
mov dword [ebp - 0x44], ecx
fcos
fstp qword [ebp - 0x90]
fld qword [ebp + 0x24]
fsin
fstp qword [ebp - 0x70]
fld qword [ebp - 0x90]
fmul qword [0x4e8d90]
call fcn.004c331c
fld qword [ebp - 0x70]
fmul qword [0x4e8d90]
mov esi, eax
mov dword [ebp - 0x24], esi
call fcn.004c331c
mov edi, dword [ebp - 0x30]
mov edx, dword [edi]
mov ecx, edi
mov dword [ebp + 0x20], eax
call dword [edx + 0x9c]
test al, al
je 0x45a0fe
mov eax, dword [edi + 0x48]
mov ecx, dword [eax + 0x20]
mov edx, dword [eax + 0x24]
mov dword [ebp - 0x64], ecx
mov ecx, dword [eax + 0x28]
mov dword [ebp - 0x60], ecx
mov dword [ebp - 0x5c], edx
mov edx, dword [eax + 0x14]
mov ecx, 0x20
sub ecx, edx
mov edx, dword [eax + 0x18]
mov dword [ebp - 0x68], ecx
mov ecx, 0x18
sub ecx, edx
mov edx, dword [eax + 0x1c]
mov eax, dword [edi + 0xb8]
mov dword [ebp - 0x58], ecx
mov ecx, 0x10
sub ecx, edx
mov edx, dword [edi + 0xb4]
mov dword [ebp - 0x54], eax
mov eax, dword [edi + 0xb0]
cmp eax, 0x10
mov dword [ebp - 0x50], ecx
mov ecx, dword [edi + 0xbc]
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x3c], ecx
jne 0x456e5e
fld qword [ebp - 0xb4]
call fcn.004c331c
fld qword [ebp - 0xbc]
mov dword [ebp + 0x28], eax
call fcn.004c331c
mov ecx, eax
mov eax, dword [edi + 0x6c]
imul eax, dword [ebp + 0x28]
cdq
sub eax, edx
mov edx, dword [edi + 0x80]
mov edi, dword [ebp + 0x1c]
sar eax, 1
add eax, ecx
lea eax, [edx + eax*2]
push 0x54c780
push edi
mov dword [ebp + 0x18], ecx
mov dword [ebp - 0x38], eax
call fcn.004378a0
add esp, 8
test al, al
fld qword [0x4e3730]
fcomp qword [ebp - 0xa4]
je 0x4569d3
fnstsw ax
mov dword [ebp - 4], 0
test ah, 5
jp 0x4576f9
mov edx, dword [ebp + 0x2c]
mov eax, dword [ebp + 0x18]
sub eax, edx
mov dword [ebp + 0x1c], eax
fild dword [ebp + 0x1c]
fsub dword [ebp + 0xc]
fld qword [ebp - 0x90]
fmul st(1)
fstp qword [ebp - 0x7c]
fild dword [ebp + 0x2c]
fstp qword [ebp - 0x88]
fmul qword [ebp - 0x70]
fild dword [ebp + 0x30]
fld qword [ebp - 0xac]
fsub qword [0x4e36c0]
call fcn.004c331c
mov ecx, dword [ebp + 0x30]
mov dword [ebp + 0x2c], eax
mov eax, dword [ebp + 0x28]
sub eax, ecx
mov dword [ebp - 0x10], eax
lea ecx, [ecx]
fild dword [ebp - 0x10]
fsub dword [ebp + 0x10]
fld qword [ebp - 0x70]
fmul st(1)
fsubr qword [ebp - 0x7c]
fadd qword [ebp - 0x88]
fmul qword [0x4e8d90]
call fcn.004c331c
fmul qword [ebp - 0x90]
mov edi, eax
fadd st(1)
fadd st(2)
fmul qword [0x4e8d90]
call fcn.004c331c
cmp esi, 0xffffffff
mov edx, dword [ebp + 0x2c]
mov ecx, eax
mov dword [ebp + 0x1c], ecx
mov dword [ebp + 0xc], 0
mov dword [ebp + 0x30], edx
jge 0x45666b
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
shl eax, 0x10
sub eax, edi
sub eax, 0x27fff
cdq
idiv esi
test eax, eax
jl 0x456657
mov dword [ebp + 0xc], eax
mov eax, 0x7fff
sub eax, edi
cdq
idiv esi
cmp eax, dword [ebp + 0x30]
jge 0x4566b1
mov dword [ebp + 0x30], eax
jmp 0x4566b1
cmp esi, 1
jl 0x456693
mov eax, 0x10000
sub eax, edi
cdq
idiv esi
test eax, eax
jle 0x456681
mov dword [ebp + 0xc], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, edi
sub eax, 0x17fff
jmp 0x45665e
test edi, edi
jl 0x4566aa
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 8]
shl edx, 0x10
sub edx, 0x10000
cmp edi, edx
jl 0x4566b1
mov dword [ebp + 0x30], 0xffffffff
mov eax, dword [ebp + 0x20]
cmp eax, 0xffffffff
jg 0x456979
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv dword [ebp + 0x20]
cmp eax, dword [ebp + 0xc]
jle 0x4566d9
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0x1c]
cdq
idiv dword [ebp + 0x20]
neg eax
cmp eax, dword [ebp + 0x30]
jge 0x4566ea
mov dword [ebp + 0x30], eax
mov ecx, dword [ebp + 0x1c]
mov eax, dword [ebp + 0xc]
mov edx, eax
imul eax, dword [ebp + 0x20]
imul edx, esi
add edi, edx
mov edx, dword [ebp - 0x38]
add ecx, eax
mov eax, dword [ebp + 0xc]
lea edx, [edx + eax*2]
mov dword [ebp - 0x28], edx
mov edx, dword [ebx + 4]
mov dword [ebp - 0x80], edx
mov edx, dword [ebp + 0x30]
cmp eax, edx
mov dword [ebp - 0x20], edi
mov dword [ebp + 0x1c], ecx
jg 0x456923
sub edx, eax
mov eax, dword [ebp - 0x28]
inc edx
mov dword [ebp - 0x18], edx
lea esp, [esp]
mov ax, word [eax]
mov edx, ecx
sar edx, 0x10
imul edx, dword [ebp - 0x80]
mov word [ebp - 0xc], ax
mov eax, edi
sar eax, 0x10
add edx, eax
mov eax, dword [ebp - 0x44]
mov esi, dword [eax + edx*4]
mov dword [ebp + 0x18], esi
mov esi, dword [eax + edx*4 + 4]
lea eax, [eax + edx*4]
mov dword [ebp + 0xc], esi
mov esi, dword [ebx + 4]
lea eax, [eax + esi*4]
mov esi, dword [eax]
mov ebx, dword [ebp + 0x18]
and ecx, 0xfffe
mov dword [ebp + 0x30], esi
mov edx, edi
and edx, 0xfffe
inc edx
inc ecx
mov eax, dword [eax + 4]
mov dword [ebp - 0x14], edx
mov edi, 0x10000
sub edi, edx
mov edx, edi
imul edi, ecx
mov esi, 0x10000
sub esi, ecx
imul ecx, dword [ebp - 0x14]
imul edx, esi
imul esi, dword [ebp - 0x14]
shr ebx, 0x18
shr esi, 0x10
shr edx, 0x10
imul edx, ebx
mov ebx, dword [ebp + 0xc]
shr ebx, 0x18
imul esi, ebx
mov ebx, dword [ebp + 0x30]
shr ebx, 0x18
shr ecx, 0x10
shr edi, 0x10
imul edi, ebx
mov ebx, eax
shr ebx, 0x18
imul ecx, ebx
shr ecx, 0x10
shr esi, 0x10
mov dword [ebp + 0x28], esi
shr edi, 0x10
mov ebx, 0x100
sub ebx, ecx
sub ebx, edi
sub ebx, esi
movzx esi, word [ebp - 0xc]
mov dword [ebp - 0x2c], esi
mov dword [ebp - 0x14], ecx
mov esi, eax
and esi, 0xff
imul esi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff
imul ecx, edi
add esi, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff
imul ecx, dword [ebp + 0x28]
add esi, ecx
mov ecx, dword [ebp + 0x18]
shr edx, 0x10
and ecx, 0xff
imul ecx, edx
sub ebx, edx
add esi, ecx
mov ecx, dword [ebp - 0x50]
mov dword [ebp - 8], edi
mov dword [ebp - 0x1c], ebx
shr esi, cl
mov ecx, dword [ebp - 0x60]
mov edi, dword [ebp - 0x2c]
shl esi, cl
mov ecx, dword [ebp - 0x3c]
and edi, ecx
imul edi, ebx
shr edi, 8
and edi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff0000
imul ecx, dword [ebp - 8]
add esi, edi
mov edi, eax
and edi, 0xff0000
imul edi, dword [ebp - 0x14]
add edi, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff0000
imul ecx, dword [ebp + 0x28]
add edi, ecx
mov ecx, dword [ebp + 0x18]
and ecx, 0xff0000
imul ecx, edx
add edi, ecx
mov ecx, dword [ebp - 0x68]
shr edi, cl
mov ecx, dword [ebp - 0x64]
mov ebx, dword [ebp - 0x34]
and eax, 0xff00
shl edi, cl
imul eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x2c]
and ecx, ebx
imul ecx, dword [ebp - 0x1c]
shr ecx, 8
and ecx, ebx
add edi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff00
imul ecx, dword [ebp - 8]
add eax, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff00
imul ecx, dword [ebp + 0x28]
add eax, ecx
mov ecx, dword [ebp + 0x18]
and ecx, 0xff00
imul ecx, edx
mov edx, dword [ebp - 0x54]
add eax, ecx
mov ecx, dword [ebp - 0x58]
shr eax, cl
mov ecx, dword [ebp - 0x5c]
mov ebx, dword [ebp + 0x20]
or esi, edi
shl eax, cl
mov ecx, dword [ebp - 0x2c]
mov edi, dword [ebp - 0x20]
and ecx, edx
imul ecx, dword [ebp - 0x1c]
shr ecx, 8
and ecx, edx
mov edx, dword [ebp - 0x18]
add eax, ecx
mov ecx, dword [ebp + 0x1c]
or esi, eax
mov eax, dword [ebp - 0x28]
mov word [eax], si
mov esi, dword [ebp - 0x24]
add ecx, ebx
mov ebx, dword [ebp + 8]
add eax, 2
add edi, esi
dec edx
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x20], edi
mov dword [ebp + 0x1c], ecx
mov dword [ebp - 0x18], edx
jne 0x456730
mov edx, dword [ebp - 0x30]
mov eax, dword [edx + 0x6c]
mov ecx, dword [ebp - 0x38]
cdq
sub eax, edx
sar eax, 1
lea edx, [ecx + eax*2]
mov ecx, dword [ebp - 4]
mov eax, dword [ebp - 0x10]
inc ecx
mov dword [ebp - 4], ecx
inc eax
fild dword [ebp - 4]
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x38], edx
fcomp qword [ebp - 0xa4]
fnstsw ax
test ah, 5
jnp 0x4565f0
mov ecx, dword [ebp - 0x30]
fstp st(0)
mov eax, dword [ecx]
fstp st(0)
call dword [eax + 0xa0]
mov ecx, dword [ebp - 0x30]
call fcn.00438de0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x2c
cmp eax, 1
jl 0x4569ad
mov eax, 0x10000
sub eax, ecx
cdq
idiv dword [ebp + 0x20]
cmp eax, dword [ebp + 0xc]
jle 0x456991
mov dword [ebp + 0xc], eax
mov ecx, dword [ebp + 0x14]
mov eax, dword [ecx + 0xc]
mov ecx, dword [ebp + 0x1c]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv dword [ebp + 0x20]
jmp 0x4566e2
test ecx, ecx
jl 0x4569c7
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jl 0x4566ed
mov edx, dword [ebp + 0xc]
dec edx
mov dword [ebp + 0x30], edx
jmp 0x4566ed
mov eax, dword [edi + 0xc]
mov dword [ebp - 0x18], eax
mov eax, dword [edi]
inc eax
mov dword [ebp - 0x48], eax
mov eax, dword [edi + 4]
mov edi, dword [edi + 8]
inc eax
mov dword [ebp - 0x40], eax
fnstsw ax
inc edi
test ah, 5
mov dword [ebp - 0x94], edi
mov dword [ebp - 0x28], 0
jp 0x4576f9
mov edx, dword [ebp + 0x2c]
mov eax, dword [ebp + 0x18]
sub eax, edx
mov dword [ebp + 0x1c], eax
fild dword [ebp + 0x1c]
fsub dword [ebp + 0xc]
fld qword [ebp - 0x90]
fmul st(1)
fstp qword [ebp - 0x7c]
fild dword [ebp + 0x2c]
fstp qword [ebp - 0x88]
fmul qword [ebp - 0x70]
fild dword [ebp + 0x30]
fld qword [ebp - 0xac]
fsub qword [0x4e36c0]
call fcn.004c331c
mov ecx, dword [ebp + 0x30]
mov dword [ebp + 0x2c], eax
mov eax, dword [ebp + 0x28]
sub eax, ecx
mov dword [ebp - 0x2c], eax
lea esp, [esp]
fild dword [ebp - 0x2c]
fsub dword [ebp + 0x10]
fld qword [ebp - 0x70]
fmul st(1)
fsubr qword [ebp - 0x7c]
fadd qword [ebp - 0x88]
fmul qword [0x4e8d90]
call fcn.004c331c
fmul qword [ebp - 0x90]
mov edi, eax
fadd st(2)
fadd st(1)
fmul qword [0x4e8d90]
call fcn.004c331c
cmp esi, 0xffffffff
mov edx, dword [ebp + 0x2c]
mov ecx, eax
mov dword [ebp + 0x1c], ecx
mov dword [ebp + 0xc], 0
mov dword [ebp + 0x30], edx
jge 0x456acb
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
shl eax, 0x10
sub eax, edi
sub eax, 0x27fff
cdq
idiv esi
test eax, eax
jl 0x456ab7
mov dword [ebp + 0xc], eax
mov eax, 0x7fff
sub eax, edi
cdq
idiv esi
cmp eax, dword [ebp + 0x30]
jge 0x456b11
mov dword [ebp + 0x30], eax
jmp 0x456b11
cmp esi, 1
jl 0x456af3
mov eax, 0x10000
sub eax, edi
cdq
idiv esi
test eax, eax
jle 0x456ae1
mov dword [ebp + 0xc], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, edi
sub eax, 0x17fff
jmp 0x456abe
test edi, edi
jl 0x456b0a
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 8]
shl edx, 0x10
sub edx, 0x10000
cmp edi, edx
jl 0x456b11
mov dword [ebp + 0x30], 0xffffffff
mov eax, dword [ebp + 0x20]
cmp eax, 0xffffffff
jg 0x456e04
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv dword [ebp + 0x20]
cmp eax, dword [ebp + 0xc]
jle 0x456b39
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0x1c]
cdq
idiv dword [ebp + 0x20]
neg eax
cmp eax, dword [ebp + 0x30]
jge 0x456b4a
mov dword [ebp + 0x30], eax
mov ecx, dword [ebp + 0x1c]
mov eax, dword [ebp + 0xc]
mov edx, eax
imul eax, dword [ebp + 0x20]
imul edx, esi
add edi, edx
mov edx, dword [ebp - 0x38]
add ecx, eax
mov eax, dword [ebp + 0xc]
lea edx, [edx + eax*2]
mov dword [ebp - 0x10], edx
mov edx, dword [ebx + 4]
mov dword [ebp - 0x80], edx
mov edx, dword [ebp + 0x30]
cmp eax, edx
mov dword [ebp - 0x1c], edi
mov dword [ebp + 0x1c], ecx
jg 0x456dae
sub edx, eax
mov eax, dword [ebp - 0x10]
inc edx
mov dword [ebp - 0xc], edx
lea esp, [esp]
mov ax, word [eax]
mov edx, ecx
sar edx, 0x10
imul edx, dword [ebp - 0x80]
mov word [ebp - 4], ax
mov eax, edi
sar eax, 0x10
add edx, eax
mov eax, dword [ebp - 0x44]
mov esi, dword [eax + edx*4]
mov dword [ebp + 0x28], esi
mov esi, dword [eax + edx*4 + 4]
mov dword [ebp + 0xc], esi
mov esi, dword [ebx + 4]
lea eax, [eax + edx*4]
lea eax, [eax + esi*4]
mov esi, dword [eax]
mov ebx, dword [ebp + 0x28]
mov dword [ebp + 0x30], esi
mov edx, edi
and ecx, 0xfffe
and edx, 0xfffe
inc edx
inc ecx
mov dword [ebp - 0x20], edx
mov edi, 0x10000
sub edi, edx
mov edx, edi
imul edi, ecx
mov esi, 0x10000
sub esi, ecx
imul ecx, dword [ebp - 0x20]
imul edx, esi
imul esi, dword [ebp - 0x20]
shr ebx, 0x18
shr esi, 0x10
shr edx, 0x10
imul edx, ebx
mov ebx, dword [ebp + 0xc]
imul edx, dword [ebp - 0x18]
shr ebx, 0x18
imul esi, ebx
mov ebx, dword [ebp - 0x18]
mov eax, dword [eax + 4]
imul esi, ebx
shr esi, 0x18
mov dword [ebp + 0x18], esi
mov esi, dword [ebp + 0x30]
shr esi, 0x18
shr edi, 0x10
imul edi, esi
shr ecx, 0x10
imul edi, ebx
mov esi, eax
shr esi, 0x18
imul ecx, esi
mov esi, dword [ebp + 0x18]
imul ecx, ebx
shr ecx, 0x18
shr edi, 0x18
mov ebx, 0x100
sub ebx, ecx
sub ebx, edi
sub ebx, esi
movzx esi, word [ebp - 4]
mov dword [ebp - 4], esi
mov dword [ebp - 0x20], ecx
mov esi, eax
and esi, 0xff
imul esi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff
imul ecx, edi
add esi, ecx
mov ecx, dword [ebp + 0xc]
shr edx, 0x18
sub ebx, edx
and ecx, 0xff
imul ecx, dword [ebp + 0x18]
mov dword [ebp - 0x14], edi
mov dword [ebp - 8], ebx
add esi, ecx
mov ecx, dword [ebp + 0x28]
and ecx, 0xff
imul ecx, edx
add esi, ecx
mov ecx, dword [ebp - 0x50]
mov edi, dword [ebp - 4]
shr esi, 8
imul esi, dword [ebp - 0x94]
shr esi, cl
mov ecx, dword [ebp - 0x60]
shl esi, cl
mov ecx, dword [ebp - 0x3c]
and edi, ecx
imul edi, ebx
shr edi, 8
and edi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff0000
imul ecx, dword [ebp - 0x14]
add esi, edi
mov edi, eax
and edi, 0xff0000
imul edi, dword [ebp - 0x20]
add edi, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff0000
imul ecx, dword [ebp + 0x18]
add edi, ecx
mov ecx, dword [ebp + 0x28]
and ecx, 0xff0000
imul ecx, edx
add edi, ecx
mov ecx, dword [ebp - 0x68]
mov ebx, dword [ebp - 0x34]
shr edi, 8
imul edi, dword [ebp - 0x48]
shr edi, cl
mov ecx, dword [ebp - 0x64]
and eax, 0xff00
imul eax, dword [ebp - 0x20]
shl edi, cl
mov ecx, dword [ebp - 4]
and ecx, ebx
imul ecx, dword [ebp - 8]
shr ecx, 8
and ecx, ebx
add edi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff00
imul ecx, dword [ebp - 0x14]
add eax, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff00
imul ecx, dword [ebp + 0x18]
add eax, ecx
mov ecx, dword [ebp + 0x28]
and ecx, 0xff00
imul ecx, edx
add eax, ecx
mov ecx, dword [ebp - 0x58]
mov edx, dword [ebp - 0x54]
shr eax, 8
imul eax, dword [ebp - 0x40]
shr eax, cl
mov ecx, dword [ebp - 0x5c]
or esi, edi
mov edi, dword [ebp - 0x1c]
shl eax, cl
mov ecx, dword [ebp - 4]
and ecx, edx
imul ecx, dword [ebp - 8]
shr ecx, 8
and ecx, edx
add eax, ecx
or esi, eax
mov eax, dword [ebp - 0x10]
mov word [eax], si
mov esi, dword [ebp - 0x24]
add eax, 2
mov dword [ebp - 0x10], eax
mov ecx, dword [ebp + 0x1c]
mov ebx, dword [ebp + 0x20]
mov edx, dword [ebp - 0xc]
add ecx, ebx
mov ebx, dword [ebp + 8]
add edi, esi
dec edx
mov dword [ebp - 0x1c], edi
mov dword [ebp + 0x1c], ecx
mov dword [ebp - 0xc], edx
jne 0x456b90
mov edx, dword [ebp - 0x30]
mov eax, dword [edx + 0x6c]
mov ecx, dword [ebp - 0x38]
cdq
sub eax, edx
sar eax, 1
lea edx, [ecx + eax*2]
mov ecx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x2c]
inc ecx
mov dword [ebp - 0x28], ecx
inc eax
fild dword [ebp - 0x28]
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x38], edx
fcomp qword [ebp - 0xa4]
fnstsw ax
test ah, 5
jnp 0x456a50
mov ecx, dword [ebp - 0x30]
fstp st(0)
mov eax, dword [ecx]
fstp st(0)
call dword [eax + 0xa0]
mov ecx, dword [ebp - 0x30]
call fcn.00438de0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x2c
cmp eax, 1
jl 0x456e38
mov eax, 0x10000
sub eax, ecx
cdq
idiv dword [ebp + 0x20]
cmp eax, dword [ebp + 0xc]
jle 0x456e1c
mov dword [ebp + 0xc], eax
mov ecx, dword [ebp + 0x14]
mov eax, dword [ecx + 0xc]
mov ecx, dword [ebp + 0x1c]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv dword [ebp + 0x20]
jmp 0x456b42
test ecx, ecx
jl 0x456e52
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jl 0x456b4d
mov edx, dword [ebp + 0xc]
dec edx
mov dword [ebp + 0x30], edx
jmp 0x456b4d
cmp eax, 0x20
jne 0x4576f9
fld qword [ebp - 0xb4]
call fcn.004c331c
fld qword [ebp - 0xbc]
mov edi, eax
call fcn.004c331c
mov ecx, dword [ebp - 0x30]
mov dword [ebp + 0x18], eax
mov eax, dword [ecx + 0x6c]
mov ecx, dword [ecx + 0x80]
imul eax, edi
cdq
and edx, 3
add eax, edx
mov edx, dword [ebp + 0x18]
sar eax, 2
add eax, edx
lea edx, [ecx + eax*4]
mov eax, dword [ebp + 0x1c]
push 0x54c780
push eax
mov dword [ebp + 0x28], edx
call fcn.004378a0
add esp, 8
test al, al
fld qword [0x4e3730]
fcomp qword [ebp - 0xa4]
mov dword [ebp - 0x38], 0
je 0x4572fb
fnstsw ax
test ah, 5
jp 0x4576f9
mov ecx, dword [ebp + 0x2c]
mov eax, dword [ebp + 0x18]
sub eax, ecx
mov dword [ebp + 0x1c], eax
fild dword [ebp + 0x1c]
fsub dword [ebp + 0xc]
fld qword [ebp - 0x90]
fmul st(1)
fstp qword [ebp - 0x7c]
fild dword [ebp + 0x2c]
fstp qword [ebp - 0x88]
fmul qword [ebp - 0x70]
fild dword [ebp + 0x30]
fld qword [ebp - 0xac]
fsub qword [0x4e36c0]
call fcn.004c331c
mov dword [ebp + 0x2c], eax
sub edi, dword [ebp + 0x30]
mov dword [ebp - 0x28], edi
fild dword [ebp - 0x28]
fsub dword [ebp + 0x10]
fld qword [ebp - 0x70]
fmul st(1)
fsubr qword [ebp - 0x7c]
fadd qword [ebp - 0x88]
fmul qword [0x4e8d90]
call fcn.004c331c
fmul qword [ebp - 0x90]
mov edi, eax
fadd st(2)
fadd st(1)
fmul qword [0x4e8d90]
call fcn.004c331c
cmp esi, 0xffffffff
mov edx, dword [ebp + 0x2c]
mov ecx, eax
mov dword [ebp + 0x1c], ecx
mov dword [ebp + 0xc], 0
mov dword [ebp + 0x30], edx
jge 0x456f9c
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
shl eax, 0x10
sub eax, edi
sub eax, 0x27fff
cdq
idiv esi
test eax, eax
jl 0x456f88
mov dword [ebp + 0xc], eax
mov eax, 0x7fff
sub eax, edi
cdq
idiv esi
cmp eax, dword [ebp + 0x30]
jge 0x456fe2
mov dword [ebp + 0x30], eax
jmp 0x456fe2
cmp esi, 1
jl 0x456fc4
mov eax, 0x10000
sub eax, edi
cdq
idiv esi
test eax, eax
jle 0x456fb2
mov dword [ebp + 0xc], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, edi
sub eax, 0x17fff
jmp 0x456f8f
test edi, edi
jl 0x456fdb
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 8]
shl edx, 0x10
sub edx, 0x10000
cmp edi, edx
jl 0x456fe2
mov dword [ebp + 0x30], 0xffffffff
mov eax, dword [ebp + 0x20]
cmp eax, 0xffffffff
jg 0x4572a1
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv dword [ebp + 0x20]
cmp eax, dword [ebp + 0xc]
jle 0x45700a
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0x1c]
cdq
idiv dword [ebp + 0x20]
neg eax
cmp eax, dword [ebp + 0x30]
jge 0x45701b
mov dword [ebp + 0x30], eax
mov ecx, dword [ebp + 0x1c]
mov eax, dword [ebp + 0xc]
mov edx, eax
imul eax, dword [ebp + 0x20]
imul edx, esi
add edi, edx
mov edx, dword [ebp + 0x28]
add ecx, eax
mov eax, dword [ebp + 0xc]
lea edx, [edx + eax*4]
mov dword [ebp - 0x2c], edx
mov edx, dword [ebx + 4]
mov dword [ebp - 0x40], edx
mov edx, dword [ebp + 0x30]
cmp eax, edx
mov dword [ebp - 0x14], edi
mov dword [ebp + 0x1c], ecx
jg 0x457247
sub edx, eax
mov eax, dword [ebp - 0x2c]
inc edx
mov dword [ebp - 8], edx
lea ebx, [ebx]
mov eax, dword [eax]
mov edx, ecx
sar edx, 0x10
imul edx, dword [ebp - 0x40]
mov dword [ebp - 0x10], eax
mov eax, edi
sar eax, 0x10
add edx, eax
mov eax, dword [ebp - 0x44]
mov esi, dword [eax + edx*4]
mov dword [ebp + 0x18], esi
mov esi, dword [eax + edx*4 + 4]
lea eax, [eax + edx*4]
mov dword [ebp + 0xc], esi
mov esi, dword [ebx + 4]
lea eax, [eax + esi*4]
mov esi, dword [eax]
mov ebx, dword [ebp + 0x18]
and ecx, 0xffff
mov dword [ebp + 0x30], esi
mov edx, edi
and edx, 0xffff
mov eax, dword [eax + 4]
mov dword [ebp - 0xc], edx
mov edi, 0xffff
sub edi, edx
mov edx, edi
imul edi, ecx
mov esi, 0xffff
sub esi, ecx
imul ecx, dword [ebp - 0xc]
imul edx, esi
imul esi, dword [ebp - 0xc]
shr ebx, 0x18
shr esi, 0x10
shr edx, 0x10
imul edx, ebx
mov ebx, dword [ebp + 0xc]
shr ebx, 0x18
imul esi, ebx
mov ebx, dword [ebp + 0x30]
shr ebx, 0x18
shr ecx, 0x10
shr edi, 0x10
imul edi, ebx
mov ebx, eax
shr ebx, 0x18
imul ecx, ebx
shr ecx, 0x10
shr esi, 0x10
mov dword [ebp - 4], esi
shr edi, 0x10
mov ebx, 0x100
sub ebx, ecx
mov dword [ebp - 0xc], ecx
sub ebx, edi
sub ebx, esi
mov esi, eax
and esi, 0xff00
imul esi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff00
imul ecx, edi
add esi, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff00
imul ecx, dword [ebp - 4]
add esi, ecx
mov ecx, dword [ebp + 0x18]
and ecx, 0xff00
shr edx, 0x10
imul ecx, edx
add esi, ecx
mov ecx, dword [ebp - 0x58]
shr esi, cl
mov ecx, dword [ebp - 0x5c]
sub ebx, edx
mov dword [ebp - 0x18], edi
mov edi, dword [ebp - 0x10]
mov dword [ebp - 0x20], ebx
shl esi, cl
mov ecx, dword [ebp - 0x54]
and edi, ecx
imul edi, ebx
shr edi, 8
and edi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff
imul ecx, dword [ebp - 0x18]
add esi, edi
mov edi, eax
and edi, 0xff
imul edi, dword [ebp - 0xc]
add edi, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff
imul ecx, dword [ebp - 4]
add edi, ecx
mov ecx, dword [ebp + 0x18]
and ecx, 0xff
imul ecx, edx
add edi, ecx
mov ecx, dword [ebp - 0x50]
shr edi, cl
mov ecx, dword [ebp - 0x60]
mov ebx, dword [ebp - 0x3c]
and eax, 0xff0000
shl edi, cl
imul eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x10]
and ecx, ebx
imul ecx, dword [ebp - 0x20]
shr ecx, 8
and ecx, ebx
add edi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff0000
imul ecx, dword [ebp - 0x18]
add eax, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff0000
imul ecx, dword [ebp - 4]
add eax, ecx
mov ecx, dword [ebp + 0x18]
and ecx, 0xff0000
imul ecx, edx
mov edx, dword [ebp - 0x34]
add eax, ecx
mov ecx, dword [ebp - 0x68]
shr eax, cl
mov ecx, dword [ebp - 0x64]
mov ebx, dword [ebp + 0x20]
or esi, edi
shl eax, cl
mov ecx, dword [ebp - 0x10]
mov edi, dword [ebp - 0x14]
and ecx, edx
imul ecx, dword [ebp - 0x20]
shr ecx, 8
and ecx, edx
mov edx, dword [ebp - 8]
add eax, ecx
mov ecx, dword [ebp + 0x1c]
or esi, eax
mov eax, dword [ebp - 0x2c]
mov dword [eax], esi
mov esi, dword [ebp - 0x24]
add ecx, ebx
mov ebx, dword [ebp + 8]
add eax, 4
add edi, esi
dec edx
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x14], edi
mov dword [ebp + 0x1c], ecx
mov dword [ebp - 8], edx
jne 0x457060
mov edx, dword [ebp - 0x30]
mov eax, dword [edx + 0x6c]
mov ecx, dword [ebp + 0x28]
cdq
and edx, 3
add eax, edx
sar eax, 2
lea edx, [ecx + eax*4]
mov ecx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x28]
inc ecx
mov dword [ebp - 0x38], ecx
inc eax
fild dword [ebp - 0x38]
mov dword [ebp - 0x28], eax
mov dword [ebp + 0x28], edx
fcomp qword [ebp - 0xa4]
fnstsw ax
test ah, 5
jnp 0x456f21
mov ecx, dword [ebp - 0x30]
fstp st(0)
mov eax, dword [ecx]
fstp st(0)
call dword [eax + 0xa0]
mov ecx, dword [ebp - 0x30]
call fcn.00438de0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x2c
cmp eax, 1
jl 0x4572d5
mov eax, 0x10000
sub eax, ecx
cdq
idiv dword [ebp + 0x20]
cmp eax, dword [ebp + 0xc]
jle 0x4572b9
mov dword [ebp + 0xc], eax
mov ecx, dword [ebp + 0x14]
mov eax, dword [ecx + 0xc]
mov ecx, dword [ebp + 0x1c]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv dword [ebp + 0x20]
jmp 0x457013
test ecx, ecx
jl 0x4572ef
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jl 0x45701e
mov edx, dword [ebp + 0xc]
dec edx
mov dword [ebp + 0x30], edx
jmp 0x45701e
mov ecx, dword [ebp + 0x1c]
mov eax, dword [ecx + 0xc]
mov dword [ebp - 4], eax
mov eax, dword [ecx]
inc eax
mov dword [ebp - 0x1c], eax
mov eax, dword [ecx + 4]
inc eax
mov dword [ebp - 0x4c], eax
mov eax, dword [ecx + 8]
inc eax
mov dword [ebp - 0x80], eax
fnstsw ax
test ah, 5
jp 0x4576f9
mov ecx, dword [ebp + 0x2c]
mov eax, dword [ebp + 0x18]
sub eax, ecx
mov dword [ebp + 0x1c], eax
fild dword [ebp + 0x1c]
fsub dword [ebp + 0xc]
fld qword [ebp - 0x90]
fmul st(1)
fstp qword [ebp - 0x7c]
fild dword [ebp + 0x2c]
fstp qword [ebp - 0x88]
fmul qword [ebp - 0x70]
fild dword [ebp + 0x30]
fld qword [ebp - 0xac]
fsub qword [0x4e36c0]
call fcn.004c331c
mov dword [ebp + 0x2c], eax
sub edi, dword [ebp + 0x30]
mov dword [ebp - 0x28], edi
jmp 0x457370
fild dword [ebp - 0x28]
fsub dword [ebp + 0x10]
fld qword [ebp - 0x70]
fmul st(1)
fsubr qword [ebp - 0x7c]
fadd qword [ebp - 0x88]
fmul qword [0x4e8d90]
call fcn.004c331c
fmul qword [ebp - 0x90]
mov edi, eax
fadd st(2)
fadd st(1)
fmul qword [0x4e8d90]
call fcn.004c331c
cmp esi, 0xffffffff
mov edx, dword [ebp + 0x2c]
mov ecx, eax
mov dword [ebp + 0x1c], ecx
mov dword [ebp + 0xc], 0
mov dword [ebp + 0x30], edx
jge 0x4573eb
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
shl eax, 0x10
sub eax, edi
sub eax, 0x27fff
cdq
idiv esi
test eax, eax
jl 0x4573d7
mov dword [ebp + 0xc], eax
mov eax, 0x7fff
sub eax, edi
cdq
idiv esi
cmp eax, dword [ebp + 0x30]
jge 0x457431
mov dword [ebp + 0x30], eax
jmp 0x457431
cmp esi, 1
jl 0x457413
mov eax, 0x10000
sub eax, edi
cdq
idiv esi
test eax, eax
jle 0x457401
mov dword [ebp + 0xc], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, edi
sub eax, 0x17fff
jmp 0x4573de
test edi, edi
jl 0x45742a
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 8]
shl edx, 0x10
sub edx, 0x10000
cmp edi, edx
jl 0x457431
mov dword [ebp + 0x30], 0xffffffff
mov eax, dword [ebp + 0x20]
cmp eax, 0xffffffff
jg 0x457715
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv dword [ebp + 0x20]
cmp eax, dword [ebp + 0xc]
jle 0x457459
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0x1c]
cdq
idiv dword [ebp + 0x20]
neg eax
cmp eax, dword [ebp + 0x30]
jge 0x45746a
mov dword [ebp + 0x30], eax
mov ecx, dword [ebp + 0x1c]
mov eax, dword [ebp + 0xc]
mov edx, eax
imul eax, dword [ebp + 0x20]
imul edx, esi
add edi, edx
mov edx, dword [ebp + 0xc]
add ecx, eax
mov eax, dword [ebp + 0x28]
lea eax, [eax + edx*4]
mov edx, dword [ebx + 4]
mov dword [ebp - 0x40], edx
mov edx, dword [ebp + 0x30]
cmp dword [ebp + 0xc], edx
mov dword [ebp - 0x14], edi
mov dword [ebp + 0x1c], ecx
mov dword [ebp - 0x20], eax
jg 0x4576bb
sub edx, dword [ebp + 0xc]
inc edx
mov dword [ebp - 8], edx
mov eax, dword [eax]
mov edx, ecx
sar edx, 0x10
imul edx, dword [ebp - 0x40]
mov dword [ebp - 0x10], eax
mov eax, edi
sar eax, 0x10
add edx, eax
mov eax, dword [ebp - 0x44]
lea eax, [eax + edx*4]
mov edx, dword [eax]
mov dword [ebp + 0x18], edx
mov edx, dword [eax + 4]
mov dword [ebp + 0xc], edx
mov edx, dword [ebx + 4]
mov ebx, dword [ebp + 0x18]
and ecx, 0xfffe
lea eax, [eax + edx*4]
mov edx, dword [eax]
and edi, 0xfffe
mov dword [ebp + 0x30], edx
inc edi
inc ecx
mov dword [ebp - 0x94], edi
mov eax, dword [eax + 4]
mov edx, 0x10000
sub edx, edi
mov dword [ebp - 0x48], edx
shr ebx, 0x18
mov esi, 0x10000
sub esi, ecx
imul edx, esi
imul edi, esi
mov esi, dword [ebp + 0xc]
shr esi, 0x18
shr edx, 0x10
imul edx, ebx
mov ebx, dword [ebp - 4]
shr edi, 0x10
imul edx, ebx
imul edi, esi
mov esi, ecx
imul ecx, dword [ebp - 0x94]
imul edi, ebx
imul esi, dword [ebp - 0x48]
mov ebx, dword [ebp + 0x30]
shr ebx, 0x18
shr ecx, 0x10
shr esi, 0x10
imul esi, ebx
imul esi, dword [ebp - 4]
mov ebx, eax
shr ebx, 0x18
imul ecx, ebx
imul ecx, dword [ebp - 4]
shr ecx, 0x18
shr esi, 0x18
mov ebx, 0x100
sub ebx, ecx
sub ebx, esi
shr edi, 0x18
sub ebx, edi
shr edx, 0x18
sub ebx, edx
mov dword [ebp - 0x2c], ebx
mov dword [ebp - 0xc], ecx
mov ebx, eax
and ebx, 0xff
imul ebx, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff
imul ecx, esi
add ebx, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff
imul ecx, edi
add ebx, ecx
mov ecx, dword [ebp + 0x18]
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x48], esi
and ecx, 0xff
imul ecx, edx
add ebx, ecx
mov ecx, dword [ebp - 0x50]
mov edi, dword [ebp - 0x3c]
shr ebx, 8
imul ebx, dword [ebp - 0x80]
shr ebx, cl
mov ecx, dword [ebp - 0x60]
shl ebx, cl
mov ecx, dword [ebp - 0x10]
and ecx, edi
imul ecx, dword [ebp - 0x2c]
shr ecx, 8
and ecx, edi
add ebx, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff0000
imul ecx, esi
mov edi, eax
and edi, 0xff0000
imul edi, dword [ebp - 0xc]
add edi, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff0000
imul ecx, dword [ebp - 0x18]
add edi, ecx
mov ecx, dword [ebp + 0x18]
and ecx, 0xff0000
imul ecx, edx
add edi, ecx
mov ecx, dword [ebp - 0x68]
mov esi, dword [ebp - 0x34]
shr edi, 8
imul edi, dword [ebp - 0x1c]
shr edi, cl
mov ecx, dword [ebp - 0x64]
and eax, 0xff00
imul eax, dword [ebp - 0xc]
shl edi, cl
mov ecx, dword [ebp - 0x10]
and ecx, esi
imul ecx, dword [ebp - 0x2c]
shr ecx, 8
and ecx, esi
add edi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff00
imul ecx, dword [ebp - 0x48]
add eax, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff00
imul ecx, dword [ebp - 0x18]
add eax, ecx
mov ecx, dword [ebp + 0x18]
and ecx, 0xff00
imul ecx, edx
add eax, ecx
mov ecx, dword [ebp - 0x58]
mov edx, dword [ebp - 0x54]
shr eax, 8
imul eax, dword [ebp - 0x4c]
shr eax, cl
mov ecx, dword [ebp - 0x5c]
mov esi, dword [ebp - 0x24]
or ebx, edi
shl eax, cl
mov ecx, dword [ebp - 0x10]
mov edi, dword [ebp - 0x14]
and ecx, edx
imul ecx, dword [ebp - 0x2c]
shr ecx, 8
and ecx, edx
add eax, ecx
mov ecx, dword [ebp + 0x1c]
or ebx, eax
mov eax, dword [ebp - 0x20]
mov dword [eax], ebx
add eax, 4
add edi, esi
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x14], edi
mov ebx, dword [ebp + 0x20]
mov edx, dword [ebp - 8]
add ecx, ebx
mov ebx, dword [ebp + 8]
dec edx
mov dword [ebp + 0x1c], ecx
mov dword [ebp - 8], edx
jne 0x4574a8
mov edx, dword [ebp - 0x30]
mov eax, dword [edx + 0x6c]
mov ecx, dword [ebp + 0x28]
cdq
and edx, 3
add eax, edx
sar eax, 2
lea edx, [ecx + eax*4]
mov ecx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x28]
inc ecx
mov dword [ebp - 0x38], ecx
inc eax
fild dword [ebp - 0x38]
mov dword [ebp - 0x28], eax
mov dword [ebp + 0x28], edx
fcomp qword [ebp - 0xa4]
fnstsw ax
test ah, 5
jnp 0x457370
fstp st(0)
fstp st(0)
mov ecx, dword [ebp - 0x30]
mov eax, dword [ecx]
call dword [eax + 0xa0]
mov ecx, dword [ebp - 0x30]
call fcn.00438de0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x2c
cmp eax, 1
jl 0x457749
mov eax, 0x10000
sub eax, ecx
cdq
idiv dword [ebp + 0x20]
cmp eax, dword [ebp + 0xc]
jle 0x45772d
mov dword [ebp + 0xc], eax
mov ecx, dword [ebp + 0x14]
mov eax, dword [ecx + 0xc]
mov ecx, dword [ebp + 0x1c]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv dword [ebp + 0x20]
jmp 0x457462
test ecx, ecx
jl 0x457763
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jl 0x45746d
mov edx, dword [ebp + 0xc]
dec edx
mov dword [ebp + 0x30], edx
jmp 0x45746d
fld qword [ebp + 0x24]
mov ecx, dword [ebp + 0x14]
fcos
imul eax, dword [ecx + 4]
add eax, dword [edi + 0x2c]
add eax, dword [ecx]
mov dword [ebp - 0x54], eax
fstp qword [ebp - 0x9c]
fld qword [ebp + 0x24]
fsin
fstp qword [ebp - 0x70]
fld qword [ebp - 0x9c]
fmul qword [0x4e8d90]
call fcn.004c331c
fld qword [ebp - 0x70]
fmul qword [0x4e8d90]
mov edi, eax
mov dword [ebp - 0x2c], edi
call fcn.004c331c
mov ecx, dword [ebp - 0x30]
mov edx, dword [ecx]
mov dword [ebp + 0x20], eax
call dword [edx + 0x9c]
test al, al
je 0x45a0fe
mov edx, dword [ebp - 0x30]
mov eax, dword [edx + 0x48]
mov ecx, dword [eax + 0x20]
mov dword [ebp - 0x68], ecx
mov ecx, dword [eax + 0x24]
mov dword [ebp - 0x50], ecx
mov ecx, dword [eax + 0x28]
mov dword [ebp - 0x58], ecx
mov ecx, 0x20
sub ecx, dword [eax + 0x14]
mov dword [ebp - 0x64], ecx
mov ecx, 0x18
sub ecx, dword [eax + 0x18]
mov dword [ebp - 0x60], ecx
mov ecx, 0x10
sub ecx, dword [eax + 0x1c]
mov eax, dword [edx + 0xb4]
mov dword [ebp - 0x5c], ecx
mov ecx, dword [edx + 0xb8]
mov dword [ebp - 0x34], eax
mov eax, dword [edx + 0xbc]
mov edx, dword [edx + 0xb0]
cmp edx, 0x10
mov dword [ebp - 0x28], ecx
mov dword [ebp - 0x38], eax
jne 0x4581ce
fld qword [ebp - 0xb4]
call fcn.004c331c
fld qword [ebp - 0xbc]
mov dword [ebp + 0x28], eax
call fcn.004c331c
mov edx, dword [ebp - 0x30]
mov ecx, eax
mov eax, dword [edx + 0x6c]
imul eax, dword [ebp + 0x28]
cdq
sub eax, edx
sar eax, 1
add eax, ecx
mov dword [ebp + 0x18], ecx
mov ecx, dword [ebp - 0x30]
mov edx, dword [ecx + 0x80]
mov ecx, dword [ebp + 0x1c]
lea eax, [edx + eax*2]
push 0x54c780
push ecx
mov dword [ebp - 0x44], eax
call fcn.004378a0
add esp, 8
test al, al
fld qword [0x4e3730]
fcomp qword [ebp - 0xa4]
je 0x457d0e
fnstsw ax
mov dword [ebp - 8], 0
test ah, 5
jp 0x458b3c
mov edx, dword [ebp + 0x2c]
mov eax, dword [ebp + 0x18]
sub eax, edx
mov dword [ebp + 0x1c], eax
fild dword [ebp + 0x1c]
fsub dword [ebp + 0xc]
fld qword [ebp - 0x9c]
fmul st(1)
fstp qword [ebp - 0x7c]
fild dword [ebp + 0x2c]
fstp qword [ebp - 0x88]
fmul qword [ebp - 0x70]
fild dword [ebp + 0x30]
fld qword [ebp - 0xac]
fsub qword [0x4e36c0]
call fcn.004c331c
mov ecx, dword [ebp + 0x30]
mov dword [ebp + 0x2c], eax
mov eax, dword [ebp + 0x28]
sub eax, ecx
mov dword [ebp - 0x1c], eax
lea ecx, [ecx]
fild dword [ebp - 0x1c]
fsub dword [ebp + 0x10]
fld qword [ebp - 0x70]
fmul st(1)
fsubr qword [ebp - 0x7c]
fadd qword [ebp - 0x88]
fmul qword [0x4e8d90]
call fcn.004c331c
fmul qword [ebp - 0x9c]
mov dword [ebp + 0x1c], eax
fadd st(1)
fadd st(2)
fmul qword [0x4e8d90]
call fcn.004c331c
cmp edi, 0xffffffff
mov edx, dword [ebp + 0x2c]
mov ecx, eax
mov dword [ebp + 0x18], ecx
mov dword [ebp + 0x30], 0
mov dword [ebp + 0xc], edx
jge 0x457972
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
mov edx, dword [ebp + 0x1c]
shl eax, 0x10
sub eax, edx
sub eax, 0x27fff
cdq
idiv edi
test eax, eax
jl 0x45795b
mov dword [ebp + 0x30], eax
mov edx, dword [ebp + 0x1c]
mov eax, 0x7fff
sub eax, edx
cdq
idiv edi
cmp eax, dword [ebp + 0xc]
jge 0x4579c1
mov dword [ebp + 0xc], eax
jmp 0x4579c1
cmp edi, 1
jl 0x4579a0
mov edx, dword [ebp + 0x1c]
mov eax, 0x10000
sub eax, edx
cdq
idiv edi
test eax, eax
jle 0x45798b
mov dword [ebp + 0x30], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
mov edx, dword [ebp + 0x1c]
shl eax, 0x10
sub eax, edx
sub eax, 0x17fff
jmp 0x457965
mov eax, dword [ebp + 0x1c]
test eax, eax
jl 0x4579ba
mov edx, dword [ebp + 0x14]
mov edx, dword [edx + 8]
shl edx, 0x10
sub edx, 0x10000
cmp eax, edx
jl 0x4579c1
mov dword [ebp + 0xc], 0xffffffff
mov eax, dword [ebp + 0x20]
cmp eax, 0xffffffff
jg 0x457cb4
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv dword [ebp + 0x20]
cmp eax, dword [ebp + 0x30]
jle 0x4579e9
mov dword [ebp + 0x30], eax
mov eax, dword [ebp + 0x18]
cdq
idiv dword [ebp + 0x20]
neg eax
cmp eax, dword [ebp + 0xc]
jge 0x4579fa
mov dword [ebp + 0xc], eax
mov ecx, dword [ebp + 0x18]
mov eax, dword [ebp + 0x30]
mov edx, dword [ebp + 0x1c]
imul eax, edi
add edx, eax
mov eax, dword [ebp - 0x44]
mov dword [ebp + 0x1c], edx
mov edx, dword [ebp + 0x30]
imul edx, dword [ebp + 0x20]
add ecx, edx
mov edx, dword [ebp + 0x30]
lea eax, [eax + edx*2]
mov edx, dword [ebx + 4]
mov dword [ebp - 0x4c], edx
mov edx, dword [ebp + 0xc]
cmp dword [ebp + 0x30], edx
mov dword [ebp + 0x18], ecx
mov dword [ebp - 0x18], eax
jg 0x457c5e
sub edx, dword [ebp + 0x30]
inc edx
mov dword [ebp - 0x20], edx
lea esp, [esp]
mov ax, word [eax]
mov edi, dword [ebp - 0x54]
mov edx, ecx
sar edx, 0x10
imul edx, dword [ebp - 0x4c]
add edi, edx
mov word [ebp - 0x80], ax
mov eax, dword [ebp + 0x1c]
sar eax, 0x10
movzx edx, byte [eax + edi]
mov edx, dword [esi + edx*4]
add eax, edi
mov dword [ebp + 0x28], edx
movzx edx, byte [eax + 1]
mov edx, dword [esi + edx*4]
mov edi, dword [ebp + 0x1c]
mov dword [ebp + 0xc], edx
mov edx, dword [ebx + 4]
add eax, edx
movzx edx, byte [eax]
mov edx, dword [esi + edx*4]
mov dword [ebp + 0x30], edx
and ecx, 0xfffe
and edi, 0xfffe
inc edi
inc ecx
mov edx, 0x10000
sub edx, edi
mov dword [ebp - 0x48], edx
mov ebx, 0x10000
sub ebx, ecx
imul edx, ebx
mov dword [ebp - 0x40], ebx
mov ebx, dword [ebp + 0x28]
shr ebx, 0x18
shr edx, 0x10
imul edx, ebx
movzx eax, byte [eax + 1]
mov ebx, dword [ebp + 0x30]
mov dword [ebp - 0x94], edi
imul edi, dword [ebp - 0x40]
mov eax, dword [esi + eax*4]
shr edx, 0x10
mov dword [ebp - 0x24], edx
mov edx, dword [ebp + 0xc]
shr edx, 0x18
shr edi, 0x10
imul edi, edx
mov edx, ecx
imul ecx, dword [ebp - 0x94]
imul edx, dword [ebp - 0x48]
shr ebx, 0x18
shr ecx, 0x10
shr edx, 0x10
imul edx, ebx
mov ebx, eax
shr ebx, 0x18
imul ecx, ebx
shr ecx, 0x10
shr edx, 0x10
mov dword [ebp - 4], ecx
mov ebx, 0x100
sub ebx, ecx
mov ecx, dword [ebp - 0x24]
sub ebx, edx
shr edi, 0x10
sub ebx, edi
sub ebx, ecx
movzx ecx, word [ebp - 0x80]
mov dword [ebp - 0x3c], ebx
mov dword [ebp - 0x10], ecx
mov ecx, dword [ebp + 0x30]
mov ebx, eax
and ecx, 0xff
and ebx, 0xff
imul ecx, edx
imul ebx, dword [ebp - 4]
add ebx, ecx
mov ecx, dword [ebp + 0xc]
mov dword [ebp - 0xc], edi
mov dword [ebp - 0x40], edx
and ecx, 0xff
imul ecx, edi
add ebx, ecx
mov ecx, dword [ebp + 0x28]
and ecx, 0xff
imul ecx, dword [ebp - 0x24]
add ebx, ecx
mov ecx, dword [ebp - 0x5c]
shr ebx, cl
mov ecx, dword [ebp - 0x58]
mov edi, dword [ebp - 0x10]
shl ebx, cl
mov ecx, dword [ebp - 0x38]
and ecx, edi
imul ecx, dword [ebp - 0x3c]
mov edi, dword [ebp - 0x38]
shr ecx, 8
and ecx, edi
add ebx, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff0000
imul ecx, edx
mov edx, dword [ebp + 0xc]
mov edi, eax
and edi, 0xff0000
imul edi, dword [ebp - 4]
add edi, ecx
mov ecx, dword [ebp + 0x28]
and ecx, 0xff0000
imul ecx, dword [ebp - 0x24]
and edx, 0xff0000
imul edx, dword [ebp - 0xc]
add edi, edx
mov edx, dword [ebp - 0x34]
add edi, ecx
mov ecx, dword [ebp - 0x64]
shr edi, cl
mov ecx, dword [ebp - 0x68]
and eax, 0xff00
imul eax, dword [ebp - 4]
shl edi, cl
and edx, dword [ebp - 0x10]
imul edx, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x34]
shr edx, 8
and edx, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff00
imul ecx, dword [ebp - 0x40]
add eax, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff00
imul ecx, dword [ebp - 0xc]
add eax, ecx
mov ecx, dword [ebp + 0x28]
and ecx, 0xff00
imul ecx, dword [ebp - 0x24]
add eax, ecx
mov ecx, dword [ebp - 0x60]
shr eax, cl
mov ecx, dword [ebp - 0x50]
add edi, edx
or ebx, edi
mov edi, dword [ebp - 0x10]
shl eax, cl
mov ecx, dword [ebp - 0x28]
mov edx, ecx
and edx, edi
imul edx, dword [ebp - 0x3c]
mov edi, dword [ebp - 0x2c]
shr edx, 8
and edx, ecx
mov ecx, dword [ebp + 0x1c]
add eax, edx
or ebx, eax
mov eax, dword [ebp - 0x18]
mov word [eax], bx
add eax, 2
mov dword [ebp - 0x18], eax
add ecx, edi
mov ebx, dword [ebp + 0x20]
mov edx, dword [ebp - 0x20]
mov dword [ebp + 0x1c], ecx
mov ecx, dword [ebp + 0x18]
add ecx, ebx
mov ebx, dword [ebp + 8]
dec edx
mov dword [ebp + 0x18], ecx
mov dword [ebp - 0x20], edx
jne 0x457a40
mov eax, dword [ebp - 0x30]
mov eax, dword [eax + 0x6c]
mov ecx, dword [ebp - 0x44]
cdq
sub eax, edx
sar eax, 1
lea edx, [ecx + eax*2]
mov ecx, dword [ebp - 8]
mov eax, dword [ebp - 0x1c]
inc ecx
mov dword [ebp - 8], ecx
inc eax
fild dword [ebp - 8]
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x44], edx
fcomp qword [ebp - 0xa4]
fnstsw ax
test ah, 5
jnp 0x4578f0
mov ecx, dword [ebp - 0x30]
fstp st(0)
mov eax, dword [ecx]
fstp st(0)
call dword [eax + 0xa0]
mov ecx, dword [ebp - 0x30]
call fcn.00438de0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x2c
cmp eax, 1
jl 0x457ce8
mov eax, 0x10000
sub eax, ecx
cdq
idiv dword [ebp + 0x20]
cmp eax, dword [ebp + 0x30]
jle 0x457ccc
mov dword [ebp + 0x30], eax
mov ecx, dword [ebp + 0x14]
mov eax, dword [ecx + 0xc]
mov ecx, dword [ebp + 0x18]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv dword [ebp + 0x20]
jmp 0x4579f2
test ecx, ecx
jl 0x457d02
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jl 0x4579fd
mov edx, dword [ebp + 0x30]
dec edx
mov dword [ebp + 0xc], edx
jmp 0x4579fd
mov ecx, dword [ebp + 0x1c]
mov eax, dword [ecx + 0xc]
mov dword [ebp - 8], eax
mov eax, dword [ecx]
inc eax
mov dword [ebp - 0x74], eax
mov eax, dword [ecx + 4]
inc eax
mov dword [ebp - 0x8c], eax
mov eax, dword [ecx + 8]
inc eax
mov dword [ebp - 0x80], eax
fnstsw ax
mov dword [ebp - 0x24], 0
test ah, 5
jp 0x458b3c
mov edx, dword [ebp + 0x2c]
mov eax, dword [ebp + 0x18]
sub eax, edx
mov dword [ebp + 0x1c], eax
fild dword [ebp + 0x1c]
fsub dword [ebp + 0xc]
fld qword [ebp - 0x9c]
fmul st(1)
fstp qword [ebp - 0x7c]
fild dword [ebp + 0x2c]
fstp qword [ebp - 0x88]
fmul qword [ebp - 0x70]
fild dword [ebp + 0x30]
fld qword [ebp - 0xac]
fsub qword [0x4e36c0]
call fcn.004c331c
mov ecx, dword [ebp + 0x30]
mov dword [ebp + 0x2c], eax
mov eax, dword [ebp + 0x28]
sub eax, ecx
mov dword [ebp - 0x10], eax
lea ebx, [ebx]
fild dword [ebp - 0x10]
fsub dword [ebp + 0x10]
fld qword [ebp - 0x70]
fmul st(1)
fsubr qword [ebp - 0x7c]
fadd qword [ebp - 0x88]
fmul qword [0x4e8d90]
call fcn.004c331c
fmul qword [ebp - 0x9c]
mov dword [ebp + 0x1c], eax
fadd st(1)
fadd st(2)
fmul qword [0x4e8d90]
call fcn.004c331c
cmp edi, 0xffffffff
mov edx, dword [ebp + 0x2c]
mov ecx, eax
mov dword [ebp + 0x18], ecx
mov dword [ebp + 0x30], 0
mov dword [ebp + 0xc], edx
jge 0x457e12
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
mov edx, dword [ebp + 0x1c]
shl eax, 0x10
sub eax, edx
sub eax, 0x27fff
cdq
idiv edi
test eax, eax
jl 0x457dfb
mov dword [ebp + 0x30], eax
mov edx, dword [ebp + 0x1c]
mov eax, 0x7fff
sub eax, edx
cdq
idiv edi
cmp eax, dword [ebp + 0xc]
jge 0x457e61
mov dword [ebp + 0xc], eax
jmp 0x457e61
cmp edi, 1
jl 0x457e40
mov edx, dword [ebp + 0x1c]
mov eax, 0x10000
sub eax, edx
cdq
idiv edi
test eax, eax
jle 0x457e2b
mov dword [ebp + 0x30], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
mov edx, dword [ebp + 0x1c]
shl eax, 0x10
sub eax, edx
sub eax, 0x17fff
jmp 0x457e05
mov eax, dword [ebp + 0x1c]
test eax, eax
jl 0x457e5a
mov edx, dword [ebp + 0x14]
mov edx, dword [edx + 8]
shl edx, 0x10
sub edx, 0x10000
cmp eax, edx
jl 0x457e61
mov dword [ebp + 0xc], 0xffffffff
mov eax, dword [ebp + 0x20]
cmp eax, 0xffffffff
jg 0x458174
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv dword [ebp + 0x20]
cmp eax, dword [ebp + 0x30]
jle 0x457e89
mov dword [ebp + 0x30], eax
mov eax, dword [ebp + 0x18]
cdq
idiv dword [ebp + 0x20]
neg eax
cmp eax, dword [ebp + 0xc]
jge 0x457e9a
mov dword [ebp + 0xc], eax
mov ecx, dword [ebp + 0x18]
mov eax, dword [ebp + 0x30]
mov edx, dword [ebp + 0x1c]
imul eax, edi
add edx, eax
mov eax, dword [ebp - 0x44]
mov dword [ebp + 0x1c], edx
mov edx, dword [ebp + 0x30]
imul edx, dword [ebp + 0x20]
add ecx, edx
mov edx, dword [ebp + 0x30]
lea eax, [eax + edx*2]
mov edx, dword [ebx + 4]
mov dword [ebp - 0x4c], edx
mov edx, dword [ebp + 0xc]
cmp dword [ebp + 0x30], edx
mov dword [ebp + 0x18], ecx
mov dword [ebp - 0x20], eax
jg 0x45811e
sub edx, dword [ebp + 0x30]
inc edx
mov dword [ebp - 0x14], edx
lea esp, [esp]
mov ax, word [eax]
mov edi, dword [ebp - 0x54]
mov edx, ecx
sar edx, 0x10
imul edx, dword [ebp - 0x4c]
add edi, edx
mov word [ebp - 0x94], ax
mov eax, dword [ebp + 0x1c]
sar eax, 0x10
movzx edx, byte [eax + edi]
mov edx, dword [esi + edx*4]
add eax, edi
mov edi, dword [ebp + 0x1c]
mov dword [ebp + 0x28], edx
movzx edx, byte [eax + 1]
mov edx, dword [esi + edx*4]
mov dword [ebp + 0xc], edx
mov edx, dword [ebx + 4]
add eax, edx
movzx edx, byte [eax]
mov edx, dword [esi + edx*4]
movzx eax, byte [eax + 1]
mov eax, dword [esi + eax*4]
mov ebx, dword [ebp + 0x28]
and edi, 0xfffe
and ecx, 0xfffe
mov dword [ebp + 0x30], edx
inc edi
inc ecx
mov dword [ebp - 0x48], edi
mov edx, 0x10000
sub edx, edi
mov dword [ebp - 0x40], edx
mov esi, 0x10000
sub esi, ecx
imul edx, esi
imul edi, esi
mov esi, dword [ebp + 0xc]
shr ebx, 0x18
shr esi, 0x18
shr edx, 0x10
imul edx, ebx
mov ebx, dword [ebp - 8]
shr edi, 0x10
imul edx, ebx
imul edi, esi
mov esi, ecx
imul ecx, dword [ebp - 0x48]
imul edi, ebx
imul esi, dword [ebp - 0x40]
mov ebx, dword [ebp + 0x30]
shr ebx, 0x18
shr esi, 0x10
imul esi, ebx
imul esi, dword [ebp - 8]
shr ecx, 0x10
mov ebx, eax
shr ebx, 0x18
imul ecx, ebx
imul ecx, dword [ebp - 8]
shr ecx, 0x18
shr esi, 0x18
mov ebx, 0x100
sub ebx, ecx
sub ebx, esi
shr edi, 0x18
sub ebx, edi
shr edx, 0x18
sub ebx, edx
mov dword [ebp - 4], ebx
movzx ebx, word [ebp - 0x94]
mov dword [ebp - 0x1c], ebx
mov ebx, eax
and ebx, 0xff
mov dword [ebp - 0xc], ecx
imul ebx, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff
mov dword [ebp - 0x18], edi
imul ecx, esi
mov dword [ebp - 0x40], esi
add ebx, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff
imul ecx, edi
add ebx, ecx
mov ecx, dword [ebp + 0x28]
and ecx, 0xff
imul ecx, edx
add ebx, ecx
mov ecx, dword [ebp - 0x5c]
mov edi, dword [ebp - 0x1c]
shr ebx, 8
imul ebx, dword [ebp - 0x80]
shr ebx, cl
mov ecx, dword [ebp - 0x58]
shl ebx, cl
mov ecx, dword [ebp - 0x38]
and ecx, edi
imul ecx, dword [ebp - 4]
mov edi, dword [ebp - 0x38]
shr ecx, 8
and ecx, edi
add ebx, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff0000
imul ecx, esi
mov edi, eax
and edi, 0xff0000
imul edi, dword [ebp - 0xc]
add edi, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff0000
imul ecx, dword [ebp - 0x18]
add edi, ecx
mov ecx, dword [ebp + 0x28]
and ecx, 0xff0000
imul ecx, edx
add edi, ecx
mov ecx, dword [ebp - 0x64]
mov esi, dword [ebp - 0x1c]
shr edi, 8
imul edi, dword [ebp - 0x74]
shr edi, cl
mov ecx, dword [ebp - 0x68]
and eax, 0xff00
imul eax, dword [ebp - 0xc]
shl edi, cl
mov ecx, dword [ebp - 0x34]
and ecx, esi
imul ecx, dword [ebp - 4]
mov esi, dword [ebp - 0x34]
shr ecx, 8
and ecx, esi
add edi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff00
imul ecx, dword [ebp - 0x40]
add eax, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff00
imul ecx, dword [ebp - 0x18]
add eax, ecx
mov ecx, dword [ebp + 0x28]
and ecx, 0xff00
imul ecx, edx
add eax, ecx
mov ecx, dword [ebp - 0x60]
shr eax, 8
imul eax, dword [ebp - 0x8c]
shr eax, cl
mov ecx, dword [ebp - 0x50]
or ebx, edi
mov edi, dword [ebp - 0x1c]
shl eax, cl
mov ecx, dword [ebp - 0x28]
mov edx, ecx
and edx, edi
imul edx, dword [ebp - 4]
shr edx, 8
and edx, ecx
add eax, edx
mov ecx, dword [ebp + 0x18]
mov esi, dword [ebp + 0x20]
mov edi, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x14]
or ebx, eax
mov eax, dword [ebp - 0x20]
mov word [eax], bx
mov ebx, dword [ebp + 0x1c]
add ebx, edi
add ecx, esi
mov esi, dword [ebp - 0x3c]
add eax, 2
dec edx
mov dword [ebp + 0x1c], ebx
mov ebx, dword [ebp + 8]
mov dword [ebp - 0x20], eax
mov dword [ebp + 0x18], ecx
mov dword [ebp - 0x14], edx
jne 0x457ee0
mov eax, dword [ebp - 0x30]
mov eax, dword [eax + 0x6c]
mov ecx, dword [ebp - 0x44]
cdq
sub eax, edx
sar eax, 1
lea edx, [ecx + eax*2]
mov ecx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x10]
inc ecx
mov dword [ebp - 0x24], ecx
inc eax
fild dword [ebp - 0x24]
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x44], edx
fcomp qword [ebp - 0xa4]
fnstsw ax
test ah, 5
jnp 0x457d90
mov ecx, dword [ebp - 0x30]
fstp st(0)
mov eax, dword [ecx]
fstp st(0)
call dword [eax + 0xa0]
mov ecx, dword [ebp - 0x30]
call fcn.00438de0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x2c
cmp eax, 1
jl 0x4581a8
mov eax, 0x10000
sub eax, ecx
cdq
idiv dword [ebp + 0x20]
cmp eax, dword [ebp + 0x30]
jle 0x45818c
mov dword [ebp + 0x30], eax
mov ecx, dword [ebp + 0x14]
mov eax, dword [ecx + 0xc]
mov ecx, dword [ebp + 0x18]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv dword [ebp + 0x20]
jmp 0x457e92
test ecx, ecx
jl 0x4581c2
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jl 0x457e9d
mov edx, dword [ebp + 0x30]
dec edx
mov dword [ebp + 0xc], edx
jmp 0x457e9d
cmp edx, 0x20
jne 0x458b3c
fld qword [ebp - 0xb4]
call fcn.004c331c
fld qword [ebp - 0xbc]
mov dword [ebp + 0x28], eax
call fcn.004c331c
mov ecx, eax
mov eax, dword [ebp - 0x30]
mov eax, dword [eax + 0x6c]
imul eax, dword [ebp + 0x28]
cdq
and edx, 3
add eax, edx
sar eax, 2
add eax, ecx
mov dword [ebp + 0x18], ecx
mov ecx, dword [ebp - 0x30]
mov edx, dword [ecx + 0x80]
mov ecx, dword [ebp + 0x1c]
lea eax, [edx + eax*4]
push 0x54c780
push ecx
mov dword [ebp - 0x44], eax
call fcn.004378a0
add esp, 8
test al, al
fld qword [0x4e3730]
fcomp qword [ebp - 0xa4]
je 0x4586ab
fnstsw ax
mov dword [ebp - 0x14], 0
test ah, 5
jp 0x458b3c
mov edx, dword [ebp + 0x2c]
mov eax, dword [ebp + 0x18]
sub eax, edx
mov dword [ebp + 0x1c], eax
fild dword [ebp + 0x1c]
fsub dword [ebp + 0xc]
fld qword [ebp - 0x9c]
fmul st(1)
fstp qword [ebp - 0x7c]
fild dword [ebp + 0x2c]
fstp qword [ebp - 0x88]
fmul qword [ebp - 0x70]
fild dword [ebp + 0x30]
fld qword [ebp - 0xac]
fsub qword [0x4e36c0]
call fcn.004c331c
mov ecx, dword [ebp + 0x30]
mov dword [ebp + 0x2c], eax
mov eax, dword [ebp + 0x28]
sub eax, ecx
mov dword [ebp - 0x3c], eax
lea ebx, [ebx]
fild dword [ebp - 0x3c]
fsub dword [ebp + 0x10]
fld qword [ebp - 0x70]
fmul st(1)
fsubr qword [ebp - 0x7c]
fadd qword [ebp - 0x88]
fmul qword [0x4e8d90]
call fcn.004c331c
fmul qword [ebp - 0x9c]
mov dword [ebp + 0xc], eax
fadd st(2)
fadd st(1)
fmul qword [0x4e8d90]
call fcn.004c331c
cmp edi, 0xffffffff
mov edx, dword [ebp + 0x2c]
mov ecx, eax
mov dword [ebp + 0x18], ecx
mov dword [ebp + 0x1c], 0
mov dword [ebp + 0x30], edx
jge 0x458322
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
mov edx, dword [ebp + 0xc]
shl eax, 0x10
sub eax, edx
sub eax, 0x27fff
cdq
idiv edi
test eax, eax
jl 0x45830b
mov dword [ebp + 0x1c], eax
mov edx, dword [ebp + 0xc]
mov eax, 0x7fff
sub eax, edx
cdq
idiv edi
cmp eax, dword [ebp + 0x30]
jge 0x458371
mov dword [ebp + 0x30], eax
jmp 0x458371
cmp edi, 1
jl 0x458350
mov edx, dword [ebp + 0xc]
mov eax, 0x10000
sub eax, edx
cdq
idiv edi
test eax, eax
jle 0x45833b
mov dword [ebp + 0x1c], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
mov edx, dword [ebp + 0xc]
shl eax, 0x10
sub eax, edx
sub eax, 0x17fff
jmp 0x458315
mov eax, dword [ebp + 0xc]
test eax, eax
jl 0x45836a
mov edx, dword [ebp + 0x14]
mov edx, dword [edx + 8]
shl edx, 0x10
sub edx, 0x10000
cmp eax, edx
jl 0x458371
mov dword [ebp + 0x30], 0xffffffff
mov eax, dword [ebp + 0x20]
cmp eax, 0xffffffff
jg 0x458651
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv dword [ebp + 0x20]
cmp eax, dword [ebp + 0x1c]
jle 0x458399
mov dword [ebp + 0x1c], eax
mov eax, dword [ebp + 0x18]
cdq
idiv dword [ebp + 0x20]
neg eax
cmp eax, dword [ebp + 0x30]
jge 0x4583aa
mov dword [ebp + 0x30], eax
mov ecx, dword [ebp + 0x18]
mov eax, dword [ebp + 0x1c]
mov edx, dword [ebp + 0xc]
imul eax, edi
add edx, eax
mov eax, dword [ebp + 0x1c]
mov dword [ebp + 0xc], edx
mov edx, dword [ebp + 0x1c]
imul edx, dword [ebp + 0x20]
add ecx, edx
mov edx, dword [ebp - 0x44]
lea edx, [edx + eax*4]
mov dword [ebp - 0x10], edx
mov edx, dword [ebx + 4]
mov dword [ebp - 0x8c], edx
mov edx, dword [ebp + 0x30]
cmp eax, edx
mov dword [ebp + 0x18], ecx
jg 0x4585f7
sub edx, eax
mov eax, dword [ebp - 0x10]
inc edx
mov dword [ebp - 0x18], edx
mov eax, dword [eax]
mov edi, dword [ebp - 0x54]
mov edx, ecx
sar edx, 0x10
imul edx, dword [ebp - 0x8c]
add edi, edx
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp + 0xc]
sar eax, 0x10
movzx edx, byte [eax + edi]
mov edx, dword [esi + edx*4]
add eax, edi
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x24], edx
movzx edx, byte [eax + 1]
mov edx, dword [esi + edx*4]
mov dword [ebp + 0x1c], edx
mov edx, dword [ebx + 4]
add eax, edx
movzx edx, byte [eax]
mov edx, dword [esi + edx*4]
and edi, 0xffff
and ecx, 0xffff
mov dword [ebp + 0x30], edx
mov dword [ebp - 0x4c], edi
mov edx, 0xffff
sub edx, edi
mov dword [ebp - 0x74], edx
mov ebx, 0xffff
sub ebx, ecx
imul edx, ebx
mov dword [ebp + 0x28], ebx
imul edi, dword [ebp + 0x28]
mov ebx, dword [ebp - 0x24]
shr ebx, 0x18
shr edi, 0x10
shr edx, 0x10
imul edx, ebx
mov ebx, dword [ebp + 0x1c]
shr ebx, 0x18
imul edi, ebx
movzx eax, byte [eax + 1]
mov ebx, dword [ebp + 0x30]
mov eax, dword [esi + eax*4]
shr edi, 0x10
mov dword [ebp + 0x28], edi
mov edi, ecx
imul ecx, dword [ebp - 0x4c]
imul edi, dword [ebp - 0x74]
shr ebx, 0x18
shr edi, 0x10
imul edi, ebx
shr ecx, 0x10
mov ebx, eax
shr ebx, 0x18
imul ecx, ebx
shr ecx, 0x10
shr edi, 0x10
mov dword [ebp - 8], edi
mov ebx, 0x100
sub ebx, ecx
sub ebx, edi
sub ebx, dword [ebp + 0x28]
mov edi, dword [ebp - 0x24]
shr edx, 0x10
sub ebx, edx
mov dword [ebp - 4], ebx
mov ebx, eax
mov dword [ebp - 0xc], ecx
and ebx, 0xff
imul ebx, ecx
mov ecx, dword [ebp + 0x30]
and edi, 0xff
and ecx, 0xff
imul edi, edx
imul ecx, dword [ebp - 8]
add edi, ebx
add edi, ecx
mov ecx, dword [ebp + 0x1c]
mov dword [ebp - 0x40], edx
and ecx, 0xff
imul ecx, dword [ebp + 0x28]
add edi, ecx
mov ecx, dword [ebp - 0x5c]
shr edi, cl
mov ecx, dword [ebp - 0x58]
mov ebx, dword [ebp - 0x38]
shl edi, cl
mov ecx, dword [ebp - 0x1c]
and ecx, ebx
imul ecx, dword [ebp - 4]
shr ecx, 8
and ecx, ebx
mov ebx, dword [ebp - 0x24]
add edi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff0000
imul ecx, dword [ebp - 8]
and ebx, 0xff0000
imul ebx, edx
mov edx, eax
and edx, 0xff0000
imul edx, dword [ebp - 0xc]
add ebx, edx
mov edx, dword [ebp + 0x1c]
add ebx, ecx
mov ecx, dword [ebp - 0x64]
and edx, 0xff0000
imul edx, dword [ebp + 0x28]
add ebx, edx
shr ebx, cl
mov ecx, dword [ebp - 0x68]
mov edx, dword [ebp - 0x34]
and eax, 0xff00
shl ebx, cl
imul eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x1c]
and ecx, edx
imul ecx, dword [ebp - 4]
shr ecx, 8
and ecx, edx
add ebx, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff00
imul ecx, dword [ebp - 8]
add eax, ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xff00
imul ecx, dword [ebp + 0x28]
add eax, ecx
mov ecx, dword [ebp - 0x24]
and ecx, 0xff00
imul ecx, dword [ebp - 0x40]
mov edx, dword [ebp - 0x28]
add eax, ecx
mov ecx, dword [ebp - 0x60]
shr eax, cl
mov ecx, dword [ebp - 0x50]
or edi, ebx
mov ebx, dword [ebp + 0x20]
shl eax, cl
mov ecx, dword [ebp - 0x1c]
and ecx, edx
imul ecx, dword [ebp - 4]
shr ecx, 8
and ecx, edx
mov edx, dword [ebp - 0x18]
add eax, ecx
mov ecx, dword [ebp + 0xc]
or edi, eax
mov eax, dword [ebp - 0x10]
mov dword [eax], edi
mov edi, dword [ebp - 0x2c]
add ecx, edi
mov dword [ebp + 0xc], ecx
mov ecx, dword [ebp + 0x18]
add eax, 4
add ecx, ebx
mov dword [ebp - 0x10], eax
mov dword [ebp + 0x18], ecx
dec edx
mov ebx, dword [ebp + 8]
mov dword [ebp - 0x18], edx
jne 0x4583f0
mov edx, dword [ebp - 0x30]
mov eax, dword [edx + 0x6c]
mov ecx, dword [ebp - 0x44]
cdq
and edx, 3
add eax, edx
sar eax, 2
lea edx, [ecx + eax*4]
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x3c]
inc ecx
mov dword [ebp - 0x14], ecx
inc eax
fild dword [ebp - 0x14]
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x44], edx
fcomp qword [ebp - 0xa4]
fnstsw ax
test ah, 5
jnp 0x4582a0
mov ecx, dword [ebp - 0x30]
fstp st(0)
mov eax, dword [ecx]
fstp st(0)
call dword [eax + 0xa0]
mov ecx, dword [ebp - 0x30]
call fcn.00438de0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x2c
cmp eax, 1
jl 0x458685
mov eax, 0x10000
sub eax, ecx
cdq
idiv dword [ebp + 0x20]
cmp eax, dword [ebp + 0x1c]
jle 0x458669
mov dword [ebp + 0x1c], eax
mov ecx, dword [ebp + 0x14]
mov eax, dword [ecx + 0xc]
mov ecx, dword [ebp + 0x18]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv dword [ebp + 0x20]
jmp 0x4583a2
test ecx, ecx
jl 0x45869f
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp ecx, eax
jl 0x4583ad
mov edx, dword [ebp + 0x1c]
dec edx
mov dword [ebp + 0x30], edx
jmp 0x4583ad
mov ecx, dword [ebp + 0x1c]
mov eax, dword [ecx + 0xc]
mov dword [ebp - 0xc], eax
mov eax, dword [ecx]
inc eax
mov dword [ebp - 0x40], eax
mov eax, dword [ecx + 4]
inc eax
mov dword [ebp - 0x48], eax
mov eax, dword [ecx + 8]
inc eax
mov dword [ebp - 0x74], eax
fnstsw ax
mov dword [ebp - 0x1c], 0
test ah, 5
jp 0x458b3c
mov edx, dword [ebp + 0x2c]
mov eax, dword [ebp + 0x18]
sub eax, edx
mov dword [ebp + 0x1c], eax
fild dword [ebp + 0x1c]
fsub dword [ebp + 0xc]
fld qword [ebp - 0x9c]
fmul st(1)
fstp qword [ebp - 0x7c]
fild dword [ebp + 0x2c]
fstp qword [ebp - 0x88]
fmul qword [ebp - 0x70]
fild dword [ebp + 0x30]
fld qword [ebp - 0xac]
fsub qword [0x4e36c0]
call fcn.004c331c
mov ecx, dword [ebp + 0x30]
mov dword [ebp + 0x2c], eax
mov eax, dword [ebp + 0x28]
sub eax, ecx
mov dword [ebp - 8], eax
fild dword [ebp - 8]
fsub dword [ebp + 0x10]
fld qword [ebp - 0x70]
fmul st(1)
fsubr qword [ebp - 0x7c]
fadd qword [ebp - 0x88]
fmul qword [0x4e8d90]
call fcn.004c331c
fmul qword [ebp - 0x9c]
mov dword [ebp + 0xc], eax
fadd st(2)
fadd st(1)
fmul qword [0x4e8d90]
call fcn.004c331c
cmp edi, 0xffffffff
mov ecx, dword [ebp + 0x2c]
mov dword [ebp + 0x1c], eax
mov dword [ebp + 0x30], 0
mov dword [ebp + 0x18], ecx
jge 0x4587a2
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
mov edx, dword [ebp + 0xc]
shl eax, 0x10
sub eax, edx
sub eax, 0x27fff
cdq
idiv edi
test eax, eax
jl 0x45878d
mov dword [ebp + 0x30], eax
mov edx, dword [ebp + 0xc]
mov eax, 0x7fff
sub eax, edx
cdq
idiv edi
cmp eax, ecx
jge 0x4587f9
mov ecx, eax
jmp 0x4587f6
cmp edi, 1
jl 0x4587d9
mov edx, dword [ebp + 0xc]
mov eax, 0x10000
sub eax, edx
cdq
idiv edi
test eax, eax
jle 0x4587bb
mov dword [ebp + 0x30], eax
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
mov edx, dword [ebp + 0xc]
shl eax, 0x10
sub eax, edx
sub eax, 0x17fff
cdq
idiv edi
cmp eax, ecx
jge 0x4587f9
mov ecx, eax
jmp 0x4587f6
mov eax, dword [ebp + 0xc]
test eax, eax
jl 0x4587f3
mov edx, dword [ebp + 0x14]
mov edx, dword [edx + 8]
shl edx, 0x10
sub edx, 0x10000
cmp eax, edx
jl 0x4587f9
or ecx, 0xffffffff
mov dword [ebp + 0x18], ecx
mov eax, dword [ebp + 0x20]
cmp eax, 0xffffffff
jg 0x458834
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
mov ecx, dword [ebp + 0x1c]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv dword [ebp + 0x20]
cmp eax, dword [ebp + 0x30]
jle 0x458820
mov dword [ebp + 0x30], eax
mov eax, dword [ebp + 0x1c]
cdq
idiv dword [ebp + 0x20]
mov ecx, dword [ebp + 0x18]
neg eax
cmp eax, ecx
jge 0x45888f
mov ecx, eax
jmp 0x45888f
cmp eax, 1
jl 0x458871
mov edx, dword [ebp + 0x1c]
mov eax, 0x10000
sub eax, edx
cdq
idiv dword [ebp + 0x20]
cmp eax, dword [ebp + 0x30]
jle 0x45884f
mov dword [ebp + 0x30], eax
mov ecx, dword [ebp + 0x14]
mov eax, dword [ecx + 0xc]
mov edx, dword [ebp + 0x1c]
shl eax, 0x10
sub eax, edx
sub eax, 0x17fff
cdq
idiv dword [ebp + 0x20]
mov ecx, dword [ebp + 0x18]
cmp eax, ecx
jge 0x45888f
mov ecx, eax
jmp 0x45888f
mov eax, dword [ebp + 0x1c]
test eax, eax
jl 0x45888b
mov edx, dword [ebp + 0x14]
mov edx, dword [edx + 0xc]
shl edx, 0x10
sub edx, 0x10000
cmp eax, edx
jl 0x45888f
mov ecx, dword [ebp + 0x30]
dec ecx
mov edx, dword [ebp + 0xc]
mov eax, edi
imul eax, dword [ebp + 0x30]
add edx, eax
mov eax, dword [ebp + 0x1c]
mov dword [ebp + 0xc], edx
mov edx, dword [ebp + 0x20]
imul edx, dword [ebp + 0x30]
add eax, edx
mov edx, dword [ebp + 0x30]
mov dword [ebp + 0x1c], eax
mov eax, dword [ebp - 0x44]
lea edx, [eax + edx*4]
mov eax, dword [ebx + 4]
mov dword [ebp - 0x8c], eax
mov eax, dword [ebp + 0x30]
cmp eax, ecx
mov dword [ebp - 0x14], edx
jg 0x458afe
sub ecx, eax
inc ecx
mov dword [ebp - 0x10], ecx
mov ecx, dword [ebp + 0x1c]
mov edx, dword [edx]
mov eax, dword [ebp + 0xc]
mov edi, dword [ebp - 0x54]
mov dword [ebp - 0x4c], edx
mov edx, ecx
sar edx, 0x10
imul edx, dword [ebp - 0x8c]
add edi, edx
mov edx, dword [ebp + 0xc]
sar eax, 0x10
add eax, edi
movzx edi, byte [eax]
mov edi, dword [esi + edi*4]
mov dword [ebp - 0x24], edi
movzx edi, byte [eax + 1]
mov edi, dword [esi + edi*4]
mov dword [ebp + 0x18], edi
mov edi, dword [ebx + 4]
add eax, edi
movzx edi, byte [eax]
mov edi, dword [esi + edi*4]
movzx eax, byte [eax + 1]
mov eax, dword [esi + eax*4]
mov ebx, dword [ebp - 0x24]
and edx, 0xfffe
and ecx, 0xfffe
inc edx
inc ecx
mov dword [ebp + 0x30], edi
mov dword [ebp - 0x18], edx
mov edi, 0x10000
sub edi, edx
mov edx, edi
imul edi, ecx
mov esi, 0x10000
sub esi, ecx
imul ecx, dword [ebp - 0x18]
imul edx, esi
imul esi, dword [ebp - 0x18]
shr ebx, 0x18
shr esi, 0x10
shr edx, 0x10
imul edx, ebx
mov ebx, dword [ebp + 0x18]
imul edx, dword [ebp - 0xc]
shr ebx, 0x18
imul esi, ebx
mov ebx, dword [ebp - 0xc]
imul esi, ebx
shr esi, 0x18
mov dword [ebp + 0x28], esi
mov esi, dword [ebp + 0x30]
shr esi, 0x18
shr edi, 0x10
imul edi, esi
shr ecx, 0x10
imul edi, ebx
mov esi, eax
shr esi, 0x18
imul ecx, esi
mov esi, dword [ebp + 0x28]
imul ecx, ebx
shr ecx, 0x18
shr edi, 0x18
mov ebx, 0x100
sub ebx, ecx
sub ebx, edi
sub ebx, esi
mov esi, eax
mov dword [ebp - 0x18], ecx
and esi, 0xff
imul esi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff
imul ecx, edi
shr edx, 0x18
sub ebx, edx
add esi, ecx
mov ecx, dword [ebp + 0x18]
mov dword [ebp - 0x20], edi
mov dword [ebp - 4], ebx
and ecx, 0xff
imul ecx, dword [ebp + 0x28]
add esi, ecx
mov ecx, dword [ebp - 0x24]
and ecx, 0xff
imul ecx, edx
add esi, ecx
mov ecx, dword [ebp - 0x5c]
shr esi, 8
imul esi, dword [ebp - 0x74]
shr esi, cl
mov ecx, dword [ebp - 0x58]
shl esi, cl
mov ecx, dword [ebp - 0x38]
mov edi, ecx
and edi, dword [ebp - 0x4c]
imul edi, ebx
shr edi, 8
and edi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff0000
imul ecx, dword [ebp - 0x20]
add esi, edi
mov edi, eax
and edi, 0xff0000
imul edi, dword [ebp - 0x18]
add edi, ecx
mov ecx, dword [ebp + 0x18]
and ecx, 0xff0000
imul ecx, dword [ebp + 0x28]
add edi, ecx
mov ecx, dword [ebp - 0x24]
and ecx, 0xff0000
imul ecx, edx
add edi, ecx
mov ecx, dword [ebp - 0x64]
mov ebx, dword [ebp - 0x14]
shr edi, 8
imul edi, dword [ebp - 0x40]
shr edi, cl
mov ecx, dword [ebp - 0x68]
and eax, 0xff00
imul eax, dword [ebp - 0x18]
shl edi, cl
mov ecx, dword [ebp - 0x34]
and ecx, dword [ebx]
mov ebx, dword [ebp - 0x34]
imul ecx, dword [ebp - 4]
shr ecx, 8
and ecx, ebx
add edi, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff00
imul ecx, dword [ebp - 0x20]
add eax, ecx
mov ecx, dword [ebp + 0x18]
and ecx, 0xff00
imul ecx, dword [ebp + 0x28]
add eax, ecx
mov ecx, dword [ebp - 0x24]
and ecx, 0xff00
imul ecx, edx
mov edx, dword [ebp - 0x14]
mov ebx, dword [edx]
add eax, ecx
mov ecx, dword [ebp - 0x60]
shr eax, 8
imul eax, dword [ebp - 0x48]
shr eax, cl
mov ecx, dword [ebp - 0x50]
or esi, edi
shl eax, cl
mov ecx, dword [ebp - 0x28]
mov edi, ecx
and edi, ebx
imul edi, dword [ebp - 4]
shr edi, 8
and edi, ecx
add eax, edi
or esi, eax
mov dword [edx], esi
mov ebx, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x1c]
mov esi, dword [ebp + 0x20]
mov edi, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x10]
add ebx, edi
add ecx, esi
mov esi, dword [ebp - 0x3c]
add edx, 4
dec eax
mov dword [ebp + 0xc], ebx
mov ebx, dword [ebp + 8]
mov dword [ebp - 0x14], edx
mov dword [ebp + 0x1c], ecx
mov dword [ebp - 0x10], eax
jne 0x4588d5
mov edx, dword [ebp - 0x30]
mov eax, dword [edx + 0x6c]
mov ecx, dword [ebp - 0x44]
cdq
and edx, 3
add eax, edx
sar eax, 2
lea edx, [ecx + eax*4]
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ebp - 8]
inc ecx
mov dword [ebp - 0x1c], ecx
inc eax
fild dword [ebp - 0x1c]
mov dword [ebp - 8], eax
mov dword [ebp - 0x44], edx
fcomp qword [ebp - 0xa4]
fnstsw ax
test ah, 5
jnp 0x458724
fstp st(0)
fstp st(0)
mov ecx, dword [ebp - 0x30]
mov eax, dword [ecx]
call dword [eax + 0xa0]
mov ecx, dword [ebp - 0x30]
call fcn.00438de0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x2c
call fcn.0043e6f0
test esi, esi
jne 0x4595da
mov esi, eax
mov eax, dword [ebp + 0x14]
imul esi, dword [eax + 4]
add esi, dword [eax]
mov edx, dword [edi]
mov ecx, edi
call dword [edx + 0x64]
lea eax, [eax + esi*4]
fld qword [ebp + 0x24]
mov dword [ebp - 0x24], eax
fcos
fstp qword [ebp - 0x70]
fld qword [ebp + 0x24]
fsin
fstp qword [ebp - 0x9c]
fld qword [ebp - 0x70]
fmul qword [0x4e8d90]
call fcn.004c331c
fld qword [ebp - 0x9c]
fmul qword [0x4e8d90]
mov dword [ebp + 0x20], eax
call fcn.004c331c
mov esi, dword [ebp - 0x30]
mov edx, dword [esi]
mov edi, eax
mov ecx, esi
mov dword [ebp - 0x34], edi
call dword [edx + 0x9c]
test al, al
je 0x45a0fe
mov eax, dword [esi + 0x48]
mov ecx, dword [eax + 0x7c]
mov edx, dword [eax + 0x80]
mov dword [ebp - 0x58], ecx
mov ecx, dword [eax + 0x84]
mov dword [ebp - 0x3c], edx
mov edx, dword [eax + 0x20]
mov dword [ebp - 0x60], ecx
mov ecx, dword [eax + 0x24]
mov dword [ebp - 0x2c], edx
mov edx, dword [eax + 0x28]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x28], edx
mov edx, dword [eax + 0x14]
mov ecx, 0x20
sub ecx, edx
mov edx, dword [eax + 0x18]
mov dword [ebp - 0x54], ecx
mov ecx, 0x18
sub ecx, edx
mov edx, dword [eax + 0x1c]
mov eax, dword [esi + 0xb4]
mov dword [ebp - 0x50], ecx
mov ecx, 0x10
sub ecx, edx
mov edx, dword [esi + 0xbc]
mov dword [ebp - 0x5c], eax
mov eax, dword [esi + 0xb0]
cmp eax, 0x10
mov dword [ebp - 0x64], ecx
mov ecx, dword [esi + 0xb8]
mov dword [ebp - 0x44], ecx
mov dword [ebp - 0x68], edx
jne 0x459113
fld qword [ebp - 0xb4]
call fcn.004c331c
fld qword [ebp - 0xbc]
mov dword [ebp + 0x28], eax
call fcn.004c331c
fld qword [0x4e3730]
mov ecx, eax
fcomp qword [ebp - 0xa4]
mov eax, dword [esi + 0x6c]
imul eax, dword [ebp + 0x28]
cdq
sub eax, edx
sar eax, 1
add eax, ecx
mov dword [ebp + 0x18], ecx
mov ecx, dword [esi + 0x80]
mov esi, dword [ebp + 0x1c]
lea edx, [ecx + eax*2]
mov eax, dword [esi + 0xc]
mov ecx, dword [esi]
imul ecx, eax
mov dword [ebp + 0x1c], eax
mov dword [ebp - 0x14], edx
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [esi + 4]
imul ecx, dword [ebp + 0x1c]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov dword [ebp - 0x4c], edx
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov ecx, dword [esi + 8]
imul ecx, dword [ebp + 0x1c]
mov dword [ebp - 0x94], edx
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov dword [ebp - 0x40], edx
fnstsw ax
test ah, 5
mov dword [ebp - 8], 0
jp 0x45a0af
mov edx, dword [ebp + 0x2c]
mov eax, dword [ebp + 0x18]
sub eax, edx
mov dword [ebp + 0x1c], eax
fild dword [ebp + 0x1c]
fsub dword [ebp + 0xc]
fld qword [ebp - 0x70]
fmul st(1)
fstp qword [ebp - 0x7c]
fild dword [ebp + 0x2c]
fstp qword [ebp - 0x88]
fmul qword [ebp - 0x9c]
fild dword [ebp + 0x30]
fld qword [ebp - 0xac]
fsub qword [0x4e36c0]
call fcn.004c331c
mov ecx, dword [ebp + 0x30]
mov dword [ebp + 0x2c], eax
mov eax, dword [ebp + 0x28]
sub eax, ecx
mov dword [ebp + 0x28], eax
jmp 0x458d50
fild dword [ebp + 0x28]
fsub dword [ebp + 0x10]
fld qword [ebp - 0x9c]
fmul st(1)
fsubr qword [ebp - 0x7c]
fadd qword [ebp - 0x88]
fmul qword [0x4e8d90]
call fcn.004c331c
fmul qword [ebp - 0x70]
mov esi, eax
fadd st(2)
fadd st(1)
fmul qword [0x4e8d90]
call fcn.004c331c
mov edx, dword [ebp + 0x2c]
mov ecx, eax
cmp dword [ebp + 0x20], 0xffffffff
mov dword [ebp + 0xc], 0
mov dword [ebp + 0x30], edx
jge 0x458dc1
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
mov edi, dword [ebp + 0x20]
shl eax, 0x10
sub eax, esi
sub eax, 0x27fff
cdq
idiv edi
test eax, eax
jl 0x458db8
mov dword [ebp + 0xc], eax
mov eax, 0x7fff
sub eax, esi
jmp 0x458deb
cmp dword [ebp + 0x20], 1
jl 0x458e29
mov edi, dword [ebp + 0x20]
mov eax, 0x10000
sub eax, esi
cdq
idiv edi
test eax, eax
jle 0x458ddb
mov dword [ebp + 0xc], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, esi
sub eax, 0x17fff
cdq
idiv edi
cmp eax, dword [ebp + 0x30]
jge 0x458df6
mov dword [ebp + 0x30], eax
mov edi, dword [ebp - 0x34]
cmp edi, 0xffffffff
jg 0x458e49
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv edi
cmp eax, dword [ebp + 0xc]
jle 0x458e19
mov dword [ebp + 0xc], eax
mov eax, ecx
cdq
idiv edi
mov edx, dword [ebp + 0x30]
neg eax
cmp eax, edx
jge 0x458e98
jmp 0x458e95
test esi, esi
jl 0x458e40
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 8]
shl edx, 0x10
sub edx, 0x10000
cmp esi, edx
jl 0x458df9
mov dword [ebp + 0x30], 0xffffffff
jmp 0x458df9
cmp edi, 1
jl 0x458e7a
mov eax, 0x10000
sub eax, ecx
cdq
idiv edi
cmp eax, dword [ebp + 0xc]
jle 0x458e60
mov dword [ebp + 0xc], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv edi
cmp eax, dword [ebp + 0x30]
jge 0x458e98
jmp 0x458e95
test ecx, ecx
jl 0x458e91
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 0xc]
shl edx, 0x10
sub edx, 0x10000
cmp ecx, edx
jl 0x458e98
mov eax, dword [ebp + 0xc]
dec eax
mov dword [ebp + 0x30], eax
mov edx, dword [ebp + 0xc]
imul edx, dword [ebp + 0x20]
mov eax, dword [ebp + 0xc]
add esi, edx
mov edx, eax
imul edx, edi
add ecx, edx
mov edx, dword [ebp - 0x14]
lea eax, [edx + eax*2]
mov edx, dword [ebx + 4]
mov dword [ebp - 0x8c], edx
mov edx, dword [ebp + 0x30]
cmp dword [ebp + 0xc], edx
mov dword [ebp - 0x1c], esi
mov dword [ebp - 4], ecx
mov dword [ebp - 0x20], eax
jg 0x4590d8
sub edx, dword [ebp + 0xc]
inc edx
mov dword [ebp - 0x10], edx
mov ax, word [eax]
mov edx, ecx
sar edx, 0x10
imul edx, dword [ebp - 0x8c]
mov word [ebp - 0x74], ax
mov eax, esi
sar eax, 0x10
add edx, eax
mov eax, dword [ebp - 0x24]
lea eax, [eax + edx*4]
mov edx, esi
mov esi, dword [eax]
mov dword [ebp + 0xc], esi
mov esi, dword [eax + 4]
mov dword [ebp + 0x30], esi
mov esi, dword [ebx + 4]
mov ebx, dword [ebp + 0xc]
lea esi, [eax + esi*4]
mov eax, dword [esi]
mov esi, dword [esi + 4]
and edx, 0xfffe
inc edx
and ecx, 0xfffe
inc ecx
mov dword [ebp + 0x1c], esi
mov dword [ebp + 0x18], edx
mov edi, 0x10000
sub edi, edx
mov edx, edi
imul edi, ecx
shr ebx, 0x18
mov esi, 0x10000
sub esi, ecx
imul ecx, dword [ebp + 0x18]
imul edx, esi
imul esi, dword [ebp + 0x18]
shr edx, 0x10
imul edx, ebx
mov ebx, dword [ebp + 0x30]
shr ebx, 0x18
shr edi, 0x10
shr esi, 0x10
imul esi, ebx
mov ebx, eax
shr ebx, 0x18
imul edi, ebx
mov ebx, dword [ebp + 0x1c]
shr ebx, 0x18
shr ecx, 0x10
imul ecx, ebx
movzx ebx, word [ebp - 0x74]
shr edi, 0x10
mov dword [ebp + 0x18], ebx
mov dword [ebp - 0xc], edi
mov ebx, eax
and ebx, 0xff0000
imul ebx, edi
mov edi, dword [ebp + 0x30]
and edi, 0xff0000
shr esi, 0x10
imul edi, esi
add ebx, edi
mov edi, dword [ebp + 0xc]
and edi, 0xff0000
shr edx, 0x10
imul edi, edx
add ebx, edi
mov edi, dword [ebp + 0x1c]
shr ecx, 0x10
and edi, 0xff0000
imul edi, ecx
add ebx, edi
mov edi, dword [ebp - 0x5c]
mov dword [ebp - 0x18], ecx
mov ecx, dword [ebp - 0x54]
shr ebx, cl
mov ecx, dword [ebp + 0x18]
mov dword [ebp - 0x48], esi
imul ebx, dword [ebp - 0x4c]
shr ebx, 8
and edi, ecx
mov ecx, dword [ebp - 0x2c]
shr edi, cl
mov ecx, dword [ebp - 0x58]
add ebx, edi
xor edi, edi
mov di, word [ecx + ebx*4]
mov ecx, dword [ebp - 0x2c]
shl di, cl
mov ecx, dword [ebp + 0x30]
and ecx, 0xff
imul ecx, esi
mov ebx, eax
and ebx, 0xff
imul ebx, dword [ebp - 0xc]
add ebx, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff
imul ecx, edx
add ebx, ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xff
imul ecx, dword [ebp - 0x18]
add ebx, ecx
imul ebx, dword [ebp - 0x40]
mov ecx, dword [ebp - 0x64]
mov esi, dword [ebp - 0x68]
add ecx, 8
shr ebx, cl
and esi, dword [ebp + 0x18]
mov ecx, dword [ebp - 0x28]
shr esi, cl
mov ecx, dword [ebp - 0x60]
and eax, 0xff00
imul eax, dword [ebp - 0xc]
add ebx, esi
xor esi, esi
mov si, word [ecx + ebx*4]
mov ecx, dword [ebp - 0x28]
shl si, cl
mov ecx, dword [ebp + 0x30]
and ecx, 0xff00
imul ecx, dword [ebp - 0x48]
add eax, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff00
imul ecx, edx
add eax, ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xff00
imul ecx, dword [ebp - 0x18]
mov edx, dword [ebp - 0x44]
add eax, ecx
imul eax, dword [ebp - 0x94]
mov ecx, dword [ebp - 0x50]
add ecx, 8
shr eax, cl
and edx, dword [ebp + 0x18]
mov ecx, dword [ebp - 0x38]
shr edx, cl
or edi, esi
mov esi, dword [ebp - 0x1c]
add eax, edx
mov edx, dword [ebp - 0x3c]
movzx eax, word [edx + eax*4]
mov edx, dword [ebp - 0x10]
shl ax, cl
add esi, dword [ebp + 0x20]
mov ecx, dword [ebp - 4]
mov dword [ebp - 0x1c], esi
or edi, eax
mov eax, dword [ebp - 0x20]
mov word [eax], di
mov edi, dword [ebp - 0x34]
add eax, 2
add ecx, edi
mov dword [ebp - 0x20], eax
mov dword [ebp - 4], ecx
dec edx
mov ebx, dword [ebp + 8]
mov dword [ebp - 0x10], edx
jne 0x458ed6
mov ecx, dword [ebp - 0x30]
mov eax, dword [ecx + 0x6c]
mov ecx, dword [ebp - 8]
cdq
sub eax, edx
mov edx, dword [ebp - 0x14]
sar eax, 1
inc ecx
lea eax, [edx + eax*2]
mov dword [ebp - 8], ecx
mov dword [ebp - 0x14], eax
fild dword [ebp - 8]
mov eax, dword [ebp + 0x28]
inc eax
mov dword [ebp + 0x28], eax
fcomp qword [ebp - 0xa4]
fnstsw ax
test ah, 5
jnp 0x458d50
jmp 0x45a0ab
cmp eax, 0x20
jne 0x45a0af
fld qword [ebp - 0xb4]
call fcn.004c331c
fld qword [ebp - 0xbc]
mov esi, eax
mov dword [ebp + 0x28], esi
call fcn.004c331c
fld qword [0x4e3730]
mov ecx, dword [ebp - 0x30]
fcomp qword [ebp - 0xa4]
mov dword [ebp + 0x18], eax
mov eax, dword [ecx + 0x6c]
mov ecx, dword [ecx + 0x80]
imul eax, esi
mov esi, dword [ebp + 0x1c]
cdq
and edx, 3
add eax, edx
mov edx, dword [ebp + 0x18]
sar eax, 2
add eax, edx
lea edx, [ecx + eax*4]
mov eax, dword [esi + 0xc]
mov ecx, dword [esi]
imul ecx, eax
mov dword [ebp + 0x1c], eax
mov dword [ebp - 0x14], edx
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [esi + 4]
imul ecx, dword [ebp + 0x1c]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov dword [ebp - 0x74], edx
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov ecx, dword [esi + 8]
imul ecx, dword [ebp + 0x1c]
mov dword [ebp - 0x48], edx
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov dword [ebp - 0x4c], edx
fnstsw ax
test ah, 5
mov dword [ebp - 8], 0
jp 0x45a0af
mov edx, dword [ebp + 0x2c]
mov eax, dword [ebp + 0x18]
sub eax, edx
mov dword [ebp + 0x1c], eax
fild dword [ebp + 0x1c]
fsub dword [ebp + 0xc]
fld qword [ebp - 0x70]
fmul st(1)
fstp qword [ebp - 0x7c]
fild dword [ebp + 0x2c]
fstp qword [ebp - 0x88]
fmul qword [ebp - 0x9c]
fild dword [ebp + 0x30]
fld qword [ebp - 0xac]
fsub qword [0x4e36c0]
call fcn.004c331c
mov ecx, dword [ebp + 0x30]
mov dword [ebp + 0x2c], eax
mov eax, dword [ebp + 0x28]
sub eax, ecx
mov dword [ebp + 0x28], eax
fild dword [ebp + 0x28]
fsub dword [ebp + 0x10]
fld qword [ebp - 0x9c]
fmul st(1)
fsubr qword [ebp - 0x7c]
fadd qword [ebp - 0x88]
fmul qword [0x4e8d90]
call fcn.004c331c
fmul qword [ebp - 0x70]
mov esi, eax
fadd st(1)
fadd st(2)
fmul qword [0x4e8d90]
call fcn.004c331c
mov edx, dword [ebp + 0x2c]
mov ecx, eax
cmp dword [ebp + 0x20], 0xffffffff
mov dword [ebp + 0xc], 0
mov dword [ebp + 0x30], edx
jge 0x459294
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 8]
mov edi, dword [ebp + 0x20]
shl eax, 0x10
sub eax, esi
sub eax, 0x27fff
cdq
idiv edi
test eax, eax
jl 0x45928b
mov dword [ebp + 0xc], eax
mov eax, 0x7fff
sub eax, esi
jmp 0x4592be
cmp dword [ebp + 0x20], 1
jl 0x4592fc
mov edi, dword [ebp + 0x20]
mov eax, 0x10000
sub eax, esi
cdq
idiv edi
test eax, eax
jle 0x4592ae
mov dword [ebp + 0xc], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, esi
sub eax, 0x17fff
cdq
idiv edi
cmp eax, dword [ebp + 0x30]
jge 0x4592c9
mov dword [ebp + 0x30], eax
mov edi, dword [ebp - 0x34]
cmp edi, 0xffffffff
jg 0x45931c
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x27fff
cdq
idiv edi
cmp eax, dword [ebp + 0xc]
jle 0x4592ec
mov dword [ebp + 0xc], eax
mov eax, ecx
cdq
idiv edi
mov edx, dword [ebp + 0x30]
neg eax
cmp eax, edx
jge 0x45936b
jmp 0x459368
test esi, esi
jl 0x459313
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 8]
shl edx, 0x10
sub edx, 0x10000
cmp esi, edx
jl 0x4592cc
mov dword [ebp + 0x30], 0xffffffff
jmp 0x4592cc
cmp edi, 1
jl 0x45934d
mov eax, 0x10000
sub eax, ecx
cdq
idiv edi
cmp eax, dword [ebp + 0xc]
jle 0x459333
mov dword [ebp + 0xc], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
shl eax, 0x10
sub eax, ecx
sub eax, 0x17fff
cdq
idiv edi
cmp eax, dword [ebp + 0x30]
jge 0x45936b
jmp 0x459368
test ecx, ecx
jl 0x459364
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 0xc]
shl edx, 0x10
sub edx, 0x10000
cmp ecx, edx
jl 0x45936b
mov eax, dword [ebp + 0xc]
dec eax
mov dword [ebp + 0x30], eax
mov edx, dword [ebp + 0xc]
imul edx, dword [ebp + 0x20]
mov eax, dword [ebp + 0xc]
add esi, edx
mov edx, eax
imul edx, edi
add ecx, edx
mov edx, dword [ebp - 0x14]
lea eax, [edx + eax*4]
mov edx, dword [ebx + 4]
mov dword [ebp - 0x8c], edx
mov edx, dword [ebp + 0x30]
cmp dword [ebp + 0xc], edx
mov dword [ebp - 0x1c], esi
mov dword [ebp - 4], ecx
mov dword [ebp - 0x20], eax
jg 0x45959b
sub edx, dword [ebp + 0xc]
inc edx
mov dword [ebp - 0x10], edx
lea esp, [esp]
mov eax, dword [eax]
mov edx, ecx
sar edx, 0x10
imul edx, dword [ebp - 0x8c]
mov dword [ebp + 0x18], eax
mov eax, esi
sar eax, 0x10
add edx, eax
mov eax, dword [ebp - 0x24]
mov edi, dword [eax + edx*4]
lea eax, [eax + edx*4]
mov edx, esi
mov esi, dword [eax + 4]
mov dword [ebp + 0xc], esi
mov esi, dword [ebx + 4]
and ecx, 0xffff
lea eax, [eax + esi*4]
mov esi, dword [eax]
mov dword [ebp + 0x30], esi
and edx, 0xffff
mov dword [ebp - 0xc], edx
mov ebx, 0x10000
sub ebx, edx
mov edx, ebx
mov esi, 0x10000
sub esi, ecx
imul edx, esi
mov dword [ebp + 0x1c], edi
shr edi, 0x18
shr edx, 0x10
imul edx, edi
mov edi, dword [ebp - 0xc]
imul edi, esi
mov esi, dword [ebp + 0xc]
mov eax, dword [eax + 4]
shr esi, 0x18
shr edi, 0x10
imul edi, esi
mov esi, ecx
imul ecx, dword [ebp - 0xc]
imul esi, ebx
mov ebx, dword [ebp + 0x30]
shr ebx, 0x18
shr ecx, 0x10
shr esi, 0x10
imul esi, ebx
mov ebx, eax
shr ebx, 0x18
imul ecx, ebx
shr ecx, 0x10
mov dword [ebp - 0xc], ecx
mov ebx, eax
and ebx, 0xff0000
imul ebx, ecx
mov ecx, dword [ebp + 0x30]
and ecx, 0xff0000
shr esi, 0x10
imul ecx, esi
add ebx, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff0000
shr edi, 0x10
imul ecx, edi
add ebx, ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xff0000
shr edx, 0x10
imul ecx, edx
add ebx, ecx
mov ecx, dword [ebp - 0x54]
shr ebx, cl
mov ecx, dword [ebp - 0x5c]
mov dword [ebp - 0x18], edi
mov edi, dword [ebp + 0x18]
imul ebx, dword [ebp - 0x74]
and edi, ecx
mov ecx, dword [ebp - 0x2c]
shr edi, cl
shr ebx, 8
mov dword [ebp - 0x40], esi
add ebx, edi
mov ecx, dword [ebp - 0x58]
mov edi, dword [ecx + ebx*4]
mov ecx, dword [ebp - 0x2c]
shl edi, cl
mov ecx, dword [ebp + 0x30]
and ecx, 0xff
imul ecx, esi
mov ebx, eax
and ebx, 0xff
imul ebx, dword [ebp - 0xc]
add ebx, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff
imul ecx, dword [ebp - 0x18]
add ebx, ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xff
imul ecx, edx
add ebx, ecx
imul ebx, dword [ebp - 0x4c]
mov ecx, dword [ebp - 0x64]
mov esi, dword [ebp + 0x18]
add ecx, 8
shr ebx, cl
and esi, dword [ebp - 0x68]
mov ecx, dword [ebp - 0x28]
shr esi, cl
mov ecx, dword [ebp - 0x60]
and eax, 0xff00
imul eax, dword [ebp - 0xc]
add ebx, esi
mov esi, dword [ecx + ebx*4]
mov ecx, dword [ebp - 0x28]
shl esi, cl
mov ecx, dword [ebp + 0x30]
and ecx, 0xff00
imul ecx, dword [ebp - 0x40]
add eax, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff00
imul ecx, dword [ebp - 0x18]
add eax, ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xff00
imul ecx, edx
mov edx, dword [ebp + 0x18]
add eax, ecx
imul eax, dword [ebp - 0x48]
mov ecx, dword [ebp - 0x50]
add ecx, 8
shr eax, cl
and edx, dword [ebp - 0x44]
mov ecx, dword [ebp - 0x38]
mov ebx, dword [ebp + 8]
shr edx, cl
or edi, esi
mov esi, dword [ebp - 0x1c]
add eax, edx
mov edx, dword [ebp - 0x3c]
mov eax, dword [edx + eax*4]
mov edx, dword [ebp - 0x10]
shl eax, cl
add esi, dword [ebp + 0x20]
mov ecx, dword [ebp - 4]
or edi, eax
mov eax, dword [ebp - 0x20]
mov dword [eax], edi
mov edi, dword [ebp - 0x34]
add eax, 4
add ecx, edi
dec edx
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], esi
mov dword [ebp - 4], ecx
mov dword [ebp - 0x10], edx
jne 0x4593b0
mov ecx, dword [ebp - 0x30]
mov eax, dword [ecx + 0x6c]
mov ecx, dword [ebp - 8]
cdq
and edx, 3
add eax, edx
mov edx, dword [ebp - 0x14]
sar eax, 2
inc ecx
lea eax, [edx + eax*4]
mov dword [ebp - 8], ecx
mov dword [ebp - 0x14], eax
fild dword [ebp - 8]
mov eax, dword [ebp + 0x28]
inc eax
mov dword [ebp + 0x28], eax
fcomp qword [ebp - 0xa4]
fnstsw ax
test ah, 5
jnp 0x459223
jmp 0x45a0ab
fld qword [ebp + 0x24]
mov ecx, dword [ebp + 0x14]
fcos
imul eax, dword [ecx + 4]
add eax, dword [edi + 0x2c]
add eax, dword [ecx]
mov dword [ebp - 0x54], eax
fstp qword [ebp - 0x7c]
fld qword [ebp + 0x24]
fsin
fstp qword [ebp - 0x9c]
fld qword [ebp - 0x7c]
fmul qword [0x4e8d90]
call fcn.004c331c
fld qword [ebp - 0x9c]
fmul qword [0x4e8d90]
mov dword [ebp + 0x20], eax
call fcn.004c331c
mov edi, dword [ebp - 0x30]
mov dword [ebp - 0x24], eax
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x9c]
test al, al
je 0x45a0fe
mov eax, dword [edi + 0x48]
mov ecx, dword [eax + 0x7c]
mov edx, dword [eax + 0x80]
mov dword [ebp - 0x64], ecx
mov ecx, dword [eax + 0x84]
mov dword [ebp - 0x80], edx
mov edx, dword [eax + 0x20]
mov dword [ebp - 0x50], ecx
mov ecx, dword [eax + 0x24]
mov dword [ebp - 0x2c], edx
mov edx, dword [eax + 0x28]
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x28], edx
mov edx, dword [eax + 0x14]
mov ecx, 0x20
sub ecx, edx
mov edx, dword [eax + 0x18]
mov dword [ebp - 0x5c], ecx
mov ecx, 0x18
sub ecx, edx
mov edx, dword [eax + 0x1c]
mov eax, dword [edi + 0xb4]
mov dword [ebp - 0x44], ecx
mov ecx, 0x10
sub ecx, edx
mov edx, dword [edi + 0xbc]
mov dword [ebp - 0x58], eax
mov eax, dword [edi + 0xb0]
cmp eax, 0x10
mov dword [ebp - 0x68], ecx
mov ecx, dword [edi + 0xb8]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x60], edx
jne 0x459bb7
fld qword [ebp - 0xb4]
call fcn.004c331c
fld qword [ebp - 0xbc]
mov dword [ebp + 0x28], eax
call fcn.004c331c
fld qword [0x4e3730]
mov ecx, eax
fcomp qword [ebp - 0xa4]
mov eax, dword [edi + 0x6c]
imul eax, dword [ebp + 0x28]
cdq
sub eax, edx
sar eax, 1
add eax, ecx
mov dword [ebp + 0x18], ecx
mov ecx, dword [edi + 0x80]
mov edi, dword [ebp + 0x1c]
lea edx, [ecx + eax*2]
mov eax, dword [edi + 0xc]
mov ecx, dword [edi]
imul ecx, eax
mov dword [ebp + 0x1c], eax
mov dword [ebp - 0x14], edx
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [edi + 4]
imul ecx, dword [ebp + 0x1c]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov dword [ebp - 0x40], edx
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov ecx, dword [edi + 8]
imul ecx, dword [ebp + 0x1c]
mov dword [ebp - 0x6c], edx
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov dword [ebp - 0x48], edx
fnstsw ax
test ah, 5
mov dword [ebp - 0x1c], 0
jp 0x45a0af
mov edx, dword [ebp + 0x2c]
mov eax, dword [ebp + 0x18]
sub eax, edx
mov dword [ebp + 0x1c], eax
fild dword [ebp + 0x1c]
fsub dword [ebp + 0xc]
fld qword [ebp - 0x7c]
fmul st(1)
fstp qword [ebp - 0xc4]
fild dword [ebp + 0x2c]
fstp qword [ebp - 0x88]
fmul qword [ebp - 0x9c]
fild dword [ebp + 0x30]
fld qword [ebp - 0xac]
fsub qword [0x4e36c0]
call fcn.004c331c
mov ecx, dword [ebp + 0x30]
mov dword [ebp + 0x2c], eax
mov eax, dword [ebp + 0x28]
sub eax, ecx
mov dword [ebp - 8], eax
jmp 0x4597c0
fild dword [ebp - 8]
fsub dword [ebp + 0x10]
fld qword [ebp - 0x9c]
fmul st(1)
fsubr qword [ebp - 0xc4]
fadd qword [ebp - 0x88]
fmul qword [0x4e8d90]
call fcn.004c331c
fmul qword [ebp - 0x7c]
mov edi, eax
fadd st(1)
fadd st(2)
fmul qword [0x4e8d90]
call fcn.004c331c
mov edx, dword [ebp + 0x2c]
mov dword [ebp + 0x30], eax
cmp dword [ebp + 0x20], 0xffffffff
mov dword [ebp + 0xc], 0
mov dword [ebp + 0x1c], edx
jge 0x459835
mov ecx, dword [ebp + 0x14]
mov eax, dword [ecx + 8]
mov ecx, dword [ebp + 0x20]
shl eax, 0x10
sub eax, edi
sub eax, 0x27fff
cdq
idiv ecx
test eax, eax
jl 0x45982c
mov dword [ebp + 0xc], eax
mov eax, 0x7fff
sub eax, edi
jmp 0x45985e
mov ecx, dword [ebp + 0x20]
cmp ecx, 1
jl 0x45986c
mov eax, 0x10000
sub eax, edi
cdq
idiv ecx
test eax, eax
jle 0x45984e
mov dword [ebp + 0xc], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, edi
sub eax, 0x17fff
cdq
idiv ecx
mov edx, dword [ebp + 0x1c]
cmp eax, edx
jge 0x459889
mov edx, eax
jmp 0x459886
test edi, edi
jl 0x459883
mov eax, dword [ebp + 0x14]
mov ecx, dword [eax + 8]
shl ecx, 0x10
sub ecx, 0x10000
cmp edi, ecx
jl 0x459889
or edx, 0xffffffff
mov dword [ebp + 0x1c], edx
mov ecx, dword [ebp - 0x24]
cmp ecx, 0xffffffff
jg 0x4598c2
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
mov edx, dword [ebp + 0x30]
shl eax, 0x10
sub eax, edx
sub eax, 0x27fff
cdq
idiv ecx
cmp eax, dword [ebp + 0xc]
jle 0x4598af
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0x30]
cdq
idiv ecx
mov edx, dword [ebp + 0x1c]
neg eax
cmp eax, edx
jge 0x45991b
mov edx, eax
jmp 0x45991b
cmp ecx, 1
jl 0x4598fd
mov edx, dword [ebp + 0x30]
mov eax, 0x10000
sub eax, edx
cdq
idiv ecx
cmp eax, dword [ebp + 0xc]
jle 0x4598dc
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
mov edx, dword [ebp + 0x30]
shl eax, 0x10
sub eax, edx
sub eax, 0x17fff
cdq
idiv ecx
mov edx, dword [ebp + 0x1c]
cmp eax, edx
jge 0x45991b
mov edx, eax
jmp 0x45991b
mov eax, dword [ebp + 0x30]
test eax, eax
jl 0x459917
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp dword [ebp + 0x30], eax
jl 0x45991b
mov edx, dword [ebp + 0xc]
dec edx
mov eax, dword [ebp + 0xc]
imul eax, dword [ebp + 0x20]
add edi, eax
mov eax, dword [ebp + 0xc]
imul eax, ecx
mov ecx, dword [ebp + 0x30]
add ecx, eax
mov eax, dword [ebp + 0xc]
mov dword [ebp + 0x30], ecx
mov ecx, dword [ebp - 0x14]
lea eax, [ecx + eax*2]
mov ecx, dword [ebx + 4]
mov dword [ebp - 0x8c], ecx
mov ecx, dword [ebp + 0xc]
cmp ecx, edx
mov dword [ebp - 4], edi
mov dword [ebp - 0x20], eax
jg 0x459b7c
sub edx, ecx
mov ecx, dword [ebp + 0x30]
inc edx
mov dword [ebp - 0x10], edx
mov edi, edi
mov dx, word [eax]
sar ecx, 0x10
imul ecx, dword [ebp - 0x8c]
mov word [ebp - 0x4c], dx
mov edx, dword [ebp - 0x54]
add edx, ecx
mov eax, edi
mov ecx, dword [ebp + 0x30]
sar eax, 0x10
add eax, edx
movzx edx, byte [eax]
mov edx, dword [esi + edx*4]
mov dword [ebp + 0x18], edx
movzx edx, byte [eax + 1]
mov edx, dword [esi + edx*4]
mov dword [ebp + 0x1c], edx
mov edx, dword [ebx + 4]
add eax, edx
movzx edx, byte [eax]
mov edx, dword [esi + edx*4]
movzx eax, byte [eax + 1]
mov eax, dword [esi + eax*4]
and ecx, 0xfffe
and edi, 0xfffe
inc edi
inc ecx
mov ebx, dword [ebp + 0x18]
mov dword [ebp + 0xc], edx
mov dword [ebp - 0x74], edi
mov esi, 0x10000
sub esi, ecx
mov edx, 0x10000
sub edx, edi
imul edi, esi
mov dword [ebp + 0x28], edx
imul edx, esi
mov esi, dword [ebp + 0x1c]
shr esi, 0x18
shr ebx, 0x18
shr edi, 0x10
imul edi, esi
mov esi, ecx
imul ecx, dword [ebp - 0x74]
imul esi, dword [ebp + 0x28]
shr edx, 0x10
imul edx, ebx
mov ebx, dword [ebp + 0xc]
shr ebx, 0x18
shr ecx, 0x10
shr esi, 0x10
imul esi, ebx
mov ebx, eax
shr ebx, 0x18
imul ecx, ebx
movzx ebx, word [ebp - 0x4c]
shr ecx, 0x10
mov dword [ebp + 0x28], ebx
mov dword [ebp - 0xc], ecx
mov ebx, eax
and ebx, 0xff0000
imul ebx, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff0000
shr esi, 0x10
imul ecx, esi
add ebx, ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xff0000
shr edi, 0x10
imul ecx, edi
add ebx, ecx
mov ecx, dword [ebp + 0x18]
and ecx, 0xff0000
shr edx, 0x10
imul ecx, edx
add ebx, ecx
mov ecx, dword [ebp - 0x5c]
shr ebx, cl
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x94], esi
imul ebx, dword [ebp - 0x40]
mov ecx, dword [ebp + 0x28]
mov edi, dword [ebp - 0x58]
and edi, ecx
mov ecx, dword [ebp - 0x2c]
shr edi, cl
mov ecx, dword [ebp - 0x64]
shr ebx, 8
add ebx, edi
xor edi, edi
mov di, word [ecx + ebx*4]
mov ecx, dword [ebp - 0x2c]
shl di, cl
mov ecx, dword [ebp + 0xc]
and ecx, 0xff
imul ecx, esi
mov ebx, eax
and ebx, 0xff
imul ebx, dword [ebp - 0xc]
add ebx, ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xff
imul ecx, dword [ebp - 0x18]
add ebx, ecx
mov ecx, dword [ebp + 0x18]
and ecx, 0xff
imul ecx, edx
add ebx, ecx
imul ebx, dword [ebp - 0x48]
mov ecx, dword [ebp - 0x68]
mov esi, dword [ebp - 0x60]
add ecx, 8
shr ebx, cl
and esi, dword [ebp + 0x28]
mov ecx, dword [ebp - 0x28]
shr esi, cl
mov ecx, dword [ebp - 0x50]
and eax, 0xff00
imul eax, dword [ebp - 0xc]
add ebx, esi
xor esi, esi
mov si, word [ecx + ebx*4]
mov ecx, dword [ebp - 0x28]
shl si, cl
mov ecx, dword [ebp + 0xc]
and ecx, 0xff00
imul ecx, dword [ebp - 0x94]
add eax, ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xff00
imul ecx, dword [ebp - 0x18]
add eax, ecx
mov ecx, dword [ebp + 0x18]
mov ebx, dword [ebp + 0x28]
and ecx, 0xff00
imul ecx, edx
mov edx, dword [ebp - 0x38]
add eax, ecx
imul eax, dword [ebp - 0x6c]
mov ecx, dword [ebp - 0x44]
add ecx, 8
shr eax, cl
mov ecx, dword [ebp - 0x34]
and edx, ebx
mov ebx, dword [ebp + 0x20]
shr edx, cl
or edi, esi
mov esi, dword [ebp - 0x24]
add eax, edx
mov edx, dword [ebp - 0x80]
movzx eax, word [edx + eax*4]
shl ax, cl
mov ecx, dword [ebp + 0x30]
or edi, eax
mov eax, dword [ebp - 0x20]
mov word [eax], di
mov edi, dword [ebp - 4]
add eax, 2
add edi, ebx
mov dword [ebp - 0x20], eax
mov dword [ebp - 4], edi
mov edx, dword [ebp - 0x10]
mov ebx, dword [ebp + 8]
add ecx, esi
mov esi, dword [ebp - 0x3c]
dec edx
mov dword [ebp + 0x30], ecx
mov dword [ebp - 0x10], edx
jne 0x459960
mov ecx, dword [ebp - 0x30]
mov eax, dword [ecx + 0x6c]
mov ecx, dword [ebp - 0x1c]
cdq
sub eax, edx
mov edx, dword [ebp - 0x14]
sar eax, 1
inc ecx
lea eax, [edx + eax*2]
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x14], eax
fild dword [ebp - 0x1c]
mov eax, dword [ebp - 8]
inc eax
mov dword [ebp - 8], eax
fcomp qword [ebp - 0xa4]
fnstsw ax
test ah, 5
jnp 0x4597c0
jmp 0x45a0ab
cmp eax, 0x20
jne 0x45a0af
fld qword [ebp - 0xb4]
call fcn.004c331c
fld qword [ebp - 0xbc]
mov edi, eax
mov dword [ebp + 0x28], edi
call fcn.004c331c
fld qword [0x4e3730]
mov ecx, dword [ebp - 0x30]
fcomp qword [ebp - 0xa4]
mov dword [ebp + 0x18], eax
mov eax, dword [ecx + 0x6c]
mov ecx, dword [ecx + 0x80]
imul eax, edi
mov edi, dword [ebp + 0x1c]
cdq
and edx, 3
add eax, edx
mov edx, dword [ebp + 0x18]
sar eax, 2
add eax, edx
lea edx, [ecx + eax*4]
mov eax, dword [edi + 0xc]
mov ecx, dword [edi]
imul ecx, eax
mov dword [ebp + 0x1c], eax
mov dword [ebp - 0x14], edx
mov eax, 0x80808081
imul ecx
add edx, ecx
mov ecx, dword [edi + 4]
imul ecx, dword [ebp + 0x1c]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov dword [ebp - 0x8c], edx
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov ecx, dword [edi + 8]
imul ecx, dword [ebp + 0x1c]
mov dword [ebp - 0x40], edx
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov dword [ebp - 0x74], edx
fnstsw ax
test ah, 5
mov dword [ebp - 0x1c], 0
jp 0x45a0af
mov edx, dword [ebp + 0x2c]
mov eax, dword [ebp + 0x18]
sub eax, edx
mov dword [ebp + 0x1c], eax
fild dword [ebp + 0x1c]
fsub dword [ebp + 0xc]
fld qword [ebp - 0x7c]
fmul st(1)
fstp qword [ebp - 0xc4]
fild dword [ebp + 0x2c]
fstp qword [ebp - 0x88]
fmul qword [ebp - 0x9c]
fild dword [ebp + 0x30]
fld qword [ebp - 0xac]
fsub qword [0x4e36c0]
call fcn.004c331c
mov ecx, dword [ebp + 0x30]
mov dword [ebp + 0x2c], eax
mov eax, dword [ebp + 0x28]
sub eax, ecx
mov dword [ebp - 8], eax
lea ecx, [ecx]
fild dword [ebp - 8]
fsub dword [ebp + 0x10]
fld qword [ebp - 0x9c]
fmul st(1)
fsubr qword [ebp - 0xc4]
fadd qword [ebp - 0x88]
fmul qword [0x4e8d90]
call fcn.004c331c
fmul qword [ebp - 0x7c]
mov edi, eax
fadd st(2)
fadd st(1)
fmul qword [0x4e8d90]
call fcn.004c331c
mov edx, dword [ebp + 0x2c]
mov dword [ebp + 0x30], eax
cmp dword [ebp + 0x20], 0xffffffff
mov dword [ebp + 0xc], 0
mov dword [ebp + 0x1c], edx
jge 0x459d45
mov ecx, dword [ebp + 0x14]
mov eax, dword [ecx + 8]
mov ecx, dword [ebp + 0x20]
shl eax, 0x10
sub eax, edi
sub eax, 0x27fff
cdq
idiv ecx
test eax, eax
jl 0x459d3c
mov dword [ebp + 0xc], eax
mov eax, 0x7fff
sub eax, edi
jmp 0x459d6e
mov ecx, dword [ebp + 0x20]
cmp ecx, 1
jl 0x459d7c
mov eax, 0x10000
sub eax, edi
cdq
idiv ecx
test eax, eax
jle 0x459d5e
mov dword [ebp + 0xc], eax
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 8]
shl eax, 0x10
sub eax, edi
sub eax, 0x17fff
cdq
idiv ecx
mov edx, dword [ebp + 0x1c]
cmp eax, edx
jge 0x459d99
mov edx, eax
jmp 0x459d96
test edi, edi
jl 0x459d93
mov eax, dword [ebp + 0x14]
mov ecx, dword [eax + 8]
shl ecx, 0x10
sub ecx, 0x10000
cmp edi, ecx
jl 0x459d99
or edx, 0xffffffff
mov dword [ebp + 0x1c], edx
mov ecx, dword [ebp - 0x24]
cmp ecx, 0xffffffff
jg 0x459dd2
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + 0xc]
mov edx, dword [ebp + 0x30]
shl eax, 0x10
sub eax, edx
sub eax, 0x27fff
cdq
idiv ecx
cmp eax, dword [ebp + 0xc]
jle 0x459dbf
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0x30]
cdq
idiv ecx
mov edx, dword [ebp + 0x1c]
neg eax
cmp eax, edx
jge 0x459e2b
mov edx, eax
jmp 0x459e2b
cmp ecx, 1
jl 0x459e0d
mov edx, dword [ebp + 0x30]
mov eax, 0x10000
sub eax, edx
cdq
idiv ecx
cmp eax, dword [ebp + 0xc]
jle 0x459dec
mov dword [ebp + 0xc], eax
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
mov edx, dword [ebp + 0x30]
shl eax, 0x10
sub eax, edx
sub eax, 0x17fff
cdq
idiv ecx
mov edx, dword [ebp + 0x1c]
cmp eax, edx
jge 0x459e2b
mov edx, eax
jmp 0x459e2b
mov eax, dword [ebp + 0x30]
test eax, eax
jl 0x459e27
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0xc]
shl eax, 0x10
sub eax, 0x10000
cmp dword [ebp + 0x30], eax
jl 0x459e2b
mov edx, dword [ebp + 0xc]
dec edx
mov eax, dword [ebp + 0xc]
imul eax, dword [ebp + 0x20]
add edi, eax
mov eax, dword [ebp + 0xc]
imul eax, ecx
mov ecx, dword [ebp + 0x30]
add ecx, eax
mov eax, dword [ebp + 0xc]
mov dword [ebp + 0x30], ecx
mov ecx, dword [ebp - 0x14]
lea eax, [ecx + eax*4]
mov ecx, dword [ebx + 4]
mov dword [ebp - 0x6c], ecx
mov ecx, dword [ebp + 0xc]
cmp ecx, edx
mov dword [ebp - 4], edi
mov dword [ebp - 0x20], eax
jg 0x45a071
sub edx, ecx
mov ecx, dword [ebp + 0x30]
inc edx
mov dword [ebp - 0x10], edx
jmp 0x459e70
mov edx, dword [eax]
sar ecx, 0x10
imul ecx, dword [ebp - 0x6c]
mov eax, edi
mov dword [ebp + 0x28], edx
mov edx, dword [ebp - 0x54]
add edx, ecx
mov ecx, dword [ebp + 0x30]
sar eax, 0x10
add eax, edx
mov edx, edi
movzx edi, byte [eax]
mov edi, dword [esi + edi*4]
mov dword [ebp + 0x18], edi
movzx edi, byte [eax + 1]
mov edi, dword [esi + edi*4]
mov dword [ebp + 0x1c], edi
mov edi, dword [ebx + 4]
add eax, edi
movzx edi, byte [eax]
mov edi, dword [esi + edi*4]
movzx eax, byte [eax + 1]
mov eax, dword [esi + eax*4]
and ecx, 0xffff
and edx, 0xffff
mov dword [ebp - 0xc], edx
mov ebx, 0x10000
sub ebx, edx
mov edx, ebx
mov esi, 0x10000
sub esi, ecx
imul edx, esi
mov dword [ebp + 0xc], edi
mov edi, dword [ebp + 0x18]
shr edi, 0x18
shr edx, 0x10
imul edx, edi
mov edi, dword [ebp - 0xc]
imul edi, esi
mov esi, dword [ebp + 0x1c]
shr esi, 0x18
shr edi, 0x10
imul edi, esi
mov esi, ecx
imul ecx, dword [ebp - 0xc]
imul esi, ebx
mov ebx, dword [ebp + 0xc]
shr ebx, 0x18
shr ecx, 0x10
shr esi, 0x10
imul esi, ebx
mov ebx, eax
shr ebx, 0x18
imul ecx, ebx
shr ecx, 0x10
mov dword [ebp - 0xc], ecx
mov ebx, eax
and ebx, 0xff0000
imul ebx, ecx
mov ecx, dword [ebp + 0xc]
and ecx, 0xff0000
shr esi, 0x10
imul ecx, esi
add ebx, ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xff0000
shr edi, 0x10
imul ecx, edi
add ebx, ecx
mov ecx, dword [ebp + 0x18]
and ecx, 0xff0000
shr edx, 0x10
imul ecx, edx
add ebx, ecx
mov ecx, dword [ebp - 0x5c]
shr ebx, cl
mov dword [ebp - 0x18], edi
mov edi, dword [ebp + 0x28]
mov dword [ebp - 0x4c], esi
imul ebx, dword [ebp - 0x8c]
shr ebx, 8
and edi, dword [ebp - 0x58]
mov ecx, dword [ebp - 0x2c]
shr edi, cl
mov ecx, dword [ebp - 0x64]
add ebx, edi
mov edi, dword [ecx + ebx*4]
mov ecx, dword [ebp - 0x2c]
shl edi, cl
mov ecx, dword [ebp + 0xc]
and ecx, 0xff
imul ecx, esi
mov ebx, eax
and ebx, 0xff
imul ebx, dword [ebp - 0xc]
add ebx, ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xff
imul ecx, dword [ebp - 0x18]
add ebx, ecx
mov ecx, dword [ebp + 0x18]
and ecx, 0xff
imul ecx, edx
add ebx, ecx
imul ebx, dword [ebp - 0x74]
mov ecx, dword [ebp - 0x68]
mov esi, dword [ebp + 0x28]
add ecx, 8
shr ebx, cl
and esi, dword [ebp - 0x60]
mov ecx, dword [ebp - 0x28]
shr esi, cl
mov ecx, dword [ebp - 0x50]
and eax, 0xff00
imul eax, dword [ebp - 0xc]
add ebx, esi
mov esi, dword [ecx + ebx*4]
mov ecx, dword [ebp - 0x28]
shl esi, cl
mov ecx, dword [ebp + 0xc]
and ecx, 0xff00
imul ecx, dword [ebp - 0x4c]
add eax, ecx
mov ecx, dword [ebp + 0x1c]
and ecx, 0xff00
imul ecx, dword [ebp - 0x18]
add eax, ecx
mov ecx, dword [ebp + 0x18]
mov ebx, dword [ebp - 0x38]
and ecx, 0xff00
imul ecx, edx
mov edx, dword [ebp + 0x28]
add eax, ecx
imul eax, dword [ebp - 0x40]
mov ecx, dword [ebp - 0x44]
add ecx, 8
shr eax, cl
mov ecx, dword [ebp - 0x34]
and edx, ebx
mov ebx, dword [ebp + 0x20]
shr edx, cl
or edi, esi
mov esi, dword [ebp - 0x24]
add eax, edx
mov edx, dword [ebp - 0x80]
mov eax, dword [edx + eax*4]
mov edx, dword [ebp - 0x10]
shl eax, cl
mov ecx, dword [ebp + 0x30]
add ecx, esi
mov dword [ebp + 0x30], ecx
or edi, eax
mov eax, dword [ebp - 0x20]
mov dword [eax], edi
mov edi, dword [ebp - 4]
add eax, 4
add edi, ebx
mov dword [ebp - 0x20], eax
mov dword [ebp - 4], edi
dec edx
mov esi, dword [ebp - 0x3c]
mov ebx, dword [ebp + 8]
mov dword [ebp - 0x10], edx
jne 0x459e70
mov ecx, dword [ebp - 0x30]
mov eax, dword [ecx + 0x6c]
mov ecx, dword [ebp - 0x1c]
cdq
and edx, 3
add eax, edx
mov edx, dword [ebp - 0x14]
sar eax, 2
inc ecx
lea eax, [edx + eax*4]
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x14], eax
fild dword [ebp - 0x1c]
mov eax, dword [ebp - 8]
inc eax
mov dword [ebp - 8], eax
fcomp qword [ebp - 0xa4]
fnstsw ax
test ah, 5
jnp 0x459cd0
fstp st(0)
fstp st(0)
mov ecx, dword [ebp - 0x30]
mov edx, dword [ecx]
call dword [edx + 0xa0]
mov ecx, dword [ebp - 0x30]
call fcn.00438de0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x2c
mov eax, dword [ebp + 0x30]
mov ecx, dword [ebp + 0x2c]
mov edx, dword [ebp + 0x28]
push eax
mov eax, dword [ebp + 0x24]
push ecx
mov ecx, dword [ebp + 0x20]
push edx
mov edx, dword [ebp + 0x1c]
push eax
mov eax, dword [ebp + 0x18]
push ecx
mov ecx, dword [ebp + 0x14]
push edx
mov edx, dword [ebp + 0x10]
push eax
mov eax, dword [ebp + 0xc]
push ecx
mov ecx, dword [ebp + 8]
push edx
push eax
push ecx
mov ecx, esi
call fcn.004466c0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x2c