40b2ee:	e8 1d fc ff ff       	call   0x40af10
40b2f3:	8b 5d d4             	mov    -0x2c(%ebp),%ebx
40b2f6:	84 c0                	test   %al,%al
40b2f8:	74 34                	je     0x40b32e
40b2fa:	83 7d ec 08          	cmpl   $0x8,-0x14(%ebp)
40b2fe:	8b 45 d8             	mov    -0x28(%ebp),%eax
40b301:	73 03                	jae    0x40b306
40b303:	8d 45 d8             	lea    -0x28(%ebp),%eax
40b306:	89 45 c4             	mov    %eax,-0x3c(%ebp)
40b309:	8d 45 c4             	lea    -0x3c(%ebp),%eax
40b30c:	50                   	push   %eax
40b30d:	6a 00                	push   $0x0
40b30f:	ff 75 1c             	push   0x1c(%ebp)
40b312:	c7 45 d0 04 00 00 00 	movl   $0x4,-0x30(%ebp)
40b319:	53                   	push   %ebx
40b31a:	ff 15 18 20 41 00    	call   *0x412018
40b320:	85 c0                	test   %eax,%eax
40b322:	75 0a                	jne    0x40b32e
40b324:	ff 15 70 20 41 00    	call   *0x412070
40b32a:	8b f0                	mov    %eax,%esi
40b32c:	eb 02                	jmp    0x40b330
40b32e:	33 f6                	xor    %esi,%esi
40b330:	6a 00                	push   $0x0
40b332:	6a 01                	push   $0x1
40b334:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40b337:	e8 b4 b1 ff ff       	call   0x4064f0
40b33c:	8b c6                	mov    %esi,%eax
40b33e:	e8 ed 32 00 00       	call   0x40e630
40b343:	c2 18 00             	ret    $0x18
40b346:	6a 50                	push   $0x50
40b348:	b8 5f f2 40 00       	mov    $0x40f25f,%eax
40b34d:	e8 2f 33 00 00       	call   0x40e681
40b352:	8b 45 08             	mov    0x8(%ebp),%eax
40b355:	33 db                	xor    %ebx,%ebx
40b357:	8b 7d 0c             	mov    0xc(%ebp),%edi
40b35a:	8b 75 10             	mov    0x10(%ebp),%esi
40b35d:	8b 55 14             	mov    0x14(%ebp),%edx
40b360:	83 65 e8 00          	andl   $0x0,-0x18(%ebp)
40b364:	89 45 b4             	mov    %eax,-0x4c(%ebp)
40b367:	8b 45 18             	mov    0x18(%ebp),%eax
40b36a:	c7 45 ec 07 00 00 00 	movl   $0x7,-0x14(%ebp)
40b371:	66 89 5d d8          	mov    %bx,-0x28(%ebp)
40b375:	21 5d fc             	and    %ebx,-0x4(%ebp)
40b378:	8d 5d d8             	lea    -0x28(%ebp),%ebx
40b37b:	53                   	push   %ebx
40b37c:	50                   	push   %eax
40b37d:	52                   	push   %edx
40b37e:	56                   	push   %esi
40b37f:	57                   	push   %edi
40b380:	e8 45 fc ff ff       	call   0x40afca
40b385:	84 c0                	test   %al,%al
40b387:	0f 84 2b 01 00 00    	je     0x40b4b8
40b38d:	8b 45 e8             	mov    -0x18(%ebp),%eax
40b390:	85 c0                	test   %eax,%eax
40b392:	0f 84 20 01 00 00    	je     0x40b4b8
40b398:	8d 34 45 02 00 00 00 	lea    0x2(,%eax,2),%esi
40b39f:	33 db                	xor    %ebx,%ebx
40b3a1:	56                   	push   %esi
40b3a2:	8d 4d b8             	lea    -0x48(%ebp),%ecx
40b3a5:	89 5d b8             	mov    %ebx,-0x48(%ebp)
40b3a8:	89 5d bc             	mov    %ebx,-0x44(%ebp)
40b3ab:	89 5d c0             	mov    %ebx,-0x40(%ebp)
40b3ae:	e8 3a c5 ff ff       	call   0x4078ed
40b3b3:	83 7d ec 08          	cmpl   $0x8,-0x14(%ebp)
40b3b7:	8b 45 d8             	mov    -0x28(%ebp),%eax
40b3ba:	73 03                	jae    0x40b3bf
40b3bc:	8d 45 d8             	lea    -0x28(%ebp),%eax
40b3bf:	56                   	push   %esi
40b3c0:	50                   	push   %eax
40b3c1:	ff 75 b8             	push   -0x48(%ebp)
40b3c4:	e8 5d 33 00 00       	call   0x40e726
40b3c9:	8b fb                	mov    %ebx,%edi
40b3cb:	89 5d cc             	mov    %ebx,-0x34(%ebp)
40b3ce:	21 7d d0             	and    %edi,-0x30(%ebp)
40b3d1:	89 7d c8             	mov    %edi,-0x38(%ebp)
40b3d4:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
40b3d8:	68 54 42 40 00       	push   $0x404254
40b3dd:	ff 75 b8             	push   -0x48(%ebp)
40b3e0:	ff 15 a4 21 41 00    	call   *0x4121a4
40b3e6:	83 c4 14             	add    $0x14,%esp
40b3e9:	89 45 d4             	mov    %eax,-0x2c(%ebp)
40b3ec:	33 f6                	xor    %esi,%esi
40b3ee:	85 c0                	test   %eax,%eax
40b3f0:	74 74                	je     0x40b466
40b3f2:	33 c9                	xor    %ecx,%ecx
40b3f4:	8d 55 d4             	lea    -0x2c(%ebp),%edx
40b3f7:	3b d6                	cmp    %esi,%edx
40b3f9:	73 2e                	jae    0x40b429
40b3fb:	3b fa                	cmp    %edx,%edi
40b3fd:	77 2a                	ja     0x40b429
40b3ff:	8b f2                	mov    %edx,%esi
40b401:	2b f7                	sub    %edi,%esi
40b403:	c1 fe 02             	sar    $0x2,%esi
40b406:	3b 4d d0             	cmp    -0x30(%ebp),%ecx
40b409:	75 0f                	jne    0x40b41a
40b40b:	51                   	push   %ecx
40b40c:	8d 4d c8             	lea    -0x38(%ebp),%ecx
40b40f:	e8 d3 16 00 00       	call   0x40cae7
40b414:	8b 5d cc             	mov    -0x34(%ebp),%ebx
40b417:	8b 7d c8             	mov    -0x38(%ebp),%edi
40b41a:	8b 04 b7             	mov    (%edi,%esi,4),%eax
40b41d:	89 03                	mov    %eax,(%ebx)
40b41f:	83 c3 04             	add    $0x4,%ebx
40b422:	8b f3                	mov    %ebx,%esi
40b424:	89 5d c4             	mov    %ebx,-0x3c(%ebp)
40b427:	eb 21                	jmp    0x40b44a
40b429:	3b 5d d0             	cmp    -0x30(%ebp),%ebx
40b42c:	75 12                	jne    0x40b440
40b42e:	51                   	push   %ecx
40b42f:	8d 4d c8             	lea    -0x38(%ebp),%ecx
40b432:	e8 b0 16 00 00       	call   0x40cae7
40b437:	8b 5d cc             	mov    -0x34(%ebp),%ebx
40b43a:	8b 7d c8             	mov    -0x38(%ebp),%edi
40b43d:	8b 45 d4             	mov    -0x2c(%ebp),%eax
40b440:	89 03                	mov    %eax,(%ebx)
40b442:	83 c3 04             	add    $0x4,%ebx
40b445:	8b f3                	mov    %ebx,%esi
40b447:	89 75 c4             	mov    %esi,-0x3c(%ebp)
40b44a:	68 54 42 40 00       	push   $0x404254
40b44f:	6a 00                	push   $0x0
40b451:	89 5d cc             	mov    %ebx,-0x34(%ebp)
40b454:	ff 15 a4 21 41 00    	call   *0x4121a4
40b45a:	89 45 d4             	mov    %eax,-0x2c(%ebp)
40b45d:	59                   	pop    %ecx
40b45e:	59                   	pop    %ecx
40b45f:	8b 4d c4             	mov    -0x3c(%ebp),%ecx
40b462:	85 c0                	test   %eax,%eax
40b464:	75 8e                	jne    0x40b3f4
40b466:	8d 45 a4             	lea    -0x5c(%ebp),%eax
40b469:	c7 45 b0 84 00 00 00 	movl   $0x84,-0x50(%ebp)
40b470:	50                   	push   %eax
40b471:	6a 00                	push   $0x0
40b473:	ff 75 1c             	push   0x1c(%ebp)
40b476:	2b f7                	sub    %edi,%esi
40b478:	89 7d a4             	mov    %edi,-0x5c(%ebp)
40b47b:	ff 75 b4             	push   -0x4c(%ebp)
40b47e:	c1 fe 02             	sar    $0x2,%esi
40b481:	89 75 ac             	mov    %esi,-0x54(%ebp)
40b484:	ff 15 18 20 41 00    	call   *0x412018
40b48a:	85 c0                	test   %eax,%eax
40b48c:	75 0a                	jne    0x40b498
40b48e:	ff 15 70 20 41 00    	call   *0x412070
40b494:	8b f0                	mov    %eax,%esi
40b496:	eb 02                	jmp    0x40b49a
40b498:	33 f6                	xor    %esi,%esi
40b49a:	85 ff                	test   %edi,%edi
40b49c:	74 08                	je     0x40b4a6
40b49e:	57                   	push   %edi
40b49f:	ff 15 e4 21 41 00    	call   *0x4121e4
40b4a5:	59                   	pop    %ecx
40b4a6:	83 7d b8 00          	cmpl   $0x0,-0x48(%ebp)
40b4aa:	74 0e                	je     0x40b4ba
40b4ac:	ff 75 b8             	push   -0x48(%ebp)
40b4af:	ff 15 e4 21 41 00    	call   *0x4121e4
40b4b5:	59                   	pop    %ecx
40b4b6:	eb 02                	jmp    0x40b4ba
40b4b8:	33 f6                	xor    %esi,%esi
40b4ba:	6a 00                	push   $0x0
40b4bc:	6a 01                	push   $0x1
40b4be:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40b4c1:	e8 2a b0 ff ff       	call   0x4064f0
40b4c6:	8b c6                	mov    %esi,%eax
40b4c8:	e8 63 31 00 00       	call   0x40e630
40b4cd:	c2 18 00             	ret    $0x18
40b4d0:	6a 4c                	push   $0x4c
40b4d2:	b8 94 f2 40 00       	mov    $0x40f294,%eax
40b4d7:	e8 a5 31 00 00       	call   0x40e681
40b4dc:	8b f9                	mov    %ecx,%edi
40b4de:	8b 45 0c             	mov    0xc(%ebp),%eax
40b4e1:	33 f6                	xor    %esi,%esi
40b4e3:	8b 5d 08             	mov    0x8(%ebp),%ebx
40b4e6:	6a 07                	push   $0x7
40b4e8:	89 45 a8             	mov    %eax,-0x58(%ebp)
40b4eb:	33 c0                	xor    %eax,%eax
40b4ed:	59                   	pop    %ecx
40b4ee:	89 4d ec             	mov    %ecx,-0x14(%ebp)
40b4f1:	89 75 e8             	mov    %esi,-0x18(%ebp)
40b4f4:	66 89 45 d8          	mov    %ax,-0x28(%ebp)
40b4f8:	89 75 fc             	mov    %esi,-0x4(%ebp)
40b4fb:	89 4d d4             	mov    %ecx,-0x2c(%ebp)
40b4fe:	89 75 d0             	mov    %esi,-0x30(%ebp)
40b501:	66 89 45 c0          	mov    %ax,-0x40(%ebp)
40b505:	8d 45 bf             	lea    -0x41(%ebp),%eax
40b508:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40b50c:	8b 4f 08             	mov    0x8(%edi),%ecx
40b50f:	50                   	push   %eax
40b510:	6a 01                	push   $0x1
40b512:	68 d4 3f 40 00       	push   $0x403fd4
40b517:	68 08 2f 40 00       	push   $0x402f08
40b51c:	e8 8a b4 ff ff       	call   0x4069ab
40b521:	80 7d bf 00          	cmpb   $0x0,-0x41(%ebp)
40b525:	74 26                	je     0x40b54d
40b527:	0f b6 c0             	movzbl %al,%eax
40b52a:	89 45 ac             	mov    %eax,-0x54(%ebp)
40b52d:	8d 45 ac             	lea    -0x54(%ebp),%eax
40b530:	50                   	push   %eax
40b531:	56                   	push   %esi
40b532:	ff 75 10             	push   0x10(%ebp)
40b535:	c7 45 b8 01 00 00 00 	movl   $0x1,-0x48(%ebp)
40b53c:	6a 03                	push   $0x3
40b53e:	53                   	push   %ebx
40b53f:	ff 15 14 20 41 00    	call   *0x412014
40b545:	85 c0                	test   %eax,%eax
40b547:	0f 84 4d 01 00 00    	je     0x40b69a
40b54d:	8b 4f 08             	mov    0x8(%edi),%ecx
40b550:	8d 45 bf             	lea    -0x41(%ebp),%eax
40b553:	50                   	push   %eax
40b554:	68 7c 24 40 00       	push   $0x40247c
40b559:	68 c4 40 40 00       	push   $0x4040c4
40b55e:	68 50 2f 40 00       	push   $0x402f50
40b563:	e8 e2 b3 ff ff       	call   0x40694a
40b568:	50                   	push   %eax
40b569:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40b56c:	e8 30 af ff ff       	call   0x4064a1
40b571:	80 7d bf 00          	cmpb   $0x0,-0x41(%ebp)
40b575:	0f 84 01 01 00 00    	je     0x40b67c
40b57b:	83 7d ec 08          	cmpl   $0x8,-0x14(%ebp)
40b57f:	8b 45 d8             	mov    -0x28(%ebp),%eax
40b582:	6a 04                	push   $0x4
40b584:	59                   	pop    %ecx
40b585:	89 4d b8             	mov    %ecx,-0x48(%ebp)
40b588:	73 03                	jae    0x40b58d
40b58a:	8d 45 d8             	lea    -0x28(%ebp),%eax
40b58d:	89 45 ac             	mov    %eax,-0x54(%ebp)
40b590:	8d 45 ac             	lea    -0x54(%ebp),%eax
40b593:	50                   	push   %eax
40b594:	56                   	push   %esi
40b595:	ff 75 10             	push   0x10(%ebp)
40b598:	51                   	push   %ecx
40b599:	53                   	push   %ebx
40b59a:	ff 15 14 20 41 00    	call   *0x412014
40b5a0:	85 c0                	test   %eax,%eax
40b5a2:	75 0a                	jne    0x40b5ae
40b5a4:	68 50 2f 40 00       	push   $0x402f50
40b5a9:	e9 f1 00 00 00       	jmp    0x40b69f
40b5ae:	83 7d e8 00          	cmpl   $0x0,-0x18(%ebp)
40b5b2:	c7 45 b8 04 00 00 00 	movl   $0x4,-0x48(%ebp)
40b5b9:	89 75 ac             	mov    %esi,-0x54(%ebp)
40b5bc:	0f 84 9e 00 00 00    	je     0x40b660
40b5c2:	8b 4f 08             	mov    0x8(%edi),%ecx
40b5c5:	8d 45 bf             	lea    -0x41(%ebp),%eax
40b5c8:	50                   	push   %eax
40b5c9:	68 7c 24 40 00       	push   $0x40247c
40b5ce:	68 e8 40 40 00       	push   $0x4040e8
40b5d3:	68 cc 40 40 00       	push   $0x4040cc
40b5d8:	e8 6d b3 ff ff       	call   0x40694a
40b5dd:	50                   	push   %eax
40b5de:	8d 4d c0             	lea    -0x40(%ebp),%ecx
40b5e1:	e8 bb ae ff ff       	call   0x4064a1
40b5e6:	80 7d bf 00          	cmpb   $0x0,-0x41(%ebp)
40b5ea:	74 54                	je     0x40b640
40b5ec:	83 7d d4 08          	cmpl   $0x8,-0x2c(%ebp)
40b5f0:	8b 4d c0             	mov    -0x40(%ebp),%ecx
40b5f3:	8b c1                	mov    %ecx,%eax
40b5f5:	73 03                	jae    0x40b5fa
40b5f7:	8d 45 c0             	lea    -0x40(%ebp),%eax
40b5fa:	ba 88 2c 40 00       	mov    $0x402c88,%edx
40b5ff:	66 8b 30             	mov    (%eax),%si
40b602:	66 3b 32             	cmp    (%edx),%si
40b605:	75 20                	jne    0x40b627
40b607:	66 85 f6             	test   %si,%si
40b60a:	74 15                	je     0x40b621
40b60c:	66 8b 70 02          	mov    0x2(%eax),%si
40b610:	66 3b 72 02          	cmp    0x2(%edx),%si
40b614:	75 11                	jne    0x40b627
40b616:	83 c0 04             	add    $0x4,%eax
40b619:	83 c2 04             	add    $0x4,%edx
40b61c:	66 85 f6             	test   %si,%si
40b61f:	75 de                	jne    0x40b5ff
40b621:	33 f6                	xor    %esi,%esi
40b623:	8b c6                	mov    %esi,%eax
40b625:	eb 07                	jmp    0x40b62e
40b627:	1b c0                	sbb    %eax,%eax
40b629:	83 c8 01             	or     $0x1,%eax
40b62c:	33 f6                	xor    %esi,%esi
40b62e:	85 c0                	test   %eax,%eax
40b630:	74 0e                	je     0x40b640
40b632:	83 7d d4 08          	cmpl   $0x8,-0x2c(%ebp)
40b636:	73 03                	jae    0x40b63b
40b638:	8d 4d c0             	lea    -0x40(%ebp),%ecx
40b63b:	89 4d ac             	mov    %ecx,-0x54(%ebp)
40b63e:	eb 20                	jmp    0x40b660
40b640:	83 7d ec 08          	cmpl   $0x8,-0x14(%ebp)
40b644:	8b 45 d8             	mov    -0x28(%ebp),%eax
40b647:	73 03                	jae    0x40b64c
40b649:	8d 45 d8             	lea    -0x28(%ebp),%eax
40b64c:	8d 77 48             	lea    0x48(%edi),%esi
40b64f:	56                   	push   %esi
40b650:	50                   	push   %eax
40b651:	ff 75 a8             	push   -0x58(%ebp)
40b654:	e8 bb 11 00 00       	call   0x40c814
40b659:	8b 06                	mov    (%esi),%eax
40b65b:	33 f6                	xor    %esi,%esi
40b65d:	89 45 ac             	mov    %eax,-0x54(%ebp)
40b660:	8d 45 ac             	lea    -0x54(%ebp),%eax
40b663:	50                   	push   %eax
40b664:	56                   	push   %esi
40b665:	ff 75 10             	push   0x10(%ebp)
40b668:	6a 05                	push   $0x5
40b66a:	53                   	push   %ebx
40b66b:	ff 15 14 20 41 00    	call   *0x412014
40b671:	85 c0                	test   %eax,%eax
40b673:	75 07                	jne    0x40b67c
40b675:	68 cc 40 40 00       	push   $0x4040cc
40b67a:	eb 23                	jmp    0x40b69f
40b67c:	56                   	push   %esi
40b67d:	6a 01                	push   $0x1
40b67f:	8d 4d c0             	lea    -0x40(%ebp),%ecx
40b682:	e8 69 ae ff ff       	call   0x4064f0
40b687:	56                   	push   %esi
40b688:	6a 01                	push   $0x1
40b68a:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40b68d:	e8 5e ae ff ff       	call   0x4064f0
40b692:	e8 99 2f 00 00       	call   0x40e630
40b697:	c2 0c 00             	ret    $0xc
40b69a:	68 08 2f 40 00       	push   $0x402f08
40b69f:	6a 0f                	push   $0xf
40b6a1:	ff 15 70 20 41 00    	call   *0x412070
40b6a7:	50                   	push   %eax
40b6a8:	e8 68 bf ff ff       	call   0x407615
40b6ad:	cc                   	int3
40b6ae:	6a 48                	push   $0x48
40b6b0:	b8 c9 f2 40 00       	mov    $0x40f2c9,%eax
40b6b5:	e8 c7 2f 00 00       	call   0x40e681
40b6ba:	89 4d bc             	mov    %ecx,-0x44(%ebp)
40b6bd:	8b 7d 08             	mov    0x8(%ebp),%edi
40b6c0:	33 db                	xor    %ebx,%ebx
40b6c2:	33 c0                	xor    %eax,%eax
40b6c4:	c7 45 ec 07 00 00 00 	movl   $0x7,-0x14(%ebp)
40b6cb:	89 5d e8             	mov    %ebx,-0x18(%ebp)
40b6ce:	66 89 45 d8          	mov    %ax,-0x28(%ebp)
40b6d2:	8d 45 d7             	lea    -0x29(%ebp),%eax
40b6d5:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40b6d8:	8b 49 08             	mov    0x8(%ecx),%ecx
40b6db:	50                   	push   %eax
40b6dc:	68 7c 24 40 00       	push   $0x40247c
40b6e1:	68 cc 3f 40 00       	push   $0x403fcc
40b6e6:	68 c0 2e 40 00       	push   $0x402ec0
40b6eb:	88 5d d7             	mov    %bl,-0x29(%ebp)
40b6ee:	e8 57 b2 ff ff       	call   0x40694a
40b6f3:	50                   	push   %eax
40b6f4:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40b6f7:	e8 a5 ad ff ff       	call   0x4064a1
40b6fc:	38 5d d7             	cmp    %bl,-0x29(%ebp)
40b6ff:	75 13                	jne    0x40b714
40b701:	53                   	push   %ebx
40b702:	6a 01                	push   $0x1
40b704:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40b707:	e8 e4 ad ff ff       	call   0x4064f0
40b70c:	e8 1f 2f 00 00       	call   0x40e630