40f375:	e8 25 b4 ff ff       	call   0x40a79f
40f37a:	59                   	pop    %ecx
40f37b:	57                   	push   %edi
40f37c:	e8 1e b4 ff ff       	call   0x40a79f
40f381:	33 c0                	xor    %eax,%eax
40f383:	eb 14                	jmp    0x40f399
40f385:	e8 a5 b3 ff ff       	call   0x40a72f
40f38a:	56                   	push   %esi
40f38b:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40f391:	e8 09 b4 ff ff       	call   0x40a79f
40f396:	83 c8 ff             	or     $0xffffffff,%eax
40f399:	59                   	pop    %ecx
40f39a:	5f                   	pop    %edi
40f39b:	5e                   	pop    %esi
40f39c:	5b                   	pop    %ebx
40f39d:	c9                   	leave
40f39e:	c3                   	ret
40f39f:	53                   	push   %ebx
40f3a0:	53                   	push   %ebx
40f3a1:	53                   	push   %ebx
40f3a2:	53                   	push   %ebx
40f3a3:	53                   	push   %ebx
40f3a4:	e8 4d 81 ff ff       	call   0x4074f6
40f3a9:	cc                   	int3
40f3aa:	8b ff                	mov    %edi,%edi
40f3ac:	55                   	push   %ebp
40f3ad:	8b ec                	mov    %esp,%ebp
40f3af:	51                   	push   %ecx
40f3b0:	51                   	push   %ecx
40f3b1:	57                   	push   %edi
40f3b2:	8b 7d 08             	mov    0x8(%ebp),%edi
40f3b5:	85 ff                	test   %edi,%edi
40f3b7:	75 05                	jne    0x40f3be
40f3b9:	33 c0                	xor    %eax,%eax
40f3bb:	5f                   	pop    %edi
40f3bc:	c9                   	leave
40f3bd:	c3                   	ret
40f3be:	33 d2                	xor    %edx,%edx
40f3c0:	8b c7                	mov    %edi,%eax
40f3c2:	8b ca                	mov    %edx,%ecx
40f3c4:	89 55 fc             	mov    %edx,-0x4(%ebp)
40f3c7:	39 17                	cmp    %edx,(%edi)
40f3c9:	74 08                	je     0x40f3d3
40f3cb:	8d 40 04             	lea    0x4(%eax),%eax
40f3ce:	41                   	inc    %ecx
40f3cf:	39 10                	cmp    %edx,(%eax)
40f3d1:	75 f8                	jne    0x40f3cb
40f3d3:	56                   	push   %esi
40f3d4:	8d 41 01             	lea    0x1(%ecx),%eax
40f3d7:	6a 04                	push   $0x4
40f3d9:	50                   	push   %eax
40f3da:	e8 63 b3 ff ff       	call   0x40a742
40f3df:	8b f0                	mov    %eax,%esi
40f3e1:	59                   	pop    %ecx
40f3e2:	59                   	pop    %ecx
40f3e3:	85 f6                	test   %esi,%esi
40f3e5:	74 6f                	je     0x40f456
40f3e7:	8b 0f                	mov    (%edi),%ecx
40f3e9:	85 c9                	test   %ecx,%ecx
40f3eb:	74 58                	je     0x40f445
40f3ed:	53                   	push   %ebx
40f3ee:	8b de                	mov    %esi,%ebx
40f3f0:	2b df                	sub    %edi,%ebx
40f3f2:	8d 51 02             	lea    0x2(%ecx),%edx
40f3f5:	66 8b 01             	mov    (%ecx),%ax
40f3f8:	83 c1 02             	add    $0x2,%ecx
40f3fb:	66 3b 45 fc          	cmp    -0x4(%ebp),%ax
40f3ff:	75 f4                	jne    0x40f3f5
40f401:	2b ca                	sub    %edx,%ecx
40f403:	d1 f9                	sar    $1,%ecx
40f405:	6a 02                	push   $0x2
40f407:	8d 41 01             	lea    0x1(%ecx),%eax
40f40a:	50                   	push   %eax
40f40b:	89 45 f8             	mov    %eax,-0x8(%ebp)
40f40e:	e8 2f b3 ff ff       	call   0x40a742
40f413:	89 04 3b             	mov    %eax,(%ebx,%edi,1)
40f416:	33 c0                	xor    %eax,%eax
40f418:	50                   	push   %eax
40f419:	e8 81 b3 ff ff       	call   0x40a79f
40f41e:	83 c4 0c             	add    $0xc,%esp
40f421:	83 3c 3b 00          	cmpl   $0x0,(%ebx,%edi,1)
40f425:	74 2f                	je     0x40f456
40f427:	ff 37                	push   (%edi)
40f429:	ff 75 f8             	push   -0x8(%ebp)
40f42c:	ff 34 3b             	push   (%ebx,%edi,1)
40f42f:	e8 b7 eb ff ff       	call   0x40dfeb
40f434:	83 c4 0c             	add    $0xc,%esp
40f437:	85 c0                	test   %eax,%eax
40f439:	75 20                	jne    0x40f45b
40f43b:	83 c7 04             	add    $0x4,%edi
40f43e:	8b 0f                	mov    (%edi),%ecx
40f440:	85 c9                	test   %ecx,%ecx
40f442:	75 ae                	jne    0x40f3f2
40f444:	5b                   	pop    %ebx
40f445:	33 c0                	xor    %eax,%eax
40f447:	50                   	push   %eax
40f448:	e8 52 b3 ff ff       	call   0x40a79f
40f44d:	59                   	pop    %ecx
40f44e:	8b c6                	mov    %esi,%eax
40f450:	5e                   	pop    %esi
40f451:	e9 65 ff ff ff       	jmp    0x40f3bb
40f456:	e8 cf b0 ff ff       	call   0x40a52a
40f45b:	33 c0                	xor    %eax,%eax
40f45d:	50                   	push   %eax
40f45e:	50                   	push   %eax
40f45f:	50                   	push   %eax
40f460:	50                   	push   %eax
40f461:	50                   	push   %eax
40f462:	e8 8f 80 ff ff       	call   0x4074f6
40f467:	cc                   	int3
40f468:	a1 68 20 42 00       	mov    0x422068,%eax
40f46d:	3b 05 6c 20 42 00    	cmp    0x42206c,%eax
40f473:	75 0c                	jne    0x40f481
40f475:	50                   	push   %eax
40f476:	e8 2f ff ff ff       	call   0x40f3aa
40f47b:	59                   	pop    %ecx
40f47c:	a3 68 20 42 00       	mov    %eax,0x422068
40f481:	c3                   	ret
40f482:	8b ff                	mov    %edi,%edi
40f484:	55                   	push   %ebp
40f485:	8b ec                	mov    %esp,%ebp
40f487:	53                   	push   %ebx
40f488:	56                   	push   %esi
40f489:	57                   	push   %edi
40f48a:	8b 3d 68 20 42 00    	mov    0x422068,%edi
40f490:	8b f7                	mov    %edi,%esi
40f492:	8b 07                	mov    (%edi),%eax
40f494:	85 c0                	test   %eax,%eax
40f496:	74 2d                	je     0x40f4c5
40f498:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40f49b:	53                   	push   %ebx
40f49c:	50                   	push   %eax
40f49d:	ff 75 08             	push   0x8(%ebp)
40f4a0:	e8 b2 59 00 00       	call   0x414e57
40f4a5:	83 c4 0c             	add    $0xc,%esp
40f4a8:	85 c0                	test   %eax,%eax
40f4aa:	75 10                	jne    0x40f4bc
40f4ac:	8b 06                	mov    (%esi),%eax
40f4ae:	0f b7 04 58          	movzwl (%eax,%ebx,2),%eax
40f4b2:	83 f8 3d             	cmp    $0x3d,%eax
40f4b5:	74 1c                	je     0x40f4d3
40f4b7:	66 85 c0             	test   %ax,%ax
40f4ba:	74 17                	je     0x40f4d3
40f4bc:	83 c6 04             	add    $0x4,%esi
40f4bf:	8b 06                	mov    (%esi),%eax
40f4c1:	85 c0                	test   %eax,%eax
40f4c3:	75 d6                	jne    0x40f49b
40f4c5:	2b f7                	sub    %edi,%esi
40f4c7:	c1 fe 02             	sar    $0x2,%esi
40f4ca:	f7 de                	neg    %esi
40f4cc:	5f                   	pop    %edi
40f4cd:	8b c6                	mov    %esi,%eax
40f4cf:	5e                   	pop    %esi
40f4d0:	5b                   	pop    %ebx
40f4d1:	5d                   	pop    %ebp
40f4d2:	c3                   	ret
40f4d3:	2b f7                	sub    %edi,%esi
40f4d5:	c1 fe 02             	sar    $0x2,%esi
40f4d8:	eb f2                	jmp    0x40f4cc
40f4da:	8b ff                	mov    %edi,%edi
40f4dc:	55                   	push   %ebp
40f4dd:	8b ec                	mov    %esp,%ebp
40f4df:	5d                   	pop    %ebp
40f4e0:	e9 3a fc ff ff       	jmp    0x40f11f
40f4e5:	64 a1 18 00 00 00    	mov    %fs:0x18,%eax
40f4eb:	8b 40 30             	mov    0x30(%eax),%eax
40f4ee:	8b 40 68             	mov    0x68(%eax),%eax
40f4f1:	c1 e8 08             	shr    $0x8,%eax
40f4f4:	24 01                	and    $0x1,%al
40f4f6:	c3                   	ret
40f4f7:	64 a1 18 00 00 00    	mov    %fs:0x18,%eax
40f4fd:	8b 40 30             	mov    0x30(%eax),%eax
40f500:	8b 40 10             	mov    0x10(%eax),%eax
40f503:	8b 40 08             	mov    0x8(%eax),%eax
40f506:	c1 e8 1f             	shr    $0x1f,%eax
40f509:	c3                   	ret
40f50a:	8b ff                	mov    %edi,%edi
40f50c:	55                   	push   %ebp
40f50d:	8b ec                	mov    %esp,%ebp
40f50f:	51                   	push   %ecx
40f510:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40f514:	e8 de ff ff ff       	call   0x40f4f7
40f519:	84 c0                	test   %al,%al
40f51b:	75 09                	jne    0x40f526
40f51d:	8d 45 fc             	lea    -0x4(%ebp),%eax
40f520:	50                   	push   %eax
40f521:	e8 51 b4 ff ff       	call   0x40a977
40f526:	33 c0                	xor    %eax,%eax
40f528:	83 7d fc 01          	cmpl   $0x1,-0x4(%ebp)
40f52c:	0f 95 c0             	setne  %al
40f52f:	c9                   	leave
40f530:	c3                   	ret
40f531:	8b ff                	mov    %edi,%edi
40f533:	55                   	push   %ebp
40f534:	8b ec                	mov    %esp,%ebp
40f536:	51                   	push   %ecx
40f537:	51                   	push   %ecx
40f538:	53                   	push   %ebx
40f539:	56                   	push   %esi
40f53a:	6a 38                	push   $0x38
40f53c:	6a 40                	push   $0x40
40f53e:	e8 ff b1 ff ff       	call   0x40a742
40f543:	8b f0                	mov    %eax,%esi
40f545:	33 db                	xor    %ebx,%ebx
40f547:	89 75 f8             	mov    %esi,-0x8(%ebp)
40f54a:	59                   	pop    %ecx
40f54b:	59                   	pop    %ecx
40f54c:	85 f6                	test   %esi,%esi
40f54e:	75 04                	jne    0x40f554
40f550:	8b f3                	mov    %ebx,%esi
40f552:	eb 4b                	jmp    0x40f59f
40f554:	8d 86 00 0e 00 00    	lea    0xe00(%esi),%eax
40f55a:	3b f0                	cmp    %eax,%esi
40f55c:	74 41                	je     0x40f59f
40f55e:	57                   	push   %edi
40f55f:	8d 7e 20             	lea    0x20(%esi),%edi
40f562:	8b f0                	mov    %eax,%esi
40f564:	53                   	push   %ebx
40f565:	68 a0 0f 00 00       	push   $0xfa0
40f56a:	8d 47 e0             	lea    -0x20(%edi),%eax
40f56d:	50                   	push   %eax
40f56e:	e8 a0 b5 ff ff       	call   0x40ab13
40f573:	83 4f f8 ff          	orl    $0xffffffff,-0x8(%edi)
40f577:	80 67 0d f8          	andb   $0xf8,0xd(%edi)
40f57b:	89 1f                	mov    %ebx,(%edi)
40f57d:	8d 7f 38             	lea    0x38(%edi),%edi
40f580:	89 5f cc             	mov    %ebx,-0x34(%edi)
40f583:	8d 47 e0             	lea    -0x20(%edi),%eax
40f586:	c7 47 d0 00 00 0a 0a 	movl   $0xa0a0000,-0x30(%edi)
40f58d:	c6 47 d4 0a          	movb   $0xa,-0x2c(%edi)
40f591:	89 5f d6             	mov    %ebx,-0x2a(%edi)
40f594:	88 5f da             	mov    %bl,-0x26(%edi)
40f597:	3b c6                	cmp    %esi,%eax
40f599:	75 c9                	jne    0x40f564
40f59b:	8b 75 f8             	mov    -0x8(%ebp),%esi
40f59e:	5f                   	pop    %edi
40f59f:	53                   	push   %ebx
40f5a0:	e8 fa b1 ff ff       	call   0x40a79f
40f5a5:	59                   	pop    %ecx
40f5a6:	8b c6                	mov    %esi,%eax
40f5a8:	5e                   	pop    %esi
40f5a9:	5b                   	pop    %ebx
40f5aa:	c9                   	leave
40f5ab:	c3                   	ret
40f5ac:	8b ff                	mov    %edi,%edi
40f5ae:	55                   	push   %ebp
40f5af:	8b ec                	mov    %esp,%ebp
40f5b1:	56                   	push   %esi
40f5b2:	8b 75 08             	mov    0x8(%ebp),%esi
40f5b5:	85 f6                	test   %esi,%esi
40f5b7:	74 25                	je     0x40f5de
40f5b9:	53                   	push   %ebx
40f5ba:	8d 9e 00 0e 00 00    	lea    0xe00(%esi),%ebx
40f5c0:	57                   	push   %edi
40f5c1:	8b fe                	mov    %esi,%edi
40f5c3:	3b f3                	cmp    %ebx,%esi
40f5c5:	74 0e                	je     0x40f5d5
40f5c7:	57                   	push   %edi
40f5c8:	ff 15 98 90 41 00    	call   *0x419098
40f5ce:	83 c7 38             	add    $0x38,%edi
40f5d1:	3b fb                	cmp    %ebx,%edi
40f5d3:	75 f2                	jne    0x40f5c7
40f5d5:	56                   	push   %esi
40f5d6:	e8 c4 b1 ff ff       	call   0x40a79f
40f5db:	59                   	pop    %ecx
40f5dc:	5f                   	pop    %edi
40f5dd:	5b                   	pop    %ebx
40f5de:	5e                   	pop    %esi
40f5df:	5d                   	pop    %ebp
40f5e0:	c3                   	ret
40f5e1:	6a 10                	push   $0x10
40f5e3:	68 08 02 42 00       	push   $0x420208
40f5e8:	e8 b3 48 ff ff       	call   0x403ea0
40f5ed:	81 7d 08 00 20 00 00 	cmpl   $0x2000,0x8(%ebp)
40f5f4:	72 21                	jb     0x40f617
40f5f6:	e8 34 b1 ff ff       	call   0x40a72f
40f5fb:	6a 09                	push   $0x9
40f5fd:	5e                   	pop    %esi
40f5fe:	89 30                	mov    %esi,(%eax)
40f600:	e8 c4 7e ff ff       	call   0x4074c9
40f605:	8b c6                	mov    %esi,%eax
40f607:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40f60a:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40f611:	59                   	pop    %ecx
40f612:	5f                   	pop    %edi
40f613:	5e                   	pop    %esi
40f614:	5b                   	pop    %ebx
40f615:	c9                   	leave
40f616:	c3                   	ret
40f617:	33 f6                	xor    %esi,%esi
40f619:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40f61c:	6a 07                	push   $0x7
40f61e:	e8 69 e9 ff ff       	call   0x40df8c
40f623:	59                   	pop    %ecx
40f624:	89 75 fc             	mov    %esi,-0x4(%ebp)
40f627:	8b fe                	mov    %esi,%edi
40f629:	a1 a8 23 42 00       	mov    0x4223a8,%eax
40f62e:	89 7d e0             	mov    %edi,-0x20(%ebp)
40f631:	39 45 08             	cmp    %eax,0x8(%ebp)
40f634:	7c 1f                	jl     0x40f655
40f636:	39 34 bd a8 21 42 00 	cmp    %esi,0x4221a8(,%edi,4)
40f63d:	75 31                	jne    0x40f670
40f63f:	e8 ed fe ff ff       	call   0x40f531
40f644:	89 04 bd a8 21 42 00 	mov    %eax,0x4221a8(,%edi,4)
40f64b:	85 c0                	test   %eax,%eax
40f64d:	75 14                	jne    0x40f663
40f64f:	6a 0c                	push   $0xc
40f651:	5e                   	pop    %esi
40f652:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40f655:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40f65c:	e8 15 00 00 00       	call   0x40f676
40f661:	eb a2                	jmp    0x40f605
40f663:	a1 a8 23 42 00       	mov    0x4223a8,%eax
40f668:	83 c0 40             	add    $0x40,%eax
40f66b:	a3 a8 23 42 00       	mov    %eax,0x4223a8
40f670:	47                   	inc    %edi
40f671:	eb bb                	jmp    0x40f62e
40f673:	8b 75 e4             	mov    -0x1c(%ebp),%esi
40f676:	6a 07                	push   $0x7
40f678:	e8 57 e9 ff ff       	call   0x40dfd4
40f67d:	59                   	pop    %ecx
40f67e:	c3                   	ret
40f67f:	8b ff                	mov    %edi,%edi
40f681:	55                   	push   %ebp
40f682:	8b ec                	mov    %esp,%ebp
40f684:	8b 45 08             	mov    0x8(%ebp),%eax
40f687:	8b c8                	mov    %eax,%ecx
40f689:	83 e0 3f             	and    $0x3f,%eax
40f68c:	c1 f9 06             	sar    $0x6,%ecx
40f68f:	6b c0 38             	imul   $0x38,%eax,%eax
40f692:	03 04 8d a8 21 42 00 	add    0x4221a8(,%ecx,4),%eax
40f699:	50                   	push   %eax
40f69a:	ff 15 90 90 41 00    	call   *0x419090
40f6a0:	5d                   	pop    %ebp
40f6a1:	c3                   	ret
40f6a2:	8b ff                	mov    %edi,%edi
40f6a4:	55                   	push   %ebp
40f6a5:	8b ec                	mov    %esp,%ebp
40f6a7:	51                   	push   %ecx
40f6a8:	53                   	push   %ebx
40f6a9:	56                   	push   %esi
40f6aa:	8b 75 08             	mov    0x8(%ebp),%esi
40f6ad:	85 f6                	test   %esi,%esi
40f6af:	78 69                	js     0x40f71a
40f6b1:	3b 35 a8 23 42 00    	cmp    0x4223a8,%esi
40f6b7:	73 61                	jae    0x40f71a
40f6b9:	8b c6                	mov    %esi,%eax
40f6bb:	8b de                	mov    %esi,%ebx
40f6bd:	83 e0 3f             	and    $0x3f,%eax
40f6c0:	c1 eb 06             	shr    $0x6,%ebx