40e40c:	bb 00 00 00 00       	mov    $0x0,%ebx
40e411:	8d 3c 41             	lea    (%ecx,%eax,2),%edi
40e414:	2b f0                	sub    %eax,%esi
40e416:	0f 84 9b a1 01 00    	je     0x4285b7
40e41c:	8b 8d ac fb ff ff    	mov    -0x454(%ebp),%ecx
40e422:	8b c6                	mov    %esi,%eax
40e424:	2b 85 b0 fb ff ff    	sub    -0x450(%ebp),%eax
40e42a:	81 c1 fe ff ff 7f    	add    $0x7ffffffe,%ecx
40e430:	03 c8                	add    %eax,%ecx
40e432:	85 c9                	test   %ecx,%ecx
40e434:	74 1c                	je     0x40e452
40e436:	0f b7 02             	movzwl (%edx),%eax
40e439:	66 85 c0             	test   %ax,%ax
40e43c:	74 14                	je     0x40e452
40e43e:	66 89 07             	mov    %ax,(%edi)
40e441:	83 c2 02             	add    $0x2,%edx
40e444:	83 c7 02             	add    $0x2,%edi
40e447:	49                   	dec    %ecx
40e448:	83 ee 01             	sub    $0x1,%esi
40e44b:	75 e5                	jne    0x40e432
40e44d:	e9 65 a1 01 00       	jmp    0x4285b7
40e452:	85 f6                	test   %esi,%esi
40e454:	0f 84 5d a1 01 00    	je     0x4285b7
40e45a:	33 c0                	xor    %eax,%eax
40e45c:	66 89 07             	mov    %ax,(%edi)
40e45f:	8b bd c0 fb ff ff    	mov    -0x440(%ebp),%edi
40e465:	8d 85 10 fb ff ff    	lea    -0x4f0(%ebp),%eax
40e46b:	50                   	push   %eax
40e46c:	ff 15 1c 30 45 00    	call   *0x45301c
40e472:	8d 85 00 fb ff ff    	lea    -0x500(%ebp),%eax
40e478:	50                   	push   %eax
40e479:	ff 15 1c 30 45 00    	call   *0x45301c
40e47f:	85 db                	test   %ebx,%ebx
40e481:	0f 88 96 11 00 00    	js     0x40f61d
40e487:	8d 85 c8 fb ff ff    	lea    -0x438(%ebp),%eax
40e48d:	50                   	push   %eax
40e48e:	ff 15 00 30 45 00    	call   *0x453000
40e494:	8b 85 c4 fb ff ff    	mov    -0x43c(%ebp),%eax
40e49a:	8d 8d bc fb ff ff    	lea    -0x444(%ebp),%ecx
40e4a0:	51                   	push   %ecx
40e4a1:	8d 8d b8 fb ff ff    	lea    -0x448(%ebp),%ecx
40e4a7:	c7 85 b8 fb ff ff 00 	movl   $0x0,-0x448(%ebp)
40e4ae:	00 00 00
40e4b1:	51                   	push   %ecx
40e4b2:	8b 30                	mov    (%eax),%esi
40e4b4:	8d 8d c8 fb ff ff    	lea    -0x438(%ebp),%ecx
40e4ba:	51                   	push   %ecx
40e4bb:	6a 00                	push   $0x0
40e4bd:	68 7c 6a 40 00       	push   $0x406a7c
40e4c2:	8b 76 10             	mov    0x10(%esi),%esi
40e4c5:	8b ce                	mov    %esi,%ecx
40e4c7:	50                   	push   %eax
40e4c8:	c7 85 bc fb ff ff 00 	movl   $0x0,-0x444(%ebp)
40e4cf:	00 00 00
40e4d2:	ff 15 c4 12 45 00    	call   *0x4512c4
40e4d8:	ff d6                	call   *%esi
40e4da:	85 c0                	test   %eax,%eax
40e4dc:	0f 88 06 a1 01 00    	js     0x4285e8
40e4e2:	66 8b 85 c8 fb ff ff 	mov    -0x438(%ebp),%ax
40e4e9:	66 83 f8 03          	cmp    $0x3,%ax
40e4ed:	0f 84 5f 12 00 00    	je     0x40f752
40e4f3:	66 83 f8 01          	cmp    $0x1,%ax
40e4f7:	0f 85 e1 a0 01 00    	jne    0x4285de
40e4fd:	c7 87 50 06 00 00 01 	movl   $0x1,0x650(%edi)
40e504:	00 00 00
40e507:	8d 85 c8 fb ff ff    	lea    -0x438(%ebp),%eax
40e50d:	50                   	push   %eax
40e50e:	ff 15 1c 30 45 00    	call   *0x45301c
40e514:	85 db                	test   %ebx,%ebx
40e516:	0f 88 01 11 00 00    	js     0x40f61d
40e51c:	8d 85 c8 fb ff ff    	lea    -0x438(%ebp),%eax
40e522:	50                   	push   %eax
40e523:	ff 15 00 30 45 00    	call   *0x453000
40e529:	8b 85 c4 fb ff ff    	mov    -0x43c(%ebp),%eax
40e52f:	8d 8d bc fb ff ff    	lea    -0x444(%ebp),%ecx
40e535:	51                   	push   %ecx
40e536:	8d 8d b8 fb ff ff    	lea    -0x448(%ebp),%ecx
40e53c:	c7 85 b8 fb ff ff 00 	movl   $0x0,-0x448(%ebp)
40e543:	00 00 00
40e546:	51                   	push   %ecx
40e547:	8b 30                	mov    (%eax),%esi
40e549:	8d 8d c8 fb ff ff    	lea    -0x438(%ebp),%ecx
40e54f:	51                   	push   %ecx
40e550:	6a 00                	push   $0x0
40e552:	68 70 6a 40 00       	push   $0x406a70
40e557:	8b 76 10             	mov    0x10(%esi),%esi
40e55a:	8b ce                	mov    %esi,%ecx
40e55c:	50                   	push   %eax
40e55d:	c7 85 bc fb ff ff 00 	movl   $0x0,-0x444(%ebp)
40e564:	00 00 00
40e567:	ff 15 c4 12 45 00    	call   *0x4512c4
40e56d:	ff d6                	call   *%esi
40e56f:	85 c0                	test   %eax,%eax
40e571:	0f 88 a3 a0 01 00    	js     0x42861a
40e577:	66 83 bd c8 fb ff ff 	cmpw   $0x8,-0x438(%ebp)
40e57e:	08
40e57f:	0f 85 8b a0 01 00    	jne    0x428610
40e585:	8b 87 ac 06 00 00    	mov    0x6ac(%edi),%eax
40e58b:	85 c0                	test   %eax,%eax
40e58d:	0f 85 67 a0 01 00    	jne    0x4285fa
40e593:	ff b5 d0 fb ff ff    	push   -0x430(%ebp)
40e599:	ff 15 10 30 45 00    	call   *0x453010
40e59f:	89 87 ac 06 00 00    	mov    %eax,0x6ac(%edi)
40e5a5:	85 c0                	test   %eax,%eax
40e5a7:	0f 84 59 a0 01 00    	je     0x428606
40e5ad:	8d 85 c8 fb ff ff    	lea    -0x438(%ebp),%eax
40e5b3:	50                   	push   %eax
40e5b4:	ff 15 1c 30 45 00    	call   *0x45301c
40e5ba:	85 db                	test   %ebx,%ebx
40e5bc:	0f 88 5b 10 00 00    	js     0x40f61d
40e5c2:	8d 85 c8 fb ff ff    	lea    -0x438(%ebp),%eax
40e5c8:	50                   	push   %eax
40e5c9:	ff 15 00 30 45 00    	call   *0x453000
40e5cf:	8b 85 c4 fb ff ff    	mov    -0x43c(%ebp),%eax
40e5d5:	8d 8d bc fb ff ff    	lea    -0x444(%ebp),%ecx
40e5db:	51                   	push   %ecx
40e5dc:	8d 8d b8 fb ff ff    	lea    -0x448(%ebp),%ecx
40e5e2:	c7 85 b8 fb ff ff 00 	movl   $0x0,-0x448(%ebp)
40e5e9:	00 00 00
40e5ec:	51                   	push   %ecx
40e5ed:	8b 30                	mov    (%eax),%esi
40e5ef:	8d 8d c8 fb ff ff    	lea    -0x438(%ebp),%ecx
40e5f5:	51                   	push   %ecx
40e5f6:	6a 00                	push   $0x0
40e5f8:	68 60 6a 40 00       	push   $0x406a60
40e5fd:	8b 76 10             	mov    0x10(%esi),%esi
40e600:	8b ce                	mov    %esi,%ecx
40e602:	50                   	push   %eax
40e603:	c7 85 bc fb ff ff 00 	movl   $0x0,-0x444(%ebp)
40e60a:	00 00 00
40e60d:	ff 15 c4 12 45 00    	call   *0x4512c4
40e613:	ff d6                	call   *%esi
40e615:	85 c0                	test   %eax,%eax
40e617:	0f 88 31 a0 01 00    	js     0x42864e
40e61d:	66 8b 85 c8 fb ff ff 	mov    -0x438(%ebp),%ax
40e624:	66 83 f8 0b          	cmp    $0xb,%ax
40e628:	0f 84 fe 9f 01 00    	je     0x42862c
40e62e:	66 83 f8 01          	cmp    $0x1,%ax
40e632:	0f 85 0c a0 01 00    	jne    0x428644
40e638:	c7 87 6c 06 00 00 01 	movl   $0x1,0x66c(%edi)
40e63f:	00 00 00
40e642:	8d 85 c8 fb ff ff    	lea    -0x438(%ebp),%eax
40e648:	50                   	push   %eax
40e649:	ff 15 1c 30 45 00    	call   *0x45301c
40e64f:	85 db                	test   %ebx,%ebx
40e651:	0f 88 c6 0f 00 00    	js     0x40f61d
40e657:	8d 85 c8 fb ff ff    	lea    -0x438(%ebp),%eax
40e65d:	50                   	push   %eax
40e65e:	ff 15 00 30 45 00    	call   *0x453000
40e664:	8b 85 c4 fb ff ff    	mov    -0x43c(%ebp),%eax
40e66a:	8d 8d 70 fb ff ff    	lea    -0x490(%ebp),%ecx
40e670:	51                   	push   %ecx
40e671:	8d 8d 6c fb ff ff    	lea    -0x494(%ebp),%ecx
40e677:	c7 85 6c fb ff ff 00 	movl   $0x0,-0x494(%ebp)
40e67e:	00 00 00
40e681:	51                   	push   %ecx
40e682:	8b 30                	mov    (%eax),%esi
40e684:	8d 8d c8 fb ff ff    	lea    -0x438(%ebp),%ecx
40e68a:	51                   	push   %ecx
40e68b:	6a 00                	push   $0x0
40e68d:	68 54 6a 40 00       	push   $0x406a54
40e692:	8b 76 10             	mov    0x10(%esi),%esi
40e695:	8b ce                	mov    %esi,%ecx
40e697:	50                   	push   %eax
40e698:	c7 85 70 fb ff ff 00 	movl   $0x0,-0x490(%ebp)
40e69f:	00 00 00
40e6a2:	ff 15 c4 12 45 00    	call   *0x4512c4
40e6a8:	ff d6                	call   *%esi
40e6aa:	85 c0                	test   %eax,%eax
40e6ac:	0f 88 27 a3 01 00    	js     0x4289d9
40e6b2:	66 8b 85 c8 fb ff ff 	mov    -0x438(%ebp),%ax
40e6b9:	66 83 f8 08          	cmp    $0x8,%ax
40e6bd:	0f 85 d5 a2 01 00    	jne    0x428998
40e6c3:	8d 87 b0 06 00 00    	lea    0x6b0(%edi),%eax
40e6c9:	50                   	push   %eax
40e6ca:	ff b5 d0 fb ff ff    	push   -0x430(%ebp)
40e6d0:	ff 15 50 30 45 00    	call   *0x453050
40e6d6:	85 c0                	test   %eax,%eax
40e6d8:	0f 88 f1 a2 01 00    	js     0x4289cf
40e6de:	8b 47 28             	mov    0x28(%edi),%eax
40e6e1:	8b b5 d0 fb ff ff    	mov    -0x430(%ebp),%esi
40e6e7:	85 c0                	test   %eax,%eax
40e6e9:	0f 85 71 9f 01 00    	jne    0x428660
40e6ef:	85 f6                	test   %esi,%esi
40e6f1:	74 12                	je     0x40e705
40e6f3:	56                   	push   %esi
40e6f4:	ff 15 10 30 45 00    	call   *0x453010
40e6fa:	89 47 28             	mov    %eax,0x28(%edi)
40e6fd:	85 c0                	test   %eax,%eax
40e6ff:	0f 84 6e 9f 01 00    	je     0x428673
40e705:	8b 47 30             	mov    0x30(%edi),%eax
40e708:	85 c0                	test   %eax,%eax
40e70a:	0f 85 6d 9f 01 00    	jne    0x42867d
40e710:	8b 85 98 fb ff ff    	mov    -0x468(%ebp),%eax
40e716:	85 c0                	test   %eax,%eax
40e718:	74 12                	je     0x40e72c
40e71a:	50                   	push   %eax
40e71b:	ff 15 10 30 45 00    	call   *0x453010
40e721:	89 47 30             	mov    %eax,0x30(%edi)
40e724:	85 c0                	test   %eax,%eax
40e726:	0f 84 64 9f 01 00    	je     0x428690
40e72c:	56                   	push   %esi
40e72d:	68 44 6a 40 00       	push   $0x406a44
40e732:	8d 85 b0 fb ff ff    	lea    -0x450(%ebp),%eax
40e738:	c7 85 b0 fb ff ff 00 	movl   $0x0,-0x450(%ebp)
40e73f:	00 00 00
40e742:	50                   	push   %eax
40e743:	6a 02                	push   $0x2
40e745:	e8 46 10 00 00       	call   0x40f790
40e74a:	8b d8                	mov    %eax,%ebx
40e74c:	83 c4 10             	add    $0x10,%esp
40e74f:	85 db                	test   %ebx,%ebx
40e751:	0f 88 d8 03 00 00    	js     0x40eb2f
40e757:	68 40 6a 40 00       	push   $0x406a40
40e75c:	ff b5 b0 fb ff ff    	push   -0x450(%ebp)
40e762:	8d 85 ac fb ff ff    	lea    -0x454(%ebp),%eax
40e768:	c7 87 4c 06 00 00 20 	movl   $0x20,0x64c(%edi)
40e76f:	00 00 00
40e772:	50                   	push   %eax
40e773:	6a 02                	push   $0x2
40e775:	c7 85 ac fb ff ff 00 	movl   $0x0,-0x454(%ebp)
40e77c:	00 00 00
40e77f:	e8 0c 10 00 00       	call   0x40f790
40e784:	8b d8                	mov    %eax,%ebx
40e786:	83 c4 10             	add    $0x10,%esp
40e789:	85 db                	test   %ebx,%ebx
40e78b:	0f 88 b6 02 00 00    	js     0x40ea47
40e791:	68 10 6a 40 00       	push   $0x406a10
40e796:	ff b5 ac fb ff ff    	push   -0x454(%ebp)
40e79c:	8d 85 98 fb ff ff    	lea    -0x468(%ebp),%eax
40e7a2:	c7 85 98 fb ff ff 00 	movl   $0x0,-0x468(%ebp)
40e7a9:	00 00 00
40e7ac:	50                   	push   %eax
40e7ad:	6a 02                	push   $0x2
40e7af:	e8 dc 0f 00 00       	call   0x40f790
40e7b4:	8b d8                	mov    %eax,%ebx
40e7b6:	83 c4 10             	add    $0x10,%esp
40e7b9:	85 db                	test   %ebx,%ebx
40e7bb:	0f 88 7a 02 00 00    	js     0x40ea3b
40e7c1:	83 bf 4c 06 00 00 20 	cmpl   $0x20,0x64c(%edi)
40e7c8:	0f 85 cc 9e 01 00    	jne    0x42869a
40e7ce:	b8 19 02 02 00       	mov    $0x20219,%eax
40e7d3:	8d 8d 90 fb ff ff    	lea    -0x470(%ebp),%ecx
40e7d9:	51                   	push   %ecx
40e7da:	50                   	push   %eax
40e7db:	6a 00                	push   $0x0
40e7dd:	ff b5 98 fb ff ff    	push   -0x468(%ebp)
40e7e3:	68 00 00 00 80       	push   $0x80000000
40e7e8:	ff 15 10 11 45 00    	call   *0x451110
40e7ee:	85 c0                	test   %eax,%eax
40e7f0:	0f 85 c8 01 00 00    	jne    0x40e9be
40e7f6:	8d 85 68 fb ff ff    	lea    -0x498(%ebp),%eax
40e7fc:	c7 47 18 01 00 00 00 	movl   $0x1,0x18(%edi)
40e803:	50                   	push   %eax
40e804:	8d 85 e8 fd ff ff    	lea    -0x218(%ebp),%eax
40e80a:	c7 85 64 fb ff ff 01 	movl   $0x1,-0x49c(%ebp)
40e811:	00 00 00
40e814:	50                   	push   %eax
40e815:	8d 85 64 fb ff ff    	lea    -0x49c(%ebp),%eax
40e81b:	c7 85 68 fb ff ff 08 	movl   $0x208,-0x498(%ebp)
40e822:	02 00 00
40e825:	50                   	push   %eax
40e826:	6a 00                	push   $0x0
40e828:	68 f0 69 40 00       	push   $0x4069f0
40e82d:	ff b5 90 fb ff ff    	push   -0x470(%ebp)
40e833:	ff 15 0c 11 45 00    	call   *0x45110c
40e839:	85 c0                	test   %eax,%eax
40e83b:	0f 85 82 a0 01 00    	jne    0x4288c3
40e841:	33 f6                	xor    %esi,%esi
40e843:	0f b7 84 35 e8 fd ff 	movzwl -0x218(%ebp,%esi,1),%eax
40e84a:	ff
40e84b:	66 85 c0             	test   %ax,%ax
40e84e:	0f 84 50 9e 01 00    	je     0x4286a4
40e854:	8b c8                	mov    %eax,%ecx
40e856:	83 f9 7f             	cmp    $0x7f,%ecx
40e859:	0f 87 66 9e 01 00    	ja     0x4286c5
40e85f:	8d 41 bf             	lea    -0x41(%ecx),%eax
40e862:	66 83 f8 19          	cmp    $0x19,%ax
40e866:	0f 87 52 9e 01 00    	ja     0x4286be
40e86c:	8d 41 20             	lea    0x20(%ecx),%eax
40e86f:	0f b7 d8             	movzwl %ax,%ebx
40e872:	0f b7 8e d8 7b 40 00 	movzwl 0x407bd8(%esi),%ecx
40e879:	83 f9 7f             	cmp    $0x7f,%ecx
40e87c:	0f 87 89 9e 01 00    	ja     0x42870b
40e882:	8d 41 bf             	lea    -0x41(%ecx),%eax
40e885:	66 83 f8 19          	cmp    $0x19,%ax
40e889:	0f 86 77 9e 01 00    	jbe    0x428706
40e88f:	8b c1                	mov    %ecx,%eax
40e891:	0f b7 c0             	movzwl %ax,%eax
40e894:	0f b7 cb             	movzwl %bx,%ecx
40e897:	2b c8                	sub    %eax,%ecx
40e899:	0f 84 ac 9e 01 00    	je     0x42874b
40e89f:	33 f6                	xor    %esi,%esi
40e8a1:	0f b7 84 35 e8 fd ff 	movzwl -0x218(%ebp,%esi,1),%eax
40e8a8:	ff
40e8a9:	66 85 c0             	test   %ax,%ax
40e8ac:	74 63                	je     0x40e911
40e8ae:	8b c8                	mov    %eax,%ecx
40e8b0:	83 f9 7f             	cmp    $0x7f,%ecx
40e8b3:	0f 87 9a 9e 01 00    	ja     0x428753
40e8b9:	8d 41 bf             	lea    -0x41(%ecx),%eax
40e8bc:	66 83 f8 19          	cmp    $0x19,%ax
40e8c0:	0f 86 88 0d 00 00    	jbe    0x40f64e
40e8c6:	8b f9                	mov    %ecx,%edi
40e8c8:	0f b7 8e ec 7b 40 00 	movzwl 0x407bec(%esi),%ecx
40e8cf:	83 f9 7f             	cmp    $0x7f,%ecx
40e8d2:	0f 87 c1 9e 01 00    	ja     0x428799
40e8d8:	8d 41 bf             	lea    -0x41(%ecx),%eax
40e8db:	66 83 f8 19          	cmp    $0x19,%ax
40e8df:	0f 86 af 9e 01 00    	jbe    0x428794
40e8e5:	8b c1                	mov    %ecx,%eax
40e8e7:	0f b7 c0             	movzwl %ax,%eax
40e8ea:	0f b7 cf             	movzwl %di,%ecx
40e8ed:	2b c8                	sub    %eax,%ecx
40e8ef:	75 2c                	jne    0x40e91d
40e8f1:	83 c6 02             	add    $0x2,%esi
40e8f4:	eb ab                	jmp    0x40e8a1
40e8f6:	66 89 01             	mov    %ax,(%ecx)
40e8f9:	4e                   	dec    %esi
40e8fa:	8b 85 bc fb ff ff    	mov    -0x444(%ebp),%eax
40e900:	83 c1 02             	add    $0x2,%ecx
40e903:	83 ea 01             	sub    $0x1,%edx
40e906:	0f 85 74 fa ff ff    	jne    0x40e380
40e90c:	e9 83 9c 01 00       	jmp    0x428594
40e911:	66 83 be ec 7b 40 00 	cmpw   $0x0,0x407bec(%esi)
40e918:	00
40e919:	75 93                	jne    0x40e8ae
40e91b:	33 c9                	xor    %ecx,%ecx
40e91d:	85 c9                	test   %ecx,%ecx
40e91f:	0f 85 b4 9e 01 00    	jne    0x4287d9
40e925:	8b bd c0 fb ff ff    	mov    -0x440(%ebp),%edi
40e92b:	c7 47 10 01 00 00 00 	movl   $0x1,0x10(%edi)
40e932:	8d 85 60 fb ff ff    	lea    -0x4a0(%ebp),%eax
40e938:	c7 85 5c fb ff ff 01 	movl   $0x1,-0x4a4(%ebp)
40e93f:	00 00 00
40e942:	50                   	push   %eax
40e943:	8d 85 e0 fb ff ff    	lea    -0x420(%ebp),%eax
40e949:	c7 85 60 fb ff ff 08 	movl   $0x208,-0x4a0(%ebp)
40e950:	02 00 00
40e953:	50                   	push   %eax
40e954:	8d 85 5c fb ff ff    	lea    -0x4a4(%ebp),%eax
40e95a:	50                   	push   %eax
40e95b:	6a 00                	push   $0x0
40e95d:	68 d0 69 40 00       	push   $0x4069d0
40e962:	ff b5 90 fb ff ff    	push   -0x470(%ebp)
40e968:	ff 15 0c 11 45 00    	call   *0x45110c
40e96e:	85 c0                	test   %eax,%eax
40e970:	0f 84 b0 9e 01 00    	je     0x428826
40e976:	33 db                	xor    %ebx,%ebx
40e978:	8d 85 8c fb ff ff    	lea    -0x474(%ebp),%eax