40a556:	8d 4d ec             	lea    -0x14(%ebp),%ecx
40a559:	e8 21 ea 00 00       	call   0x418f7f
40a55e:	8b 35 3c 64 45 00    	mov    0x45643c,%esi
40a564:	8b 57 04             	mov    0x4(%edi),%edx
40a567:	8d 0c b5 00 00 00 00 	lea    0x0(,%esi,4),%ecx
40a56e:	89 4d ec             	mov    %ecx,-0x14(%ebp)
40a571:	3b 72 0c             	cmp    0xc(%edx),%esi
40a574:	73 0c                	jae    0x40a582
40a576:	8b 42 08             	mov    0x8(%edx),%eax
40a579:	8b 3c 01             	mov    (%ecx,%eax,1),%edi
40a57c:	85 ff                	test   %edi,%edi
40a57e:	75 6a                	jne    0x40a5ea
40a580:	eb 05                	jmp    0x40a587
40a582:	33 ff                	xor    %edi,%edi
40a584:	89 4d ec             	mov    %ecx,-0x14(%ebp)
40a587:	80 7a 14 00          	cmpb   $0x0,0x14(%edx)
40a58b:	74 13                	je     0x40a5a0
40a58d:	e8 7c eb 00 00       	call   0x41910e
40a592:	3b 70 0c             	cmp    0xc(%eax),%esi
40a595:	73 0d                	jae    0x40a5a4
40a597:	8b 40 08             	mov    0x8(%eax),%eax
40a59a:	8b 7d ec             	mov    -0x14(%ebp),%edi
40a59d:	8b 3c 07             	mov    (%edi,%eax,1),%edi
40a5a0:	85 ff                	test   %edi,%edi
40a5a2:	75 46                	jne    0x40a5ea
40a5a4:	85 db                	test   %ebx,%ebx
40a5a6:	74 04                	je     0x40a5ac
40a5a8:	8b fb                	mov    %ebx,%edi
40a5aa:	eb 3e                	jmp    0x40a5ea
40a5ac:	ff 75 e8             	push   -0x18(%ebp)
40a5af:	8d 45 e0             	lea    -0x20(%ebp),%eax
40a5b2:	50                   	push   %eax
40a5b3:	e8 78 c4 ff ff       	call   0x406a30
40a5b8:	83 c4 08             	add    $0x8,%esp
40a5bb:	83 f8 ff             	cmp    $0xffffffff,%eax
40a5be:	74 50                	je     0x40a610
40a5c0:	8b 7d e0             	mov    -0x20(%ebp),%edi
40a5c3:	89 7d e8             	mov    %edi,-0x18(%ebp)
40a5c6:	57                   	push   %edi
40a5c7:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40a5cb:	e8 12 eb 00 00       	call   0x4190e2
40a5d0:	8b 07                	mov    (%edi),%eax
40a5d2:	83 c4 04             	add    $0x4,%esp
40a5d5:	8b 70 04             	mov    0x4(%eax),%esi
40a5d8:	8b ce                	mov    %esi,%ecx
40a5da:	ff 15 5c e2 43 00    	call   *0x43e25c
40a5e0:	8b cf                	mov    %edi,%ecx
40a5e2:	ff d6                	call   *%esi
40a5e4:	89 3d 88 7b 45 00    	mov    %edi,0x457b88
40a5ea:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
40a5ed:	e8 8d e9 00 00       	call   0x418f7f
40a5f2:	8b c7                	mov    %edi,%eax
40a5f4:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40a5f7:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40a5fe:	59                   	pop    %ecx
40a5ff:	5f                   	pop    %edi
40a600:	5e                   	pop    %esi
40a601:	5b                   	pop    %ebx
40a602:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40a605:	33 cd                	xor    %ebp,%ecx
40a607:	e8 9e f5 00 00       	call   0x419baa
40a60c:	8b e5                	mov    %ebp,%esp
40a60e:	5d                   	pop    %ebp
40a60f:	c3                   	ret
40a610:	e8 1b b7 ff ff       	call   0x405d30
40a615:	cc                   	int3
40a616:	cc                   	int3
40a617:	cc                   	int3
40a618:	cc                   	int3
40a619:	cc                   	int3
40a61a:	cc                   	int3
40a61b:	cc                   	int3
40a61c:	cc                   	int3
40a61d:	cc                   	int3
40a61e:	cc                   	int3
40a61f:	cc                   	int3
40a620:	55                   	push   %ebp
40a621:	8b ec                	mov    %esp,%ebp
40a623:	83 ec 10             	sub    $0x10,%esp
40a626:	8b 55 08             	mov    0x8(%ebp),%edx
40a629:	53                   	push   %ebx
40a62a:	8b d9                	mov    %ecx,%ebx
40a62c:	b9 fe ff ff 7f       	mov    $0x7ffffffe,%ecx
40a631:	56                   	push   %esi
40a632:	57                   	push   %edi
40a633:	8b c1                	mov    %ecx,%eax
40a635:	8b 7b 10             	mov    0x10(%ebx),%edi
40a638:	2b c7                	sub    %edi,%eax
40a63a:	89 7d f4             	mov    %edi,-0xc(%ebp)
40a63d:	3b c2                	cmp    %edx,%eax
40a63f:	0f 82 5d 01 00 00    	jb     0x40a7a2
40a645:	8d 04 17             	lea    (%edi,%edx,1),%eax
40a648:	8b 53 14             	mov    0x14(%ebx),%edx
40a64b:	8b f0                	mov    %eax,%esi
40a64d:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a650:	83 ce 07             	or     $0x7,%esi
40a653:	89 55 f8             	mov    %edx,-0x8(%ebp)
40a656:	3b f1                	cmp    %ecx,%esi
40a658:	76 04                	jbe    0x40a65e
40a65a:	8b f1                	mov    %ecx,%esi
40a65c:	eb 18                	jmp    0x40a676
40a65e:	8b c2                	mov    %edx,%eax
40a660:	d1 e8                	shr    $1,%eax
40a662:	2b c8                	sub    %eax,%ecx
40a664:	3b d1                	cmp    %ecx,%edx
40a666:	76 07                	jbe    0x40a66f
40a668:	be fe ff ff 7f       	mov    $0x7ffffffe,%esi
40a66d:	eb 07                	jmp    0x40a676
40a66f:	03 c2                	add    %edx,%eax
40a671:	3b f0                	cmp    %eax,%esi
40a673:	0f 42 f0             	cmovb  %eax,%esi
40a676:	33 c9                	xor    %ecx,%ecx
40a678:	8b c6                	mov    %esi,%eax
40a67a:	83 c0 01             	add    $0x1,%eax
40a67d:	0f 92 c1             	setb   %cl
40a680:	f7 d9                	neg    %ecx
40a682:	0b c8                	or     %eax,%ecx
40a684:	51                   	push   %ecx
40a685:	8b cb                	mov    %ebx,%ecx
40a687:	e8 24 8a ff ff       	call   0x4030b0
40a68c:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40a68f:	89 4b 10             	mov    %ecx,0x10(%ebx)
40a692:	8b 4d 10             	mov    0x10(%ebp),%ecx
40a695:	03 c9                	add    %ecx,%ecx
40a697:	89 45 f0             	mov    %eax,-0x10(%ebp)
40a69a:	83 7d f8 08          	cmpl   $0x8,-0x8(%ebp)
40a69e:	89 73 14             	mov    %esi,0x14(%ebx)
40a6a1:	51                   	push   %ecx
40a6a2:	8d 14 01             	lea    (%ecx,%eax,1),%edx
40a6a5:	89 55 fc             	mov    %edx,-0x4(%ebp)
40a6a8:	0f 82 93 00 00 00    	jb     0x40a741
40a6ae:	8b 33                	mov    (%ebx),%esi
40a6b0:	56                   	push   %esi
40a6b1:	50                   	push   %eax
40a6b2:	e8 c9 0f 01 00       	call   0x41b680
40a6b7:	8b 45 14             	mov    0x14(%ebp),%eax
40a6ba:	83 c4 0c             	add    $0xc,%esp
40a6bd:	85 c0                	test   %eax,%eax
40a6bf:	74 1e                	je     0x40a6df
40a6c1:	8b 7d fc             	mov    -0x4(%ebp),%edi
40a6c4:	8b c8                	mov    %eax,%ecx
40a6c6:	8b 45 18             	mov    0x18(%ebp),%eax
40a6c9:	0f b7 d0             	movzwl %ax,%edx
40a6cc:	8b c2                	mov    %edx,%eax
40a6ce:	c1 e2 10             	shl    $0x10,%edx
40a6d1:	0b c2                	or     %edx,%eax
40a6d3:	d1 e9                	shr    $1,%ecx
40a6d5:	f3 ab                	rep stos %eax,%es:(%edi)
40a6d7:	13 c9                	adc    %ecx,%ecx
40a6d9:	66 f3 ab             	rep stos %ax,%es:(%edi)
40a6dc:	8b 7d f4             	mov    -0xc(%ebp),%edi
40a6df:	8b 4d 10             	mov    0x10(%ebp),%ecx
40a6e2:	2b f9                	sub    %ecx,%edi
40a6e4:	8d 04 7d 02 00 00 00 	lea    0x2(,%edi,2),%eax
40a6eb:	8b 7d f0             	mov    -0x10(%ebp),%edi
40a6ee:	50                   	push   %eax
40a6ef:	8d 04 09             	lea    (%ecx,%ecx,1),%eax
40a6f2:	03 c6                	add    %esi,%eax
40a6f4:	50                   	push   %eax
40a6f5:	8b 45 14             	mov    0x14(%ebp),%eax
40a6f8:	03 c1                	add    %ecx,%eax
40a6fa:	8d 04 47             	lea    (%edi,%eax,2),%eax
40a6fd:	50                   	push   %eax
40a6fe:	e8 7d 0f 01 00       	call   0x41b680
40a703:	8b 45 f8             	mov    -0x8(%ebp),%eax
40a706:	83 c4 0c             	add    $0xc,%esp
40a709:	8d 0c 45 02 00 00 00 	lea    0x2(,%eax,2),%ecx
40a710:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40a716:	72 12                	jb     0x40a72a
40a718:	8b 56 fc             	mov    -0x4(%esi),%edx
40a71b:	83 c1 23             	add    $0x23,%ecx
40a71e:	2b f2                	sub    %edx,%esi
40a720:	8d 46 fc             	lea    -0x4(%esi),%eax
40a723:	83 f8 1f             	cmp    $0x1f,%eax
40a726:	77 7f                	ja     0x40a7a7
40a728:	8b f2                	mov    %edx,%esi
40a72a:	51                   	push   %ecx
40a72b:	56                   	push   %esi
40a72c:	e8 87 f4 00 00       	call   0x419bb8
40a731:	83 c4 08             	add    $0x8,%esp
40a734:	89 3b                	mov    %edi,(%ebx)
40a736:	8b c3                	mov    %ebx,%eax
40a738:	5f                   	pop    %edi
40a739:	5e                   	pop    %esi
40a73a:	5b                   	pop    %ebx
40a73b:	8b e5                	mov    %ebp,%esp
40a73d:	5d                   	pop    %ebp
40a73e:	c2 14 00             	ret    $0x14
40a741:	53                   	push   %ebx
40a742:	50                   	push   %eax
40a743:	e8 38 0f 01 00       	call   0x41b680
40a748:	8b 75 14             	mov    0x14(%ebp),%esi
40a74b:	83 c4 0c             	add    $0xc,%esp
40a74e:	85 f6                	test   %esi,%esi
40a750:	74 1e                	je     0x40a770
40a752:	8b 45 18             	mov    0x18(%ebp),%eax
40a755:	8b ce                	mov    %esi,%ecx
40a757:	8b 7d fc             	mov    -0x4(%ebp),%edi
40a75a:	0f b7 d0             	movzwl %ax,%edx
40a75d:	8b c2                	mov    %edx,%eax
40a75f:	c1 e2 10             	shl    $0x10,%edx
40a762:	0b c2                	or     %edx,%eax
40a764:	d1 e9                	shr    $1,%ecx
40a766:	f3 ab                	rep stos %eax,%es:(%edi)
40a768:	13 c9                	adc    %ecx,%ecx
40a76a:	66 f3 ab             	rep stos %ax,%es:(%edi)
40a76d:	8b 7d f4             	mov    -0xc(%ebp),%edi
40a770:	8b 55 10             	mov    0x10(%ebp),%edx
40a773:	2b fa                	sub    %edx,%edi
40a775:	8d 04 7d 02 00 00 00 	lea    0x2(,%edi,2),%eax
40a77c:	8b 7d f0             	mov    -0x10(%ebp),%edi
40a77f:	8d 0c 12             	lea    (%edx,%edx,1),%ecx
40a782:	03 cb                	add    %ebx,%ecx
40a784:	50                   	push   %eax
40a785:	51                   	push   %ecx
40a786:	8d 0c 32             	lea    (%edx,%esi,1),%ecx
40a789:	8d 0c 4f             	lea    (%edi,%ecx,2),%ecx
40a78c:	51                   	push   %ecx
40a78d:	e8 ee 0e 01 00       	call   0x41b680
40a792:	83 c4 0c             	add    $0xc,%esp
40a795:	89 3b                	mov    %edi,(%ebx)
40a797:	8b c3                	mov    %ebx,%eax
40a799:	5f                   	pop    %edi
40a79a:	5e                   	pop    %esi
40a79b:	5b                   	pop    %ebx
40a79c:	8b e5                	mov    %ebp,%esp
40a79e:	5d                   	pop    %ebp
40a79f:	c2 14 00             	ret    $0x14
40a7a2:	e8 b9 6b ff ff       	call   0x401360
40a7a7:	e8 e7 51 01 00       	call   0x41f993
40a7ac:	cc                   	int3
40a7ad:	cc                   	int3
40a7ae:	cc                   	int3
40a7af:	cc                   	int3
40a7b0:	55                   	push   %ebp
40a7b1:	8b ec                	mov    %esp,%ebp
40a7b3:	83 ec 10             	sub    $0x10,%esp
40a7b6:	53                   	push   %ebx
40a7b7:	8b d9                	mov    %ecx,%ebx
40a7b9:	b9 ff ff ff 7f       	mov    $0x7fffffff,%ecx
40a7be:	8b c1                	mov    %ecx,%eax
40a7c0:	56                   	push   %esi
40a7c1:	8b 75 08             	mov    0x8(%ebp),%esi
40a7c4:	8b 53 10             	mov    0x10(%ebx),%edx
40a7c7:	2b c2                	sub    %edx,%eax
40a7c9:	89 55 fc             	mov    %edx,-0x4(%ebp)
40a7cc:	57                   	push   %edi
40a7cd:	3b c6                	cmp    %esi,%eax
40a7cf:	0f 82 2a 01 00 00    	jb     0x40a8ff
40a7d5:	8d 04 32             	lea    (%edx,%esi,1),%eax
40a7d8:	8b 73 14             	mov    0x14(%ebx),%esi
40a7db:	8b f8                	mov    %eax,%edi
40a7dd:	89 45 f8             	mov    %eax,-0x8(%ebp)
40a7e0:	83 cf 0f             	or     $0xf,%edi
40a7e3:	89 75 f4             	mov    %esi,-0xc(%ebp)
40a7e6:	3b f9                	cmp    %ecx,%edi
40a7e8:	76 04                	jbe    0x40a7ee
40a7ea:	8b f9                	mov    %ecx,%edi
40a7ec:	eb 18                	jmp    0x40a806
40a7ee:	8b c6                	mov    %esi,%eax
40a7f0:	d1 e8                	shr    $1,%eax
40a7f2:	2b c8                	sub    %eax,%ecx
40a7f4:	3b f1                	cmp    %ecx,%esi
40a7f6:	76 07                	jbe    0x40a7ff
40a7f8:	bf ff ff ff 7f       	mov    $0x7fffffff,%edi
40a7fd:	eb 07                	jmp    0x40a806
40a7ff:	03 c6                	add    %esi,%eax
40a801:	3b f8                	cmp    %eax,%edi
40a803:	0f 42 f8             	cmovb  %eax,%edi
40a806:	33 c9                	xor    %ecx,%ecx
40a808:	8b c7                	mov    %edi,%eax
40a80a:	83 c0 01             	add    $0x1,%eax
40a80d:	0f 92 c1             	setb   %cl
40a810:	f7 d9                	neg    %ecx
40a812:	0b c8                	or     %eax,%ecx
40a814:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40a81a:	72 2a                	jb     0x40a846
40a81c:	8d 41 23             	lea    0x23(%ecx),%eax
40a81f:	3b c1                	cmp    %ecx,%eax
40a821:	0f 86 dd 00 00 00    	jbe    0x40a904
40a827:	50                   	push   %eax
40a828:	e8 99 f3 00 00       	call   0x419bc6
40a82d:	83 c4 04             	add    $0x4,%esp
40a830:	85 c0                	test   %eax,%eax
40a832:	0f 84 d1 00 00 00    	je     0x40a909
40a838:	8b 55 fc             	mov    -0x4(%ebp),%edx
40a83b:	8d 70 23             	lea    0x23(%eax),%esi
40a83e:	83 e6 e0             	and    $0xffffffe0,%esi
40a841:	89 46 fc             	mov    %eax,-0x4(%esi)
40a844:	eb 16                	jmp    0x40a85c
40a846:	85 c9                	test   %ecx,%ecx
40a848:	74 10                	je     0x40a85a
40a84a:	51                   	push   %ecx
40a84b:	e8 76 f3 00 00       	call   0x419bc6
40a850:	8b 55 fc             	mov    -0x4(%ebp),%edx
40a853:	83 c4 04             	add    $0x4,%esp
40a856:	8b f0                	mov    %eax,%esi
40a858:	eb 02                	jmp    0x40a85c
40a85a:	33 f6                	xor    %esi,%esi
40a85c:	8b 45 f8             	mov    -0x8(%ebp),%eax
40a85f:	89 43 10             	mov    %eax,0x10(%ebx)
40a862:	0f be 45 14          	movsbl 0x14(%ebp),%eax
40a866:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a869:	8b 45 10             	mov    0x10(%ebp),%eax
40a86c:	89 7b 14             	mov    %edi,0x14(%ebx)
40a86f:	8d 3c 16             	lea    (%esi,%edx,1),%edi
40a872:	03 c7                	add    %edi,%eax
40a874:	89 7d f0             	mov    %edi,-0x10(%ebp)
40a877:	83 7d f4 10          	cmpl   $0x10,-0xc(%ebp)
40a87b:	89 45 f8             	mov    %eax,-0x8(%ebp)
40a87e:	52                   	push   %edx
40a87f:	72 55                	jb     0x40a8d6
40a881:	8b 3b                	mov    (%ebx),%edi
40a883:	57                   	push   %edi
40a884:	56                   	push   %esi
40a885:	e8 f6 0d 01 00       	call   0x41b680
40a88a:	ff 75 10             	push   0x10(%ebp)
40a88d:	ff 75 fc             	push   -0x4(%ebp)
40a890:	ff 75 f0             	push   -0x10(%ebp)
40a893:	e8 78 13 01 00       	call   0x41bc10
40a898:	8b 45 f8             	mov    -0x8(%ebp),%eax
40a89b:	83 c4 18             	add    $0x18,%esp
40a89e:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40a8a1:	41                   	inc    %ecx
40a8a2:	c6 00 00             	movb   $0x0,(%eax)
40a8a5:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40a8ab:	72 12                	jb     0x40a8bf
40a8ad:	8b 57 fc             	mov    -0x4(%edi),%edx
40a8b0:	83 c1 23             	add    $0x23,%ecx
40a8b3:	2b fa                	sub    %edx,%edi
40a8b5:	8d 47 fc             	lea    -0x4(%edi),%eax
40a8b8:	83 f8 1f             	cmp    $0x1f,%eax
40a8bb:	77 4c                	ja     0x40a909
40a8bd:	8b fa                	mov    %edx,%edi
40a8bf:	51                   	push   %ecx
40a8c0:	57                   	push   %edi
40a8c1:	e8 f2 f2 00 00       	call   0x419bb8
40a8c6:	83 c4 08             	add    $0x8,%esp
40a8c9:	89 33                	mov    %esi,(%ebx)
40a8cb:	8b c3                	mov    %ebx,%eax
40a8cd:	5f                   	pop    %edi
40a8ce:	5e                   	pop    %esi
40a8cf:	5b                   	pop    %ebx
40a8d0:	8b e5                	mov    %ebp,%esp
40a8d2:	5d                   	pop    %ebp
40a8d3:	c2 10 00             	ret    $0x10
40a8d6:	53                   	push   %ebx
40a8d7:	56                   	push   %esi
40a8d8:	e8 a3 0d 01 00       	call   0x41b680
40a8dd:	ff 75 10             	push   0x10(%ebp)