40f245:	8d 45 fc             	lea    -0x4(%ebp),%eax
40f248:	89 45 d4             	mov    %eax,-0x2c(%ebp)
40f24b:	8d 45 f8             	lea    -0x8(%ebp),%eax
40f24e:	89 45 d8             	mov    %eax,-0x28(%ebp)
40f251:	8d 45 e8             	lea    -0x18(%ebp),%eax
40f254:	89 45 dc             	mov    %eax,-0x24(%ebp)
40f257:	8d 45 f4             	lea    -0xc(%ebp),%eax
40f25a:	89 45 e0             	mov    %eax,-0x20(%ebp)
40f25d:	8d 45 f0             	lea    -0x10(%ebp),%eax
40f260:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40f263:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40f266:	50                   	push   %eax
40f267:	52                   	push   %edx
40f268:	e8 06 cd ff ff       	call   0x40bf73
40f26d:	59                   	pop    %ecx
40f26e:	59                   	pop    %ecx
40f26f:	8b e5                	mov    %ebp,%esp
40f271:	5d                   	pop    %ebp
40f272:	c3                   	ret
40f273:	8b ff                	mov    %edi,%edi
40f275:	55                   	push   %ebp
40f276:	8b ec                	mov    %esp,%ebp
40f278:	83 ec 2c             	sub    $0x2c,%esp
40f27b:	8b 45 1c             	mov    0x1c(%ebp),%eax
40f27e:	8b 55 10             	mov    0x10(%ebp),%edx
40f281:	8b 4d 14             	mov    0x14(%ebp),%ecx
40f284:	89 45 f0             	mov    %eax,-0x10(%ebp)
40f287:	8b 45 18             	mov    0x18(%ebp),%eax
40f28a:	89 45 f8             	mov    %eax,-0x8(%ebp)
40f28d:	8b 45 08             	mov    0x8(%ebp),%eax
40f290:	89 45 e8             	mov    %eax,-0x18(%ebp)
40f293:	8b 45 0c             	mov    0xc(%ebp),%eax
40f296:	89 4d f4             	mov    %ecx,-0xc(%ebp)
40f299:	89 55 fc             	mov    %edx,-0x4(%ebp)
40f29c:	89 45 ec             	mov    %eax,-0x14(%ebp)
40f29f:	85 d2                	test   %edx,%edx
40f2a1:	75 15                	jne    0x40f2b8
40f2a3:	e8 c3 57 00 00       	call   0x414a6b
40f2a8:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40f2ae:	e8 2f ca ff ff       	call   0x40bce2
40f2b3:	83 c8 ff             	or     $0xffffffff,%eax
40f2b6:	eb 2e                	jmp    0x40f2e6
40f2b8:	85 c9                	test   %ecx,%ecx
40f2ba:	74 e7                	je     0x40f2a3
40f2bc:	8d 45 fc             	lea    -0x4(%ebp),%eax
40f2bf:	89 45 d4             	mov    %eax,-0x2c(%ebp)
40f2c2:	8d 45 f8             	lea    -0x8(%ebp),%eax
40f2c5:	89 45 d8             	mov    %eax,-0x28(%ebp)
40f2c8:	8d 45 e8             	lea    -0x18(%ebp),%eax
40f2cb:	89 45 dc             	mov    %eax,-0x24(%ebp)
40f2ce:	8d 45 f4             	lea    -0xc(%ebp),%eax
40f2d1:	89 45 e0             	mov    %eax,-0x20(%ebp)
40f2d4:	8d 45 f0             	lea    -0x10(%ebp),%eax
40f2d7:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40f2da:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40f2dd:	50                   	push   %eax
40f2de:	52                   	push   %edx
40f2df:	e8 67 cc ff ff       	call   0x40bf4b
40f2e4:	59                   	pop    %ecx
40f2e5:	59                   	pop    %ecx
40f2e6:	8b e5                	mov    %ebp,%esp
40f2e8:	5d                   	pop    %ebp
40f2e9:	c3                   	ret
40f2ea:	8b ff                	mov    %edi,%edi
40f2ec:	55                   	push   %ebp
40f2ed:	8b ec                	mov    %esp,%ebp
40f2ef:	ff 75 20             	push   0x20(%ebp)
40f2f2:	ff 75 1c             	push   0x1c(%ebp)
40f2f5:	ff 75 18             	push   0x18(%ebp)
40f2f8:	ff 75 14             	push   0x14(%ebp)
40f2fb:	ff 75 10             	push   0x10(%ebp)
40f2fe:	ff 75 0c             	push   0xc(%ebp)
40f301:	ff 75 08             	push   0x8(%ebp)
40f304:	e8 92 cc ff ff       	call   0x40bf9b
40f309:	83 c4 1c             	add    $0x1c,%esp
40f30c:	5d                   	pop    %ebp
40f30d:	c3                   	ret
40f30e:	8b ff                	mov    %edi,%edi
40f310:	55                   	push   %ebp
40f311:	8b ec                	mov    %esp,%ebp
40f313:	8b 4d 08             	mov    0x8(%ebp),%ecx
40f316:	81 49 04 00 00 00 80 	orl    $0x80000000,0x4(%ecx)
40f31d:	8b 01                	mov    (%ecx),%eax
40f31f:	81 49 04 00 00 f0 7f 	orl    $0x7ff00000,0x4(%ecx)
40f326:	89 01                	mov    %eax,(%ecx)
40f328:	8b 41 04             	mov    0x4(%ecx),%eax
40f32b:	25 00 00 f8 ff       	and    $0xfff80000,%eax
40f330:	0d 00 00 08 00       	or     $0x80000,%eax
40f335:	83 21 00             	andl   $0x0,(%ecx)
40f338:	89 41 04             	mov    %eax,0x4(%ecx)
40f33b:	5d                   	pop    %ebp
40f33c:	c3                   	ret
40f33d:	8b ff                	mov    %edi,%edi
40f33f:	55                   	push   %ebp
40f340:	8b ec                	mov    %esp,%ebp
40f342:	33 c0                	xor    %eax,%eax
40f344:	38 45 08             	cmp    %al,0x8(%ebp)
40f347:	56                   	push   %esi
40f348:	8b 75 0c             	mov    0xc(%ebp),%esi
40f34b:	0f 95 c0             	setne  %al
40f34e:	99                   	cltd
40f34f:	c1 e0 1f             	shl    $0x1f,%eax
40f352:	33 d2                	xor    %edx,%edx
40f354:	8b 4e 04             	mov    0x4(%esi),%ecx
40f357:	0b 16                	or     (%esi),%edx
40f359:	81 e1 ff ff ff 7f    	and    $0x7fffffff,%ecx
40f35f:	0b c1                	or     %ecx,%eax
40f361:	89 46 04             	mov    %eax,0x4(%esi)
40f364:	8b c2                	mov    %edx,%eax
40f366:	81 4e 04 00 00 f0 7f 	orl    $0x7ff00000,0x4(%esi)
40f36d:	89 06                	mov    %eax,(%esi)
40f36f:	83 26 00             	andl   $0x0,(%esi)
40f372:	81 66 04 00 00 f0 ff 	andl   $0xfff00000,0x4(%esi)
40f379:	5e                   	pop    %esi
40f37a:	5d                   	pop    %ebp
40f37b:	c3                   	ret
40f37c:	8b ff                	mov    %edi,%edi
40f37e:	55                   	push   %ebp
40f37f:	8b ec                	mov    %esp,%ebp
40f381:	33 c0                	xor    %eax,%eax
40f383:	38 45 08             	cmp    %al,0x8(%ebp)
40f386:	56                   	push   %esi
40f387:	8b 75 0c             	mov    0xc(%ebp),%esi
40f38a:	0f 95 c0             	setne  %al
40f38d:	99                   	cltd
40f38e:	c1 e0 1f             	shl    $0x1f,%eax
40f391:	33 d2                	xor    %edx,%edx
40f393:	8b 4e 04             	mov    0x4(%esi),%ecx
40f396:	0b 16                	or     (%esi),%edx
40f398:	81 e1 ff ff ff 7f    	and    $0x7fffffff,%ecx
40f39e:	0b c1                	or     %ecx,%eax
40f3a0:	89 46 04             	mov    %eax,0x4(%esi)
40f3a3:	8b c2                	mov    %edx,%eax
40f3a5:	81 4e 04 00 00 f0 7f 	orl    $0x7ff00000,0x4(%esi)
40f3ac:	89 06                	mov    %eax,(%esi)
40f3ae:	83 0e ff             	orl    $0xffffffff,(%esi)
40f3b1:	81 4e 04 ff ff 0f 00 	orl    $0xfffff,0x4(%esi)
40f3b8:	5e                   	pop    %esi
40f3b9:	5d                   	pop    %ebp
40f3ba:	c3                   	ret
40f3bb:	8b ff                	mov    %edi,%edi
40f3bd:	55                   	push   %ebp
40f3be:	8b ec                	mov    %esp,%ebp
40f3c0:	33 c0                	xor    %eax,%eax
40f3c2:	38 45 08             	cmp    %al,0x8(%ebp)
40f3c5:	56                   	push   %esi
40f3c6:	8b 75 0c             	mov    0xc(%ebp),%esi
40f3c9:	0f 95 c0             	setne  %al
40f3cc:	99                   	cltd
40f3cd:	c1 e0 1f             	shl    $0x1f,%eax
40f3d0:	33 d2                	xor    %edx,%edx
40f3d2:	8b 4e 04             	mov    0x4(%esi),%ecx
40f3d5:	0b 16                	or     (%esi),%edx
40f3d7:	81 e1 ff ff ff 7f    	and    $0x7fffffff,%ecx
40f3dd:	0b c1                	or     %ecx,%eax
40f3df:	89 46 04             	mov    %eax,0x4(%esi)
40f3e2:	8b c2                	mov    %edx,%eax
40f3e4:	81 4e 04 00 00 f0 7f 	orl    $0x7ff00000,0x4(%esi)
40f3eb:	8b c8                	mov    %eax,%ecx
40f3ed:	81 66 04 00 00 f0 ff 	andl   $0xfff00000,0x4(%esi)
40f3f4:	83 e1 01             	and    $0x1,%ecx
40f3f7:	83 c9 01             	or     $0x1,%ecx
40f3fa:	89 0e                	mov    %ecx,(%esi)
40f3fc:	5e                   	pop    %esi
40f3fd:	5d                   	pop    %ebp
40f3fe:	c3                   	ret
40f3ff:	8b ff                	mov    %edi,%edi
40f401:	55                   	push   %ebp
40f402:	8b ec                	mov    %esp,%ebp
40f404:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40f407:	0f b6 45 08          	movzbl 0x8(%ebp),%eax
40f40b:	c1 e0 1f             	shl    $0x1f,%eax
40f40e:	8d 49 7f             	lea    0x7f(%ecx),%ecx
40f411:	c1 e1 17             	shl    $0x17,%ecx
40f414:	81 e1 00 00 80 7f    	and    $0x7f800000,%ecx
40f41a:	0b c8                	or     %eax,%ecx
40f41c:	8b 45 10             	mov    0x10(%ebp),%eax
40f41f:	25 ff ff 7f 00       	and    $0x7fffff,%eax
40f424:	0b c8                	or     %eax,%ecx
40f426:	8b 45 18             	mov    0x18(%ebp),%eax
40f429:	89 08                	mov    %ecx,(%eax)
40f42b:	33 c0                	xor    %eax,%eax
40f42d:	5d                   	pop    %ebp
40f42e:	c3                   	ret
40f42f:	8b ff                	mov    %edi,%edi
40f431:	55                   	push   %ebp
40f432:	8b ec                	mov    %esp,%ebp
40f434:	0f b6 45 08          	movzbl 0x8(%ebp),%eax
40f438:	99                   	cltd
40f439:	56                   	push   %esi
40f43a:	8b 75 18             	mov    0x18(%ebp),%esi
40f43d:	33 d2                	xor    %edx,%edx
40f43f:	c1 e0 1f             	shl    $0x1f,%eax
40f442:	8b 4e 04             	mov    0x4(%esi),%ecx
40f445:	09 16                	or     %edx,(%esi)
40f447:	81 e1 ff ff ff 7f    	and    $0x7fffffff,%ecx
40f44d:	0b c1                	or     %ecx,%eax
40f44f:	89 46 04             	mov    %eax,0x4(%esi)
40f452:	8b 45 0c             	mov    0xc(%ebp),%eax
40f455:	8b 4e 04             	mov    0x4(%esi),%ecx
40f458:	05 ff 03 00 00       	add    $0x3ff,%eax
40f45d:	25 ff 07 00 00       	and    $0x7ff,%eax
40f462:	81 e1 ff ff 0f 80    	and    $0x800fffff,%ecx
40f468:	99                   	cltd
40f469:	c1 e0 14             	shl    $0x14,%eax
40f46c:	33 d2                	xor    %edx,%edx
40f46e:	0b 16                	or     (%esi),%edx
40f470:	0b c1                	or     %ecx,%eax
40f472:	89 46 04             	mov    %eax,0x4(%esi)
40f475:	8b ca                	mov    %edx,%ecx
40f477:	33 45 14             	xor    0x14(%ebp),%eax
40f47a:	33 4d 10             	xor    0x10(%ebp),%ecx
40f47d:	25 ff ff 0f 00       	and    $0xfffff,%eax
40f482:	31 46 04             	xor    %eax,0x4(%esi)
40f485:	89 16                	mov    %edx,(%esi)
40f487:	31 0e                	xor    %ecx,(%esi)
40f489:	33 c0                	xor    %eax,%eax
40f48b:	5e                   	pop    %esi
40f48c:	5d                   	pop    %ebp
40f48d:	c3                   	ret
40f48e:	8b ff                	mov    %edi,%edi
40f490:	55                   	push   %ebp
40f491:	8b ec                	mov    %esp,%ebp
40f493:	33 c0                	xor    %eax,%eax
40f495:	38 45 08             	cmp    %al,0x8(%ebp)
40f498:	56                   	push   %esi
40f499:	8b 75 0c             	mov    0xc(%ebp),%esi
40f49c:	0f 95 c0             	setne  %al
40f49f:	99                   	cltd
40f4a0:	c1 e0 1f             	shl    $0x1f,%eax
40f4a3:	33 d2                	xor    %edx,%edx
40f4a5:	8b 4e 04             	mov    0x4(%esi),%ecx
40f4a8:	0b 16                	or     (%esi),%edx
40f4aa:	81 e1 ff ff ff 7f    	and    $0x7fffffff,%ecx
40f4b0:	0b c1                	or     %ecx,%eax
40f4b2:	89 46 04             	mov    %eax,0x4(%esi)
40f4b5:	8b c2                	mov    %edx,%eax
40f4b7:	81 66 04 ff ff 0f 80 	andl   $0x800fffff,0x4(%esi)
40f4be:	89 06                	mov    %eax,(%esi)
40f4c0:	83 26 00             	andl   $0x0,(%esi)
40f4c3:	81 66 04 00 00 f0 ff 	andl   $0xfff00000,0x4(%esi)
40f4ca:	5e                   	pop    %esi
40f4cb:	5d                   	pop    %ebp
40f4cc:	c3                   	ret
40f4cd:	8b ff                	mov    %edi,%edi
40f4cf:	55                   	push   %ebp
40f4d0:	8b ec                	mov    %esp,%ebp
40f4d2:	81 ec 98 00 00 00    	sub    $0x98,%esp
40f4d8:	a1 28 ba 43 00       	mov    0x43ba28,%eax
40f4dd:	33 c5                	xor    %ebp,%eax
40f4df:	89 45 fc             	mov    %eax,-0x4(%ebp)
40f4e2:	57                   	push   %edi
40f4e3:	8b 7d 10             	mov    0x10(%ebp),%edi
40f4e6:	85 ff                	test   %edi,%edi
40f4e8:	75 15                	jne    0x40f4ff
40f4ea:	e8 7c 55 00 00       	call   0x414a6b
40f4ef:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40f4f5:	e8 e8 c7 ff ff       	call   0x40bce2
40f4fa:	83 c8 ff             	or     $0xffffffff,%eax
40f4fd:	eb 7e                	jmp    0x40f57d
40f4ff:	83 7d 18 00          	cmpl   $0x0,0x18(%ebp)
40f503:	74 e5                	je     0x40f4ea
40f505:	56                   	push   %esi
40f506:	8b 75 14             	mov    0x14(%ebp),%esi
40f509:	83 fe ff             	cmp    $0xffffffff,%esi
40f50c:	75 0e                	jne    0x40f51c
40f50e:	8b f7                	mov    %edi,%esi
40f510:	8d 4e 01             	lea    0x1(%esi),%ecx
40f513:	8a 06                	mov    (%esi),%al
40f515:	46                   	inc    %esi
40f516:	84 c0                	test   %al,%al
40f518:	75 f9                	jne    0x40f513
40f51a:	2b f1                	sub    %ecx,%esi
40f51c:	ff 75 1c             	push   0x1c(%ebp)
40f51f:	8d 8d 68 ff ff ff    	lea    -0x98(%ebp),%ecx
40f525:	e8 9e d2 ff ff       	call   0x40c7c8
40f52a:	ff 75 20             	push   0x20(%ebp)
40f52d:	8d 04 3e             	lea    (%esi,%edi,1),%eax
40f530:	89 bd 78 ff ff ff    	mov    %edi,-0x88(%ebp)
40f536:	89 85 7c ff ff ff    	mov    %eax,-0x84(%ebp)
40f53c:	8d 4d 84             	lea    -0x7c(%ebp),%ecx
40f53f:	8d 85 6c ff ff ff    	lea    -0x94(%ebp),%eax
40f545:	89 7d 80             	mov    %edi,-0x80(%ebp)
40f548:	50                   	push   %eax
40f549:	ff 75 18             	push   0x18(%ebp)
40f54c:	8d 85 78 ff ff ff    	lea    -0x88(%ebp),%eax
40f552:	ff 75 0c             	push   0xc(%ebp)
40f555:	ff 75 08             	push   0x8(%ebp)
40f558:	50                   	push   %eax
40f559:	e8 40 12 00 00       	call   0x41079e
40f55e:	8d 4d 84             	lea    -0x7c(%ebp),%ecx
40f561:	e8 f4 3d 00 00       	call   0x41335a
40f566:	80 bd 74 ff ff ff 00 	cmpb   $0x0,-0x8c(%ebp)
40f56d:	5e                   	pop    %esi
40f56e:	74 0d                	je     0x40f57d
40f570:	8b 8d 68 ff ff ff    	mov    -0x98(%ebp),%ecx
40f576:	83 a1 50 03 00 00 fd 	andl   $0xfffffffd,0x350(%ecx)
40f57d:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40f580:	33 cd                	xor    %ebp,%ecx
40f582:	5f                   	pop    %edi
40f583:	e8 d8 7a ff ff       	call   0x407060
40f588:	8b e5                	mov    %ebp,%esp
40f58a:	5d                   	pop    %ebp
40f58b:	c3                   	ret
40f58c:	8b ff                	mov    %edi,%edi
40f58e:	55                   	push   %ebp
40f58f:	8b ec                	mov    %esp,%ebp
40f591:	51                   	push   %ecx
40f592:	51                   	push   %ecx
40f593:	8b 45 0c             	mov    0xc(%ebp),%eax
40f596:	89 45 f8             	mov    %eax,-0x8(%ebp)
40f599:	8d 45 f8             	lea    -0x8(%ebp),%eax
40f59c:	50                   	push   %eax
40f59d:	ff 75 08             	push   0x8(%ebp)
40f5a0:	c6 45 fc 00          	movb   $0x0,-0x4(%ebp)
40f5a4:	e8 6d 19 00 00       	call   0x410f16
40f5a9:	59                   	pop    %ecx
40f5aa:	59                   	pop    %ecx
40f5ab:	8b e5                	mov    %ebp,%esp
40f5ad:	5d                   	pop    %ebp
40f5ae:	c3                   	ret
40f5af:	8b ff                	mov    %edi,%edi
40f5b1:	55                   	push   %ebp
40f5b2:	8b ec                	mov    %esp,%ebp
40f5b4:	51                   	push   %ecx
40f5b5:	51                   	push   %ecx
40f5b6:	8b 45 0c             	mov    0xc(%ebp),%eax
40f5b9:	89 45 f8             	mov    %eax,-0x8(%ebp)
40f5bc:	8d 45 f8             	lea    -0x8(%ebp),%eax
40f5bf:	50                   	push   %eax
40f5c0:	ff 75 08             	push   0x8(%ebp)
40f5c3:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40f5c7:	e8 4a 19 00 00       	call   0x410f16
40f5cc:	59                   	pop    %ecx
40f5cd:	59                   	pop    %ecx
40f5ce:	8b e5                	mov    %ebp,%esp
40f5d0:	5d                   	pop    %ebp
40f5d1:	c3                   	ret
40f5d2:	8b ff                	mov    %edi,%edi
40f5d4:	55                   	push   %ebp
40f5d5:	8b ec                	mov    %esp,%ebp
40f5d7:	51                   	push   %ecx
40f5d8:	51                   	push   %ecx
40f5d9:	8b 45 0c             	mov    0xc(%ebp),%eax
40f5dc:	89 45 f8             	mov    %eax,-0x8(%ebp)
40f5df:	8d 45 f8             	lea    -0x8(%ebp),%eax
40f5e2:	50                   	push   %eax
40f5e3:	ff 75 08             	push   0x8(%ebp)
40f5e6:	c6 45 fc 00          	movb   $0x0,-0x4(%ebp)
40f5ea:	e8 ea 36 00 00       	call   0x412cd9