4064dd:	51                   	push   %ecx
4064de:	ff 75 08             	push   0x8(%ebp)
4064e1:	2b d7                	sub    %edi,%edx
4064e3:	51                   	push   %ecx
4064e4:	8d 0c 79             	lea    (%ecx,%edi,2),%ecx
4064e7:	e8 4f 00 00 00       	call   0x40653b
4064ec:	8b f0                	mov    %eax,%esi
4064ee:	5f                   	pop    %edi
4064ef:	8b c6                	mov    %esi,%eax
4064f1:	5e                   	pop    %esi
4064f2:	5b                   	pop    %ebx
4064f3:	5d                   	pop    %ebp
4064f4:	c2 04 00             	ret    $0x4
4064f7:	8b ff                	mov    %edi,%edi
4064f9:	55                   	push   %ebp
4064fa:	8b ec                	mov    %esp,%ebp
4064fc:	8b 45 0c             	mov    0xc(%ebp),%eax
4064ff:	33 c9                	xor    %ecx,%ecx
406501:	85 c0                	test   %eax,%eax
406503:	74 07                	je     0x40650c
406505:	3d ff ff ff 7f       	cmp    $0x7fffffff,%eax
40650a:	76 05                	jbe    0x406511
40650c:	b9 57 00 07 80       	mov    $0x80070057,%ecx
406511:	85 c9                	test   %ecx,%ecx
406513:	78 16                	js     0x40652b
406515:	8d 4d 14             	lea    0x14(%ebp),%ecx
406518:	8b d0                	mov    %eax,%edx
40651a:	51                   	push   %ecx
40651b:	ff 75 10             	push   0x10(%ebp)
40651e:	51                   	push   %ecx
40651f:	8b 4d 08             	mov    0x8(%ebp),%ecx
406522:	e8 64 00 00 00       	call   0x40658b
406527:	8b c8                	mov    %eax,%ecx
406529:	eb 0c                	jmp    0x406537
40652b:	85 c0                	test   %eax,%eax
40652d:	74 08                	je     0x406537
40652f:	8b 45 08             	mov    0x8(%ebp),%eax
406532:	33 d2                	xor    %edx,%edx
406534:	66 89 10             	mov    %dx,(%eax)
406537:	8b c1                	mov    %ecx,%eax
406539:	5d                   	pop    %ebp
40653a:	c3                   	ret
40653b:	8b ff                	mov    %edi,%edi
40653d:	55                   	push   %ebp
40653e:	8b ec                	mov    %esp,%ebp
406540:	85 d2                	test   %edx,%edx
406542:	74 2b                	je     0x40656f
406544:	8b 45 0c             	mov    0xc(%ebp),%eax
406547:	56                   	push   %esi
406548:	57                   	push   %edi
406549:	be fe ff ff 7f       	mov    $0x7ffffffe,%esi
40654e:	2b c1                	sub    %ecx,%eax
406550:	85 f6                	test   %esi,%esi
406552:	74 15                	je     0x406569
406554:	0f b7 3c 08          	movzwl (%eax,%ecx,1),%edi
406558:	66 85 ff             	test   %di,%di
40655b:	74 0c                	je     0x406569
40655d:	66 89 39             	mov    %di,(%ecx)
406560:	83 c1 02             	add    $0x2,%ecx
406563:	4e                   	dec    %esi
406564:	83 ea 01             	sub    $0x1,%edx
406567:	75 e7                	jne    0x406550
406569:	5f                   	pop    %edi
40656a:	5e                   	pop    %esi
40656b:	85 d2                	test   %edx,%edx
40656d:	75 03                	jne    0x406572
40656f:	83 e9 02             	sub    $0x2,%ecx
406572:	f7 da                	neg    %edx
406574:	1b d2                	sbb    %edx,%edx
406576:	81 e2 86 ff f8 7f    	and    $0x7ff8ff86,%edx
40657c:	33 c0                	xor    %eax,%eax
40657e:	66 89 01             	mov    %ax,(%ecx)
406581:	8d 82 7a 00 07 80    	lea    -0x7ff8ff86(%edx),%eax
406587:	5d                   	pop    %ebp
406588:	c2 0c 00             	ret    $0xc
40658b:	8b ff                	mov    %edi,%edi
40658d:	55                   	push   %ebp
40658e:	8b ec                	mov    %esp,%ebp
406590:	53                   	push   %ebx
406591:	56                   	push   %esi
406592:	57                   	push   %edi
406593:	ff 75 10             	push   0x10(%ebp)
406596:	8d 72 ff             	lea    -0x1(%edx),%esi
406599:	8b f9                	mov    %ecx,%edi
40659b:	ff 75 0c             	push   0xc(%ebp)
40659e:	33 db                	xor    %ebx,%ebx
4065a0:	56                   	push   %esi
4065a1:	57                   	push   %edi
4065a2:	e8 e0 c2 01 00       	call   0x422887
4065a7:	83 c4 10             	add    $0x10,%esp
4065aa:	85 c0                	test   %eax,%eax
4065ac:	78 08                	js     0x4065b6
4065ae:	3b c6                	cmp    %esi,%eax
4065b0:	77 04                	ja     0x4065b6
4065b2:	75 0d                	jne    0x4065c1
4065b4:	eb 05                	jmp    0x4065bb
4065b6:	bb 7a 00 07 80       	mov    $0x8007007a,%ebx
4065bb:	33 c0                	xor    %eax,%eax
4065bd:	66 89 04 77          	mov    %ax,(%edi,%esi,2)
4065c1:	5f                   	pop    %edi
4065c2:	5e                   	pop    %esi
4065c3:	8b c3                	mov    %ebx,%eax
4065c5:	5b                   	pop    %ebx
4065c6:	5d                   	pop    %ebp
4065c7:	c2 0c 00             	ret    $0xc
4065ca:	8b ff                	mov    %edi,%edi
4065cc:	55                   	push   %ebp
4065cd:	8b ec                	mov    %esp,%ebp
4065cf:	8b 45 0c             	mov    0xc(%ebp),%eax
4065d2:	56                   	push   %esi
4065d3:	8b 75 08             	mov    0x8(%ebp),%esi
4065d6:	2b c6                	sub    %esi,%eax
4065d8:	d1 f8                	sar    $1,%eax
4065da:	74 1a                	je     0x4065f6
4065dc:	3d ff ff ff 7f       	cmp    $0x7fffffff,%eax
4065e1:	77 13                	ja     0x4065f6
4065e3:	8d 4d 14             	lea    0x14(%ebp),%ecx
4065e6:	8b d0                	mov    %eax,%edx
4065e8:	51                   	push   %ecx
4065e9:	ff 75 10             	push   0x10(%ebp)
4065ec:	51                   	push   %ecx
4065ed:	8b ce                	mov    %esi,%ecx
4065ef:	e8 97 ff ff ff       	call   0x40658b
4065f4:	eb 09                	jmp    0x4065ff
4065f6:	85 c0                	test   %eax,%eax
4065f8:	74 05                	je     0x4065ff
4065fa:	33 c0                	xor    %eax,%eax
4065fc:	66 89 06             	mov    %ax,(%esi)
4065ff:	39 75 0c             	cmp    %esi,0xc(%ebp)
406602:	74 17                	je     0x40661b
406604:	8b ce                	mov    %esi,%ecx
406606:	8d 51 02             	lea    0x2(%ecx),%edx
406609:	66 8b 01             	mov    (%ecx),%ax
40660c:	83 c1 02             	add    $0x2,%ecx
40660f:	66 85 c0             	test   %ax,%ax
406612:	75 f5                	jne    0x406609
406614:	2b ca                	sub    %edx,%ecx
406616:	d1 f9                	sar    $1,%ecx
406618:	8d 34 4e             	lea    (%esi,%ecx,2),%esi
40661b:	8b c6                	mov    %esi,%eax
40661d:	5e                   	pop    %esi
40661e:	5d                   	pop    %ebp
40661f:	c3                   	ret
406620:	8b ff                	mov    %edi,%edi
406622:	55                   	push   %ebp
406623:	8b ec                	mov    %esp,%ebp
406625:	81 ec 0c 02 00 00    	sub    $0x20c,%esp
40662b:	a1 10 42 42 00       	mov    0x424210,%eax
406630:	33 c5                	xor    %ebp,%eax
406632:	89 45 fc             	mov    %eax,-0x4(%ebp)
406635:	56                   	push   %esi
406636:	8b c2                	mov    %edx,%eax
406638:	8b f1                	mov    %ecx,%esi
40663a:	89 85 f4 fd ff ff    	mov    %eax,-0x20c(%ebp)
406640:	57                   	push   %edi
406641:	8b 7d 08             	mov    0x8(%ebp),%edi
406644:	85 c0                	test   %eax,%eax
406646:	0f 84 db 01 00 00    	je     0x406827
40664c:	85 f6                	test   %esi,%esi
40664e:	0f 84 d3 01 00 00    	je     0x406827
406654:	53                   	push   %ebx
406655:	8b 1d a0 4c 42 00    	mov    0x424ca0,%ebx
40665b:	33 c9                	xor    %ecx,%ecx
40665d:	66 89 0e             	mov    %cx,(%esi)
406660:	85 db                	test   %ebx,%ebx
406662:	74 21                	je     0x406685
406664:	38 0d ac 4c 42 00    	cmp    %cl,0x424cac
40666a:	74 19                	je     0x406685
40666c:	50                   	push   %eax
40666d:	56                   	push   %esi
40666e:	57                   	push   %edi
40666f:	8b cb                	mov    %ebx,%ecx
406671:	ff 15 78 64 42 00    	call   *0x426478
406677:	ff d3                	call   *%ebx
406679:	0f b7 06             	movzwl (%esi),%eax
40667c:	66 85 c0             	test   %ax,%ax
40667f:	0f 85 a1 01 00 00    	jne    0x406826
406685:	8b 07                	mov    (%edi),%eax
406687:	33 c9                	xor    %ecx,%ecx
406689:	c7 85 f8 fd ff ff 3b 	movl   $0x40193b,-0x208(%ebp)
406690:	19 40 00
406693:	2b c1                	sub    %ecx,%eax
406695:	74 33                	je     0x4066ca
406697:	83 e8 01             	sub    $0x1,%eax
40669a:	74 22                	je     0x4066be
40669c:	83 e8 01             	sub    $0x1,%eax
40669f:	74 11                	je     0x4066b2
4066a1:	83 e8 01             	sub    $0x1,%eax
4066a4:	75 2e                	jne    0x4066d4
4066a6:	c7 85 f8 fd ff ff 5c 	movl   $0x40195c,-0x208(%ebp)
4066ad:	19 40 00
4066b0:	eb 22                	jmp    0x4066d4
4066b2:	c7 85 f8 fd ff ff 54 	movl   $0x401954,-0x208(%ebp)
4066b9:	19 40 00
4066bc:	eb 16                	jmp    0x4066d4
4066be:	c7 85 f8 fd ff ff 48 	movl   $0x401948,-0x208(%ebp)
4066c5:	19 40 00
4066c8:	eb 0a                	jmp    0x4066d4
4066ca:	c7 85 f8 fd ff ff 3c 	movl   $0x40193c,-0x208(%ebp)
4066d1:	19 40 00
4066d4:	51                   	push   %ecx
4066d5:	33 c0                	xor    %eax,%eax
4066d7:	68 00 01 00 00       	push   $0x100
4066dc:	66 89 85 fc fd ff ff 	mov    %ax,-0x204(%ebp)
4066e3:	8d 85 fc fd ff ff    	lea    -0x204(%ebp),%eax
4066e9:	50                   	push   %eax
4066ea:	68 00 04 00 00       	push   $0x400
4066ef:	ff 77 04             	push   0x4(%edi)
4066f2:	51                   	push   %ecx
4066f3:	68 00 12 00 00       	push   $0x1200
4066f8:	ff 15 74 61 42 00    	call   *0x426174
4066fe:	83 7f 1c 00          	cmpl   $0x0,0x1c(%edi)
406702:	8b 85 f4 fd ff ff    	mov    -0x20c(%ebp),%eax
406708:	ff 77 48             	push   0x48(%edi)
40670b:	ff 77 44             	push   0x44(%edi)
40670e:	8d 1c 46             	lea    (%esi,%eax,2),%ebx
406711:	74 17                	je     0x40672a
406713:	ff 77 20             	push   0x20(%edi)
406716:	ff 77 1c             	push   0x1c(%edi)
406719:	68 68 19 40 00       	push   $0x401968
40671e:	53                   	push   %ebx
40671f:	56                   	push   %esi
406720:	e8 a5 fe ff ff       	call   0x4065ca
406725:	83 c4 1c             	add    $0x1c,%esp
406728:	eb 0f                	jmp    0x406739
40672a:	68 8c 19 40 00       	push   $0x40198c
40672f:	53                   	push   %ebx
406730:	56                   	push   %esi
406731:	e8 94 fe ff ff       	call   0x4065ca
406736:	83 c4 14             	add    $0x14,%esp
406739:	83 7f 4c 00          	cmpl   $0x0,0x4c(%edi)
40673d:	89 85 f4 fd ff ff    	mov    %eax,-0x20c(%ebp)
406743:	74 18                	je     0x40675d
406745:	ff 77 4c             	push   0x4c(%edi)
406748:	68 a0 19 40 00       	push   $0x4019a0
40674d:	53                   	push   %ebx
40674e:	50                   	push   %eax
40674f:	e8 76 fe ff ff       	call   0x4065ca
406754:	83 c4 10             	add    $0x10,%esp
406757:	89 85 f4 fd ff ff    	mov    %eax,-0x20c(%ebp)
40675d:	8b 77 04             	mov    0x4(%edi),%esi
406760:	ff 15 7c 61 42 00    	call   *0x42617c
406766:	8d 8d fc fd ff ff    	lea    -0x204(%ebp),%ecx
40676c:	51                   	push   %ecx
40676d:	56                   	push   %esi
40676e:	50                   	push   %eax
40676f:	ff 77 24             	push   0x24(%edi)
406772:	ff b5 f8 fd ff ff    	push   -0x208(%ebp)
406778:	68 bc 19 40 00       	push   $0x4019bc
40677d:	53                   	push   %ebx
40677e:	ff b5 f4 fd ff ff    	push   -0x20c(%ebp)
406784:	e8 41 fe ff ff       	call   0x4065ca
406789:	33 c9                	xor    %ecx,%ecx
40678b:	83 c4 20             	add    $0x20,%esp
40678e:	39 4f 0c             	cmp    %ecx,0xc(%edi)
406791:	75 0e                	jne    0x4067a1
406793:	39 4f 28             	cmp    %ecx,0x28(%edi)
406796:	75 09                	jne    0x4067a1
406798:	39 4f 18             	cmp    %ecx,0x18(%edi)
40679b:	0f 84 85 00 00 00    	je     0x406826
4067a1:	68 f0 19 40 00       	push   $0x4019f0
4067a6:	53                   	push   %ebx
4067a7:	50                   	push   %eax
4067a8:	e8 1d fe ff ff       	call   0x4065ca
4067ad:	83 c4 0c             	add    $0xc,%esp
4067b0:	83 7f 0c 00          	cmpl   $0x0,0xc(%edi)
4067b4:	74 12                	je     0x4067c8
4067b6:	ff 77 0c             	push   0xc(%edi)
4067b9:	68 fc 19 40 00       	push   $0x4019fc
4067be:	53                   	push   %ebx
4067bf:	50                   	push   %eax
4067c0:	e8 05 fe ff ff       	call   0x4065ca
4067c5:	83 c4 10             	add    $0x10,%esp
4067c8:	83 7f 28 00          	cmpl   $0x0,0x28(%edi)
4067cc:	74 12                	je     0x4067e0
4067ce:	ff 77 28             	push   0x28(%edi)
4067d1:	68 14 1a 40 00       	push   $0x401a14
4067d6:	53                   	push   %ebx
4067d7:	50                   	push   %eax
4067d8:	e8 ed fd ff ff       	call   0x4065ca
4067dd:	83 c4 10             	add    $0x10,%esp
4067e0:	83 7f 14 00          	cmpl   $0x0,0x14(%edi)
4067e4:	74 17                	je     0x4067fd
4067e6:	ff 77 14             	push   0x14(%edi)
4067e9:	ff 77 18             	push   0x18(%edi)
4067ec:	68 3c 1a 40 00       	push   $0x401a3c
4067f1:	53                   	push   %ebx
4067f2:	50                   	push   %eax
4067f3:	e8 d2 fd ff ff       	call   0x4065ca
4067f8:	83 c4 14             	add    $0x14,%esp
4067fb:	eb 29                	jmp    0x406826
4067fd:	83 7f 18 00          	cmpl   $0x0,0x18(%edi)
406801:	74 14                	je     0x406817
406803:	ff 77 18             	push   0x18(%edi)
406806:	68 54 1a 40 00       	push   $0x401a54
40680b:	53                   	push   %ebx
40680c:	50                   	push   %eax
40680d:	e8 b8 fd ff ff       	call   0x4065ca
406812:	83 c4 10             	add    $0x10,%esp
406815:	eb 0f                	jmp    0x406826
406817:	68 64 1a 40 00       	push   $0x401a64
40681c:	53                   	push   %ebx
40681d:	50                   	push   %eax
40681e:	e8 a7 fd ff ff       	call   0x4065ca
406823:	83 c4 0c             	add    $0xc,%esp
406826:	5b                   	pop    %ebx
406827:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40682a:	33 c0                	xor    %eax,%eax
40682c:	5f                   	pop    %edi
40682d:	33 cd                	xor    %ebp,%ecx
40682f:	5e                   	pop    %esi
406830:	e8 3b b0 01 00       	call   0x421870
406835:	c9                   	leave
406836:	c2 04 00             	ret    $0x4
406839:	8b ff                	mov    %edi,%edi
40683b:	56                   	push   %esi
40683c:	57                   	push   %edi
40683d:	52                   	push   %edx
40683e:	51                   	push   %ecx
40683f:	ff 15 7c 60 42 00    	call   *0x42607c
406845:	50                   	push   %eax
406846:	ff 15 a0 61 42 00    	call   *0x4261a0
40684c:	8b 3d b8 4c 42 00    	mov    0x424cb8,%edi
406852:	8b f0                	mov    %eax,%esi
406854:	85 ff                	test   %edi,%edi
406856:	74 12                	je     0x40686a
406858:	56                   	push   %esi
406859:	ff 15 7c 60 42 00    	call   *0x42607c
40685f:	50                   	push   %eax
406860:	8b cf                	mov    %edi,%ecx
406862:	ff 15 78 64 42 00    	call   *0x426478
406868:	ff d7                	call   *%edi
40686a:	5f                   	pop    %edi
40686b:	8b c6                	mov    %esi,%eax
40686d:	5e                   	pop    %esi
40686e:	c3                   	ret
40686f:	33 c0                	xor    %eax,%eax
406871:	89 0d f4 4c 42 00    	mov    %ecx,0x424cf4
406877:	40                   	inc    %eax
406878:	f0 0f c1 05 ec 4c 42 	lock xadd %eax,0x424cec
40687f:	00
406880:	40                   	inc    %eax
406881:	c3                   	ret
406882:	33 c0                	xor    %eax,%eax
406884:	89 0d 8c 4c 42 00    	mov    %ecx,0x424c8c
40688a:	40                   	inc    %eax
40688b:	f0 0f c1 05 20 4d 42 	lock xadd %eax,0x424d20
406892:	00
406893:	40                   	inc    %eax
406894:	c3                   	ret