40638f:	e8 97 f1 ff ff       	call   0x40552b
406394:	57                   	push   %edi
406395:	6a 20                	push   $0x20
406397:	6a 02                	push   $0x2
406399:	8d 85 78 ff ff ff    	lea    -0x88(%ebp),%eax
40639f:	53                   	push   %ebx
4063a0:	50                   	push   %eax
4063a1:	e8 9c f0 ff ff       	call   0x405442
4063a6:	83 c4 10             	add    $0x10,%esp
4063a9:	8d 85 78 ff ff ff    	lea    -0x88(%ebp),%eax
4063af:	8b ce                	mov    %esi,%ecx
4063b1:	50                   	push   %eax
4063b2:	e8 2f fa ff ff       	call   0x405de6
4063b7:	8d 8d 78 ff ff ff    	lea    -0x88(%ebp),%ecx
4063bd:	e8 69 f1 ff ff       	call   0x40552b
4063c2:	51                   	push   %ecx
4063c3:	8d 45 dc             	lea    -0x24(%ebp),%eax
4063c6:	8b ce                	mov    %esi,%ecx
4063c8:	50                   	push   %eax
4063c9:	e8 ed fa ff ff       	call   0x405ebb
4063ce:	8b ce                	mov    %esi,%ecx
4063d0:	e8 0b fc ff ff       	call   0x405fe0
4063d5:	8d 4d dc             	lea    -0x24(%ebp),%ecx
4063d8:	e8 d5 f4 ff ff       	call   0x4058b2
4063dd:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4063e0:	5f                   	pop    %edi
4063e1:	5e                   	pop    %esi
4063e2:	33 cd                	xor    %ebp,%ecx
4063e4:	5b                   	pop    %ebx
4063e5:	e8 0b 28 00 00       	call   0x408bf5
4063ea:	c9                   	leave
4063eb:	c3                   	ret
4063ec:	55                   	push   %ebp
4063ed:	8b ec                	mov    %esp,%ebp
4063ef:	83 ec 0c             	sub    $0xc,%esp
4063f2:	a1 18 60 42 00       	mov    0x426018,%eax
4063f7:	33 c5                	xor    %ebp,%eax
4063f9:	89 45 fc             	mov    %eax,-0x4(%ebp)
4063fc:	53                   	push   %ebx
4063fd:	56                   	push   %esi
4063fe:	57                   	push   %edi
4063ff:	be 18 35 42 00       	mov    $0x423518,%esi
406404:	8b fa                	mov    %edx,%edi
406406:	56                   	push   %esi
406407:	e8 25 a6 00 00       	call   0x410a31
40640c:	59                   	pop    %ecx
40640d:	50                   	push   %eax
40640e:	56                   	push   %esi
40640f:	8b cf                	mov    %edi,%ecx
406411:	e8 94 d5 ff ff       	call   0x4039aa
406416:	83 65 f8 00          	andl   $0x0,-0x8(%ebp)
40641a:	8d 4d f4             	lea    -0xc(%ebp),%ecx
40641d:	c7 45 f4 bc 33 42 00 	movl   $0x4233bc,-0xc(%ebp)
406424:	e8 96 fe ff ff       	call   0x4062bf
406429:	8d 5f 10             	lea    0x10(%edi),%ebx
40642c:	8d 45 f4             	lea    -0xc(%ebp),%eax
40642f:	3b d8                	cmp    %eax,%ebx
406431:	74 21                	je     0x406454
406433:	8b 03                	mov    (%ebx),%eax
406435:	8b 70 04             	mov    0x4(%eax),%esi
406438:	8b ce                	mov    %esi,%ecx
40643a:	ff 15 50 c2 41 00    	call   *0x41c250
406440:	8b cb                	mov    %ebx,%ecx
406442:	ff d6                	call   *%esi
406444:	83 7d f8 00          	cmpl   $0x0,-0x8(%ebp)
406448:	74 0a                	je     0x406454
40644a:	ff 75 f8             	push   -0x8(%ebp)
40644d:	8b cb                	mov    %ebx,%ecx
40644f:	e8 8f fd ff ff       	call   0x4061e3
406454:	8b 47 14             	mov    0x14(%edi),%eax
406457:	8d 4d f4             	lea    -0xc(%ebp),%ecx
40645a:	83 67 0c 00          	andl   $0x0,0xc(%edi)
40645e:	c7 47 04 0c 00 00 00 	movl   $0xc,0x4(%edi)
406465:	89 47 08             	mov    %eax,0x8(%edi)
406468:	c7 45 f4 bc 33 42 00 	movl   $0x4233bc,-0xc(%ebp)
40646f:	e8 6c dc ff ff       	call   0x4040e0
406474:	be 10 30 42 00       	mov    $0x423010,%esi
406479:	56                   	push   %esi
40647a:	e8 b2 a5 00 00       	call   0x410a31
40647f:	59                   	pop    %ecx
406480:	50                   	push   %eax
406481:	56                   	push   %esi
406482:	8b cf                	mov    %edi,%ecx
406484:	e8 e3 d5 ff ff       	call   0x403a6c
406489:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40648c:	5f                   	pop    %edi
40648d:	5e                   	pop    %esi
40648e:	33 cd                	xor    %ebp,%ecx
406490:	5b                   	pop    %ebx
406491:	e8 5f 27 00 00       	call   0x408bf5
406496:	c9                   	leave
406497:	c3                   	ret
406498:	55                   	push   %ebp
406499:	8b ec                	mov    %esp,%ebp
40649b:	51                   	push   %ecx
40649c:	53                   	push   %ebx
40649d:	57                   	push   %edi
40649e:	8b 7d 08             	mov    0x8(%ebp),%edi
4064a1:	8b d9                	mov    %ecx,%ebx
4064a3:	8b 03                	mov    (%ebx),%eax
4064a5:	89 45 fc             	mov    %eax,-0x4(%ebp)
4064a8:	3b 07                	cmp    (%edi),%eax
4064aa:	75 09                	jne    0x4064b5
4064ac:	3b df                	cmp    %edi,%ebx
4064ae:	74 28                	je     0x4064d8
4064b0:	83 27 00             	andl   $0x0,(%edi)
4064b3:	eb 23                	jmp    0x4064d8
4064b5:	85 c0                	test   %eax,%eax
4064b7:	74 15                	je     0x4064ce
4064b9:	8b 00                	mov    (%eax),%eax
4064bb:	56                   	push   %esi
4064bc:	6a 01                	push   $0x1
4064be:	8b 30                	mov    (%eax),%esi
4064c0:	8b ce                	mov    %esi,%ecx
4064c2:	ff 15 50 c2 41 00    	call   *0x41c250
4064c8:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4064cb:	ff d6                	call   *%esi
4064cd:	5e                   	pop    %esi
4064ce:	83 23 00             	andl   $0x0,(%ebx)
4064d1:	8b 07                	mov    (%edi),%eax
4064d3:	83 27 00             	andl   $0x0,(%edi)
4064d6:	89 03                	mov    %eax,(%ebx)
4064d8:	5f                   	pop    %edi
4064d9:	8b c3                	mov    %ebx,%eax
4064db:	5b                   	pop    %ebx
4064dc:	c9                   	leave
4064dd:	c2 04 00             	ret    $0x4
4064e0:	53                   	push   %ebx
4064e1:	57                   	push   %edi
4064e2:	8b f9                	mov    %ecx,%edi
4064e4:	8b 1f                	mov    (%edi),%ebx
4064e6:	85 db                	test   %ebx,%ebx
4064e8:	74 14                	je     0x4064fe
4064ea:	8b 03                	mov    (%ebx),%eax
4064ec:	56                   	push   %esi
4064ed:	6a 01                	push   $0x1
4064ef:	8b 30                	mov    (%eax),%esi
4064f1:	8b ce                	mov    %esi,%ecx
4064f3:	ff 15 50 c2 41 00    	call   *0x41c250
4064f9:	8b cb                	mov    %ebx,%ecx
4064fb:	ff d6                	call   *%esi
4064fd:	5e                   	pop    %esi
4064fe:	83 27 00             	andl   $0x0,(%edi)
406501:	5f                   	pop    %edi
406502:	5b                   	pop    %ebx
406503:	c3                   	ret
406504:	55                   	push   %ebp
406505:	8b ec                	mov    %esp,%ebp
406507:	8b 55 08             	mov    0x8(%ebp),%edx
40650a:	3b 51 04             	cmp    0x4(%ecx),%edx
40650d:	73 0c                	jae    0x40651b
40650f:	0f ae e8             	lfence
406512:	8b 01                	mov    (%ecx),%eax
406514:	8d 04 90             	lea    (%eax,%edx,4),%eax
406517:	5d                   	pop    %ebp
406518:	c2 04 00             	ret    $0x4
40651b:	68 57 00 07 80       	push   $0x80070057
406520:	e8 9a ab ff ff       	call   0x4010bf
406525:	cc                   	int3
406526:	56                   	push   %esi
406527:	8b f1                	mov    %ecx,%esi
406529:	8b 0e                	mov    (%esi),%ecx
40652b:	85 c9                	test   %ecx,%ecx
40652d:	74 10                	je     0x40653f
40652f:	8b 56 04             	mov    0x4(%esi),%edx
406532:	e8 9e 00 00 00       	call   0x4065d5
406537:	ff 36                	push   (%esi)
406539:	e8 3d 5d 00 00       	call   0x40c27b
40653e:	59                   	pop    %ecx
40653f:	5e                   	pop    %esi
406540:	c3                   	ret
406541:	55                   	push   %ebp
406542:	8b ec                	mov    %esp,%ebp
406544:	53                   	push   %ebx
406545:	56                   	push   %esi
406546:	8b f1                	mov    %ecx,%esi
406548:	8b 4d 08             	mov    0x8(%ebp),%ecx
40654b:	57                   	push   %edi
40654c:	3b 4e 08             	cmp    0x8(%esi),%ecx
40654f:	76 7b                	jbe    0x4065cc
406551:	83 3e 00             	cmpl   $0x0,(%esi)
406554:	0f ae e8             	lfence
406557:	75 1b                	jne    0x406574
406559:	8b 7e 0c             	mov    0xc(%esi),%edi
40655c:	3b f9                	cmp    %ecx,%edi
40655e:	77 02                	ja     0x406562
406560:	8b f9                	mov    %ecx,%edi
406562:	6a 04                	push   $0x4
406564:	57                   	push   %edi
406565:	e8 d5 5d 00 00       	call   0x40c33f
40656a:	89 06                	mov    %eax,(%esi)
40656c:	59                   	pop    %ecx
40656d:	59                   	pop    %ecx
40656e:	85 c0                	test   %eax,%eax
406570:	74 34                	je     0x4065a6
406572:	eb 55                	jmp    0x4065c9
406574:	8b 56 0c             	mov    0xc(%esi),%edx
406577:	85 d2                	test   %edx,%edx
406579:	75 10                	jne    0x40658b
40657b:	8b 56 08             	mov    0x8(%esi),%edx
40657e:	8b c1                	mov    %ecx,%eax
406580:	2b 46 08             	sub    0x8(%esi),%eax
406583:	d1 ea                	shr    $1,%edx
406585:	3b c2                	cmp    %edx,%eax
406587:	76 02                	jbe    0x40658b
406589:	8b d0                	mov    %eax,%edx
40658b:	8b 7e 08             	mov    0x8(%esi),%edi
40658e:	03 fa                	add    %edx,%edi
406590:	3b cf                	cmp    %edi,%ecx
406592:	72 02                	jb     0x406596
406594:	8b f9                	mov    %ecx,%edi
406596:	6a 04                	push   $0x4
406598:	57                   	push   %edi
406599:	e8 a1 5d 00 00       	call   0x40c33f
40659e:	8b d8                	mov    %eax,%ebx
4065a0:	59                   	pop    %ecx
4065a1:	59                   	pop    %ecx
4065a2:	85 db                	test   %ebx,%ebx
4065a4:	75 04                	jne    0x4065aa
4065a6:	32 c0                	xor    %al,%al
4065a8:	eb 24                	jmp    0x4065ce
4065aa:	0f ae e8             	lfence
4065ad:	8b 46 04             	mov    0x4(%esi),%eax
4065b0:	c1 e0 02             	shl    $0x2,%eax
4065b3:	50                   	push   %eax
4065b4:	ff 36                	push   (%esi)
4065b6:	50                   	push   %eax
4065b7:	53                   	push   %ebx
4065b8:	e8 5e ab ff ff       	call   0x40111b
4065bd:	ff 36                	push   (%esi)
4065bf:	e8 b7 5c 00 00       	call   0x40c27b
4065c4:	83 c4 14             	add    $0x14,%esp
4065c7:	89 1e                	mov    %ebx,(%esi)
4065c9:	89 7e 08             	mov    %edi,0x8(%esi)
4065cc:	b0 01                	mov    $0x1,%al
4065ce:	5f                   	pop    %edi
4065cf:	5e                   	pop    %esi
4065d0:	5b                   	pop    %ebx
4065d1:	5d                   	pop    %ebp
4065d2:	c2 04 00             	ret    $0x4
4065d5:	56                   	push   %esi
4065d6:	57                   	push   %edi
4065d7:	8b fa                	mov    %edx,%edi
4065d9:	8b f1                	mov    %ecx,%esi
4065db:	85 ff                	test   %edi,%edi
4065dd:	74 0f                	je     0x4065ee
4065df:	8b ce                	mov    %esi,%ecx
4065e1:	e8 fa fe ff ff       	call   0x4064e0
4065e6:	83 c6 04             	add    $0x4,%esi
4065e9:	83 ef 01             	sub    $0x1,%edi
4065ec:	75 f1                	jne    0x4065df
4065ee:	5f                   	pop    %edi
4065ef:	5e                   	pop    %esi
4065f0:	c3                   	ret
4065f1:	55                   	push   %ebp
4065f2:	8b ec                	mov    %esp,%ebp
4065f4:	8b 4d 08             	mov    0x8(%ebp),%ecx
4065f7:	8d 45 10             	lea    0x10(%ebp),%eax
4065fa:	8b 55 0c             	mov    0xc(%ebp),%edx
4065fd:	50                   	push   %eax
4065fe:	e8 03 00 00 00       	call   0x406606
406603:	59                   	pop    %ecx
406604:	5d                   	pop    %ebp
406605:	c3                   	ret
406606:	55                   	push   %ebp
406607:	8b ec                	mov    %esp,%ebp
406609:	51                   	push   %ecx
40660a:	51                   	push   %ecx
40660b:	8b 45 08             	mov    0x8(%ebp),%eax
40660e:	53                   	push   %ebx
40660f:	56                   	push   %esi
406610:	57                   	push   %edi
406611:	8b fa                	mov    %edx,%edi
406613:	89 45 fc             	mov    %eax,-0x4(%ebp)
406616:	57                   	push   %edi
406617:	89 7d f8             	mov    %edi,-0x8(%ebp)
40661a:	8b d9                	mov    %ecx,%ebx
40661c:	e8 10 a4 00 00       	call   0x410a31
406621:	be 00 01 00 00       	mov    $0x100,%esi
406626:	59                   	pop    %ecx
406627:	3b c6                	cmp    %esi,%eax
406629:	72 11                	jb     0x40663c
40662b:	8b f0                	mov    %eax,%esi
40662d:	81 fe ff ff ff 7f    	cmp    $0x7fffffff,%esi
406633:	76 07                	jbe    0x40663c
406635:	b8 57 00 07 80       	mov    $0x80070057,%eax
40663a:	eb 4f                	jmp    0x40668b
40663c:	56                   	push   %esi
40663d:	8b cb                	mov    %ebx,%ecx
40663f:	e8 9c d0 ff ff       	call   0x4036e0
406644:	ff 75 fc             	push   -0x4(%ebp)
406647:	8d 56 ff             	lea    -0x1(%esi),%edx
40664a:	8b c8                	mov    %eax,%ecx
40664c:	57                   	push   %edi
40664d:	e8 00 aa ff ff       	call   0x401052
406652:	8b f8                	mov    %eax,%edi
406654:	81 ff 7a 00 07 80    	cmp    $0x8007007a,%edi
40665a:	75 24                	jne    0x406680
40665c:	b8 ff ff ff 7f       	mov    $0x7fffffff,%eax
406661:	3b f0                	cmp    %eax,%esi
406663:	73 16                	jae    0x40667b
406665:	03 f6                	add    %esi,%esi
406667:	3b f0                	cmp    %eax,%esi
406669:	76 02                	jbe    0x40666d
40666b:	8b f0                	mov    %eax,%esi
40666d:	6a ff                	push   $0xffffffff
40666f:	8b cb                	mov    %ebx,%ecx
406671:	e8 3e d0 ff ff       	call   0x4036b4
406676:	8b 7d f8             	mov    -0x8(%ebp),%edi
406679:	eb c1                	jmp    0x40663c
40667b:	bf 57 00 07 80       	mov    $0x80070057,%edi
406680:	6a ff                	push   $0xffffffff
406682:	8b cb                	mov    %ebx,%ecx
406684:	e8 2b d0 ff ff       	call   0x4036b4
406689:	8b c7                	mov    %edi,%eax
40668b:	5f                   	pop    %edi
40668c:	5e                   	pop    %esi
40668d:	5b                   	pop    %ebx
40668e:	c9                   	leave
40668f:	c3                   	ret
406690:	55                   	push   %ebp
406691:	8b ec                	mov    %esp,%ebp
406693:	83 ec 64             	sub    $0x64,%esp
406696:	53                   	push   %ebx
406697:	56                   	push   %esi
406698:	8b f1                	mov    %ecx,%esi
40669a:	89 55 b0             	mov    %edx,-0x50(%ebp)
40669d:	57                   	push   %edi
40669e:	89 75 ac             	mov    %esi,-0x54(%ebp)
4066a1:	8b 46 10             	mov    0x10(%esi),%eax
4066a4:	8b 4e 08             	mov    0x8(%esi),%ecx
4066a7:	89 45 f0             	mov    %eax,-0x10(%ebp)
4066aa:	8b 46 38             	mov    0x38(%esi),%eax
4066ad:	89 45 dc             	mov    %eax,-0x24(%ebp)
4066b0:	8b 46 3c             	mov    0x3c(%esi),%eax
4066b3:	89 45 d4             	mov    %eax,-0x2c(%ebp)
4066b6:	8b 46 40             	mov    0x40(%esi),%eax
4066b9:	89 45 d0             	mov    %eax,-0x30(%ebp)
4066bc:	8b 46 44             	mov    0x44(%esi),%eax
4066bf:	89 45 c4             	mov    %eax,-0x3c(%ebp)
4066c2:	33 c0                	xor    %eax,%eax
4066c4:	40                   	inc    %eax
4066c5:	8b 56 34             	mov    0x34(%esi),%edx
4066c8:	d3 e0                	shl    %cl,%eax
4066ca:	8b 4e 04             	mov    0x4(%esi),%ecx
4066cd:	48                   	dec    %eax
4066ce:	89 45 a8             	mov    %eax,-0x58(%ebp)
4066d1:	33 c0                	xor    %eax,%eax
4066d3:	40                   	inc    %eax
4066d4:	8b 5e 18             	mov    0x18(%esi),%ebx