40a424:	e8 1f df ff ff       	call   0x408348
40a429:	8b 55 bc             	mov    -0x44(%ebp),%edx
40a42c:	83 c4 10             	add    $0x10,%esp
40a42f:	85 d2                	test   %edx,%edx
40a431:	74 28                	je     0x40a45b
40a433:	33 c0                	xor    %eax,%eax
40a435:	66 39 02             	cmp    %ax,(%edx)
40a438:	74 21                	je     0x40a45b
40a43a:	8b ca                	mov    %edx,%ecx
40a43c:	8d 41 02             	lea    0x2(%ecx),%eax
40a43f:	89 45 c4             	mov    %eax,-0x3c(%ebp)
40a442:	66 8b 01             	mov    (%ecx),%ax
40a445:	83 c1 02             	add    $0x2,%ecx
40a448:	66 3b 45 ac          	cmp    -0x54(%ebp),%ax
40a44c:	75 f4                	jne    0x40a442
40a44e:	2b 4d c4             	sub    -0x3c(%ebp),%ecx
40a451:	d1 f9                	sar    $1,%ecx
40a453:	66 83 7c 4a fe 0a    	cmpw   $0xa,-0x2(%edx,%ecx,2)
40a459:	74 0d                	je     0x40a468
40a45b:	68 90 2e 40 00       	push   $0x402e90
40a460:	53                   	push   %ebx
40a461:	e8 e2 de ff ff       	call   0x408348
40a466:	59                   	pop    %ecx
40a467:	59                   	pop    %ecx
40a468:	33 c0                	xor    %eax,%eax
40a46a:	57                   	push   %edi
40a46b:	88 45 fc             	mov    %al,-0x4(%ebp)
40a46e:	ff 15 a8 20 41 00    	call   *0x4120a8
40a474:	eb 54                	jmp    0x40a4ca
40a476:	8b 07                	mov    (%edi),%eax
40a478:	85 c0                	test   %eax,%eax
40a47a:	75 05                	jne    0x40a481
40a47c:	b8 7c 24 40 00       	mov    $0x40247c,%eax
40a481:	50                   	push   %eax
40a482:	ff 75 cc             	push   -0x34(%ebp)
40a485:	68 fc 3d 40 00       	push   $0x403dfc
40a48a:	53                   	push   %ebx
40a48b:	e8 b8 de ff ff       	call   0x408348
40a490:	8b 17                	mov    (%edi),%edx
40a492:	83 c4 10             	add    $0x10,%esp
40a495:	85 d2                	test   %edx,%edx
40a497:	74 24                	je     0x40a4bd
40a499:	33 c0                	xor    %eax,%eax
40a49b:	66 39 02             	cmp    %ax,(%edx)
40a49e:	74 1d                	je     0x40a4bd
40a4a0:	8b ca                	mov    %edx,%ecx
40a4a2:	8d 79 02             	lea    0x2(%ecx),%edi
40a4a5:	66 8b 01             	mov    (%ecx),%ax
40a4a8:	83 c1 02             	add    $0x2,%ecx
40a4ab:	66 3b 45 ac          	cmp    -0x54(%ebp),%ax
40a4af:	75 f4                	jne    0x40a4a5
40a4b1:	2b cf                	sub    %edi,%ecx
40a4b3:	d1 f9                	sar    $1,%ecx
40a4b5:	66 83 7c 4a fe 0a    	cmpw   $0xa,-0x2(%edx,%ecx,2)
40a4bb:	74 0d                	je     0x40a4ca
40a4bd:	68 90 2e 40 00       	push   $0x402e90
40a4c2:	53                   	push   %ebx
40a4c3:	e8 80 de ff ff       	call   0x408348
40a4c8:	59                   	pop    %ecx
40a4c9:	59                   	pop    %ecx
40a4ca:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
40a4ce:	72 04                	jb     0x40a4d4
40a4d0:	8b 0e                	mov    (%esi),%ecx
40a4d2:	eb 02                	jmp    0x40a4d6
40a4d4:	8b ce                	mov    %esi,%ecx
40a4d6:	8d 45 d0             	lea    -0x30(%ebp),%eax
40a4d9:	50                   	push   %eax
40a4da:	8d 45 b0             	lea    -0x50(%ebp),%eax
40a4dd:	50                   	push   %eax
40a4de:	51                   	push   %ecx
40a4df:	ff 75 c8             	push   -0x38(%ebp)
40a4e2:	6a 03                	push   $0x3
40a4e4:	5a                   	pop    %edx
40a4e5:	e8 ad dc ff ff       	call   0x408197
40a4ea:	85 c0                	test   %eax,%eax
40a4ec:	74 0a                	je     0x40a4f8
40a4ee:	68 24 3e 40 00       	push   $0x403e24
40a4f3:	e9 dd 01 00 00       	jmp    0x40a6d5
40a4f8:	8b 55 d0             	mov    -0x30(%ebp),%edx
40a4fb:	8b 42 0c             	mov    0xc(%edx),%eax
40a4fe:	83 f8 03             	cmp    $0x3,%eax
40a501:	74 0e                	je     0x40a511
40a503:	85 c0                	test   %eax,%eax
40a505:	74 0a                	je     0x40a511
40a507:	68 24 3e 40 00       	push   $0x403e24
40a50c:	e9 5d fe ff ff       	jmp    0x40a36e
40a511:	83 7d a8 00          	cmpl   $0x0,-0x58(%ebp)
40a515:	74 5f                	je     0x40a576
40a517:	85 c0                	test   %eax,%eax
40a519:	74 5b                	je     0x40a576
40a51b:	8b 42 04             	mov    0x4(%edx),%eax
40a51e:	8b 0a                	mov    (%edx),%ecx
40a520:	89 45 c4             	mov    %eax,-0x3c(%ebp)
40a523:	33 c0                	xor    %eax,%eax
40a525:	89 4d c0             	mov    %ecx,-0x40(%ebp)
40a528:	c7 45 e8 07 00 00 00 	movl   $0x7,-0x18(%ebp)
40a52f:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40a532:	66 89 45 d4          	mov    %ax,-0x2c(%ebp)
40a536:	8d 55 d4             	lea    -0x2c(%ebp),%edx
40a539:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
40a53d:	8d 4d c0             	lea    -0x40(%ebp),%ecx
40a540:	e8 b6 38 00 00       	call   0x40ddfb
40a545:	83 7d e8 08          	cmpl   $0x8,-0x18(%ebp)
40a549:	8b 45 d4             	mov    -0x2c(%ebp),%eax
40a54c:	73 03                	jae    0x40a551
40a54e:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40a551:	8b 7d cc             	mov    -0x34(%ebp),%edi
40a554:	50                   	push   %eax
40a555:	57                   	push   %edi
40a556:	68 5c 3e 40 00       	push   $0x403e5c
40a55b:	53                   	push   %ebx
40a55c:	e8 e7 dd ff ff       	call   0x408348
40a561:	83 c4 10             	add    $0x10,%esp
40a564:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
40a567:	33 c0                	xor    %eax,%eax
40a569:	88 45 fc             	mov    %al,-0x4(%ebp)
40a56c:	50                   	push   %eax
40a56d:	6a 01                	push   $0x1
40a56f:	e8 7c bf ff ff       	call   0x4064f0
40a574:	eb 03                	jmp    0x40a579
40a576:	8b 7d cc             	mov    -0x34(%ebp),%edi
40a579:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
40a57d:	72 04                	jb     0x40a583
40a57f:	8b 0e                	mov    (%esi),%ecx
40a581:	eb 02                	jmp    0x40a585
40a583:	8b ce                	mov    %esi,%ecx
40a585:	8d 45 d0             	lea    -0x30(%ebp),%eax
40a588:	50                   	push   %eax
40a589:	8d 45 b0             	lea    -0x50(%ebp),%eax
40a58c:	50                   	push   %eax
40a58d:	51                   	push   %ecx
40a58e:	ff 75 c8             	push   -0x38(%ebp)
40a591:	6a 04                	push   $0x4
40a593:	5a                   	pop    %edx
40a594:	e8 fe db ff ff       	call   0x408197
40a599:	85 c0                	test   %eax,%eax
40a59b:	74 0a                	je     0x40a5a7
40a59d:	68 80 3e 40 00       	push   $0x403e80
40a5a2:	e9 2e 01 00 00       	jmp    0x40a6d5
40a5a7:	8b 55 d0             	mov    -0x30(%ebp),%edx
40a5aa:	8b 42 0c             	mov    0xc(%edx),%eax
40a5ad:	83 f8 03             	cmp    $0x3,%eax
40a5b0:	74 0e                	je     0x40a5c0
40a5b2:	85 c0                	test   %eax,%eax
40a5b4:	74 64                	je     0x40a61a
40a5b6:	68 80 3e 40 00       	push   $0x403e80
40a5bb:	e9 ae fd ff ff       	jmp    0x40a36e
40a5c0:	85 c0                	test   %eax,%eax
40a5c2:	74 56                	je     0x40a61a
40a5c4:	8b 42 04             	mov    0x4(%edx),%eax
40a5c7:	8b 0a                	mov    (%edx),%ecx
40a5c9:	89 45 c4             	mov    %eax,-0x3c(%ebp)
40a5cc:	33 c0                	xor    %eax,%eax
40a5ce:	89 4d c0             	mov    %ecx,-0x40(%ebp)
40a5d1:	c7 45 e8 07 00 00 00 	movl   $0x7,-0x18(%ebp)
40a5d8:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40a5db:	66 89 45 d4          	mov    %ax,-0x2c(%ebp)
40a5df:	8d 55 d4             	lea    -0x2c(%ebp),%edx
40a5e2:	c6 45 fc 03          	movb   $0x3,-0x4(%ebp)
40a5e6:	8d 4d c0             	lea    -0x40(%ebp),%ecx
40a5e9:	e8 0d 38 00 00       	call   0x40ddfb
40a5ee:	83 7d e8 08          	cmpl   $0x8,-0x18(%ebp)
40a5f2:	8b 45 d4             	mov    -0x2c(%ebp),%eax
40a5f5:	73 03                	jae    0x40a5fa
40a5f7:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40a5fa:	50                   	push   %eax
40a5fb:	57                   	push   %edi
40a5fc:	68 b8 3e 40 00       	push   $0x403eb8
40a601:	53                   	push   %ebx
40a602:	e8 41 dd ff ff       	call   0x408348
40a607:	83 c4 10             	add    $0x10,%esp
40a60a:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
40a60d:	33 c0                	xor    %eax,%eax
40a60f:	88 45 fc             	mov    %al,-0x4(%ebp)
40a612:	50                   	push   %eax
40a613:	6a 01                	push   $0x1
40a615:	e8 d6 be ff ff       	call   0x4064f0
40a61a:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
40a61e:	72 02                	jb     0x40a622
40a620:	8b 36                	mov    (%esi),%esi
40a622:	8d 45 d0             	lea    -0x30(%ebp),%eax
40a625:	50                   	push   %eax
40a626:	8d 45 b0             	lea    -0x50(%ebp),%eax
40a629:	50                   	push   %eax
40a62a:	51                   	push   %ecx
40a62b:	ff 75 c8             	push   -0x38(%ebp)
40a62e:	8b ce                	mov    %esi,%ecx
40a630:	6a 06                	push   $0x6
40a632:	5a                   	pop    %edx
40a633:	e8 5f db ff ff       	call   0x408197
40a638:	85 c0                	test   %eax,%eax
40a63a:	74 0a                	je     0x40a646
40a63c:	68 e4 3e 40 00       	push   $0x403ee4
40a641:	e9 8f 00 00 00       	jmp    0x40a6d5
40a646:	8b 55 d0             	mov    -0x30(%ebp),%edx
40a649:	8b 42 0c             	mov    0xc(%edx),%eax
40a64c:	83 f8 03             	cmp    $0x3,%eax
40a64f:	74 0e                	je     0x40a65f
40a651:	85 c0                	test   %eax,%eax
40a653:	74 61                	je     0x40a6b6
40a655:	68 e4 3e 40 00       	push   $0x403ee4
40a65a:	e9 0f fd ff ff       	jmp    0x40a36e
40a65f:	85 c0                	test   %eax,%eax
40a661:	74 53                	je     0x40a6b6
40a663:	8b 42 04             	mov    0x4(%edx),%eax
40a666:	8b 0a                	mov    (%edx),%ecx
40a668:	89 45 c4             	mov    %eax,-0x3c(%ebp)
40a66b:	33 c0                	xor    %eax,%eax
40a66d:	89 4d c0             	mov    %ecx,-0x40(%ebp)
40a670:	c7 45 e8 07 00 00 00 	movl   $0x7,-0x18(%ebp)
40a677:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40a67a:	66 89 45 d4          	mov    %ax,-0x2c(%ebp)
40a67e:	8d 55 d4             	lea    -0x2c(%ebp),%edx
40a681:	c6 45 fc 04          	movb   $0x4,-0x4(%ebp)
40a685:	8d 4d c0             	lea    -0x40(%ebp),%ecx
40a688:	e8 6e 37 00 00       	call   0x40ddfb
40a68d:	83 7d e8 08          	cmpl   $0x8,-0x18(%ebp)
40a691:	8b 45 d4             	mov    -0x2c(%ebp),%eax
40a694:	73 03                	jae    0x40a699
40a696:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40a699:	50                   	push   %eax
40a69a:	57                   	push   %edi
40a69b:	68 24 3f 40 00       	push   $0x403f24
40a6a0:	53                   	push   %ebx
40a6a1:	e8 a2 dc ff ff       	call   0x408348
40a6a6:	83 c4 10             	add    $0x10,%esp
40a6a9:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
40a6ac:	33 c0                	xor    %eax,%eax
40a6ae:	50                   	push   %eax
40a6af:	6a 01                	push   $0x1
40a6b1:	e8 3a be ff ff       	call   0x4064f0
40a6b6:	8d 4d b0             	lea    -0x50(%ebp),%ecx
40a6b9:	e8 59 b8 ff ff       	call   0x405f17
40a6be:	e8 6d 3f 00 00       	call   0x40e630
40a6c3:	c2 08 00             	ret    $0x8
40a6c6:	68 6c 3c 40 00       	push   $0x403c6c
40a6cb:	e9 9e fc ff ff       	jmp    0x40a36e
40a6d0:	68 6c 3c 40 00       	push   $0x403c6c
40a6d5:	6a 0e                	push   $0xe
40a6d7:	50                   	push   %eax
40a6d8:	e8 38 cf ff ff       	call   0x407615
40a6dd:	cc                   	int3
40a6de:	6a 14                	push   $0x14
40a6e0:	b8 f1 f0 40 00       	mov    $0x40f0f1,%eax
40a6e5:	e8 64 3f 00 00       	call   0x40e64e
40a6ea:	8b f9                	mov    %ecx,%edi
40a6ec:	33 f6                	xor    %esi,%esi
40a6ee:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40a6f1:	89 75 e8             	mov    %esi,-0x18(%ebp)
40a6f4:	89 75 ec             	mov    %esi,-0x14(%ebp)
40a6f7:	8d 4f 18             	lea    0x18(%edi),%ecx
40a6fa:	89 75 fc             	mov    %esi,-0x4(%ebp)
40a6fd:	83 79 14 08          	cmpl   $0x8,0x14(%ecx)
40a701:	72 02                	jb     0x40a705
40a703:	8b 09                	mov    (%ecx),%ecx
40a705:	8d 45 f0             	lea    -0x10(%ebp),%eax
40a708:	50                   	push   %eax
40a709:	8d 45 e4             	lea    -0x1c(%ebp),%eax
40a70c:	50                   	push   %eax
40a70d:	51                   	push   %ecx
40a70e:	56                   	push   %esi
40a70f:	6a 05                	push   $0x5
40a711:	5a                   	pop    %edx
40a712:	e8 80 da ff ff       	call   0x408197
40a717:	85 c0                	test   %eax,%eax
40a719:	75 70                	jne    0x40a78b
40a71b:	8b 45 f0             	mov    -0x10(%ebp),%eax
40a71e:	81 78 0c 84 00 00 00 	cmpl   $0x84,0xc(%eax)
40a725:	75 59                	jne    0x40a780
40a727:	8b 58 08             	mov    0x8(%eax),%ebx
40a72a:	8b 08                	mov    (%eax),%ecx
40a72c:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40a72f:	85 db                	test   %ebx,%ebx
40a731:	74 3f                	je     0x40a772
40a733:	68 58 3f 40 00       	push   $0x403f58
40a738:	57                   	push   %edi
40a739:	e8 0a dc ff ff       	call   0x408348
40a73e:	59                   	pop    %ecx
40a73f:	59                   	pop    %ecx
40a740:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40a743:	85 db                	test   %ebx,%ebx
40a745:	74 2b                	je     0x40a772
40a747:	ff 34 b1             	push   (%ecx,%esi,4)
40a74a:	68 7c 3f 40 00       	push   $0x403f7c
40a74f:	57                   	push   %edi
40a750:	e8 f3 db ff ff       	call   0x408348
40a755:	8b 45 f0             	mov    -0x10(%ebp),%eax
40a758:	83 c4 0c             	add    $0xc,%esp
40a75b:	8b cf                	mov    %edi,%ecx
40a75d:	68 8c 3f 40 00       	push   $0x403f8c
40a762:	ff 34 b0             	push   (%eax,%esi,4)
40a765:	e8 29 fb ff ff       	call   0x40a293
40a76a:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40a76d:	46                   	inc    %esi
40a76e:	3b f3                	cmp    %ebx,%esi
40a770:	72 d5                	jb     0x40a747
40a772:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
40a775:	e8 9d b7 ff ff       	call   0x405f17
40a77a:	e8 9d 3e 00 00       	call   0x40e61c
40a77f:	c3                   	ret
40a780:	68 50 2e 40 00       	push   $0x402e50
40a785:	6a 0e                	push   $0xe
40a787:	6a 0d                	push   $0xd
40a789:	eb 08                	jmp    0x40a793
40a78b:	68 50 2e 40 00       	push   $0x402e50
40a790:	6a 0e                	push   $0xe
40a792:	50                   	push   %eax
40a793:	e8 7d ce ff ff       	call   0x407615
40a798:	cc                   	int3
40a799:	cc                   	int3
40a79a:	cc                   	int3
40a79b:	cc                   	int3
40a79c:	cc                   	int3
40a79d:	cc                   	int3
40a79e:	cc                   	int3
40a79f:	cc                   	int3
40a7a0:	8b ff                	mov    %edi,%edi
40a7a2:	55                   	push   %ebp
40a7a3:	8b ec                	mov    %esp,%ebp
40a7a5:	83 e4 f8             	and    $0xfffffff8,%esp
40a7a8:	51                   	push   %ecx
40a7a9:	53                   	push   %ebx
40a7aa:	56                   	push   %esi
40a7ab:	8b f1                	mov    %ecx,%esi
40a7ad:	57                   	push   %edi
40a7ae:	8d 46 18             	lea    0x18(%esi),%eax
40a7b1:	83 78 14 08          	cmpl   $0x8,0x14(%eax)
40a7b5:	72 02                	jb     0x40a7b9
40a7b7:	8b 00                	mov    (%eax),%eax
40a7b9:	50                   	push   %eax
40a7ba:	68 94 3f 40 00       	push   $0x403f94
40a7bf:	56                   	push   %esi
40a7c0:	e8 83 db ff ff       	call   0x408348
40a7c5:	83 c4 0c             	add    $0xc,%esp
40a7c8:	8b ce                	mov    %esi,%ecx
40a7ca:	68 48 3a 40 00       	push   $0x403a48
40a7cf:	6a 00                	push   $0x0
40a7d1:	e8 bd fa ff ff       	call   0x40a293
40a7d6:	8b 7e 08             	mov    0x8(%esi),%edi
40a7d9:	6a 18                	push   $0x18
40a7db:	5a                   	pop    %edx
40a7dc:	8b 4f 14             	mov    0x14(%edi),%ecx
40a7df:	2b 4f 10             	sub    0x10(%edi),%ecx
40a7e2:	8d 41 d0             	lea    -0x30(%ecx),%eax
40a7e5:	3b c2                	cmp    %edx,%eax
40a7e7:	73 09                	jae    0x40a7f2
40a7e9:	8b ce                	mov    %esi,%ecx
40a7eb:	e8 ee fe ff ff       	call   0x40a6de
40a7f0:	eb 52                	jmp    0x40a844
40a7f2:	6a 02                	push   $0x2