406311:	e8 da 06 00 00       	call   0x4069f0
406316:	59                   	pop    %ecx
406317:	59                   	pop    %ecx
406318:	8b c6                	mov    %esi,%eax
40631a:	5e                   	pop    %esi
40631b:	c2 04 00             	ret    $0x4
40631e:	51                   	push   %ecx
40631f:	53                   	push   %ebx
406320:	55                   	push   %ebp
406321:	56                   	push   %esi
406322:	57                   	push   %edi
406323:	8b 7c 24 18          	mov    0x18(%esp),%edi
406327:	8b f1                	mov    %ecx,%esi
406329:	83 cf 0f             	or     $0xf,%edi
40632c:	8d 5e 14             	lea    0x14(%esi),%ebx
40632f:	83 ff fe             	cmp    $0xfffffffe,%edi
406332:	76 06                	jbe    0x40633a
406334:	8b 7c 24 18          	mov    0x18(%esp),%edi
406338:	eb 35                	jmp    0x40636f
40633a:	8b 03                	mov    (%ebx),%eax
40633c:	33 d2                	xor    %edx,%edx
40633e:	8b c8                	mov    %eax,%ecx
406340:	89 44 24 10          	mov    %eax,0x10(%esp)
406344:	8b c7                	mov    %edi,%eax
406346:	c7 44 24 18 03 00 00 	movl   $0x3,0x18(%esp)
40634d:	00
40634e:	f7 74 24 18          	divl   0x18(%esp)
406352:	d1 e9                	shr    $1,%ecx
406354:	8b eb                	mov    %ebx,%ebp
406356:	3b c8                	cmp    %eax,%ecx
406358:	76 15                	jbe    0x40636f
40635a:	8b 54 24 10          	mov    0x10(%esp),%edx
40635e:	6a fe                	push   $0xfffffffe
406360:	58                   	pop    %eax
406361:	2b c1                	sub    %ecx,%eax
406363:	3b d0                	cmp    %eax,%edx
406365:	77 05                	ja     0x40636c
406367:	8d 3c 11             	lea    (%ecx,%edx,1),%edi
40636a:	eb 03                	jmp    0x40636f
40636c:	6a fe                	push   $0xfffffffe
40636e:	5f                   	pop    %edi
40636f:	33 d2                	xor    %edx,%edx
406371:	51                   	push   %ecx
406372:	8d 4f 01             	lea    0x1(%edi),%ecx
406375:	42                   	inc    %edx
406376:	e8 0b ae ff ff       	call   0x401186
40637b:	8b 6c 24 20          	mov    0x20(%esp),%ebp
40637f:	89 44 24 1c          	mov    %eax,0x1c(%esp)
406383:	59                   	pop    %ecx
406384:	85 ed                	test   %ebp,%ebp
406386:	74 14                	je     0x40639c
406388:	83 3b 10             	cmpl   $0x10,(%ebx)
40638b:	72 04                	jb     0x406391
40638d:	8b 16                	mov    (%esi),%edx
40638f:	eb 02                	jmp    0x406393
406391:	8b d6                	mov    %esi,%edx
406393:	55                   	push   %ebp
406394:	8b c8                	mov    %eax,%ecx
406396:	e8 1d d7 ff ff       	call   0x403ab8
40639b:	59                   	pop    %ecx
40639c:	6a 00                	push   $0x0
40639e:	6a 01                	push   $0x1
4063a0:	8b ce                	mov    %esi,%ecx
4063a2:	e8 58 fa ff ff       	call   0x405dff
4063a7:	85 f6                	test   %esi,%esi
4063a9:	74 06                	je     0x4063b1
4063ab:	8b 44 24 18          	mov    0x18(%esp),%eax
4063af:	89 06                	mov    %eax,(%esi)
4063b1:	89 3b                	mov    %edi,(%ebx)
4063b3:	89 6e 10             	mov    %ebp,0x10(%esi)
4063b6:	83 ff 10             	cmp    $0x10,%edi
4063b9:	72 02                	jb     0x4063bd
4063bb:	8b 36                	mov    (%esi),%esi
4063bd:	5f                   	pop    %edi
4063be:	c6 04 2e 00          	movb   $0x0,(%esi,%ebp,1)
4063c2:	5e                   	pop    %esi
4063c3:	5d                   	pop    %ebp
4063c4:	5b                   	pop    %ebx
4063c5:	59                   	pop    %ecx
4063c6:	c2 08 00             	ret    $0x8
4063c9:	55                   	push   %ebp
4063ca:	8b ec                	mov    %esp,%ebp
4063cc:	83 7d 0c 01          	cmpl   $0x1,0xc(%ebp)
4063d0:	8b d1                	mov    %ecx,%edx
4063d2:	75 13                	jne    0x4063e7
4063d4:	83 7a 14 10          	cmpl   $0x10,0x14(%edx)
4063d8:	72 02                	jb     0x4063dc
4063da:	8b 12                	mov    (%edx),%edx
4063dc:	8b 45 08             	mov    0x8(%ebp),%eax
4063df:	8a 4d 10             	mov    0x10(%ebp),%cl
4063e2:	88 0c 02             	mov    %cl,(%edx,%eax,1)
4063e5:	eb 1e                	jmp    0x406405
4063e7:	83 7a 14 10          	cmpl   $0x10,0x14(%edx)
4063eb:	72 02                	jb     0x4063ef
4063ed:	8b 12                	mov    (%edx),%edx
4063ef:	ff 75 0c             	push   0xc(%ebp)
4063f2:	0f be 45 10          	movsbl 0x10(%ebp),%eax
4063f6:	50                   	push   %eax
4063f7:	8b 45 08             	mov    0x8(%ebp),%eax
4063fa:	03 c2                	add    %edx,%eax
4063fc:	50                   	push   %eax
4063fd:	e8 be 4f 00 00       	call   0x40b3c0
406402:	83 c4 0c             	add    $0xc,%esp
406405:	5d                   	pop    %ebp
406406:	c2 0c 00             	ret    $0xc
406409:	8b 44 24 04          	mov    0x4(%esp),%eax
40640d:	39 41 10             	cmp    %eax,0x10(%ecx)
406410:	72 18                	jb     0x40642a
406412:	83 79 14 10          	cmpl   $0x10,0x14(%ecx)
406416:	89 41 10             	mov    %eax,0x10(%ecx)
406419:	72 04                	jb     0x40641f
40641b:	8b 11                	mov    (%ecx),%edx
40641d:	eb 02                	jmp    0x406421
40641f:	8b d1                	mov    %ecx,%edx
406421:	c6 04 02 00          	movb   $0x0,(%edx,%eax,1)
406425:	8b c1                	mov    %ecx,%eax
406427:	c2 04 00             	ret    $0x4
40642a:	e8 a4 bd ff ff       	call   0x4021d3
40642f:	cc                   	int3
406430:	53                   	push   %ebx
406431:	55                   	push   %ebp
406432:	56                   	push   %esi
406433:	57                   	push   %edi
406434:	8b f9                	mov    %ecx,%edi
406436:	8d 6f 04             	lea    0x4(%edi),%ebp
406439:	89 6f 0c             	mov    %ebp,0xc(%edi)
40643c:	8d 77 08             	lea    0x8(%edi),%esi
40643f:	89 77 10             	mov    %esi,0x10(%edi)
406442:	8d 5f 14             	lea    0x14(%edi),%ebx
406445:	89 5f 1c             	mov    %ebx,0x1c(%edi)
406448:	8d 57 18             	lea    0x18(%edi),%edx
40644b:	89 57 20             	mov    %edx,0x20(%edi)
40644e:	8d 4f 24             	lea    0x24(%edi),%ecx
406451:	89 4f 2c             	mov    %ecx,0x2c(%edi)
406454:	8d 47 28             	lea    0x28(%edi),%eax
406457:	89 47 30             	mov    %eax,0x30(%edi)
40645a:	33 ff                	xor    %edi,%edi
40645c:	89 3e                	mov    %edi,(%esi)
40645e:	89 3a                	mov    %edi,(%edx)
406460:	89 38                	mov    %edi,(%eax)
406462:	89 7d 00             	mov    %edi,0x0(%ebp)
406465:	89 3b                	mov    %edi,(%ebx)
406467:	89 39                	mov    %edi,(%ecx)
406469:	5f                   	pop    %edi
40646a:	5e                   	pop    %esi
40646b:	5d                   	pop    %ebp
40646c:	5b                   	pop    %ebx
40646d:	c3                   	ret
40646e:	55                   	push   %ebp
40646f:	8b ec                	mov    %esp,%ebp
406471:	83 ec 0c             	sub    $0xc,%esp
406474:	53                   	push   %ebx
406475:	33 db                	xor    %ebx,%ebx
406477:	56                   	push   %esi
406478:	57                   	push   %edi
406479:	8b f9                	mov    %ecx,%edi
40647b:	53                   	push   %ebx
40647c:	53                   	push   %ebx
40647d:	89 5f 30             	mov    %ebx,0x30(%edi)
406480:	89 5f 08             	mov    %ebx,0x8(%edi)
406483:	89 5f 10             	mov    %ebx,0x10(%edi)
406486:	c7 47 14 01 02 00 00 	movl   $0x201,0x14(%edi)
40648d:	c7 47 18 06 00 00 00 	movl   $0x6,0x18(%edi)
406494:	89 5f 1c             	mov    %ebx,0x1c(%edi)
406497:	89 5f 20             	mov    %ebx,0x20(%edi)
40649a:	89 5f 24             	mov    %ebx,0x24(%edi)
40649d:	89 5f 28             	mov    %ebx,0x28(%edi)
4064a0:	89 5f 2c             	mov    %ebx,0x2c(%edi)
4064a3:	e8 a2 dc ff ff       	call   0x40414a
4064a8:	6a 08                	push   $0x8
4064aa:	e8 11 05 00 00       	call   0x4069c0
4064af:	8b f0                	mov    %eax,%esi
4064b1:	59                   	pop    %ecx
4064b2:	85 f6                	test   %esi,%esi
4064b4:	74 0d                	je     0x4064c3
4064b6:	6a 01                	push   $0x1
4064b8:	e8 f4 6d 02 00       	call   0x42d2b1
4064bd:	59                   	pop    %ecx
4064be:	89 46 04             	mov    %eax,0x4(%esi)
4064c1:	eb 02                	jmp    0x4064c5
4064c3:	8b f3                	mov    %ebx,%esi
4064c5:	8b 45 08             	mov    0x8(%ebp),%eax
4064c8:	89 77 30             	mov    %esi,0x30(%edi)
4064cb:	89 47 38             	mov    %eax,0x38(%edi)
4064ce:	89 5f 3c             	mov    %ebx,0x3c(%edi)
4064d1:	8b 4e 04             	mov    0x4(%esi),%ecx
4064d4:	89 4d fc             	mov    %ecx,-0x4(%ebp)
4064d7:	8b 01                	mov    (%ecx),%eax
4064d9:	ff 50 04             	call   *0x4(%eax)
4064dc:	8d 45 f8             	lea    -0x8(%ebp),%eax
4064df:	50                   	push   %eax
4064e0:	e8 2f 01 00 00       	call   0x406614
4064e5:	59                   	pop    %ecx
4064e6:	8d 4d f8             	lea    -0x8(%ebp),%ecx
4064e9:	8b f0                	mov    %eax,%esi
4064eb:	e8 5a d7 ff ff       	call   0x403c4a
4064f0:	8b 16                	mov    (%esi),%edx
4064f2:	8b ce                	mov    %esi,%ecx
4064f4:	6a 20                	push   $0x20
4064f6:	ff 52 20             	call   *0x20(%edx)
4064f9:	88 47 40             	mov    %al,0x40(%edi)
4064fc:	39 5f 38             	cmp    %ebx,0x38(%edi)
4064ff:	75 0a                	jne    0x40650b
406501:	51                   	push   %ecx
406502:	6a 04                	push   $0x4
406504:	8b cf                	mov    %edi,%ecx
406506:	e8 a9 fd ff ff       	call   0x4062b4
40650b:	5f                   	pop    %edi
40650c:	5e                   	pop    %esi
40650d:	5b                   	pop    %ebx
40650e:	c9                   	leave
40650f:	c2 08 00             	ret    $0x8
406512:	55                   	push   %ebp
406513:	8b ec                	mov    %esp,%ebp
406515:	83 e4 f8             	and    $0xfffffff8,%esp
406518:	83 ec 0c             	sub    $0xc,%esp
40651b:	56                   	push   %esi
40651c:	8b f1                	mov    %ecx,%esi
40651e:	8b 06                	mov    (%esi),%eax
406520:	8b 40 04             	mov    0x4(%eax),%eax
406523:	83 7c 30 38 00       	cmpl   $0x0,0x38(%eax,%esi,1)
406528:	74 3c                	je     0x406566
40652a:	56                   	push   %esi
40652b:	8d 4c 24 0c          	lea    0xc(%esp),%ecx
40652f:	e8 7b 00 00 00       	call   0x4065af
406534:	80 7c 24 0c 00       	cmpb   $0x0,0xc(%esp)
406539:	74 22                	je     0x40655d
40653b:	8b 06                	mov    (%esi),%eax
40653d:	8b 40 04             	mov    0x4(%eax),%eax
406540:	8b 4c 30 38          	mov    0x38(%eax,%esi,1),%ecx
406544:	8b 01                	mov    (%ecx),%eax
406546:	ff 50 34             	call   *0x34(%eax)
406549:	83 f8 ff             	cmp    $0xffffffff,%eax
40654c:	75 0f                	jne    0x40655d
40654e:	8b 06                	mov    (%esi),%eax
406550:	51                   	push   %ecx
406551:	6a 04                	push   $0x4
406553:	8b 48 04             	mov    0x4(%eax),%ecx
406556:	03 ce                	add    %esi,%ecx
406558:	e8 57 fd ff ff       	call   0x4062b4
40655d:	8d 4c 24 08          	lea    0x8(%esp),%ecx
406561:	e8 07 00 00 00       	call   0x40656d
406566:	8b c6                	mov    %esi,%eax
406568:	5e                   	pop    %esi
406569:	8b e5                	mov    %ebp,%esp
40656b:	5d                   	pop    %ebp
40656c:	c3                   	ret
40656d:	51                   	push   %ecx
40656e:	56                   	push   %esi
40656f:	57                   	push   %edi
406570:	8b f9                	mov    %ecx,%edi
406572:	8b 37                	mov    (%edi),%esi
406574:	8b 06                	mov    (%esi),%eax
406576:	8b 48 04             	mov    0x4(%eax),%ecx
406579:	83 7c 31 0c 00       	cmpl   $0x0,0xc(%ecx,%esi,1)
40657e:	75 24                	jne    0x4065a4
406580:	f6 44 31 14 02       	testb  $0x2,0x14(%ecx,%esi,1)
406585:	74 1d                	je     0x4065a4
406587:	8b 4c 31 38          	mov    0x38(%ecx,%esi,1),%ecx
40658b:	8b 01                	mov    (%ecx),%eax
40658d:	ff 50 34             	call   *0x34(%eax)
406590:	83 f8 ff             	cmp    $0xffffffff,%eax
406593:	75 0f                	jne    0x4065a4
406595:	8b 06                	mov    (%esi),%eax
406597:	51                   	push   %ecx
406598:	6a 04                	push   $0x4
40659a:	8b 48 04             	mov    0x4(%eax),%ecx
40659d:	03 ce                	add    %esi,%ecx
40659f:	e8 10 fd ff ff       	call   0x4062b4
4065a4:	8b cf                	mov    %edi,%ecx
4065a6:	e8 54 00 00 00       	call   0x4065ff
4065ab:	5f                   	pop    %edi
4065ac:	5e                   	pop    %esi
4065ad:	59                   	pop    %ecx
4065ae:	c3                   	ret
4065af:	56                   	push   %esi
4065b0:	8b 74 24 08          	mov    0x8(%esp),%esi
4065b4:	57                   	push   %edi
4065b5:	8b f9                	mov    %ecx,%edi
4065b7:	89 37                	mov    %esi,(%edi)
4065b9:	8b 06                	mov    (%esi),%eax
4065bb:	8b 40 04             	mov    0x4(%eax),%eax
4065be:	8b 4c 30 38          	mov    0x38(%eax,%esi,1),%ecx
4065c2:	85 c9                	test   %ecx,%ecx
4065c4:	74 05                	je     0x4065cb
4065c6:	8b 01                	mov    (%ecx),%eax
4065c8:	ff 50 04             	call   *0x4(%eax)
4065cb:	8b 06                	mov    (%esi),%eax
4065cd:	8b 48 04             	mov    0x4(%eax),%ecx
4065d0:	83 7c 31 0c 00       	cmpl   $0x0,0xc(%ecx,%esi,1)
4065d5:	75 11                	jne    0x4065e8
4065d7:	8b 4c 31 3c          	mov    0x3c(%ecx,%esi,1),%ecx
4065db:	85 c9                	test   %ecx,%ecx
4065dd:	74 09                	je     0x4065e8
4065df:	3b ce                	cmp    %esi,%ecx
4065e1:	74 05                	je     0x4065e8
4065e3:	e8 2a ff ff ff       	call   0x406512
4065e8:	8b 06                	mov    (%esi),%eax
4065ea:	8b 40 04             	mov    0x4(%eax),%eax
4065ed:	83 7c 30 0c 00       	cmpl   $0x0,0xc(%eax,%esi,1)
4065f2:	0f 94 c0             	sete   %al
4065f5:	88 47 04             	mov    %al,0x4(%edi)
4065f8:	8b c7                	mov    %edi,%eax
4065fa:	5f                   	pop    %edi
4065fb:	5e                   	pop    %esi
4065fc:	c2 04 00             	ret    $0x4
4065ff:	8b 09                	mov    (%ecx),%ecx
406601:	8b 01                	mov    (%ecx),%eax
406603:	8b 40 04             	mov    0x4(%eax),%eax
406606:	8b 4c 08 38          	mov    0x38(%eax,%ecx,1),%ecx
40660a:	85 c9                	test   %ecx,%ecx
40660c:	74 05                	je     0x406613
40660e:	8b 01                	mov    (%ecx),%eax
406610:	ff 60 08             	jmp    *0x8(%eax)
406613:	c3                   	ret
406614:	55                   	push   %ebp
406615:	8b ec                	mov    %esp,%ebp
406617:	51                   	push   %ecx
406618:	51                   	push   %ecx
406619:	56                   	push   %esi
40661a:	57                   	push   %edi
40661b:	6a 00                	push   $0x0
40661d:	8d 4d f8             	lea    -0x8(%ebp),%ecx
406620:	e8 ab 6a 02 00       	call   0x42d0d0
406625:	8b 3d 98 ff 43 00    	mov    0x43ff98,%edi
40662b:	b9 58 fe 43 00       	mov    $0x43fe58,%ecx
406630:	89 7d fc             	mov    %edi,-0x4(%ebp)
406633:	e8 c9 d5 ff ff       	call   0x403c01
406638:	8b 4d 08             	mov    0x8(%ebp),%ecx
40663b:	50                   	push   %eax
40663c:	e8 22 d6 ff ff       	call   0x403c63
406641:	8b f0                	mov    %eax,%esi
406643:	85 f6                	test   %esi,%esi
406645:	75 32                	jne    0x406679
406647:	85 ff                	test   %edi,%edi
406649:	74 04                	je     0x40664f
40664b:	8b f7                	mov    %edi,%esi
40664d:	eb 2a                	jmp    0x406679
40664f:	ff 75 08             	push   0x8(%ebp)
406652:	8d 45 fc             	lea    -0x4(%ebp),%eax
406655:	50                   	push   %eax
406656:	e8 81 d6 ff ff       	call   0x403cdc
40665b:	59                   	pop    %ecx
40665c:	59                   	pop    %ecx
40665d:	83 f8 ff             	cmp    $0xffffffff,%eax
406660:	74 25                	je     0x406687
406662:	8b 75 fc             	mov    -0x4(%ebp),%esi
406665:	8b ce                	mov    %esi,%ecx
406667:	89 35 98 ff 43 00    	mov    %esi,0x43ff98
40666d:	8b 06                	mov    (%esi),%eax