40629d:	8b 46 14             	mov    0x14(%esi),%eax
4062a0:	83 c4 0c             	add    $0xc,%esp
4062a3:	89 7e 10             	mov    %edi,0x10(%esi)
4062a6:	83 f8 08             	cmp    $0x8,%eax
4062a9:	72 04                	jb     0x4062af
4062ab:	8b 06                	mov    (%esi),%eax
4062ad:	eb 02                	jmp    0x4062b1
4062af:	8b c6                	mov    %esi,%eax
4062b1:	33 c9                	xor    %ecx,%ecx
4062b3:	66 89 0c 78          	mov    %cx,(%eax,%edi,2)
4062b7:	5f                   	pop    %edi
4062b8:	8b c6                	mov    %esi,%eax
4062ba:	5e                   	pop    %esi
4062bb:	5b                   	pop    %ebx
4062bc:	5d                   	pop    %ebp
4062bd:	c2 0c 00             	ret    $0xc
4062c0:	e8 13 ed ff ff       	call   0x404fd8
4062c5:	cc                   	int3
4062c6:	8b ff                	mov    %edi,%edi
4062c8:	55                   	push   %ebp
4062c9:	8b ec                	mov    %esp,%ebp
4062cb:	8b 45 08             	mov    0x8(%ebp),%eax
4062ce:	33 c9                	xor    %ecx,%ecx
4062d0:	85 c0                	test   %eax,%eax
4062d2:	74 16                	je     0x4062ea
4062d4:	3d ff ff ff 7f       	cmp    $0x7fffffff,%eax
4062d9:	77 15                	ja     0x4062f0
4062db:	03 c0                	add    %eax,%eax
4062dd:	50                   	push   %eax
4062de:	e8 e5 7b 00 00       	call   0x40dec8
4062e3:	59                   	pop    %ecx
4062e4:	8b c8                	mov    %eax,%ecx
4062e6:	85 c9                	test   %ecx,%ecx
4062e8:	74 06                	je     0x4062f0
4062ea:	8b c1                	mov    %ecx,%eax
4062ec:	5d                   	pop    %ebp
4062ed:	c2 04 00             	ret    $0x4
4062f0:	e8 1c 7d 00 00       	call   0x40e011
4062f5:	cc                   	int3
4062f6:	6a 10                	push   $0x10
4062f8:	b8 3f ed 40 00       	mov    $0x40ed3f,%eax
4062fd:	e8 b5 83 00 00       	call   0x40e6b7
406302:	8b f9                	mov    %ecx,%edi
406304:	89 7d ec             	mov    %edi,-0x14(%ebp)
406307:	8b 75 08             	mov    0x8(%ebp),%esi
40630a:	83 ce 07             	or     $0x7,%esi
40630d:	81 fe fe ff ff 7f    	cmp    $0x7ffffffe,%esi
406313:	76 05                	jbe    0x40631a
406315:	8b 75 08             	mov    0x8(%ebp),%esi
406318:	eb 29                	jmp    0x406343
40631a:	33 d2                	xor    %edx,%edx
40631c:	c7 45 e8 03 00 00 00 	movl   $0x3,-0x18(%ebp)
406323:	8b c6                	mov    %esi,%eax
406325:	8b 5f 14             	mov    0x14(%edi),%ebx
406328:	f7 75 e8             	divl   -0x18(%ebp)
40632b:	8b cb                	mov    %ebx,%ecx
40632d:	d1 e9                	shr    $1,%ecx
40632f:	3b c8                	cmp    %eax,%ecx
406331:	76 10                	jbe    0x406343
406333:	be fe ff ff 7f       	mov    $0x7ffffffe,%esi
406338:	8b c6                	mov    %esi,%eax
40633a:	2b c1                	sub    %ecx,%eax
40633c:	3b d8                	cmp    %eax,%ebx
40633e:	77 03                	ja     0x406343
406340:	8d 34 19             	lea    (%ecx,%ebx,1),%esi
406343:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
406347:	8d 46 01             	lea    0x1(%esi),%eax
40634a:	50                   	push   %eax
40634b:	e8 76 ff ff ff       	call   0x4062c6
406350:	8b d8                	mov    %eax,%ebx
406352:	eb 26                	jmp    0x40637a
406354:	8b 45 08             	mov    0x8(%ebp),%eax
406357:	89 45 e8             	mov    %eax,-0x18(%ebp)
40635a:	40                   	inc    %eax
40635b:	89 65 f0             	mov    %esp,-0x10(%ebp)
40635e:	50                   	push   %eax
40635f:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
406363:	e8 5e ff ff ff       	call   0x4062c6
406368:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40636b:	b8 71 63 40 00       	mov    $0x406371,%eax
406370:	c3                   	ret
406371:	8b 7d ec             	mov    -0x14(%ebp),%edi
406374:	8b 75 e8             	mov    -0x18(%ebp),%esi
406377:	8b 5d e4             	mov    -0x1c(%ebp),%ebx
40637a:	8b 45 0c             	mov    0xc(%ebp),%eax
40637d:	85 c0                	test   %eax,%eax
40637f:	74 19                	je     0x40639a
406381:	83 7f 14 08          	cmpl   $0x8,0x14(%edi)
406385:	72 04                	jb     0x40638b
406387:	8b 0f                	mov    (%edi),%ecx
406389:	eb 02                	jmp    0x40638d
40638b:	8b cf                	mov    %edi,%ecx
40638d:	03 c0                	add    %eax,%eax
40638f:	50                   	push   %eax
406390:	51                   	push   %ecx
406391:	53                   	push   %ebx
406392:	e8 8f 83 00 00       	call   0x40e726
406397:	83 c4 0c             	add    $0xc,%esp
40639a:	6a 00                	push   $0x0
40639c:	6a 01                	push   $0x1
40639e:	8b cf                	mov    %edi,%ecx
4063a0:	e8 4b 01 00 00       	call   0x4064f0
4063a5:	8b 45 0c             	mov    0xc(%ebp),%eax
4063a8:	89 1f                	mov    %ebx,(%edi)
4063aa:	89 77 14             	mov    %esi,0x14(%edi)
4063ad:	89 47 10             	mov    %eax,0x10(%edi)
4063b0:	83 fe 08             	cmp    $0x8,%esi
4063b3:	73 02                	jae    0x4063b7
4063b5:	8b df                	mov    %edi,%ebx
4063b7:	33 c9                	xor    %ecx,%ecx
4063b9:	66 89 0c 43          	mov    %cx,(%ebx,%eax,2)
4063bd:	e8 5a 82 00 00       	call   0x40e61c
4063c2:	c2 08 00             	ret    $0x8
4063c5:	8b 4d ec             	mov    -0x14(%ebp),%ecx
4063c8:	6a 00                	push   $0x0
4063ca:	6a 01                	push   $0x1
4063cc:	e8 1f 01 00 00       	call   0x4064f0
4063d1:	6a 00                	push   $0x0
4063d3:	6a 00                	push   $0x0
4063d5:	e8 3c 82 00 00       	call   0x40e616
4063da:	cc                   	int3
4063db:	8b ff                	mov    %edi,%edi
4063dd:	55                   	push   %ebp
4063de:	8b ec                	mov    %esp,%ebp
4063e0:	56                   	push   %esi
4063e1:	8b 75 08             	mov    0x8(%ebp),%esi
4063e4:	81 fe fe ff ff 7f    	cmp    $0x7ffffffe,%esi
4063ea:	77 2e                	ja     0x40641a
4063ec:	39 71 14             	cmp    %esi,0x14(%ecx)
4063ef:	73 0b                	jae    0x4063fc
4063f1:	ff 71 10             	push   0x10(%ecx)
4063f4:	56                   	push   %esi
4063f5:	e8 fc fe ff ff       	call   0x4062f6
4063fa:	eb 14                	jmp    0x406410
4063fc:	85 f6                	test   %esi,%esi
4063fe:	75 12                	jne    0x406412
406400:	21 71 10             	and    %esi,0x10(%ecx)
406403:	83 79 14 08          	cmpl   $0x8,0x14(%ecx)
406407:	72 02                	jb     0x40640b
406409:	8b 09                	mov    (%ecx),%ecx
40640b:	33 c0                	xor    %eax,%eax
40640d:	66 89 01             	mov    %ax,(%ecx)
406410:	85 f6                	test   %esi,%esi
406412:	0f 95 c0             	setne  %al
406415:	5e                   	pop    %esi
406416:	5d                   	pop    %ebp
406417:	c2 08 00             	ret    $0x8
40641a:	e8 43 ec ff ff       	call   0x405062
40641f:	cc                   	int3
406420:	8b ff                	mov    %edi,%edi
406422:	55                   	push   %ebp
406423:	8b ec                	mov    %esp,%ebp
406425:	56                   	push   %esi
406426:	57                   	push   %edi
406427:	8b 7d 08             	mov    0x8(%ebp),%edi
40642a:	8b f1                	mov    %ecx,%esi
40642c:	57                   	push   %edi
40642d:	e8 36 fd ff ff       	call   0x406168
406432:	84 c0                	test   %al,%al
406434:	74 1c                	je     0x406452
406436:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
40643a:	72 04                	jb     0x406440
40643c:	8b 06                	mov    (%esi),%eax
40643e:	eb 02                	jmp    0x406442
406440:	8b c6                	mov    %esi,%eax
406442:	ff 75 0c             	push   0xc(%ebp)
406445:	2b f8                	sub    %eax,%edi
406447:	d1 ff                	sar    $1,%edi
406449:	57                   	push   %edi
40644a:	56                   	push   %esi
40644b:	e8 c6 fd ff ff       	call   0x406216
406450:	eb 49                	jmp    0x40649b
406452:	53                   	push   %ebx
406453:	8b 5d 0c             	mov    0xc(%ebp),%ebx
406456:	51                   	push   %ecx
406457:	53                   	push   %ebx
406458:	e8 7e ff ff ff       	call   0x4063db
40645d:	84 c0                	test   %al,%al
40645f:	74 37                	je     0x406498
406461:	8b 46 14             	mov    0x14(%esi),%eax
406464:	83 f8 08             	cmp    $0x8,%eax
406467:	72 04                	jb     0x40646d
406469:	8b 0e                	mov    (%esi),%ecx
40646b:	eb 02                	jmp    0x40646f
40646d:	8b ce                	mov    %esi,%ecx
40646f:	85 db                	test   %ebx,%ebx
406471:	74 11                	je     0x406484
406473:	8d 04 1b             	lea    (%ebx,%ebx,1),%eax
406476:	50                   	push   %eax
406477:	57                   	push   %edi
406478:	51                   	push   %ecx
406479:	e8 a8 82 00 00       	call   0x40e726
40647e:	8b 46 14             	mov    0x14(%esi),%eax
406481:	83 c4 0c             	add    $0xc,%esp
406484:	89 5e 10             	mov    %ebx,0x10(%esi)
406487:	83 f8 08             	cmp    $0x8,%eax
40648a:	72 04                	jb     0x406490
40648c:	8b 06                	mov    (%esi),%eax
40648e:	eb 02                	jmp    0x406492
406490:	8b c6                	mov    %esi,%eax
406492:	33 c9                	xor    %ecx,%ecx
406494:	66 89 0c 58          	mov    %cx,(%eax,%ebx,2)
406498:	8b c6                	mov    %esi,%eax
40649a:	5b                   	pop    %ebx
40649b:	5f                   	pop    %edi
40649c:	5e                   	pop    %esi
40649d:	5d                   	pop    %ebp
40649e:	c2 08 00             	ret    $0x8
4064a1:	8b ff                	mov    %edi,%edi
4064a3:	55                   	push   %ebp
4064a4:	8b ec                	mov    %esp,%ebp
4064a6:	56                   	push   %esi
4064a7:	8b 75 08             	mov    0x8(%ebp),%esi
4064aa:	33 d2                	xor    %edx,%edx
4064ac:	57                   	push   %edi
4064ad:	8b f9                	mov    %ecx,%edi
4064af:	66 39 16             	cmp    %dx,(%esi)
4064b2:	74 18                	je     0x4064cc
4064b4:	8b ce                	mov    %esi,%ecx
4064b6:	53                   	push   %ebx
4064b7:	8d 59 02             	lea    0x2(%ecx),%ebx
4064ba:	66 8b 01             	mov    (%ecx),%ax
4064bd:	83 c1 02             	add    $0x2,%ecx
4064c0:	66 3b c2             	cmp    %dx,%ax
4064c3:	75 f5                	jne    0x4064ba
4064c5:	8b d1                	mov    %ecx,%edx
4064c7:	2b d3                	sub    %ebx,%edx
4064c9:	d1 fa                	sar    $1,%edx
4064cb:	5b                   	pop    %ebx
4064cc:	52                   	push   %edx
4064cd:	56                   	push   %esi
4064ce:	8b cf                	mov    %edi,%ecx
4064d0:	e8 4b ff ff ff       	call   0x406420
4064d5:	5f                   	pop    %edi
4064d6:	5e                   	pop    %esi
4064d7:	5d                   	pop    %ebp
4064d8:	c2 04 00             	ret    $0x4
4064db:	83 79 14 08          	cmpl   $0x8,0x14(%ecx)
4064df:	72 02                	jb     0x4064e3
4064e1:	8b 09                	mov    (%ecx),%ecx
4064e3:	8b c1                	mov    %ecx,%eax
4064e5:	c3                   	ret
4064e6:	6a 00                	push   $0x0
4064e8:	6a 01                	push   $0x1
4064ea:	e8 01 00 00 00       	call   0x4064f0
4064ef:	c3                   	ret
4064f0:	8b ff                	mov    %edi,%edi
4064f2:	55                   	push   %ebp
4064f3:	8b ec                	mov    %esp,%ebp
4064f5:	80 7d 08 00          	cmpb   $0x0,0x8(%ebp)
4064f9:	56                   	push   %esi
4064fa:	57                   	push   %edi
4064fb:	8b 7d 0c             	mov    0xc(%ebp),%edi
4064fe:	8b f1                	mov    %ecx,%esi
406500:	74 24                	je     0x406526
406502:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
406506:	72 1e                	jb     0x406526
406508:	53                   	push   %ebx
406509:	8b 1e                	mov    (%esi),%ebx
40650b:	85 ff                	test   %edi,%edi
40650d:	74 0e                	je     0x40651d
40650f:	8d 04 3f             	lea    (%edi,%edi,1),%eax
406512:	50                   	push   %eax
406513:	53                   	push   %ebx
406514:	56                   	push   %esi
406515:	e8 0c 82 00 00       	call   0x40e726
40651a:	83 c4 0c             	add    $0xc,%esp
40651d:	53                   	push   %ebx
40651e:	ff 15 e4 21 41 00    	call   *0x4121e4
406524:	59                   	pop    %ecx
406525:	5b                   	pop    %ebx
406526:	89 7e 10             	mov    %edi,0x10(%esi)
406529:	33 c0                	xor    %eax,%eax
40652b:	c7 46 14 07 00 00 00 	movl   $0x7,0x14(%esi)
406532:	66 89 04 7e          	mov    %ax,(%esi,%edi,2)
406536:	5f                   	pop    %edi
406537:	5e                   	pop    %esi
406538:	5d                   	pop    %ebp
406539:	c2 08 00             	ret    $0x8
40653c:	6a 0c                	push   $0xc
40653e:	b8 78 ec 40 00       	mov    $0x40ec78,%eax
406543:	e8 06 81 00 00       	call   0x40e64e
406548:	8b f9                	mov    %ecx,%edi
40654a:	33 c0                	xor    %eax,%eax
40654c:	89 45 e8             	mov    %eax,-0x18(%ebp)
40654f:	89 45 ec             	mov    %eax,-0x14(%ebp)
406552:	89 45 f0             	mov    %eax,-0x10(%ebp)
406555:	8b 55 08             	mov    0x8(%ebp),%edx
406558:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40655b:	89 45 fc             	mov    %eax,-0x4(%ebp)
40655e:	e8 25 73 00 00       	call   0x40d888
406563:	83 7d e8 00          	cmpl   $0x0,-0x18(%ebp)
406567:	74 15                	je     0x40657e
406569:	8b 55 e8             	mov    -0x18(%ebp),%edx
40656c:	8b 4f 10             	mov    0x10(%edi),%ecx
40656f:	e8 a0 0d 00 00       	call   0x407314
406574:	ff 75 e8             	push   -0x18(%ebp)
406577:	ff 15 e4 21 41 00    	call   *0x4121e4
40657d:	59                   	pop    %ecx
40657e:	e8 99 80 00 00       	call   0x40e61c
406583:	c2 04 00             	ret    $0x4
406586:	8b ff                	mov    %edi,%edi
406588:	55                   	push   %ebp
406589:	8b ec                	mov    %esp,%ebp
40658b:	83 ec 0c             	sub    $0xc,%esp
40658e:	80 3d 04 17 41 00 00 	cmpb   $0x0,0x411704
406595:	8d 45 f4             	lea    -0xc(%ebp),%eax
406598:	6a 00                	push   $0x0
40659a:	66 c7 45 f8 ef bb    	movw   $0xbbef,-0x8(%ebp)
4065a0:	c6 45 fa bf          	movb   $0xbf,-0x6(%ebp)
4065a4:	66 c7 45 fc ff fe    	movw   $0xfeff,-0x4(%ebp)
4065aa:	50                   	push   %eax
4065ab:	75 13                	jne    0x4065c0
4065ad:	6a 03                	push   $0x3
4065af:	8d 45 f8             	lea    -0x8(%ebp),%eax
4065b2:	50                   	push   %eax
4065b3:	51                   	push   %ecx
4065b4:	ff 15 88 20 41 00    	call   *0x412088
4065ba:	85 c0                	test   %eax,%eax
4065bc:	74 0b                	je     0x4065c9
4065be:	eb 07                	jmp    0x4065c7
4065c0:	6a 02                	push   $0x2
4065c2:	8d 45 fc             	lea    -0x4(%ebp),%eax
4065c5:	eb eb                	jmp    0x4065b2
4065c7:	c9                   	leave
4065c8:	c3                   	ret
4065c9:	ff 15 70 20 41 00    	call   *0x412070
4065cf:	8b c8                	mov    %eax,%ecx
4065d1:	e8 b3 0f 00 00       	call   0x407589
4065d6:	cc                   	int3
4065d7:	6a 18                	push   $0x18
4065d9:	b8 62 ed 40 00       	mov    $0x40ed62,%eax
4065de:	e8 6b 80 00 00       	call   0x40e64e
4065e3:	8b f9                	mov    %ecx,%edi
4065e5:	8b 75 08             	mov    0x8(%ebp),%esi
4065e8:	85 f6                	test   %esi,%esi
4065ea:	74 04                	je     0x4065f0
4065ec:	f0 ff 46 04          	lock incl 0x4(%esi)
4065f0:	8b 4f 08             	mov    0x8(%edi),%ecx
4065f3:	85 c9                	test   %ecx,%ecx
4065f5:	74 05                	je     0x4065fc
4065f7:	e8 37 fb ff ff       	call   0x406133
4065fc:	68 4c 24 40 00       	push   $0x40244c
406601:	68 5c 24 40 00       	push   $0x40245c
406606:	8b ce                	mov    %esi,%ecx
406608:	89 77 08             	mov    %esi,0x8(%edi)
40660b:	e8 63 ee ff ff       	call   0x405473
406610:	8b 4f 08             	mov    0x8(%edi),%ecx
406613:	68 60 24 40 00       	push   $0x402460
406618:	68 64 24 40 00       	push   $0x402464