40a45b:	51                   	push   %ecx
40a45c:	50                   	push   %eax
40a45d:	89 85 48 fe ff ff    	mov    %eax,-0x1b8(%ebp)
40a463:	8b f3                	mov    %ebx,%esi
40a465:	89 9d 58 fe ff ff    	mov    %ebx,-0x1a8(%ebp)
40a46b:	ff 15 04 60 41 00    	call   *0x416004
40a471:	85 c0                	test   %eax,%eax
40a473:	75 5f                	jne    0x40a4d4
40a475:	8b b5 58 fe ff ff    	mov    -0x1a8(%ebp),%esi
40a47b:	8d 85 60 fe ff ff    	lea    -0x1a0(%ebp),%eax
40a481:	53                   	push   %ebx
40a482:	53                   	push   %ebx
40a483:	53                   	push   %ebx
40a484:	53                   	push   %ebx
40a485:	53                   	push   %ebx
40a486:	53                   	push   %ebx
40a487:	53                   	push   %ebx
40a488:	50                   	push   %eax
40a489:	53                   	push   %ebx
40a48a:	53                   	push   %ebx
40a48b:	53                   	push   %ebx
40a48c:	56                   	push   %esi
40a48d:	ff 15 14 60 41 00    	call   *0x416014
40a493:	89 85 54 fe ff ff    	mov    %eax,-0x1ac(%ebp)
40a499:	85 f6                	test   %esi,%esi
40a49b:	74 0d                	je     0x40a4aa
40a49d:	56                   	push   %esi
40a49e:	ff 15 18 60 41 00    	call   *0x416018
40a4a4:	8b 85 54 fe ff ff    	mov    -0x1ac(%ebp),%eax
40a4aa:	8b fe                	mov    %esi,%edi
40a4ac:	f7 df                	neg    %edi
40a4ae:	1b ff                	sbb    %edi,%edi
40a4b0:	f7 d7                	not    %edi
40a4b2:	23 fe                	and    %esi,%edi
40a4b4:	8b f7                	mov    %edi,%esi
40a4b6:	85 c0                	test   %eax,%eax
40a4b8:	75 1a                	jne    0x40a4d4
40a4ba:	39 9d 60 fe ff ff    	cmp    %ebx,-0x1a0(%ebp)
40a4c0:	75 12                	jne    0x40a4d4
40a4c2:	8d 85 f4 fe ff ff    	lea    -0x10c(%ebp),%eax
40a4c8:	50                   	push   %eax
40a4c9:	8d 8d 48 fe ff ff    	lea    -0x1b8(%ebp),%ecx
40a4cf:	e8 59 a8 ff ff       	call   0x404d2d
40a4d4:	68 ec 2f 40 00       	push   $0x402fec
40a4d9:	bf 80 00 00 00       	mov    $0x80,%edi
40a4de:	8d 85 f4 fe ff ff    	lea    -0x10c(%ebp),%eax
40a4e4:	57                   	push   %edi
40a4e5:	50                   	push   %eax
40a4e6:	ff 15 b0 62 41 00    	call   *0x4162b0
40a4ec:	83 c4 0c             	add    $0xc,%esp
40a4ef:	8b c8                	mov    %eax,%ecx
40a4f1:	e8 16 a7 ff ff       	call   0x404c0c
40a4f6:	8d 85 74 fe ff ff    	lea    -0x18c(%ebp),%eax
40a4fc:	50                   	push   %eax
40a4fd:	8d 85 f4 fe ff ff    	lea    -0x10c(%ebp),%eax
40a503:	57                   	push   %edi
40a504:	50                   	push   %eax
40a505:	ff 15 ac 62 41 00    	call   *0x4162ac
40a50b:	83 c4 0c             	add    $0xc,%esp
40a50e:	8b c8                	mov    %eax,%ecx
40a510:	e8 f7 a6 ff ff       	call   0x404c0c
40a515:	68 fc 2f 40 00       	push   $0x402ffc
40a51a:	8d 85 f4 fe ff ff    	lea    -0x10c(%ebp),%eax
40a520:	57                   	push   %edi
40a521:	50                   	push   %eax
40a522:	ff 15 ac 62 41 00    	call   *0x4162ac
40a528:	83 c4 0c             	add    $0xc,%esp
40a52b:	8b c8                	mov    %eax,%ecx
40a52d:	e8 da a6 ff ff       	call   0x404c0c
40a532:	8b bd 48 fe ff ff    	mov    -0x1b8(%ebp),%edi
40a538:	8d 85 54 fe ff ff    	lea    -0x1ac(%ebp),%eax
40a53e:	50                   	push   %eax
40a53f:	68 19 00 02 00       	push   $0x20019
40a544:	53                   	push   %ebx
40a545:	8d 85 f4 fe ff ff    	lea    -0x10c(%ebp),%eax
40a54b:	89 9d 54 fe ff ff    	mov    %ebx,-0x1ac(%ebp)
40a551:	50                   	push   %eax
40a552:	57                   	push   %edi
40a553:	ff 15 04 60 41 00    	call   *0x416004
40a559:	85 c0                	test   %eax,%eax
40a55b:	75 76                	jne    0x40a5d3
40a55d:	8b c3                	mov    %ebx,%eax
40a55f:	85 f6                	test   %esi,%esi
40a561:	74 07                	je     0x40a56a
40a563:	56                   	push   %esi
40a564:	ff 15 18 60 41 00    	call   *0x416018
40a56a:	8b b5 54 fe ff ff    	mov    -0x1ac(%ebp),%esi
40a570:	85 c0                	test   %eax,%eax
40a572:	75 5f                	jne    0x40a5d3
40a574:	53                   	push   %ebx
40a575:	53                   	push   %ebx
40a576:	53                   	push   %ebx
40a577:	53                   	push   %ebx
40a578:	53                   	push   %ebx
40a579:	53                   	push   %ebx
40a57a:	53                   	push   %ebx
40a57b:	8d 85 60 fe ff ff    	lea    -0x1a0(%ebp),%eax
40a581:	50                   	push   %eax
40a582:	53                   	push   %ebx
40a583:	53                   	push   %ebx
40a584:	53                   	push   %ebx
40a585:	56                   	push   %esi
40a586:	ff 15 14 60 41 00    	call   *0x416014
40a58c:	89 85 44 fe ff ff    	mov    %eax,-0x1bc(%ebp)
40a592:	85 f6                	test   %esi,%esi
40a594:	74 0d                	je     0x40a5a3
40a596:	56                   	push   %esi
40a597:	ff 15 18 60 41 00    	call   *0x416018
40a59d:	8b 85 44 fe ff ff    	mov    -0x1bc(%ebp),%eax
40a5a3:	8b fe                	mov    %esi,%edi
40a5a5:	f7 df                	neg    %edi
40a5a7:	1b ff                	sbb    %edi,%edi
40a5a9:	f7 d7                	not    %edi
40a5ab:	23 fe                	and    %esi,%edi
40a5ad:	8b f7                	mov    %edi,%esi
40a5af:	85 c0                	test   %eax,%eax
40a5b1:	75 1a                	jne    0x40a5cd
40a5b3:	39 9d 60 fe ff ff    	cmp    %ebx,-0x1a0(%ebp)
40a5b9:	75 12                	jne    0x40a5cd
40a5bb:	8d 85 f4 fe ff ff    	lea    -0x10c(%ebp),%eax
40a5c1:	50                   	push   %eax
40a5c2:	8d 8d 48 fe ff ff    	lea    -0x1b8(%ebp),%ecx
40a5c8:	e8 60 a7 ff ff       	call   0x404d2d
40a5cd:	8b bd 48 fe ff ff    	mov    -0x1b8(%ebp),%edi
40a5d3:	85 f6                	test   %esi,%esi
40a5d5:	74 07                	je     0x40a5de
40a5d7:	56                   	push   %esi
40a5d8:	ff 15 18 60 41 00    	call   *0x416018
40a5de:	85 ff                	test   %edi,%edi
40a5e0:	74 07                	je     0x40a5e9
40a5e2:	57                   	push   %edi
40a5e3:	ff 15 18 60 41 00    	call   *0x416018
40a5e9:	8d 8d 40 fe ff ff    	lea    -0x1c0(%ebp),%ecx
40a5ef:	e8 c9 d1 ff ff       	call   0x4077bd
40a5f4:	8b b5 5c fe ff ff    	mov    -0x1a4(%ebp),%esi
40a5fa:	e9 f3 fc ff ff       	jmp    0x40a2f2
40a5ff:	8b ff                	mov    %edi,%edi
40a601:	55                   	push   %ebp
40a602:	8b ec                	mov    %esp,%ebp
40a604:	81 ec 38 02 00 00    	sub    $0x238,%esp
40a60a:	a1 f4 51 41 00       	mov    0x4151f4,%eax
40a60f:	33 c5                	xor    %ebp,%eax
40a611:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a614:	8b 45 08             	mov    0x8(%ebp),%eax
40a617:	89 85 cc fd ff ff    	mov    %eax,-0x234(%ebp)
40a61d:	56                   	push   %esi
40a61e:	8b 75 0c             	mov    0xc(%ebp),%esi
40a621:	89 b5 d0 fd ff ff    	mov    %esi,-0x230(%ebp)
40a627:	85 c0                	test   %eax,%eax
40a629:	0f 84 2a 01 00 00    	je     0x40a759
40a62f:	85 f6                	test   %esi,%esi
40a631:	0f 84 22 01 00 00    	je     0x40a759
40a637:	53                   	push   %ebx
40a638:	57                   	push   %edi
40a639:	33 ff                	xor    %edi,%edi
40a63b:	bb 04 01 00 00       	mov    $0x104,%ebx
40a640:	89 38                	mov    %edi,(%eax)
40a642:	8d 85 d4 fd ff ff    	lea    -0x22c(%ebp),%eax
40a648:	53                   	push   %ebx
40a649:	50                   	push   %eax
40a64a:	51                   	push   %ecx
40a64b:	89 3e                	mov    %edi,(%esi)
40a64d:	89 bd c8 fd ff ff    	mov    %edi,-0x238(%ebp)
40a653:	ff 15 60 61 41 00    	call   *0x416160
40a659:	85 c0                	test   %eax,%eax
40a65b:	75 0c                	jne    0x40a669
40a65d:	e8 2e a6 ff ff       	call   0x404c90
40a662:	8b f0                	mov    %eax,%esi
40a664:	e9 df 00 00 00       	jmp    0x40a748
40a669:	3b c3                	cmp    %ebx,%eax
40a66b:	75 0a                	jne    0x40a677
40a66d:	be 7a 00 07 80       	mov    $0x8007007a,%esi
40a672:	e9 d1 00 00 00       	jmp    0x40a748
40a677:	66 8b 8d d4 fd ff ff 	mov    -0x22c(%ebp),%cx
40a67e:	8d 85 d4 fd ff ff    	lea    -0x22c(%ebp),%eax
40a684:	8b df                	mov    %edi,%ebx
40a686:	66 85 c9             	test   %cx,%cx
40a689:	74 2a                	je     0x40a6b5
40a68b:	0f b7 d1             	movzwl %cx,%edx
40a68e:	66 83 fa 2e          	cmp    $0x2e,%dx
40a692:	74 0a                	je     0x40a69e
40a694:	66 83 fa 5c          	cmp    $0x5c,%dx
40a698:	75 06                	jne    0x40a6a0
40a69a:	8b df                	mov    %edi,%ebx
40a69c:	eb 02                	jmp    0x40a6a0
40a69e:	8b d8                	mov    %eax,%ebx
40a6a0:	50                   	push   %eax
40a6a1:	ff 15 f0 61 41 00    	call   *0x4161f0
40a6a7:	0f b7 08             	movzwl (%eax),%ecx
40a6aa:	8b d1                	mov    %ecx,%edx
40a6ac:	66 85 c9             	test   %cx,%cx
40a6af:	75 dd                	jne    0x40a68e
40a6b1:	85 db                	test   %ebx,%ebx
40a6b3:	75 02                	jne    0x40a6b7
40a6b5:	8b d8                	mov    %eax,%ebx
40a6b7:	56                   	push   %esi
40a6b8:	8d 85 d4 fd ff ff    	lea    -0x22c(%ebp),%eax
40a6be:	50                   	push   %eax
40a6bf:	ff 15 b4 61 41 00    	call   *0x4161b4
40a6c5:	8b f0                	mov    %eax,%esi
40a6c7:	85 f6                	test   %esi,%esi
40a6c9:	79 5f                	jns    0x40a72a
40a6cb:	be 2c 30 40 00       	mov    $0x40302c,%esi
40a6d0:	8d 85 d4 fd ff ff    	lea    -0x22c(%ebp),%eax
40a6d6:	8d 7d f0             	lea    -0x10(%ebp),%edi
40a6d9:	8b cb                	mov    %ebx,%ecx
40a6db:	2b c8                	sub    %eax,%ecx
40a6dd:	d1 f9                	sar    $1,%ecx
40a6df:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40a6e0:	8d 41 05             	lea    0x5(%ecx),%eax
40a6e3:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40a6e4:	66 a5                	movsw  %ds:(%esi),%es:(%edi)
40a6e6:	3d 04 01 00 00       	cmp    $0x104,%eax
40a6eb:	76 07                	jbe    0x40a6f4
40a6ed:	be 05 40 00 80       	mov    $0x80004005,%esi
40a6f2:	eb 54                	jmp    0x40a748
40a6f4:	8d 45 f0             	lea    -0x10(%ebp),%eax
40a6f7:	50                   	push   %eax
40a6f8:	b8 0e 01 00 00       	mov    $0x10e,%eax
40a6fd:	2b c1                	sub    %ecx,%eax
40a6ff:	50                   	push   %eax
40a700:	53                   	push   %ebx
40a701:	ff 15 b0 62 41 00    	call   *0x4162b0
40a707:	83 c4 0c             	add    $0xc,%esp
40a70a:	8b c8                	mov    %eax,%ecx
40a70c:	e8 fb a4 ff ff       	call   0x404c0c
40a711:	ff b5 d0 fd ff ff    	push   -0x230(%ebp)
40a717:	8d 85 d4 fd ff ff    	lea    -0x22c(%ebp),%eax
40a71d:	50                   	push   %eax
40a71e:	ff 15 b4 61 41 00    	call   *0x4161b4
40a724:	8b f0                	mov    %eax,%esi
40a726:	85 f6                	test   %esi,%esi
40a728:	78 1e                	js     0x40a748
40a72a:	8d 85 d4 fd ff ff    	lea    -0x22c(%ebp),%eax
40a730:	50                   	push   %eax
40a731:	ff 15 a4 61 41 00    	call   *0x4161a4
40a737:	8b 8d cc fd ff ff    	mov    -0x234(%ebp),%ecx
40a73d:	89 01                	mov    %eax,(%ecx)
40a73f:	85 c0                	test   %eax,%eax
40a741:	75 05                	jne    0x40a748
40a743:	be 0e 00 07 80       	mov    $0x8007000e,%esi
40a748:	8d 8d c8 fd ff ff    	lea    -0x238(%ebp),%ecx
40a74e:	e8 6a d0 ff ff       	call   0x4077bd
40a753:	5f                   	pop    %edi
40a754:	8b c6                	mov    %esi,%eax
40a756:	5b                   	pop    %ebx
40a757:	eb 05                	jmp    0x40a75e
40a759:	b8 03 40 00 80       	mov    $0x80004003,%eax
40a75e:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40a761:	33 cd                	xor    %ebp,%ecx
40a763:	5e                   	pop    %esi
40a764:	e8 87 78 00 00       	call   0x411ff0
40a769:	c9                   	leave
40a76a:	c2 08 00             	ret    $0x8
40a76d:	8b ff                	mov    %edi,%edi
40a76f:	55                   	push   %ebp
40a770:	8b ec                	mov    %esp,%ebp
40a772:	83 ec 0c             	sub    $0xc,%esp
40a775:	83 65 f4 00          	andl   $0x0,-0xc(%ebp)
40a779:	8d 45 fc             	lea    -0x4(%ebp),%eax
40a77c:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40a780:	56                   	push   %esi
40a781:	57                   	push   %edi
40a782:	50                   	push   %eax
40a783:	8d 45 f4             	lea    -0xc(%ebp),%eax
40a786:	50                   	push   %eax
40a787:	e8 73 fe ff ff       	call   0x40a5ff
40a78c:	8b f8                	mov    %eax,%edi
40a78e:	85 ff                	test   %edi,%edi
40a790:	78 4f                	js     0x40a7e1
40a792:	8b 45 fc             	mov    -0x4(%ebp),%eax
40a795:	8d 55 f8             	lea    -0x8(%ebp),%edx
40a798:	52                   	push   %edx
40a799:	50                   	push   %eax
40a79a:	8b 08                	mov    (%eax),%ecx
40a79c:	8b 71 1c             	mov    0x1c(%ecx),%esi
40a79f:	8b ce                	mov    %esi,%ecx
40a7a1:	ff 15 28 63 41 00    	call   *0x416328
40a7a7:	ff d6                	call   *%esi
40a7a9:	8b f8                	mov    %eax,%edi
40a7ab:	85 ff                	test   %edi,%edi
40a7ad:	78 32                	js     0x40a7e1
40a7af:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40a7b2:	ff 71 14             	push   0x14(%ecx)
40a7b5:	0f b7 41 1a          	movzwl 0x1a(%ecx),%eax
40a7b9:	ff 71 10             	push   0x10(%ecx)
40a7bc:	50                   	push   %eax
40a7bd:	0f b7 41 18          	movzwl 0x18(%ecx),%eax
40a7c1:	50                   	push   %eax
40a7c2:	51                   	push   %ecx
40a7c3:	ff 15 a0 61 41 00    	call   *0x4161a0
40a7c9:	ff 75 f8             	push   -0x8(%ebp)
40a7cc:	8b f8                	mov    %eax,%edi
40a7ce:	8b 45 fc             	mov    -0x4(%ebp),%eax
40a7d1:	50                   	push   %eax
40a7d2:	8b 08                	mov    (%eax),%ecx
40a7d4:	8b 71 30             	mov    0x30(%ecx),%esi
40a7d7:	8b ce                	mov    %esi,%ecx
40a7d9:	ff 15 28 63 41 00    	call   *0x416328
40a7df:	ff d6                	call   *%esi
40a7e1:	8b 45 fc             	mov    -0x4(%ebp),%eax
40a7e4:	85 c0                	test   %eax,%eax
40a7e6:	74 10                	je     0x40a7f8
40a7e8:	8b 08                	mov    (%eax),%ecx
40a7ea:	50                   	push   %eax
40a7eb:	8b 71 08             	mov    0x8(%ecx),%esi
40a7ee:	8b ce                	mov    %esi,%ecx
40a7f0:	ff 15 28 63 41 00    	call   *0x416328
40a7f6:	ff d6                	call   *%esi
40a7f8:	ff 75 f4             	push   -0xc(%ebp)
40a7fb:	ff 15 b8 61 41 00    	call   *0x4161b8
40a801:	8b c7                	mov    %edi,%eax
40a803:	5f                   	pop    %edi
40a804:	5e                   	pop    %esi
40a805:	c9                   	leave
40a806:	c3                   	ret
40a807:	8b 0d 20 51 41 00    	mov    0x415120,%ecx
40a80d:	33 c0                	xor    %eax,%eax
40a80f:	53                   	push   %ebx
40a810:	56                   	push   %esi
40a811:	57                   	push   %edi
40a812:	8b 3d 1c 51 41 00    	mov    0x41511c,%edi
40a818:	3b f9                	cmp    %ecx,%edi
40a81a:	73 46                	jae    0x40a862
40a81c:	8b 1f                	mov    (%edi),%ebx
40a81e:	85 db                	test   %ebx,%ebx
40a820:	74 35                	je     0x40a857
40a822:	8b 73 1c             	mov    0x1c(%ebx),%esi
40a825:	8b ce                	mov    %esi,%ecx
40a827:	6a 00                	push   $0x0
40a829:	ff 15 28 63 41 00    	call   *0x416328
40a82f:	ff d6                	call   *%esi
40a831:	8b 0b                	mov    (%ebx),%ecx
40a833:	8b d0                	mov    %eax,%edx
40a835:	e8 48 fa ff ff       	call   0x40a282
40a83a:	85 c0                	test   %eax,%eax
40a83c:	78 2f                	js     0x40a86d
40a83e:	8b 73 04             	mov    0x4(%ebx),%esi
40a841:	8b ce                	mov    %esi,%ecx
40a843:	6a 00                	push   $0x0
40a845:	ff 15 28 63 41 00    	call   *0x416328
40a84b:	ff d6                	call   *%esi
40a84d:	85 c0                	test   %eax,%eax
40a84f:	78 1c                	js     0x40a86d
40a851:	8b 0d 20 51 41 00    	mov    0x415120,%ecx
40a857:	83 c7 04             	add    $0x4,%edi
40a85a:	3b f9                	cmp    %ecx,%edi
40a85c:	72 be                	jb     0x40a81c
40a85e:	85 c0                	test   %eax,%eax
40a860:	78 0b                	js     0x40a86d