40e370:	74 14                	je     0x40e386
40e372:	38 08                	cmp    %cl,(%eax)
40e374:	74 10                	je     0x40e386
40e376:	e8 58 09 00 00       	call   0x40ecd3
40e37b:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40e381:	e8 90 08 00 00       	call   0x40ec16
40e386:	5d                   	pop    %ebp
40e387:	c2 04 00             	ret    $0x4
40e38a:	8b ff                	mov    %edi,%edi
40e38c:	55                   	push   %ebp
40e38d:	8b ec                	mov    %esp,%ebp
40e38f:	8b 01                	mov    (%ecx),%eax
40e391:	83 c0 fe             	add    $0xfffffffe,%eax
40e394:	89 01                	mov    %eax,(%ecx)
40e396:	66 8b 4d 08          	mov    0x8(%ebp),%cx
40e39a:	66 85 c9             	test   %cx,%cx
40e39d:	74 15                	je     0x40e3b4
40e39f:	66 39 08             	cmp    %cx,(%eax)
40e3a2:	74 10                	je     0x40e3b4
40e3a4:	e8 2a 09 00 00       	call   0x40ecd3
40e3a9:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40e3af:	e8 62 08 00 00       	call   0x40ec16
40e3b4:	5d                   	pop    %ebp
40e3b5:	c2 04 00             	ret    $0x4
40e3b8:	8b ff                	mov    %edi,%edi
40e3ba:	55                   	push   %ebp
40e3bb:	8b ec                	mov    %esp,%ebp
40e3bd:	8b 4d 10             	mov    0x10(%ebp),%ecx
40e3c0:	56                   	push   %esi
40e3c1:	85 c9                	test   %ecx,%ecx
40e3c3:	74 30                	je     0x40e3f5
40e3c5:	8b 55 08             	mov    0x8(%ebp),%edx
40e3c8:	8b 31                	mov    (%ecx),%esi
40e3ca:	8d 42 01             	lea    0x1(%edx),%eax
40e3cd:	3d 00 01 00 00       	cmp    $0x100,%eax
40e3d2:	77 0b                	ja     0x40e3df
40e3d4:	8b 06                	mov    (%esi),%eax
40e3d6:	0f b7 04 50          	movzwl (%eax,%edx,2),%eax
40e3da:	23 45 0c             	and    0xc(%ebp),%eax
40e3dd:	eb 2a                	jmp    0x40e409
40e3df:	83 7e 04 01          	cmpl   $0x1,0x4(%esi)
40e3e3:	7e 0c                	jle    0x40e3f1
40e3e5:	51                   	push   %ecx
40e3e6:	ff 75 0c             	push   0xc(%ebp)
40e3e9:	52                   	push   %edx
40e3ea:	e8 d2 4d 00 00       	call   0x4131c1
40e3ef:	eb 15                	jmp    0x40e406
40e3f1:	33 c0                	xor    %eax,%eax
40e3f3:	eb 14                	jmp    0x40e409
40e3f5:	ff 75 0c             	push   0xc(%ebp)
40e3f8:	ff 75 08             	push   0x8(%ebp)
40e3fb:	e8 bf 25 00 00       	call   0x4109bf
40e400:	50                   	push   %eax
40e401:	e8 27 d8 ff ff       	call   0x40bc2d
40e406:	83 c4 0c             	add    $0xc,%esp
40e409:	5e                   	pop    %esi
40e40a:	5d                   	pop    %ebp
40e40b:	c3                   	ret
40e40c:	cc                   	int3
40e40d:	cc                   	int3
40e40e:	cc                   	int3
40e40f:	cc                   	int3
40e410:	53                   	push   %ebx
40e411:	56                   	push   %esi
40e412:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
40e416:	8b 54 24 10          	mov    0x10(%esp),%edx
40e41a:	8b 5c 24 14          	mov    0x14(%esp),%ebx
40e41e:	f7 c3 ff ff ff ff    	test   $0xffffffff,%ebx
40e424:	74 50                	je     0x40e476
40e426:	2b ca                	sub    %edx,%ecx
40e428:	f7 c2 03 00 00 00    	test   $0x3,%edx
40e42e:	74 17                	je     0x40e447
40e430:	0f b6 04 11          	movzbl (%ecx,%edx,1),%eax
40e434:	3a 02                	cmp    (%edx),%al
40e436:	75 48                	jne    0x40e480
40e438:	85 c0                	test   %eax,%eax
40e43a:	74 3a                	je     0x40e476
40e43c:	42                   	inc    %edx
40e43d:	83 eb 01             	sub    $0x1,%ebx
40e440:	76 34                	jbe    0x40e476
40e442:	f6 c2 03             	test   $0x3,%dl
40e445:	75 e9                	jne    0x40e430
40e447:	8d 04 11             	lea    (%ecx,%edx,1),%eax
40e44a:	25 ff 0f 00 00       	and    $0xfff,%eax
40e44f:	3d fc 0f 00 00       	cmp    $0xffc,%eax
40e454:	77 da                	ja     0x40e430
40e456:	8b 04 11             	mov    (%ecx,%edx,1),%eax
40e459:	3b 02                	cmp    (%edx),%eax
40e45b:	75 d3                	jne    0x40e430
40e45d:	83 eb 04             	sub    $0x4,%ebx
40e460:	76 14                	jbe    0x40e476
40e462:	8d b0 ff fe fe fe    	lea    -0x1010101(%eax),%esi
40e468:	83 c2 04             	add    $0x4,%edx
40e46b:	f7 d0                	not    %eax
40e46d:	23 c6                	and    %esi,%eax
40e46f:	a9 80 80 80 80       	test   $0x80808080,%eax
40e474:	74 d1                	je     0x40e447
40e476:	33 c0                	xor    %eax,%eax
40e478:	5e                   	pop    %esi
40e479:	5b                   	pop    %ebx
40e47a:	c3                   	ret
40e47b:	eb 03                	jmp    0x40e480
40e47d:	cc                   	int3
40e47e:	cc                   	int3
40e47f:	cc                   	int3
40e480:	1b c0                	sbb    %eax,%eax
40e482:	83 c8 01             	or     $0x1,%eax
40e485:	5e                   	pop    %esi
40e486:	5b                   	pop    %ebx
40e487:	c3                   	ret
40e488:	8b ff                	mov    %edi,%edi
40e48a:	55                   	push   %ebp
40e48b:	8b ec                	mov    %esp,%ebp
40e48d:	8b 45 10             	mov    0x10(%ebp),%eax
40e490:	85 c0                	test   %eax,%eax
40e492:	75 02                	jne    0x40e496
40e494:	5d                   	pop    %ebp
40e495:	c3                   	ret
40e496:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40e499:	8b 55 08             	mov    0x8(%ebp),%edx
40e49c:	56                   	push   %esi
40e49d:	83 e8 01             	sub    $0x1,%eax
40e4a0:	74 15                	je     0x40e4b7
40e4a2:	0f b7 32             	movzwl (%edx),%esi
40e4a5:	66 85 f6             	test   %si,%si
40e4a8:	74 0d                	je     0x40e4b7
40e4aa:	66 3b 31             	cmp    (%ecx),%si
40e4ad:	75 08                	jne    0x40e4b7
40e4af:	83 c2 02             	add    $0x2,%edx
40e4b2:	83 c1 02             	add    $0x2,%ecx
40e4b5:	eb e6                	jmp    0x40e49d
40e4b7:	0f b7 02             	movzwl (%edx),%eax
40e4ba:	0f b7 09             	movzwl (%ecx),%ecx
40e4bd:	2b c1                	sub    %ecx,%eax
40e4bf:	5e                   	pop    %esi
40e4c0:	5d                   	pop    %ebp
40e4c1:	c3                   	ret
40e4c2:	6a 08                	push   $0x8
40e4c4:	68 00 3f 42 00       	push   $0x423f00
40e4c9:	e8 02 a5 ff ff       	call   0x4089d0
40e4ce:	8b 45 08             	mov    0x8(%ebp),%eax
40e4d1:	ff 30                	push   (%eax)
40e4d3:	e8 29 1d 00 00       	call   0x410201
40e4d8:	59                   	pop    %ecx
40e4d9:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40e4dd:	8b 45 0c             	mov    0xc(%ebp),%eax
40e4e0:	8b 00                	mov    (%eax),%eax
40e4e2:	8b 00                	mov    (%eax),%eax
40e4e4:	8b 40 48             	mov    0x48(%eax),%eax
40e4e7:	f0 ff 00             	lock incl (%eax)
40e4ea:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40e4f1:	e8 12 00 00 00       	call   0x40e508
40e4f6:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40e4f9:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40e500:	59                   	pop    %ecx
40e501:	5f                   	pop    %edi
40e502:	5e                   	pop    %esi
40e503:	5b                   	pop    %ebx
40e504:	c9                   	leave
40e505:	c2 0c 00             	ret    $0xc
40e508:	8b 45 10             	mov    0x10(%ebp),%eax
40e50b:	ff 30                	push   (%eax)
40e50d:	e8 3f 1d 00 00       	call   0x410251
40e512:	59                   	pop    %ecx
40e513:	c3                   	ret
40e514:	6a 08                	push   $0x8
40e516:	68 40 3f 42 00       	push   $0x423f40
40e51b:	e8 b0 a4 ff ff       	call   0x4089d0
40e520:	8b 45 08             	mov    0x8(%ebp),%eax
40e523:	ff 30                	push   (%eax)
40e525:	e8 d7 1c 00 00       	call   0x410201
40e52a:	59                   	pop    %ecx
40e52b:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40e52f:	8b 45 0c             	mov    0xc(%ebp),%eax
40e532:	8b 00                	mov    (%eax),%eax
40e534:	8b 00                	mov    (%eax),%eax
40e536:	8b 48 48             	mov    0x48(%eax),%ecx
40e539:	85 c9                	test   %ecx,%ecx
40e53b:	74 18                	je     0x40e555
40e53d:	83 c8 ff             	or     $0xffffffff,%eax
40e540:	f0 0f c1 01          	lock xadd %eax,(%ecx)
40e544:	75 0f                	jne    0x40e555
40e546:	81 f9 60 60 42 00    	cmp    $0x426060,%ecx
40e54c:	74 07                	je     0x40e555
40e54e:	51                   	push   %ecx
40e54f:	e8 ef 07 00 00       	call   0x40ed43
40e554:	59                   	pop    %ecx
40e555:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40e55c:	e8 12 00 00 00       	call   0x40e573
40e561:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40e564:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40e56b:	59                   	pop    %ecx
40e56c:	5f                   	pop    %edi
40e56d:	5e                   	pop    %esi
40e56e:	5b                   	pop    %ebx
40e56f:	c9                   	leave
40e570:	c2 0c 00             	ret    $0xc
40e573:	8b 45 10             	mov    0x10(%ebp),%eax
40e576:	ff 30                	push   (%eax)
40e578:	e8 d4 1c 00 00       	call   0x410251
40e57d:	59                   	pop    %ecx
40e57e:	c3                   	ret
40e57f:	6a 08                	push   $0x8
40e581:	68 60 3f 42 00       	push   $0x423f60
40e586:	e8 45 a4 ff ff       	call   0x4089d0
40e58b:	8b 45 08             	mov    0x8(%ebp),%eax
40e58e:	ff 30                	push   (%eax)
40e590:	e8 6c 1c 00 00       	call   0x410201
40e595:	59                   	pop    %ecx
40e596:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40e59a:	6a 00                	push   $0x0
40e59c:	8b 45 0c             	mov    0xc(%ebp),%eax
40e59f:	8b 00                	mov    (%eax),%eax
40e5a1:	ff 30                	push   (%eax)
40e5a3:	e8 16 02 00 00       	call   0x40e7be
40e5a8:	59                   	pop    %ecx
40e5a9:	59                   	pop    %ecx
40e5aa:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40e5b1:	e8 12 00 00 00       	call   0x40e5c8
40e5b6:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40e5b9:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40e5c0:	59                   	pop    %ecx
40e5c1:	5f                   	pop    %edi
40e5c2:	5e                   	pop    %esi
40e5c3:	5b                   	pop    %ebx
40e5c4:	c9                   	leave
40e5c5:	c2 0c 00             	ret    $0xc
40e5c8:	8b 45 10             	mov    0x10(%ebp),%eax
40e5cb:	ff 30                	push   (%eax)
40e5cd:	e8 7f 1c 00 00       	call   0x410251
40e5d2:	59                   	pop    %ecx
40e5d3:	c3                   	ret
40e5d4:	6a 08                	push   $0x8
40e5d6:	68 20 3f 42 00       	push   $0x423f20
40e5db:	e8 f0 a3 ff ff       	call   0x4089d0
40e5e0:	8b 45 08             	mov    0x8(%ebp),%eax
40e5e3:	ff 30                	push   (%eax)
40e5e5:	e8 17 1c 00 00       	call   0x410201
40e5ea:	59                   	pop    %ecx
40e5eb:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40e5ef:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40e5f2:	8b 41 04             	mov    0x4(%ecx),%eax
40e5f5:	8b 00                	mov    (%eax),%eax
40e5f7:	ff 30                	push   (%eax)
40e5f9:	8b 01                	mov    (%ecx),%eax
40e5fb:	ff 30                	push   (%eax)
40e5fd:	e8 bc 01 00 00       	call   0x40e7be
40e602:	59                   	pop    %ecx
40e603:	59                   	pop    %ecx
40e604:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40e60b:	e8 12 00 00 00       	call   0x40e622
40e610:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40e613:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40e61a:	59                   	pop    %ecx
40e61b:	5f                   	pop    %edi
40e61c:	5e                   	pop    %esi
40e61d:	5b                   	pop    %ebx
40e61e:	c9                   	leave
40e61f:	c2 0c 00             	ret    $0xc
40e622:	8b 45 10             	mov    0x10(%ebp),%eax
40e625:	ff 30                	push   (%eax)
40e627:	e8 25 1c 00 00       	call   0x410251
40e62c:	59                   	pop    %ecx
40e62d:	c3                   	ret
40e62e:	8b ff                	mov    %edi,%edi
40e630:	55                   	push   %ebp
40e631:	8b ec                	mov    %esp,%ebp
40e633:	83 ec 14             	sub    $0x14,%esp
40e636:	8b 45 08             	mov    0x8(%ebp),%eax
40e639:	33 c9                	xor    %ecx,%ecx
40e63b:	41                   	inc    %ecx
40e63c:	6a 43                	push   $0x43
40e63e:	89 48 18             	mov    %ecx,0x18(%eax)
40e641:	8b 45 08             	mov    0x8(%ebp),%eax
40e644:	c7 00 e8 cf 41 00    	movl   $0x41cfe8,(%eax)
40e64a:	8b 45 08             	mov    0x8(%ebp),%eax
40e64d:	89 88 50 03 00 00    	mov    %ecx,0x350(%eax)
40e653:	8b 45 08             	mov    0x8(%ebp),%eax
40e656:	59                   	pop    %ecx
40e657:	6a 05                	push   $0x5
40e659:	c7 40 48 60 60 42 00 	movl   $0x426060,0x48(%eax)
40e660:	8b 45 08             	mov    0x8(%ebp),%eax
40e663:	66 89 48 6c          	mov    %cx,0x6c(%eax)
40e667:	8b 45 08             	mov    0x8(%ebp),%eax
40e66a:	66 89 88 72 01 00 00 	mov    %cx,0x172(%eax)
40e671:	8d 4d ff             	lea    -0x1(%ebp),%ecx
40e674:	8b 45 08             	mov    0x8(%ebp),%eax
40e677:	83 a0 4c 03 00 00 00 	andl   $0x0,0x34c(%eax)
40e67e:	8d 45 08             	lea    0x8(%ebp),%eax
40e681:	89 45 f0             	mov    %eax,-0x10(%ebp)
40e684:	58                   	pop    %eax
40e685:	89 45 f8             	mov    %eax,-0x8(%ebp)
40e688:	89 45 ec             	mov    %eax,-0x14(%ebp)
40e68b:	8d 45 f8             	lea    -0x8(%ebp),%eax
40e68e:	50                   	push   %eax
40e68f:	8d 45 f0             	lea    -0x10(%ebp),%eax
40e692:	50                   	push   %eax
40e693:	8d 45 ec             	lea    -0x14(%ebp),%eax
40e696:	50                   	push   %eax
40e697:	e8 26 fe ff ff       	call   0x40e4c2
40e69c:	8d 45 08             	lea    0x8(%ebp),%eax
40e69f:	89 45 f4             	mov    %eax,-0xc(%ebp)
40e6a2:	8d 4d ff             	lea    -0x1(%ebp),%ecx
40e6a5:	6a 04                	push   $0x4
40e6a7:	8d 45 0c             	lea    0xc(%ebp),%eax
40e6aa:	89 45 f8             	mov    %eax,-0x8(%ebp)
40e6ad:	58                   	pop    %eax
40e6ae:	89 45 ec             	mov    %eax,-0x14(%ebp)
40e6b1:	89 45 f0             	mov    %eax,-0x10(%ebp)
40e6b4:	8d 45 ec             	lea    -0x14(%ebp),%eax
40e6b7:	50                   	push   %eax
40e6b8:	8d 45 f4             	lea    -0xc(%ebp),%eax
40e6bb:	50                   	push   %eax
40e6bc:	8d 45 f0             	lea    -0x10(%ebp),%eax
40e6bf:	50                   	push   %eax
40e6c0:	e8 0f ff ff ff       	call   0x40e5d4
40e6c5:	c9                   	leave
40e6c6:	c3                   	ret
40e6c7:	cc                   	int3
40e6c8:	cc                   	int3
40e6c9:	cc                   	int3
40e6ca:	cc                   	int3
40e6cb:	cc                   	int3
40e6cc:	cc                   	int3
40e6cd:	cc                   	int3
40e6ce:	cc                   	int3
40e6cf:	cc                   	int3
40e6d0:	8b ff                	mov    %edi,%edi
40e6d2:	55                   	push   %ebp
40e6d3:	8b ec                	mov    %esp,%ebp
40e6d5:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
40e6d9:	74 12                	je     0x40e6ed
40e6db:	ff 75 08             	push   0x8(%ebp)
40e6de:	e8 0e 00 00 00       	call   0x40e6f1
40e6e3:	ff 75 08             	push   0x8(%ebp)
40e6e6:	e8 58 06 00 00       	call   0x40ed43
40e6eb:	59                   	pop    %ecx
40e6ec:	59                   	pop    %ecx
40e6ed:	5d                   	pop    %ebp
40e6ee:	c2 04 00             	ret    $0x4
40e6f1:	8b ff                	mov    %edi,%edi
40e6f3:	55                   	push   %ebp
40e6f4:	8b ec                	mov    %esp,%ebp
40e6f6:	8b 45 08             	mov    0x8(%ebp),%eax
40e6f9:	83 ec 10             	sub    $0x10,%esp
40e6fc:	8b 08                	mov    (%eax),%ecx
40e6fe:	81 f9 e8 cf 41 00    	cmp    $0x41cfe8,%ecx
40e704:	74 0a                	je     0x40e710
40e706:	51                   	push   %ecx
40e707:	e8 37 06 00 00       	call   0x40ed43