40e190:	55                   	push   %ebp
40e191:	8b ec                	mov    %esp,%ebp
40e193:	83 ec 0c             	sub    $0xc,%esp
40e196:	68 d6 11 40 00       	push   $0x4011d6
40e19b:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40e1a1:	50                   	push   %eax
40e1a2:	64 89 25 00 00 00 00 	mov    %esp,%fs:0x0
40e1a9:	81 ec 84 01 00 00    	sub    $0x184,%esp
40e1af:	53                   	push   %ebx
40e1b0:	56                   	push   %esi
40e1b1:	57                   	push   %edi
40e1b2:	89 65 f4             	mov    %esp,-0xc(%ebp)
40e1b5:	c7 45 f8 b0 11 40 00 	movl   $0x4011b0,-0x8(%ebp)
40e1bc:	8b 7d 08             	mov    0x8(%ebp),%edi
40e1bf:	8b c7                	mov    %edi,%eax
40e1c1:	83 e0 01             	and    $0x1,%eax
40e1c4:	89 45 fc             	mov    %eax,-0x4(%ebp)
40e1c7:	83 e7 fe             	and    $0xfffffffe,%edi
40e1ca:	8b 0f                	mov    (%edi),%ecx
40e1cc:	57                   	push   %edi
40e1cd:	89 7d 08             	mov    %edi,0x8(%ebp)
40e1d0:	ff 51 04             	call   *0x4(%ecx)
40e1d3:	33 db                	xor    %ebx,%ebx
40e1d5:	6a 05                	push   $0x5
40e1d7:	68 1c de 40 00       	push   $0x40de1c
40e1dc:	8d 95 68 ff ff ff    	lea    -0x98(%ebp),%edx
40e1e2:	52                   	push   %edx
40e1e3:	89 5d dc             	mov    %ebx,-0x24(%ebp)
40e1e6:	89 5d cc             	mov    %ebx,-0x34(%ebp)
40e1e9:	89 5d bc             	mov    %ebx,-0x44(%ebp)
40e1ec:	89 5d ac             	mov    %ebx,-0x54(%ebp)
40e1ef:	89 5d a8             	mov    %ebx,-0x58(%ebp)
40e1f2:	89 5d a4             	mov    %ebx,-0x5c(%ebp)
40e1f5:	89 5d 94             	mov    %ebx,-0x6c(%ebp)
40e1f8:	89 5d 84             	mov    %ebx,-0x7c(%ebp)
40e1fb:	89 9d 60 ff ff ff    	mov    %ebx,-0xa0(%ebp)
40e201:	89 9d 5c ff ff ff    	mov    %ebx,-0xa4(%ebp)
40e207:	89 9d 58 ff ff ff    	mov    %ebx,-0xa8(%ebp)
40e20d:	89 9d 54 ff ff ff    	mov    %ebx,-0xac(%ebp)
40e213:	89 9d 50 ff ff ff    	mov    %ebx,-0xb0(%ebp)
40e219:	89 9d 40 ff ff ff    	mov    %ebx,-0xc0(%ebp)
40e21f:	89 9d 30 ff ff ff    	mov    %ebx,-0xd0(%ebp)
40e225:	89 9d 20 ff ff ff    	mov    %ebx,-0xe0(%ebp)
40e22b:	89 9d 10 ff ff ff    	mov    %ebx,-0xf0(%ebp)
40e231:	89 9d 0c ff ff ff    	mov    %ebx,-0xf4(%ebp)
40e237:	89 9d fc fe ff ff    	mov    %ebx,-0x104(%ebp)
40e23d:	89 9d ec fe ff ff    	mov    %ebx,-0x114(%ebp)
40e243:	89 9d dc fe ff ff    	mov    %ebx,-0x124(%ebp)
40e249:	89 9d cc fe ff ff    	mov    %ebx,-0x134(%ebp)
40e24f:	89 9d bc fe ff ff    	mov    %ebx,-0x144(%ebp)
40e255:	89 9d a8 fe ff ff    	mov    %ebx,-0x158(%ebp)
40e25b:	ff 15 88 10 40 00    	call   *0x401088
40e261:	ff 15 50 10 40 00    	call   *0x401050
40e267:	8b d0                	mov    %eax,%edx
40e269:	8d 8d 5c ff ff ff    	lea    -0xa4(%ebp),%ecx
40e26f:	ff 15 48 11 40 00    	call   *0x401148
40e275:	50                   	push   %eax
40e276:	68 24 d9 40 00       	push   $0x40d924
40e27b:	ff 15 84 10 40 00    	call   *0x401084
40e281:	8b f0                	mov    %eax,%esi
40e283:	f7 de                	neg    %esi
40e285:	1b f6                	sbb    %esi,%esi
40e287:	46                   	inc    %esi
40e288:	8d 8d 5c ff ff ff    	lea    -0xa4(%ebp),%ecx
40e28e:	f7 de                	neg    %esi
40e290:	ff 15 58 11 40 00    	call   *0x401158
40e296:	66 3b f3             	cmp    %bx,%si
40e299:	0f 84 a6 00 00 00    	je     0x40e345
40e29f:	39 1d 20 07 41 00    	cmp    %ebx,0x410720
40e2a5:	75 10                	jne    0x40e2b7
40e2a7:	68 20 07 41 00       	push   $0x410720
40e2ac:	68 94 d9 40 00       	push   $0x40d994
40e2b1:	ff 15 e8 10 40 00    	call   *0x4010e8
40e2b7:	8b 35 20 07 41 00    	mov    0x410720,%esi
40e2bd:	8b 06                	mov    (%esi),%eax
40e2bf:	8d 8d 54 ff ff ff    	lea    -0xac(%ebp),%ecx
40e2c5:	51                   	push   %ecx
40e2c6:	56                   	push   %esi
40e2c7:	ff 50 4c             	call   *0x4c(%eax)
40e2ca:	db e2                	fnclex
40e2cc:	3b c3                	cmp    %ebx,%eax
40e2ce:	7d 0f                	jge    0x40e2df
40e2d0:	6a 4c                	push   $0x4c
40e2d2:	68 84 d9 40 00       	push   $0x40d984
40e2d7:	56                   	push   %esi
40e2d8:	50                   	push   %eax
40e2d9:	ff 15 38 10 40 00    	call   *0x401038
40e2df:	8b 85 54 ff ff ff    	mov    -0xac(%ebp),%eax
40e2e5:	83 ec 10             	sub    $0x10,%esp
40e2e8:	ba 02 00 00 00       	mov    $0x2,%edx
40e2ed:	8b dc                	mov    %esp,%ebx
40e2ef:	89 13                	mov    %edx,(%ebx)
40e2f1:	89 95 fc fe ff ff    	mov    %edx,-0x104(%ebp)
40e2f7:	8b 95 00 ff ff ff    	mov    -0x100(%ebp),%edx
40e2fd:	b9 01 00 00 00       	mov    $0x1,%ecx
40e302:	89 53 04             	mov    %edx,0x4(%ebx)
40e305:	89 8d 04 ff ff ff    	mov    %ecx,-0xfc(%ebp)
40e30b:	8b 38                	mov    (%eax),%edi
40e30d:	89 4b 08             	mov    %ecx,0x8(%ebx)
40e310:	8b 8d 08 ff ff ff    	mov    -0xf8(%ebp),%ecx
40e316:	50                   	push   %eax
40e317:	8b f0                	mov    %eax,%esi
40e319:	89 4b 0c             	mov    %ecx,0xc(%ebx)
40e31c:	ff 57 2c             	call   *0x2c(%edi)
40e31f:	db e2                	fnclex
40e321:	33 db                	xor    %ebx,%ebx
40e323:	3b c3                	cmp    %ebx,%eax
40e325:	7d 0f                	jge    0x40e336
40e327:	6a 2c                	push   $0x2c
40e329:	68 a4 d9 40 00       	push   $0x40d9a4
40e32e:	56                   	push   %esi
40e32f:	50                   	push   %eax
40e330:	ff 15 38 10 40 00    	call   *0x401038
40e336:	8d 8d 54 ff ff ff    	lea    -0xac(%ebp),%ecx
40e33c:	ff 15 5c 11 40 00    	call   *0x40115c
40e342:	8b 7d 08             	mov    0x8(%ebp),%edi
40e345:	39 1d 20 07 41 00    	cmp    %ebx,0x410720
40e34b:	75 10                	jne    0x40e35d
40e34d:	68 20 07 41 00       	push   $0x410720
40e352:	68 94 d9 40 00       	push   $0x40d994
40e357:	ff 15 e8 10 40 00    	call   *0x4010e8
40e35d:	8b 35 20 07 41 00    	mov    0x410720,%esi
40e363:	8b 16                	mov    (%esi),%edx
40e365:	8d 85 54 ff ff ff    	lea    -0xac(%ebp),%eax
40e36b:	50                   	push   %eax
40e36c:	56                   	push   %esi
40e36d:	ff 52 14             	call   *0x14(%edx)
40e370:	db e2                	fnclex
40e372:	3b c3                	cmp    %ebx,%eax
40e374:	7d 0f                	jge    0x40e385
40e376:	6a 14                	push   $0x14
40e378:	68 84 d9 40 00       	push   $0x40d984
40e37d:	56                   	push   %esi
40e37e:	50                   	push   %eax
40e37f:	ff 15 38 10 40 00    	call   *0x401038
40e385:	8b 85 54 ff ff ff    	mov    -0xac(%ebp),%eax
40e38b:	8b 08                	mov    (%eax),%ecx
40e38d:	8d 95 5c ff ff ff    	lea    -0xa4(%ebp),%edx
40e393:	52                   	push   %edx
40e394:	50                   	push   %eax
40e395:	8b f0                	mov    %eax,%esi
40e397:	ff 91 e8 00 00 00    	call   *0xe8(%ecx)
40e39d:	db e2                	fnclex
40e39f:	3b c3                	cmp    %ebx,%eax
40e3a1:	7d 12                	jge    0x40e3b5
40e3a3:	68 e8 00 00 00       	push   $0xe8
40e3a8:	68 b4 d9 40 00       	push   $0x40d9b4
40e3ad:	56                   	push   %esi
40e3ae:	50                   	push   %eax
40e3af:	ff 15 38 10 40 00    	call   *0x401038
40e3b5:	8b 95 5c ff ff ff    	mov    -0xa4(%ebp),%edx
40e3bb:	8d 4d a8             	lea    -0x58(%ebp),%ecx
40e3be:	89 9d 5c ff ff ff    	mov    %ebx,-0xa4(%ebp)
40e3c4:	ff 15 48 11 40 00    	call   *0x401148
40e3ca:	8d 8d 54 ff ff ff    	lea    -0xac(%ebp),%ecx
40e3d0:	ff 15 5c 11 40 00    	call   *0x40115c
40e3d6:	68 c8 d9 40 00       	push   $0x40d9c8
40e3db:	68 c8 d9 40 00       	push   $0x40d9c8
40e3e0:	ff 15 30 10 40 00    	call   *0x401030
40e3e6:	89 85 48 ff ff ff    	mov    %eax,-0xb8(%ebp)
40e3ec:	6a 01                	push   $0x1
40e3ee:	8d 85 40 ff ff ff    	lea    -0xc0(%ebp),%eax
40e3f4:	50                   	push   %eax
40e3f5:	8d 8d 30 ff ff ff    	lea    -0xd0(%ebp),%ecx
40e3fb:	51                   	push   %ecx
40e3fc:	c7 85 40 ff ff ff 08 	movl   $0x8,-0xc0(%ebp)
40e403:	00 00 00
40e406:	ff 15 40 11 40 00    	call   *0x401140
40e40c:	8d 95 30 ff ff ff    	lea    -0xd0(%ebp),%edx
40e412:	52                   	push   %edx
40e413:	8d 85 fc fe ff ff    	lea    -0x104(%ebp),%eax
40e419:	50                   	push   %eax
40e41a:	c7 85 04 ff ff ff c8 	movl   $0x40d9c8,-0xfc(%ebp)
40e421:	d9 40 00
40e424:	c7 85 fc fe ff ff 08 	movl   $0x8008,-0x104(%ebp)
40e42b:	80 00 00
40e42e:	ff 15 18 11 40 00    	call   *0x401118
40e434:	8d 8d 30 ff ff ff    	lea    -0xd0(%ebp),%ecx
40e43a:	51                   	push   %ecx
40e43b:	8d 95 40 ff ff ff    	lea    -0xc0(%ebp),%edx
40e441:	52                   	push   %edx
40e442:	6a 02                	push   $0x2
40e444:	8b f0                	mov    %eax,%esi
40e446:	ff 15 18 10 40 00    	call   *0x401018
40e44c:	83 c4 0c             	add    $0xc,%esp
40e44f:	66 3b f3             	cmp    %bx,%si
40e452:	74 41                	je     0x40e495
40e454:	dd 05 a8 11 40 00    	fldl   0x4011a8
40e45a:	8b 0f                	mov    (%edi),%ecx
40e45c:	df e0                	fnstsw %ax
40e45e:	a8 0d                	test   $0xd,%al
40e460:	0f 85 2d 11 00 00    	jne    0x40f593
40e466:	d9 9d 70 fe ff ff    	fstps  -0x190(%ebp)
40e46c:	d9 85 70 fe ff ff    	flds   -0x190(%ebp)
40e472:	51                   	push   %ecx
40e473:	d9 1c 24             	fstps  (%esp)
40e476:	57                   	push   %edi
40e477:	ff 91 84 00 00 00    	call   *0x84(%ecx)
40e47d:	db e2                	fnclex
40e47f:	3b c3                	cmp    %ebx,%eax
40e481:	7d 12                	jge    0x40e495
40e483:	68 84 00 00 00       	push   $0x84
40e488:	68 9c d7 40 00       	push   $0x40d79c
40e48d:	57                   	push   %edi
40e48e:	50                   	push   %eax
40e48f:	ff 15 38 10 40 00    	call   *0x401038
40e495:	8d 95 40 ff ff ff    	lea    -0xc0(%ebp),%edx
40e49b:	52                   	push   %edx
40e49c:	68 00 00 f0 3f       	push   $0x3ff00000
40e4a1:	53                   	push   %ebx
40e4a2:	68 00 00 f0 3f       	push   $0x3ff00000
40e4a7:	53                   	push   %ebx
40e4a8:	68 00 00 f0 3f       	push   $0x3ff00000
40e4ad:	53                   	push   %ebx
40e4ae:	68 00 00 28 40       	push   $0x40280000
40e4b3:	be 01 00 00 00       	mov    $0x1,%esi
40e4b8:	53                   	push   %ebx
40e4b9:	89 b5 48 ff ff ff    	mov    %esi,-0xb8(%ebp)
40e4bf:	c7 85 40 ff ff ff 02 	movl   $0x2,-0xc0(%ebp)
40e4c6:	00 00 00
40e4c9:	ff 15 9c 10 40 00    	call   *0x40109c
40e4cf:	ff 15 6c 10 40 00    	call   *0x40106c
40e4d5:	dc 1d a0 11 40 00    	fcompl 0x4011a0
40e4db:	df e0                	fnstsw %ax
40e4dd:	f6 c4 40             	test   $0x40,%ah
40e4e0:	74 02                	je     0x40e4e4
40e4e2:	33 f6                	xor    %esi,%esi
40e4e4:	8d 8d 40 ff ff ff    	lea    -0xc0(%ebp),%ecx
40e4ea:	ff 15 14 10 40 00    	call   *0x401014
40e4f0:	f7 de                	neg    %esi
40e4f2:	66 85 f6             	test   %si,%si
40e4f5:	0f 84 ab 00 00 00    	je     0x40e5a6
40e4fb:	39 1d 20 07 41 00    	cmp    %ebx,0x410720
40e501:	75 10                	jne    0x40e513
40e503:	68 20 07 41 00       	push   $0x410720
40e508:	68 94 d9 40 00       	push   $0x40d994
40e50d:	ff 15 e8 10 40 00    	call   *0x4010e8
40e513:	8b 35 20 07 41 00    	mov    0x410720,%esi
40e519:	8b 06                	mov    (%esi),%eax
40e51b:	8d 8d 54 ff ff ff    	lea    -0xac(%ebp),%ecx
40e521:	51                   	push   %ecx
40e522:	56                   	push   %esi
40e523:	ff 50 1c             	call   *0x1c(%eax)
40e526:	db e2                	fnclex
40e528:	3b c3                	cmp    %ebx,%eax
40e52a:	7d 0f                	jge    0x40e53b
40e52c:	6a 1c                	push   $0x1c
40e52e:	68 84 d9 40 00       	push   $0x40d984
40e533:	56                   	push   %esi
40e534:	50                   	push   %eax
40e535:	ff 15 38 10 40 00    	call   *0x401038
40e53b:	8b 85 54 ff ff ff    	mov    -0xac(%ebp),%eax
40e541:	83 ec 10             	sub    $0x10,%esp
40e544:	8b dc                	mov    %esp,%ebx
40e546:	ba 0a 00 00 00       	mov    $0xa,%edx
40e54b:	89 13                	mov    %edx,(%ebx)
40e54d:	89 95 fc fe ff ff    	mov    %edx,-0x104(%ebp)
40e553:	8b 95 00 ff ff ff    	mov    -0x100(%ebp),%edx
40e559:	b9 04 00 02 80       	mov    $0x80020004,%ecx
40e55e:	89 53 04             	mov    %edx,0x4(%ebx)
40e561:	89 8d 04 ff ff ff    	mov    %ecx,-0xfc(%ebp)
40e567:	8b 38                	mov    (%eax),%edi
40e569:	89 4b 08             	mov    %ecx,0x8(%ebx)
40e56c:	8b 8d 08 ff ff ff    	mov    -0xf8(%ebp),%ecx
40e572:	68 d0 d9 40 00       	push   $0x40d9d0
40e577:	50                   	push   %eax
40e578:	8b f0                	mov    %eax,%esi
40e57a:	89 4b 0c             	mov    %ecx,0xc(%ebx)
40e57d:	ff 57 60             	call   *0x60(%edi)
40e580:	db e2                	fnclex
40e582:	33 db                	xor    %ebx,%ebx
40e584:	3b c3                	cmp    %ebx,%eax
40e586:	7d 0f                	jge    0x40e597
40e588:	6a 60                	push   $0x60
40e58a:	68 1c da 40 00       	push   $0x40da1c
40e58f:	56                   	push   %esi
40e590:	50                   	push   %eax
40e591:	ff 15 38 10 40 00    	call   *0x401038
40e597:	8d 8d 54 ff ff ff    	lea    -0xac(%ebp),%ecx
40e59d:	ff 15 5c 11 40 00    	call   *0x40115c
40e5a3:	8b 7d 08             	mov    0x8(%ebp),%edi
40e5a6:	39 1d 20 07 41 00    	cmp    %ebx,0x410720
40e5ac:	75 10                	jne    0x40e5be
40e5ae:	68 20 07 41 00       	push   $0x410720
40e5b3:	68 94 d9 40 00       	push   $0x40d994
40e5b8:	ff 15 e8 10 40 00    	call   *0x4010e8
40e5be:	8b 35 20 07 41 00    	mov    0x410720,%esi
40e5c4:	8b 16                	mov    (%esi),%edx
40e5c6:	8d 85 54 ff ff ff    	lea    -0xac(%ebp),%eax
40e5cc:	50                   	push   %eax
40e5cd:	56                   	push   %esi
40e5ce:	ff 52 14             	call   *0x14(%edx)
40e5d1:	db e2                	fnclex
40e5d3:	3b c3                	cmp    %ebx,%eax
40e5d5:	7d 0f                	jge    0x40e5e6
40e5d7:	6a 14                	push   $0x14
40e5d9:	68 84 d9 40 00       	push   $0x40d984
40e5de:	56                   	push   %esi
40e5df:	50                   	push   %eax
40e5e0:	ff 15 38 10 40 00    	call   *0x401038
40e5e6:	8b 85 54 ff ff ff    	mov    -0xac(%ebp),%eax
40e5ec:	8b 08                	mov    (%eax),%ecx
40e5ee:	8d 95 a8 fe ff ff    	lea    -0x158(%ebp),%edx
40e5f4:	52                   	push   %edx
40e5f5:	50                   	push   %eax
40e5f6:	8b f0                	mov    %eax,%esi
40e5f8:	ff 91 18 01 00 00    	call   *0x118(%ecx)
40e5fe:	db e2                	fnclex
40e600:	3b c3                	cmp    %ebx,%eax
40e602:	7d 12                	jge    0x40e616
40e604:	68 18 01 00 00       	push   $0x118
40e609:	68 b4 d9 40 00       	push   $0x40d9b4
40e60e:	56                   	push   %esi
40e60f:	50                   	push   %eax
40e610:	ff 15 38 10 40 00    	call   *0x401038
40e616:	8b 8d a8 fe ff ff    	mov    -0x158(%ebp),%ecx
40e61c:	ff 15 90 10 40 00    	call   *0x401090
40e622:	8d 8d 54 ff ff ff    	lea    -0xac(%ebp),%ecx
40e628:	ff 15 5c 11 40 00    	call   *0x40115c
40e62e:	8d 85 40 ff ff ff    	lea    -0xc0(%ebp),%eax
40e634:	50                   	push   %eax
40e635:	ff 15 20 11 40 00    	call   *0x401120
40e63b:	6a 01                	push   $0x1
40e63d:	8d 8d 40 ff ff ff    	lea    -0xc0(%ebp),%ecx
40e643:	51                   	push   %ecx
40e644:	8d 95 30 ff ff ff    	lea    -0xd0(%ebp),%edx
40e64a:	52                   	push   %edx
40e64b:	ff 15 34 10 40 00    	call   *0x401034
40e651:	8d 95 30 ff ff ff    	lea    -0xd0(%ebp),%edx
40e657:	8d 4d cc             	lea    -0x34(%ebp),%ecx
40e65a:	ff 15 10 10 40 00    	call   *0x401010
40e660:	8d 8d 40 ff ff ff    	lea    -0xc0(%ebp),%ecx
40e666:	ff 15 14 10 40 00    	call   *0x401014
40e66c:	8b 85 74 ff ff ff    	mov    -0x8c(%ebp),%eax
40e672:	89 18                	mov    %ebx,(%eax)
40e674:	8b 8d 74 ff ff ff    	mov    -0x8c(%ebp),%ecx
40e67a:	c7 41 04 00 00 f0 3f 	movl   $0x3ff00000,0x4(%ecx)
40e681:	8b 95 74 ff ff ff    	mov    -0x8c(%ebp),%edx
40e687:	89 5a 08             	mov    %ebx,0x8(%edx)
40e68a:	8b 85 74 ff ff ff    	mov    -0x8c(%ebp),%eax
40e690:	8d 95 a8 fe ff ff    	lea    -0x158(%ebp),%edx
40e696:	52                   	push   %edx
40e697:	68 00 00 f0 3f       	push   $0x3ff00000
40e69c:	8d 8d 68 ff ff ff    	lea    -0x98(%ebp),%ecx
40e6a2:	c7 40 0c 00 00 00 40 	movl   $0x40000000,0xc(%eax)
40e6a9:	53                   	push   %ebx
40e6aa:	89 8d a8 fe ff ff    	mov    %ecx,-0x158(%ebp)
40e6b0:	ff 15 0c 11 40 00    	call   *0x40110c
40e6b6:	ff 15 6c 10 40 00    	call   *0x40106c
40e6bc:	dc 1d 98 11 40 00    	fcompl 0x401198