40d40f:	8b 4d 14             	mov    0x14(%ebp),%ecx
40d412:	56                   	push   %esi
40d413:	6a 02                	push   $0x2
40d415:	5e                   	pop    %esi
40d416:	85 d2                	test   %edx,%edx
40d418:	74 0d                	je     0x40d427
40d41a:	3b ce                	cmp    %esi,%ecx
40d41c:	74 05                	je     0x40d423
40d41e:	83 f9 03             	cmp    $0x3,%ecx
40d421:	75 04                	jne    0x40d427
40d423:	33 c9                	xor    %ecx,%ecx
40d425:	eb 0e                	jmp    0x40d435
40d427:	8b 45 08             	mov    0x8(%ebp),%eax
40d42a:	83 78 34 00          	cmpl   $0x0,0x34(%eax)
40d42e:	7d 05                	jge    0x40d435
40d430:	85 d2                	test   %edx,%edx
40d432:	0f 44 ce             	cmove  %esi,%ecx
40d435:	51                   	push   %ecx
40d436:	ff 75 10             	push   0x10(%ebp)
40d439:	e8 cd fd ff ff       	call   0x40d20b
40d43e:	5e                   	pop    %esi
40d43f:	5d                   	pop    %ebp
40d440:	c2 10 00             	ret    $0x10
40d443:	55                   	push   %ebp
40d444:	8b ec                	mov    %esp,%ebp
40d446:	8b 45 08             	mov    0x8(%ebp),%eax
40d449:	6a 00                	push   $0x0
40d44b:	83 c0 30             	add    $0x30,%eax
40d44e:	50                   	push   %eax
40d44f:	ff 15 f8 b1 44 00    	call   *0x44b1f8
40d455:	5d                   	pop    %ebp
40d456:	c2 04 00             	ret    $0x4
40d459:	55                   	push   %ebp
40d45a:	8b ec                	mov    %esp,%ebp
40d45c:	8b 45 08             	mov    0x8(%ebp),%eax
40d45f:	56                   	push   %esi
40d460:	8b 70 30             	mov    0x30(%eax),%esi
40d463:	f7 de                	neg    %esi
40d465:	1b f6                	sbb    %esi,%esi
40d467:	81 e6 aa 00 07 80    	and    $0x800700aa,%esi
40d46d:	83 78 30 00          	cmpl   $0x0,0x30(%eax)
40d471:	74 1d                	je     0x40d490
40d473:	56                   	push   %esi
40d474:	68 fe 00 00 00       	push   $0xfe
40d479:	68 3c ff 44 00       	push   $0x44ff3c
40d47e:	e8 50 63 ff ff       	call   0x4037d3
40d483:	68 f8 00 45 00       	push   $0x4500f8
40d488:	56                   	push   %esi
40d489:	e8 a1 2c 03 00       	call   0x44012f
40d48e:	59                   	pop    %ecx
40d48f:	59                   	pop    %ecx
40d490:	8b c6                	mov    %esi,%eax
40d492:	5e                   	pop    %esi
40d493:	5d                   	pop    %ebp
40d494:	c2 04 00             	ret    $0x4
40d497:	55                   	push   %ebp
40d498:	8b ec                	mov    %esp,%ebp
40d49a:	51                   	push   %ecx
40d49b:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40d49f:	8d 45 fc             	lea    -0x4(%ebp),%eax
40d4a2:	56                   	push   %esi
40d4a3:	50                   	push   %eax
40d4a4:	ff 75 08             	push   0x8(%ebp)
40d4a7:	e8 0b ca 00 00       	call   0x419eb7
40d4ac:	8b f0                	mov    %eax,%esi
40d4ae:	85 f6                	test   %esi,%esi
40d4b0:	79 0f                	jns    0x40d4c1
40d4b2:	68 f8 ff 44 00       	push   $0x44fff8
40d4b7:	56                   	push   %esi
40d4b8:	e8 72 2c 03 00       	call   0x44012f
40d4bd:	59                   	pop    %ecx
40d4be:	59                   	pop    %ecx
40d4bf:	eb 44                	jmp    0x40d505
40d4c1:	57                   	push   %edi
40d4c2:	8b 7d 0c             	mov    0xc(%ebp),%edi
40d4c5:	68 1c 00 45 00       	push   $0x45001c
40d4ca:	ff 75 fc             	push   -0x4(%ebp)
40d4cd:	68 24 00 45 00       	push   $0x450024
40d4d2:	57                   	push   %edi
40d4d3:	e8 48 4a ff ff       	call   0x401f20
40d4d8:	8b f0                	mov    %eax,%esi
40d4da:	83 c4 10             	add    $0x10,%esp
40d4dd:	85 f6                	test   %esi,%esi
40d4df:	79 07                	jns    0x40d4e8
40d4e1:	68 34 00 45 00       	push   $0x450034
40d4e6:	eb 14                	jmp    0x40d4fc
40d4e8:	6a 00                	push   $0x0
40d4ea:	ff 37                	push   (%edi)
40d4ec:	e8 22 6b ff ff       	call   0x404013
40d4f1:	8b f0                	mov    %eax,%esi
40d4f3:	85 f6                	test   %esi,%esi
40d4f5:	79 0d                	jns    0x40d504
40d4f7:	68 74 00 45 00       	push   $0x450074
40d4fc:	56                   	push   %esi
40d4fd:	e8 2d 2c 03 00       	call   0x44012f
40d502:	59                   	pop    %ecx
40d503:	59                   	pop    %ecx
40d504:	5f                   	pop    %edi
40d505:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
40d509:	74 08                	je     0x40d513
40d50b:	ff 75 fc             	push   -0x4(%ebp)
40d50e:	e8 dc 7f 03 00       	call   0x4454ef
40d513:	8b c6                	mov    %esi,%eax
40d515:	5e                   	pop    %esi
40d516:	8b e5                	mov    %ebp,%esp
40d518:	5d                   	pop    %ebp
40d519:	c2 08 00             	ret    $0x8
40d51c:	55                   	push   %ebp
40d51d:	8b ec                	mov    %esp,%ebp
40d51f:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40d522:	85 c9                	test   %ecx,%ecx
40d524:	79 06                	jns    0x40d52c
40d526:	8b 45 08             	mov    0x8(%ebp),%eax
40d529:	89 48 34             	mov    %ecx,0x34(%eax)
40d52c:	5d                   	pop    %ebp
40d52d:	c2 08 00             	ret    $0x8
40d530:	55                   	push   %ebp
40d531:	8b ec                	mov    %esp,%ebp
40d533:	8b 45 08             	mov    0x8(%ebp),%eax
40d536:	83 60 34 00          	andl   $0x0,0x34(%eax)
40d53a:	83 60 38 00          	andl   $0x0,0x38(%eax)
40d53e:	5d                   	pop    %ebp
40d53f:	c2 04 00             	ret    $0x4
40d542:	55                   	push   %ebp
40d543:	8b ec                	mov    %esp,%ebp
40d545:	8b 4d 08             	mov    0x8(%ebp),%ecx
40d548:	8b 41 34             	mov    0x34(%ecx),%eax
40d54b:	85 c0                	test   %eax,%eax
40d54d:	79 06                	jns    0x40d555
40d54f:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
40d553:	74 32                	je     0x40d587
40d555:	ff 75 14             	push   0x14(%ebp)
40d558:	ff 75 10             	push   0x10(%ebp)
40d55b:	ff 75 0c             	push   0xc(%ebp)
40d55e:	51                   	push   %ecx
40d55f:	e8 a5 fe ff ff       	call   0x40d409
40d564:	83 f8 01             	cmp    $0x1,%eax
40d567:	74 1c                	je     0x40d585
40d569:	85 c0                	test   %eax,%eax
40d56b:	74 18                	je     0x40d585
40d56d:	83 f8 02             	cmp    $0x2,%eax
40d570:	74 0c                	je     0x40d57e
40d572:	83 f8 03             	cmp    $0x3,%eax
40d575:	74 07                	je     0x40d57e
40d577:	b8 43 06 07 80       	mov    $0x80070643,%eax
40d57c:	eb 09                	jmp    0x40d587
40d57e:	b8 42 06 07 80       	mov    $0x80070642,%eax
40d583:	eb 02                	jmp    0x40d587
40d585:	33 c0                	xor    %eax,%eax
40d587:	5d                   	pop    %ebp
40d588:	c2 10 00             	ret    $0x10
40d58b:	55                   	push   %ebp
40d58c:	8b ec                	mov    %esp,%ebp
40d58e:	ff 75 10             	push   0x10(%ebp)
40d591:	ff 75 0c             	push   0xc(%ebp)
40d594:	e8 72 fc ff ff       	call   0x40d20b
40d599:	83 f8 01             	cmp    $0x1,%eax
40d59c:	74 1c                	je     0x40d5ba
40d59e:	85 c0                	test   %eax,%eax
40d5a0:	74 18                	je     0x40d5ba
40d5a2:	83 f8 02             	cmp    $0x2,%eax
40d5a5:	74 0c                	je     0x40d5b3
40d5a7:	83 f8 03             	cmp    $0x3,%eax
40d5aa:	74 07                	je     0x40d5b3
40d5ac:	b8 43 06 07 80       	mov    $0x80070643,%eax
40d5b1:	eb 09                	jmp    0x40d5bc
40d5b3:	b8 42 06 07 80       	mov    $0x80070642,%eax
40d5b8:	eb 02                	jmp    0x40d5bc
40d5ba:	33 c0                	xor    %eax,%eax
40d5bc:	5d                   	pop    %ebp
40d5bd:	c2 0c 00             	ret    $0xc
40d5c0:	55                   	push   %ebp
40d5c1:	8b ec                	mov    %esp,%ebp
40d5c3:	56                   	push   %esi
40d5c4:	8b 75 08             	mov    0x8(%ebp),%esi
40d5c7:	8b 46 04             	mov    0x4(%esi),%eax
40d5ca:	ff 70 50             	push   0x50(%eax)
40d5cd:	ff 15 38 b1 44 00    	call   *0x44b138
40d5d3:	89 46 0c             	mov    %eax,0xc(%esi)
40d5d6:	85 c0                	test   %eax,%eax
40d5d8:	75 32                	jne    0x40d60c
40d5da:	ff 15 e8 b0 44 00    	call   *0x44b0e8
40d5e0:	0f b7 f0             	movzwl %ax,%esi
40d5e3:	81 ce 00 00 07 80    	or     $0x80070000,%esi
40d5e9:	85 c0                	test   %eax,%eax
40d5eb:	0f 4e f0             	cmovle %eax,%esi
40d5ee:	b8 05 40 00 80       	mov    $0x80004005,%eax
40d5f3:	85 f6                	test   %esi,%esi
40d5f5:	0f 49 f0             	cmovns %eax,%esi
40d5f8:	56                   	push   %esi
40d5f9:	6a 59                	push   $0x59
40d5fb:	68 3c ff 44 00       	push   $0x44ff3c
40d600:	e8 ce 61 ff ff       	call   0x4037d3
40d605:	68 50 ff 44 00       	push   $0x44ff50
40d60a:	eb 5b                	jmp    0x40d667
40d60c:	68 68 ff 44 00       	push   $0x44ff68
40d611:	50                   	push   %eax
40d612:	ff 15 dc b0 44 00    	call   *0x44b0dc
40d618:	8b c8                	mov    %eax,%ecx
40d61a:	85 c9                	test   %ecx,%ecx
40d61c:	75 32                	jne    0x40d650
40d61e:	ff 15 e8 b0 44 00    	call   *0x44b0e8
40d624:	0f b7 f0             	movzwl %ax,%esi
40d627:	81 ce 00 00 07 80    	or     $0x80070000,%esi
40d62d:	85 c0                	test   %eax,%eax
40d62f:	0f 4e f0             	cmovle %eax,%esi
40d632:	b8 05 40 00 80       	mov    $0x80004005,%eax
40d637:	85 f6                	test   %esi,%esi
40d639:	0f 49 f0             	cmovns %eax,%esi
40d63c:	56                   	push   %esi
40d63d:	6a 5d                	push   $0x5d
40d63f:	68 3c ff 44 00       	push   $0x44ff3c
40d644:	e8 8a 61 ff ff       	call   0x4037d3
40d649:	68 88 ff 44 00       	push   $0x44ff88
40d64e:	eb 17                	jmp    0x40d667
40d650:	8d 46 10             	lea    0x10(%esi),%eax
40d653:	50                   	push   %eax
40d654:	ff 75 10             	push   0x10(%ebp)
40d657:	ff 75 0c             	push   0xc(%ebp)
40d65a:	ff d1                	call   *%ecx
40d65c:	8b f0                	mov    %eax,%esi
40d65e:	85 f6                	test   %esi,%esi
40d660:	79 0d                	jns    0x40d66f
40d662:	68 c0 ff 44 00       	push   $0x44ffc0
40d667:	56                   	push   %esi
40d668:	e8 c2 2a 03 00       	call   0x44012f
40d66d:	59                   	pop    %ecx
40d66e:	59                   	pop    %ecx
40d66f:	8b c6                	mov    %esi,%eax
40d671:	5e                   	pop    %esi
40d672:	5d                   	pop    %ebp
40d673:	c2 0c 00             	ret    $0xc
40d676:	55                   	push   %ebp
40d677:	8b ec                	mov    %esp,%ebp
40d679:	51                   	push   %ecx
40d67a:	53                   	push   %ebx
40d67b:	56                   	push   %esi
40d67c:	8d 45 fc             	lea    -0x4(%ebp),%eax
40d67f:	33 db                	xor    %ebx,%ebx
40d681:	50                   	push   %eax
40d682:	68 88 fe 44 00       	push   $0x44fe88
40d687:	ff 75 0c             	push   0xc(%ebp)
40d68a:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40d68d:	e8 f8 61 03 00       	call   0x44388a
40d692:	8b f0                	mov    %eax,%esi
40d694:	b8 90 04 07 80       	mov    $0x80070490,%eax
40d699:	83 fe 01             	cmp    $0x1,%esi
40d69c:	0f 44 f0             	cmove  %eax,%esi
40d69f:	85 f6                	test   %esi,%esi
40d6a1:	79 0f                	jns    0x40d6b2
40d6a3:	68 90 fe 44 00       	push   $0x44fe90
40d6a8:	56                   	push   %esi
40d6a9:	e8 81 2a 03 00       	call   0x44012f
40d6ae:	59                   	pop    %ecx
40d6af:	59                   	pop    %ecx
40d6b0:	eb 5a                	jmp    0x40d70c
40d6b2:	57                   	push   %edi
40d6b3:	8b 7d 08             	mov    0x8(%ebp),%edi
40d6b6:	57                   	push   %edi
40d6b7:	68 b8 fe 44 00       	push   $0x44feb8
40d6bc:	ff 75 fc             	push   -0x4(%ebp)
40d6bf:	e8 17 5d 03 00       	call   0x4433db
40d6c4:	8b f0                	mov    %eax,%esi
40d6c6:	81 fe 90 04 07 80    	cmp    $0x80070490,%esi
40d6cc:	74 0b                	je     0x40d6d9
40d6ce:	85 f6                	test   %esi,%esi
40d6d0:	79 07                	jns    0x40d6d9
40d6d2:	68 d4 fe 44 00       	push   $0x44fed4
40d6d7:	eb 2a                	jmp    0x40d703
40d6d9:	ff 75 fc             	push   -0x4(%ebp)
40d6dc:	8d 47 04             	lea    0x4(%edi),%eax
40d6df:	53                   	push   %ebx
40d6e0:	53                   	push   %ebx
40d6e1:	50                   	push   %eax
40d6e2:	e8 cf f5 ff ff       	call   0x40ccb6
40d6e7:	8b f0                	mov    %eax,%esi
40d6e9:	85 f6                	test   %esi,%esi
40d6eb:	79 07                	jns    0x40d6f4
40d6ed:	68 f8 fe 44 00       	push   $0x44fef8
40d6f2:	eb 0f                	jmp    0x40d703
40d6f4:	39 5f 08             	cmp    %ebx,0x8(%edi)
40d6f7:	75 12                	jne    0x40d70b
40d6f9:	be ff ff 00 80       	mov    $0x8000ffff,%esi
40d6fe:	68 24 ff 44 00       	push   $0x44ff24
40d703:	56                   	push   %esi
40d704:	e8 26 2a 03 00       	call   0x44012f
40d709:	59                   	pop    %ecx
40d70a:	59                   	pop    %ecx
40d70b:	5f                   	pop    %edi
40d70c:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40d70f:	85 c9                	test   %ecx,%ecx
40d711:	74 06                	je     0x40d719
40d713:	8b 01                	mov    (%ecx),%eax
40d715:	51                   	push   %ecx
40d716:	ff 50 08             	call   *0x8(%eax)
40d719:	8b c6                	mov    %esi,%eax
40d71b:	5e                   	pop    %esi
40d71c:	5b                   	pop    %ebx
40d71d:	8b e5                	mov    %ebp,%esp
40d71f:	5d                   	pop    %ebp
40d720:	c2 08 00             	ret    $0x8
40d723:	55                   	push   %ebp
40d724:	8b ec                	mov    %esp,%ebp
40d726:	8b 45 08             	mov    0x8(%ebp),%eax
40d729:	33 c9                	xor    %ecx,%ecx
40d72b:	39 48 14             	cmp    %ecx,0x14(%eax)
40d72e:	74 0c                	je     0x40d73c
40d730:	6a 07                	push   $0x7
40d732:	ff 70 14             	push   0x14(%eax)
40d735:	e8 89 64 ff ff       	call   0x403bc3
40d73a:	8b c8                	mov    %eax,%ecx
40d73c:	8b c1                	mov    %ecx,%eax
40d73e:	5d                   	pop    %ebp
40d73f:	c2 04 00             	ret    $0x4
40d742:	55                   	push   %ebp
40d743:	8b ec                	mov    %esp,%ebp
40d745:	8b 45 14             	mov    0x14(%ebp),%eax
40d748:	53                   	push   %ebx
40d749:	56                   	push   %esi
40d74a:	8b 75 18             	mov    0x18(%ebp),%esi
40d74d:	33 db                	xor    %ebx,%ebx
40d74f:	89 5d 14             	mov    %ebx,0x14(%ebp)
40d752:	57                   	push   %edi
40d753:	0f b7 f8             	movzwl %ax,%edi
40d756:	85 f6                	test   %esi,%esi
40d758:	75 14                	jne    0x40d76e
40d75a:	53                   	push   %ebx
40d75b:	50                   	push   %eax
40d75c:	8d 45 14             	lea    0x14(%ebp),%eax
40d75f:	50                   	push   %eax
40d760:	e8 13 48 ff ff       	call   0x401f78
40d765:	83 c4 0c             	add    $0xc,%esp
40d768:	85 c0                	test   %eax,%eax
40d76a:	0f 49 75 14          	cmovns 0x14(%ebp),%esi
40d76e:	ff 75 20             	push   0x20(%ebp)
40d771:	8b 45 08             	mov    0x8(%ebp),%eax
40d774:	53                   	push   %ebx
40d775:	53                   	push   %ebx
40d776:	ff 75 1c             	push   0x1c(%ebp)
40d779:	8b 08                	mov    (%eax),%ecx
40d77b:	56                   	push   %esi
40d77c:	57                   	push   %edi
40d77d:	ff 75 10             	push   0x10(%ebp)
40d780:	ff 75 0c             	push   0xc(%ebp)
40d783:	50                   	push   %eax
40d784:	ff 51 7c             	call   *0x7c(%ecx)
40d787:	8b f0                	mov    %eax,%esi
40d789:	39 5d 14             	cmp    %ebx,0x14(%ebp)
40d78c:	74 08                	je     0x40d796
40d78e:	ff 75 14             	push   0x14(%ebp)