41a610:	ff 75 14             	push   0x14(%ebp)
41a613:	53                   	push   %ebx
41a614:	57                   	push   %edi
41a615:	ff 75 08             	push   0x8(%ebp)
41a618:	e8 82 f9 ff ff       	call   0x419f9f
41a61d:	83 c4 24             	add    $0x24,%esp
41a620:	5b                   	pop    %ebx
41a621:	5f                   	pop    %edi
41a622:	5e                   	pop    %esi
41a623:	8b e5                	mov    %ebp,%esp
41a625:	5d                   	pop    %ebp
41a626:	c3                   	ret
41a627:	8b ff                	mov    %edi,%edi
41a629:	55                   	push   %ebp
41a62a:	8b ec                	mov    %esp,%ebp
41a62c:	8b 45 0c             	mov    0xc(%ebp),%eax
41a62f:	83 40 08 fe          	addl   $0xfffffffe,0x8(%eax)
41a633:	8b 55 0c             	mov    0xc(%ebp),%edx
41a636:	83 7a 08 00          	cmpl   $0x0,0x8(%edx)
41a63a:	7d 0f                	jge    0x41a64b
41a63c:	0f b7 45 08          	movzwl 0x8(%ebp),%eax
41a640:	52                   	push   %edx
41a641:	50                   	push   %eax
41a642:	e8 97 a1 00 00       	call   0x4247de
41a647:	59                   	pop    %ecx
41a648:	59                   	pop    %ecx
41a649:	5d                   	pop    %ebp
41a64a:	c3                   	ret
41a64b:	8b 0a                	mov    (%edx),%ecx
41a64d:	66 8b 45 08          	mov    0x8(%ebp),%ax
41a651:	66 89 01             	mov    %ax,(%ecx)
41a654:	83 02 02             	addl   $0x2,(%edx)
41a657:	5d                   	pop    %ebp
41a658:	c3                   	ret
41a659:	8b ff                	mov    %edi,%edi
41a65b:	55                   	push   %ebp
41a65c:	8b ec                	mov    %esp,%ebp
41a65e:	83 ec 10             	sub    $0x10,%esp
41a661:	a1 28 ba 43 00       	mov    0x43ba28,%eax
41a666:	33 c5                	xor    %ebp,%eax
41a668:	89 45 fc             	mov    %eax,-0x4(%ebp)
41a66b:	57                   	push   %edi
41a66c:	8b 7d 0c             	mov    0xc(%ebp),%edi
41a66f:	8b 47 0c             	mov    0xc(%edi),%eax
41a672:	c1 e8 0c             	shr    $0xc,%eax
41a675:	a8 01                	test   $0x1,%al
41a677:	74 10                	je     0x41a689
41a679:	57                   	push   %edi
41a67a:	ff 75 08             	push   0x8(%ebp)
41a67d:	e8 a5 ff ff ff       	call   0x41a627
41a682:	59                   	pop    %ecx
41a683:	59                   	pop    %ecx
41a684:	e9 e7 00 00 00       	jmp    0x41a770
41a689:	53                   	push   %ebx
41a68a:	56                   	push   %esi
41a68b:	57                   	push   %edi
41a68c:	e8 ee 00 00 00       	call   0x41a77f
41a691:	bb a8 bb 43 00       	mov    $0x43bba8,%ebx
41a696:	59                   	pop    %ecx
41a697:	83 f8 ff             	cmp    $0xffffffff,%eax
41a69a:	74 2e                	je     0x41a6ca
41a69c:	57                   	push   %edi
41a69d:	e8 dd 00 00 00       	call   0x41a77f
41a6a2:	59                   	pop    %ecx
41a6a3:	83 f8 fe             	cmp    $0xfffffffe,%eax
41a6a6:	74 22                	je     0x41a6ca
41a6a8:	57                   	push   %edi
41a6a9:	e8 d1 00 00 00       	call   0x41a77f
41a6ae:	8b f0                	mov    %eax,%esi
41a6b0:	57                   	push   %edi
41a6b1:	c1 fe 06             	sar    $0x6,%esi
41a6b4:	e8 c6 00 00 00       	call   0x41a77f
41a6b9:	83 e0 3f             	and    $0x3f,%eax
41a6bc:	6b c0 30             	imul   $0x30,%eax,%eax
41a6bf:	59                   	pop    %ecx
41a6c0:	59                   	pop    %ecx
41a6c1:	03 04 b5 c0 9d 83 02 	add    0x2839dc0(,%esi,4),%eax
41a6c8:	eb 02                	jmp    0x41a6cc
41a6ca:	8b c3                	mov    %ebx,%eax
41a6cc:	8a 40 29             	mov    0x29(%eax),%al
41a6cf:	3c 02                	cmp    $0x2,%al
41a6d1:	0f 84 8c 00 00 00    	je     0x41a763
41a6d7:	3c 01                	cmp    $0x1,%al
41a6d9:	0f 84 84 00 00 00    	je     0x41a763
41a6df:	57                   	push   %edi
41a6e0:	e8 9a 00 00 00       	call   0x41a77f
41a6e5:	59                   	pop    %ecx
41a6e6:	83 f8 ff             	cmp    $0xffffffff,%eax
41a6e9:	74 2c                	je     0x41a717
41a6eb:	57                   	push   %edi
41a6ec:	e8 8e 00 00 00       	call   0x41a77f
41a6f1:	59                   	pop    %ecx
41a6f2:	83 f8 fe             	cmp    $0xfffffffe,%eax
41a6f5:	74 20                	je     0x41a717
41a6f7:	57                   	push   %edi
41a6f8:	e8 82 00 00 00       	call   0x41a77f
41a6fd:	8b f0                	mov    %eax,%esi
41a6ff:	57                   	push   %edi
41a700:	c1 fe 06             	sar    $0x6,%esi
41a703:	e8 77 00 00 00       	call   0x41a77f
41a708:	83 e0 3f             	and    $0x3f,%eax
41a70b:	6b d8 30             	imul   $0x30,%eax,%ebx
41a70e:	59                   	pop    %ecx
41a70f:	59                   	pop    %ecx
41a710:	03 1c b5 c0 9d 83 02 	add    0x2839dc0(,%esi,4),%ebx
41a717:	f6 43 28 80          	testb  $0x80,0x28(%ebx)
41a71b:	74 46                	je     0x41a763
41a71d:	ff 75 08             	push   0x8(%ebp)
41a720:	8d 45 f4             	lea    -0xc(%ebp),%eax
41a723:	6a 05                	push   $0x5
41a725:	50                   	push   %eax
41a726:	8d 45 f0             	lea    -0x10(%ebp),%eax
41a729:	50                   	push   %eax
41a72a:	e8 6c f4 ff ff       	call   0x419b9b
41a72f:	83 c4 10             	add    $0x10,%esp
41a732:	85 c0                	test   %eax,%eax
41a734:	75 26                	jne    0x41a75c
41a736:	33 f6                	xor    %esi,%esi
41a738:	39 75 f0             	cmp    %esi,-0x10(%ebp)
41a73b:	7e 19                	jle    0x41a756
41a73d:	0f be 44 35 f4       	movsbl -0xc(%ebp,%esi,1),%eax
41a742:	57                   	push   %edi
41a743:	50                   	push   %eax
41a744:	e8 5c 00 00 00       	call   0x41a7a5
41a749:	59                   	pop    %ecx
41a74a:	59                   	pop    %ecx
41a74b:	83 f8 ff             	cmp    $0xffffffff,%eax
41a74e:	74 0c                	je     0x41a75c
41a750:	46                   	inc    %esi
41a751:	3b 75 f0             	cmp    -0x10(%ebp),%esi
41a754:	7c e7                	jl     0x41a73d
41a756:	66 8b 45 08          	mov    0x8(%ebp),%ax
41a75a:	eb 12                	jmp    0x41a76e
41a75c:	b8 ff ff 00 00       	mov    $0xffff,%eax
41a761:	eb 0b                	jmp    0x41a76e
41a763:	57                   	push   %edi
41a764:	ff 75 08             	push   0x8(%ebp)
41a767:	e8 bb fe ff ff       	call   0x41a627
41a76c:	59                   	pop    %ecx
41a76d:	59                   	pop    %ecx
41a76e:	5e                   	pop    %esi
41a76f:	5b                   	pop    %ebx
41a770:	8b 4d fc             	mov    -0x4(%ebp),%ecx
41a773:	33 cd                	xor    %ebp,%ecx
41a775:	5f                   	pop    %edi
41a776:	e8 e5 c8 fe ff       	call   0x407060
41a77b:	8b e5                	mov    %ebp,%esp
41a77d:	5d                   	pop    %ebp
41a77e:	c3                   	ret
41a77f:	8b ff                	mov    %edi,%edi
41a781:	55                   	push   %ebp
41a782:	8b ec                	mov    %esp,%ebp
41a784:	8b 45 08             	mov    0x8(%ebp),%eax
41a787:	85 c0                	test   %eax,%eax
41a789:	75 15                	jne    0x41a7a0
41a78b:	e8 db a2 ff ff       	call   0x414a6b
41a790:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
41a796:	e8 47 15 ff ff       	call   0x40bce2
41a79b:	83 c8 ff             	or     $0xffffffff,%eax
41a79e:	5d                   	pop    %ebp
41a79f:	c3                   	ret
41a7a0:	8b 40 10             	mov    0x10(%eax),%eax
41a7a3:	5d                   	pop    %ebp
41a7a4:	c3                   	ret
41a7a5:	8b ff                	mov    %edi,%edi
41a7a7:	55                   	push   %ebp
41a7a8:	8b ec                	mov    %esp,%ebp
41a7aa:	8b 55 0c             	mov    0xc(%ebp),%edx
41a7ad:	83 6a 08 01          	subl   $0x1,0x8(%edx)
41a7b1:	79 0d                	jns    0x41a7c0
41a7b3:	52                   	push   %edx
41a7b4:	ff 75 08             	push   0x8(%ebp)
41a7b7:	e8 17 a0 00 00       	call   0x4247d3
41a7bc:	59                   	pop    %ecx
41a7bd:	59                   	pop    %ecx
41a7be:	5d                   	pop    %ebp
41a7bf:	c3                   	ret
41a7c0:	8b 02                	mov    (%edx),%eax
41a7c2:	8b 4d 08             	mov    0x8(%ebp),%ecx
41a7c5:	88 08                	mov    %cl,(%eax)
41a7c7:	ff 02                	incl   (%edx)
41a7c9:	0f b6 c1             	movzbl %cl,%eax
41a7cc:	5d                   	pop    %ebp
41a7cd:	c3                   	ret
41a7ce:	8b 0d 28 ba 43 00    	mov    0x43ba28,%ecx
41a7d4:	33 c0                	xor    %eax,%eax
41a7d6:	83 c9 01             	or     $0x1,%ecx
41a7d9:	39 0d c4 9f 83 02    	cmp    %ecx,0x2839fc4
41a7df:	0f 94 c0             	sete   %al
41a7e2:	c3                   	ret
41a7e3:	8b ff                	mov    %edi,%edi
41a7e5:	55                   	push   %ebp
41a7e6:	8b ec                	mov    %esp,%ebp
41a7e8:	56                   	push   %esi
41a7e9:	8b 75 08             	mov    0x8(%ebp),%esi
41a7ec:	56                   	push   %esi
41a7ed:	e8 8d ff ff ff       	call   0x41a77f
41a7f2:	50                   	push   %eax
41a7f3:	e8 f1 9f 00 00       	call   0x4247e9
41a7f8:	59                   	pop    %ecx
41a7f9:	59                   	pop    %ecx
41a7fa:	85 c0                	test   %eax,%eax
41a7fc:	75 07                	jne    0x41a805
41a7fe:	32 c0                	xor    %al,%al
41a800:	e9 90 00 00 00       	jmp    0x41a895
41a805:	53                   	push   %ebx
41a806:	57                   	push   %edi
41a807:	6a 01                	push   $0x1
41a809:	e8 17 16 ff ff       	call   0x40be25
41a80e:	59                   	pop    %ecx
41a80f:	6a 02                	push   $0x2
41a811:	5b                   	pop    %ebx
41a812:	3b f0                	cmp    %eax,%esi
41a814:	75 07                	jne    0x41a81d
41a816:	bf c8 9f 83 02       	mov    $0x2839fc8,%edi
41a81b:	eb 10                	jmp    0x41a82d
41a81d:	53                   	push   %ebx
41a81e:	e8 02 16 ff ff       	call   0x40be25
41a823:	59                   	pop    %ecx
41a824:	3b f0                	cmp    %eax,%esi
41a826:	75 69                	jne    0x41a891
41a828:	bf cc 9f 83 02       	mov    $0x2839fcc,%edi
41a82d:	ff 05 44 9a 83 02    	incl   0x2839a44
41a833:	8d 4e 0c             	lea    0xc(%esi),%ecx
41a836:	8b 01                	mov    (%ecx),%eax
41a838:	a9 c0 04 00 00       	test   $0x4c0,%eax
41a83d:	75 52                	jne    0x41a891
41a83f:	b8 82 02 00 00       	mov    $0x282,%eax
41a844:	f0 09 01             	lock or %eax,(%ecx)
41a847:	8b 07                	mov    (%edi),%eax
41a849:	85 c0                	test   %eax,%eax
41a84b:	75 2b                	jne    0x41a878
41a84d:	68 00 10 00 00       	push   $0x1000
41a852:	e8 f3 a4 ff ff       	call   0x414d4a
41a857:	6a 00                	push   $0x0
41a859:	89 07                	mov    %eax,(%edi)
41a85b:	e8 b0 a4 ff ff       	call   0x414d10
41a860:	8b 07                	mov    (%edi),%eax
41a862:	59                   	pop    %ecx
41a863:	59                   	pop    %ecx
41a864:	85 c0                	test   %eax,%eax
41a866:	75 10                	jne    0x41a878
41a868:	8d 4e 14             	lea    0x14(%esi),%ecx
41a86b:	89 5e 08             	mov    %ebx,0x8(%esi)
41a86e:	89 4e 04             	mov    %ecx,0x4(%esi)
41a871:	89 0e                	mov    %ecx,(%esi)
41a873:	89 5e 18             	mov    %ebx,0x18(%esi)
41a876:	eb 15                	jmp    0x41a88d
41a878:	89 46 04             	mov    %eax,0x4(%esi)
41a87b:	8b 07                	mov    (%edi),%eax
41a87d:	89 06                	mov    %eax,(%esi)
41a87f:	c7 46 08 00 10 00 00 	movl   $0x1000,0x8(%esi)
41a886:	c7 46 18 00 10 00 00 	movl   $0x1000,0x18(%esi)
41a88d:	b0 01                	mov    $0x1,%al
41a88f:	eb 02                	jmp    0x41a893
41a891:	32 c0                	xor    %al,%al
41a893:	5f                   	pop    %edi
41a894:	5b                   	pop    %ebx
41a895:	5e                   	pop    %esi
41a896:	5d                   	pop    %ebp
41a897:	c3                   	ret
41a898:	8b ff                	mov    %edi,%edi
41a89a:	55                   	push   %ebp
41a89b:	8b ec                	mov    %esp,%ebp
41a89d:	80 7d 08 00          	cmpb   $0x0,0x8(%ebp)
41a8a1:	74 2c                	je     0x41a8cf
41a8a3:	56                   	push   %esi
41a8a4:	8b 75 0c             	mov    0xc(%ebp),%esi
41a8a7:	57                   	push   %edi
41a8a8:	8d 7e 0c             	lea    0xc(%esi),%edi
41a8ab:	8b 07                	mov    (%edi),%eax
41a8ad:	c1 e8 09             	shr    $0x9,%eax
41a8b0:	a8 01                	test   $0x1,%al
41a8b2:	74 19                	je     0x41a8cd
41a8b4:	56                   	push   %esi
41a8b5:	e8 6e ec ff ff       	call   0x419528
41a8ba:	59                   	pop    %ecx
41a8bb:	b8 7f fd ff ff       	mov    $0xfffffd7f,%eax
41a8c0:	f0 21 07             	lock and %eax,(%edi)
41a8c3:	33 c0                	xor    %eax,%eax
41a8c5:	89 46 18             	mov    %eax,0x18(%esi)
41a8c8:	89 46 04             	mov    %eax,0x4(%esi)
41a8cb:	89 06                	mov    %eax,(%esi)
41a8cd:	5f                   	pop    %edi
41a8ce:	5e                   	pop    %esi
41a8cf:	5d                   	pop    %ebp
41a8d0:	c3                   	ret
41a8d1:	8b ff                	mov    %edi,%edi
41a8d3:	55                   	push   %ebp
41a8d4:	8b ec                	mov    %esp,%ebp
41a8d6:	51                   	push   %ecx
41a8d7:	51                   	push   %ecx
41a8d8:	66 8b 45 08          	mov    0x8(%ebp),%ax
41a8dc:	b9 ff ff 00 00       	mov    $0xffff,%ecx
41a8e1:	66 3b c1             	cmp    %cx,%ax
41a8e4:	75 04                	jne    0x41a8ea
41a8e6:	33 c0                	xor    %eax,%eax
41a8e8:	eb 42                	jmp    0x41a92c
41a8ea:	b9 00 01 00 00       	mov    $0x100,%ecx
41a8ef:	66 3b c1             	cmp    %cx,%ax
41a8f2:	73 0e                	jae    0x41a902
41a8f4:	0f b7 c8             	movzwl %ax,%ecx
41a8f7:	a1 24 bb 43 00       	mov    0x43bb24,%eax
41a8fc:	0f b7 04 48          	movzwl (%eax,%ecx,2),%eax
41a900:	eb 24                	jmp    0x41a926
41a902:	66 89 45 f8          	mov    %ax,-0x8(%ebp)
41a906:	33 c0                	xor    %eax,%eax
41a908:	66 89 45 fc          	mov    %ax,-0x4(%ebp)
41a90c:	8d 45 fc             	lea    -0x4(%ebp),%eax
41a90f:	50                   	push   %eax
41a910:	6a 01                	push   $0x1
41a912:	8d 45 f8             	lea    -0x8(%ebp),%eax
41a915:	50                   	push   %eax
41a916:	6a 01                	push   $0x1
41a918:	ff 15 34 71 42 00    	call   *0x427134
41a91e:	85 c0                	test   %eax,%eax
41a920:	74 c4                	je     0x41a8e6
41a922:	0f b7 45 fc          	movzwl -0x4(%ebp),%eax
41a926:	0f b7 4d 0c          	movzwl 0xc(%ebp),%ecx
41a92a:	23 c1                	and    %ecx,%eax
41a92c:	8b e5                	mov    %ebp,%esp
41a92e:	5d                   	pop    %ebp
41a92f:	c3                   	ret
41a930:	8b ff                	mov    %edi,%edi
41a932:	55                   	push   %ebp
41a933:	8b ec                	mov    %esp,%ebp
41a935:	83 ec 24             	sub    $0x24,%esp
41a938:	a1 28 ba 43 00       	mov    0x43ba28,%eax
41a93d:	33 c5                	xor    %ebp,%eax
41a93f:	89 45 fc             	mov    %eax,-0x4(%ebp)
41a942:	53                   	push   %ebx
41a943:	ff 75 10             	push   0x10(%ebp)
41a946:	8b 5d 08             	mov    0x8(%ebp),%ebx
41a949:	8d 4d e0             	lea    -0x20(%ebp),%ecx
41a94c:	e8 77 1e ff ff       	call   0x40c7c8
41a951:	8d 43 01             	lea    0x1(%ebx),%eax
41a954:	3d 00 01 00 00       	cmp    $0x100,%eax
41a959:	77 0b                	ja     0x41a966
41a95b:	8b 45 e4             	mov    -0x1c(%ebp),%eax
41a95e:	8b 00                	mov    (%eax),%eax
41a960:	0f b7 04 58          	movzwl (%eax,%ebx,2),%eax
41a964:	eb 7a                	jmp    0x41a9e0
41a966:	8b c3                	mov    %ebx,%eax
41a968:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
41a96b:	c1 f8 08             	sar    $0x8,%eax
41a96e:	89 45 dc             	mov    %eax,-0x24(%ebp)
41a971:	51                   	push   %ecx
41a972:	0f b6 c0             	movzbl %al,%eax
41a975:	50                   	push   %eax
41a976:	e8 4f 3f 00 00       	call   0x41e8ca