40a4c1:	8b 45 e0             	mov    -0x20(%ebp),%eax
40a4c4:	89 45 dc             	mov    %eax,-0x24(%ebp)
40a4c7:	89 45 d8             	mov    %eax,-0x28(%ebp)
40a4ca:	8d 45 dc             	lea    -0x24(%ebp),%eax
40a4cd:	50                   	push   %eax
40a4ce:	8d 45 c4             	lea    -0x3c(%ebp),%eax
40a4d1:	50                   	push   %eax
40a4d2:	8d 45 d8             	lea    -0x28(%ebp),%eax
40a4d5:	50                   	push   %eax
40a4d6:	8d 4d e7             	lea    -0x19(%ebp),%ecx
40a4d9:	e8 fa fe ff ff       	call   0x40a3d8
40a4de:	8b 7d 0c             	mov    0xc(%ebp),%edi
40a4e1:	83 c6 04             	add    $0x4,%esi
40a4e4:	eb aa                	jmp    0x40a490
40a4e6:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40a4ed:	e8 12 00 00 00       	call   0x40a504
40a4f2:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40a4f5:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40a4fc:	59                   	pop    %ecx
40a4fd:	5f                   	pop    %edi
40a4fe:	5e                   	pop    %esi
40a4ff:	5b                   	pop    %ebx
40a500:	c9                   	leave
40a501:	c2 0c 00             	ret    $0xc
40a504:	8b 45 10             	mov    0x10(%ebp),%eax
40a507:	ff 30                	push   (%eax)
40a509:	e8 06 d3 ff ff       	call   0x407814
40a50e:	59                   	pop    %ecx
40a50f:	c3                   	ret
40a510:	8b ff                	mov    %edi,%edi
40a512:	55                   	push   %ebp
40a513:	8b ec                	mov    %esp,%ebp
40a515:	83 ec 20             	sub    $0x20,%esp
40a518:	83 65 f8 00          	andl   $0x0,-0x8(%ebp)
40a51c:	8d 45 f8             	lea    -0x8(%ebp),%eax
40a51f:	83 65 f4 00          	andl   $0x0,-0xc(%ebp)
40a523:	8d 4d ff             	lea    -0x1(%ebp),%ecx
40a526:	89 45 e0             	mov    %eax,-0x20(%ebp)
40a529:	8d 45 08             	lea    0x8(%ebp),%eax
40a52c:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40a52f:	8d 45 f4             	lea    -0xc(%ebp),%eax
40a532:	6a 08                	push   $0x8
40a534:	89 45 e8             	mov    %eax,-0x18(%ebp)
40a537:	58                   	pop    %eax
40a538:	89 45 f0             	mov    %eax,-0x10(%ebp)
40a53b:	89 45 ec             	mov    %eax,-0x14(%ebp)
40a53e:	8d 45 f0             	lea    -0x10(%ebp),%eax
40a541:	50                   	push   %eax
40a542:	8d 45 e0             	lea    -0x20(%ebp),%eax
40a545:	50                   	push   %eax
40a546:	8d 45 ec             	lea    -0x14(%ebp),%eax
40a549:	50                   	push   %eax
40a54a:	e8 15 ff ff ff       	call   0x40a464
40a54f:	80 7d 08 00          	cmpb   $0x0,0x8(%ebp)
40a553:	8b 45 f8             	mov    -0x8(%ebp),%eax
40a556:	75 03                	jne    0x40a55b
40a558:	8b 45 f4             	mov    -0xc(%ebp),%eax
40a55b:	c9                   	leave
40a55c:	c3                   	ret
40a55d:	8b ff                	mov    %edi,%edi
40a55f:	55                   	push   %ebp
40a560:	8b ec                	mov    %esp,%ebp
40a562:	8b 45 08             	mov    0x8(%ebp),%eax
40a565:	85 c0                	test   %eax,%eax
40a567:	74 1d                	je     0x40a586
40a569:	8b 48 0c             	mov    0xc(%eax),%ecx
40a56c:	90                   	nop
40a56d:	8b c1                	mov    %ecx,%eax
40a56f:	c1 e8 0d             	shr    $0xd,%eax
40a572:	a8 01                	test   $0x1,%al
40a574:	74 10                	je     0x40a586
40a576:	51                   	push   %ecx
40a577:	e8 12 00 00 00       	call   0x40a58e
40a57c:	59                   	pop    %ecx
40a57d:	84 c0                	test   %al,%al
40a57f:	75 09                	jne    0x40a58a
40a581:	8b 45 0c             	mov    0xc(%ebp),%eax
40a584:	ff 00                	incl   (%eax)
40a586:	32 c0                	xor    %al,%al
40a588:	5d                   	pop    %ebp
40a589:	c3                   	ret
40a58a:	b0 01                	mov    $0x1,%al
40a58c:	5d                   	pop    %ebp
40a58d:	c3                   	ret
40a58e:	8b ff                	mov    %edi,%edi
40a590:	55                   	push   %ebp
40a591:	8b ec                	mov    %esp,%ebp
40a593:	8b 4d 08             	mov    0x8(%ebp),%ecx
40a596:	8b c1                	mov    %ecx,%eax
40a598:	24 03                	and    $0x3,%al
40a59a:	3c 02                	cmp    $0x2,%al
40a59c:	75 09                	jne    0x40a5a7
40a59e:	f6 c1 c0             	test   $0xc0,%cl
40a5a1:	74 04                	je     0x40a5a7
40a5a3:	fe c8                	dec    %al
40a5a5:	5d                   	pop    %ebp
40a5a6:	c3                   	ret
40a5a7:	c1 e9 0b             	shr    $0xb,%ecx
40a5aa:	80 e1 01             	and    $0x1,%cl
40a5ad:	8a c1                	mov    %cl,%al
40a5af:	5d                   	pop    %ebp
40a5b0:	c3                   	ret
40a5b1:	8b ff                	mov    %edi,%edi
40a5b3:	55                   	push   %ebp
40a5b4:	8b ec                	mov    %esp,%ebp
40a5b6:	8b 4d 08             	mov    0x8(%ebp),%ecx
40a5b9:	53                   	push   %ebx
40a5ba:	56                   	push   %esi
40a5bb:	57                   	push   %edi
40a5bc:	8d 71 0c             	lea    0xc(%ecx),%esi
40a5bf:	8b 16                	mov    (%esi),%edx
40a5c1:	90                   	nop
40a5c2:	8b c2                	mov    %edx,%eax
40a5c4:	24 03                	and    $0x3,%al
40a5c6:	3c 02                	cmp    $0x2,%al
40a5c8:	75 49                	jne    0x40a613
40a5ca:	f6 c2 c0             	test   $0xc0,%dl
40a5cd:	74 44                	je     0x40a613
40a5cf:	8b 39                	mov    (%ecx),%edi
40a5d1:	8b 59 04             	mov    0x4(%ecx),%ebx
40a5d4:	2b fb                	sub    %ebx,%edi
40a5d6:	89 19                	mov    %ebx,(%ecx)
40a5d8:	83 61 08 00          	andl   $0x0,0x8(%ecx)
40a5dc:	85 ff                	test   %edi,%edi
40a5de:	7e 33                	jle    0x40a613
40a5e0:	51                   	push   %ecx
40a5e1:	e8 13 08 00 00       	call   0x40adf9
40a5e6:	ff 75 0c             	push   0xc(%ebp)
40a5e9:	57                   	push   %edi
40a5ea:	53                   	push   %ebx
40a5eb:	50                   	push   %eax
40a5ec:	e8 32 1b 00 00       	call   0x40c123
40a5f1:	83 c4 14             	add    $0x14,%esp
40a5f4:	3b f8                	cmp    %eax,%edi
40a5f6:	74 0b                	je     0x40a603
40a5f8:	6a 10                	push   $0x10
40a5fa:	58                   	pop    %eax
40a5fb:	f0 09 06             	lock or %eax,(%esi)
40a5fe:	83 c8 ff             	or     $0xffffffff,%eax
40a601:	eb 12                	jmp    0x40a615
40a603:	8b 06                	mov    (%esi),%eax
40a605:	90                   	nop
40a606:	c1 e8 02             	shr    $0x2,%eax
40a609:	a8 01                	test   $0x1,%al
40a60b:	74 06                	je     0x40a613
40a60d:	6a fd                	push   $0xfffffffd
40a60f:	58                   	pop    %eax
40a610:	f0 21 06             	lock and %eax,(%esi)
40a613:	33 c0                	xor    %eax,%eax
40a615:	5f                   	pop    %edi
40a616:	5e                   	pop    %esi
40a617:	5b                   	pop    %ebx
40a618:	5d                   	pop    %ebp
40a619:	c3                   	ret
40a61a:	8b ff                	mov    %edi,%edi
40a61c:	55                   	push   %ebp
40a61d:	8b ec                	mov    %esp,%ebp
40a61f:	83 ec 28             	sub    $0x28,%esp
40a622:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40a625:	56                   	push   %esi
40a626:	57                   	push   %edi
40a627:	33 f6                	xor    %esi,%esi
40a629:	56                   	push   %esi
40a62a:	e8 e1 b3 ff ff       	call   0x405a10
40a62f:	8b 7d 08             	mov    0x8(%ebp),%edi
40a632:	85 ff                	test   %edi,%edi
40a634:	75 0b                	jne    0x40a641
40a636:	56                   	push   %esi
40a637:	e8 d4 fe ff ff       	call   0x40a510
40a63c:	59                   	pop    %ecx
40a63d:	8b f0                	mov    %eax,%esi
40a63f:	eb 30                	jmp    0x40a671
40a641:	8d 45 d8             	lea    -0x28(%ebp),%eax
40a644:	50                   	push   %eax
40a645:	57                   	push   %edi
40a646:	e8 66 ff ff ff       	call   0x40a5b1
40a64b:	59                   	pop    %ecx
40a64c:	59                   	pop    %ecx
40a64d:	85 c0                	test   %eax,%eax
40a64f:	75 1d                	jne    0x40a66e
40a651:	8b 47 0c             	mov    0xc(%edi),%eax
40a654:	90                   	nop
40a655:	c1 e8 0b             	shr    $0xb,%eax
40a658:	a8 01                	test   $0x1,%al
40a65a:	74 15                	je     0x40a671
40a65c:	57                   	push   %edi
40a65d:	e8 97 07 00 00       	call   0x40adf9
40a662:	50                   	push   %eax
40a663:	e8 9c 12 00 00       	call   0x40b904
40a668:	59                   	pop    %ecx
40a669:	59                   	pop    %ecx
40a66a:	85 c0                	test   %eax,%eax
40a66c:	74 03                	je     0x40a671
40a66e:	83 ce ff             	or     $0xffffffff,%esi
40a671:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40a674:	e8 df b3 ff ff       	call   0x405a58
40a679:	5f                   	pop    %edi
40a67a:	8b c6                	mov    %esi,%eax
40a67c:	5e                   	pop    %esi
40a67d:	c9                   	leave
40a67e:	c3                   	ret
40a67f:	6a 01                	push   $0x1
40a681:	e8 8a fe ff ff       	call   0x40a510
40a686:	59                   	pop    %ecx
40a687:	c3                   	ret
40a688:	a1 80 73 41 00       	mov    0x417380,%eax
40a68d:	56                   	push   %esi
40a68e:	6a 03                	push   $0x3
40a690:	5e                   	pop    %esi
40a691:	85 c0                	test   %eax,%eax
40a693:	75 07                	jne    0x40a69c
40a695:	b8 00 02 00 00       	mov    $0x200,%eax
40a69a:	eb 06                	jmp    0x40a6a2
40a69c:	3b c6                	cmp    %esi,%eax
40a69e:	7d 07                	jge    0x40a6a7
40a6a0:	8b c6                	mov    %esi,%eax
40a6a2:	a3 80 73 41 00       	mov    %eax,0x417380
40a6a7:	6a 04                	push   $0x4
40a6a9:	50                   	push   %eax
40a6aa:	e8 b4 d2 ff ff       	call   0x407963
40a6af:	6a 00                	push   $0x0
40a6b1:	a3 84 73 41 00       	mov    %eax,0x417384
40a6b6:	e8 be d1 ff ff       	call   0x407879
40a6bb:	83 c4 0c             	add    $0xc,%esp
40a6be:	83 3d 84 73 41 00 00 	cmpl   $0x0,0x417384
40a6c5:	75 2b                	jne    0x40a6f2
40a6c7:	6a 04                	push   $0x4
40a6c9:	56                   	push   %esi
40a6ca:	89 35 80 73 41 00    	mov    %esi,0x417380
40a6d0:	e8 8e d2 ff ff       	call   0x407963
40a6d5:	6a 00                	push   $0x0
40a6d7:	a3 84 73 41 00       	mov    %eax,0x417384
40a6dc:	e8 98 d1 ff ff       	call   0x407879
40a6e1:	83 c4 0c             	add    $0xc,%esp
40a6e4:	83 3d 84 73 41 00 00 	cmpl   $0x0,0x417384
40a6eb:	75 05                	jne    0x40a6f2
40a6ed:	83 c8 ff             	or     $0xffffffff,%eax
40a6f0:	5e                   	pop    %esi
40a6f1:	c3                   	ret
40a6f2:	57                   	push   %edi
40a6f3:	33 ff                	xor    %edi,%edi
40a6f5:	be a8 66 41 00       	mov    $0x4166a8,%esi
40a6fa:	6a 00                	push   $0x0
40a6fc:	68 a0 0f 00 00       	push   $0xfa0
40a701:	8d 46 20             	lea    0x20(%esi),%eax
40a704:	50                   	push   %eax
40a705:	e8 81 f7 ff ff       	call   0x409e8b
40a70a:	a1 84 73 41 00       	mov    0x417384,%eax
40a70f:	8b d7                	mov    %edi,%edx
40a711:	c1 fa 06             	sar    $0x6,%edx
40a714:	89 34 b8             	mov    %esi,(%eax,%edi,4)
40a717:	8b c7                	mov    %edi,%eax
40a719:	83 e0 3f             	and    $0x3f,%eax
40a71c:	6b c8 38             	imul   $0x38,%eax,%ecx
40a71f:	8b 04 95 78 70 41 00 	mov    0x417078(,%edx,4),%eax
40a726:	8b 44 08 18          	mov    0x18(%eax,%ecx,1),%eax
40a72a:	83 f8 ff             	cmp    $0xffffffff,%eax
40a72d:	74 09                	je     0x40a738
40a72f:	83 f8 fe             	cmp    $0xfffffffe,%eax
40a732:	74 04                	je     0x40a738
40a734:	85 c0                	test   %eax,%eax
40a736:	75 07                	jne    0x40a73f
40a738:	c7 46 10 fe ff ff ff 	movl   $0xfffffffe,0x10(%esi)
40a73f:	83 c6 38             	add    $0x38,%esi
40a742:	47                   	inc    %edi
40a743:	81 fe 50 67 41 00    	cmp    $0x416750,%esi
40a749:	75 af                	jne    0x40a6fa
40a74b:	5f                   	pop    %edi
40a74c:	33 c0                	xor    %eax,%eax
40a74e:	5e                   	pop    %esi
40a74f:	c3                   	ret
40a750:	8b ff                	mov    %edi,%edi
40a752:	56                   	push   %esi
40a753:	e8 27 ff ff ff       	call   0x40a67f
40a758:	e8 f3 1c 00 00       	call   0x40c450
40a75d:	33 f6                	xor    %esi,%esi
40a75f:	a1 84 73 41 00       	mov    0x417384,%eax
40a764:	ff 34 06             	push   (%esi,%eax,1)
40a767:	e8 8f 1d 00 00       	call   0x40c4fb
40a76c:	a1 84 73 41 00       	mov    0x417384,%eax
40a771:	59                   	pop    %ecx
40a772:	8b 04 06             	mov    (%esi,%eax,1),%eax
40a775:	83 c0 20             	add    $0x20,%eax
40a778:	50                   	push   %eax
40a779:	ff 15 6c f0 40 00    	call   *0x40f06c
40a77f:	83 c6 04             	add    $0x4,%esi
40a782:	83 fe 0c             	cmp    $0xc,%esi
40a785:	75 d8                	jne    0x40a75f
40a787:	ff 35 84 73 41 00    	push   0x417384
40a78d:	e8 e7 d0 ff ff       	call   0x407879
40a792:	83 25 84 73 41 00 00 	andl   $0x0,0x417384
40a799:	59                   	pop    %ecx
40a79a:	5e                   	pop    %esi
40a79b:	c3                   	ret
40a79c:	8b ff                	mov    %edi,%edi
40a79e:	55                   	push   %ebp
40a79f:	8b ec                	mov    %esp,%ebp
40a7a1:	8b 45 08             	mov    0x8(%ebp),%eax
40a7a4:	83 c0 20             	add    $0x20,%eax
40a7a7:	50                   	push   %eax
40a7a8:	ff 15 64 f0 40 00    	call   *0x40f064
40a7ae:	5d                   	pop    %ebp
40a7af:	c3                   	ret
40a7b0:	8b ff                	mov    %edi,%edi
40a7b2:	55                   	push   %ebp
40a7b3:	8b ec                	mov    %esp,%ebp
40a7b5:	8b 45 08             	mov    0x8(%ebp),%eax
40a7b8:	83 c0 20             	add    $0x20,%eax
40a7bb:	50                   	push   %eax
40a7bc:	ff 15 68 f0 40 00    	call   *0x40f068
40a7c2:	5d                   	pop    %ebp
40a7c3:	c3                   	ret
40a7c4:	8b ff                	mov    %edi,%edi
40a7c6:	55                   	push   %ebp
40a7c7:	8b ec                	mov    %esp,%ebp
40a7c9:	8b 4d 08             	mov    0x8(%ebp),%ecx
40a7cc:	8b c1                	mov    %ecx,%eax
40a7ce:	53                   	push   %ebx
40a7cf:	83 e0 10             	and    $0x10,%eax
40a7d2:	bb 00 02 00 00       	mov    $0x200,%ebx
40a7d7:	56                   	push   %esi
40a7d8:	c1 e0 03             	shl    $0x3,%eax
40a7db:	57                   	push   %edi
40a7dc:	f6 c1 08             	test   $0x8,%cl
40a7df:	74 02                	je     0x40a7e3
40a7e1:	0b c3                	or     %ebx,%eax
40a7e3:	f6 c1 04             	test   $0x4,%cl
40a7e6:	74 05                	je     0x40a7ed
40a7e8:	0d 00 04 00 00       	or     $0x400,%eax
40a7ed:	f6 c1 02             	test   $0x2,%cl
40a7f0:	74 05                	je     0x40a7f7
40a7f2:	0d 00 08 00 00       	or     $0x800,%eax
40a7f7:	f6 c1 01             	test   $0x1,%cl
40a7fa:	74 05                	je     0x40a801
40a7fc:	0d 00 10 00 00       	or     $0x1000,%eax
40a801:	be 00 01 00 00       	mov    $0x100,%esi
40a806:	f7 c1 00 00 08 00    	test   $0x80000,%ecx
40a80c:	74 02                	je     0x40a810
40a80e:	0b c6                	or     %esi,%eax
40a810:	8b d1                	mov    %ecx,%edx
40a812:	bf 00 03 00 00       	mov    $0x300,%edi
40a817:	23 d7                	and    %edi,%edx
40a819:	74 1f                	je     0x40a83a
40a81b:	3b d6                	cmp    %esi,%edx
40a81d:	74 16                	je     0x40a835
40a81f:	3b d3                	cmp    %ebx,%edx
40a821:	74 0b                	je     0x40a82e
40a823:	3b d7                	cmp    %edi,%edx
40a825:	75 13                	jne    0x40a83a
40a827:	0d 00 60 00 00       	or     $0x6000,%eax