40158e:	83 c4 08             	add    $0x8,%esp
401591:	8d 8d a8 fd ff ff    	lea    -0x258(%ebp),%ecx
401597:	c7 45 ac 00 00 00 00 	movl   $0x0,-0x54(%ebp)
40159e:	c7 45 b0 0f 00 00 00 	movl   $0xf,-0x50(%ebp)
4015a5:	c6 45 9c 00          	movb   $0x0,-0x64(%ebp)
4015a9:	e8 22 41 01 00       	call   0x4156d0
4015ae:	8d 8d a8 fd ff ff    	lea    -0x258(%ebp),%ecx
4015b4:	e8 b7 53 01 00       	call   0x416970
4015b9:	c6 85 78 fe ff ff 00 	movb   $0x0,-0x188(%ebp)
4015c0:	51                   	push   %ecx
4015c1:	8d 8d a8 fd ff ff    	lea    -0x258(%ebp),%ecx
4015c7:	c7 45 fc 05 00 00 00 	movl   $0x5,-0x4(%ebp)
4015ce:	e8 8d d0 00 00       	call   0x40e660
4015d3:	83 ec 08             	sub    $0x8,%esp
4015d6:	8d 8d a8 fd ff ff    	lea    -0x258(%ebp),%ecx
4015dc:	e8 4f d4 00 00       	call   0x40ea30
4015e1:	8d 85 a8 fd ff ff    	lea    -0x258(%ebp),%eax
4015e7:	50                   	push   %eax
4015e8:	e8 f3 12 00 00       	call   0x4028e0
4015ed:	8b c8                	mov    %eax,%ecx
4015ef:	e8 9c 13 00 00       	call   0x402990
4015f4:	68 80 00 00 00       	push   $0x80
4015f9:	8d 85 b8 fe ff ff    	lea    -0x148(%ebp),%eax
4015ff:	6a 00                	push   $0x0
401601:	50                   	push   %eax
401602:	e8 d9 c3 01 00       	call   0x41d9e0
401607:	83 ec 08             	sub    $0x8,%esp
40160a:	8d 8d b8 fe ff ff    	lea    -0x148(%ebp),%ecx
401610:	e8 ab d7 00 00       	call   0x40edc0
401615:	c6 45 fc 06          	movb   $0x6,-0x4(%ebp)
401619:	0f 57 c0             	xorps  %xmm0,%xmm0
40161c:	66 0f d6 45 b4       	movq   %xmm0,-0x4c(%ebp)
401621:	6a 40                	push   $0x40
401623:	c7 45 bc 00 00 00 00 	movl   $0x0,-0x44(%ebp)
40162a:	c7 45 b4 00 00 00 00 	movl   $0x0,-0x4c(%ebp)
401631:	c7 45 b8 00 00 00 00 	movl   $0x0,-0x48(%ebp)
401638:	e8 a1 a2 01 00       	call   0x41b8de
40163d:	83 c4 04             	add    $0x4,%esp
401640:	89 00                	mov    %eax,(%eax)
401642:	89 40 04             	mov    %eax,0x4(%eax)
401645:	89 40 08             	mov    %eax,0x8(%eax)
401648:	66 c7 40 0c 01 01    	movw   $0x101,0xc(%eax)
40164e:	89 45 b4             	mov    %eax,-0x4c(%ebp)
401651:	57                   	push   %edi
401652:	8d 85 b8 fe ff ff    	lea    -0x148(%ebp),%eax
401658:	c6 45 fc 07          	movb   $0x7,-0x4(%ebp)
40165c:	56                   	push   %esi
40165d:	8d 4d b4             	lea    -0x4c(%ebp),%ecx
401660:	89 45 bc             	mov    %eax,-0x44(%ebp)
401663:	e8 88 e3 00 00       	call   0x40f9f0
401668:	6a 04                	push   $0x4
40166a:	68 90 af 44 00       	push   $0x44af90
40166f:	8d 8d 3c ff ff ff    	lea    -0xc4(%ebp),%ecx
401675:	c7 85 3c ff ff ff 00 	movl   $0x0,-0xc4(%ebp)
40167c:	00 00 00
40167f:	c7 85 4c ff ff ff 00 	movl   $0x0,-0xb4(%ebp)
401686:	00 00 00
401689:	c7 85 50 ff ff ff 00 	movl   $0x0,-0xb0(%ebp)
401690:	00 00 00
401693:	e8 78 0e 00 00       	call   0x402510
401698:	33 c0                	xor    %eax,%eax
40169a:	c7 85 6c ff ff ff 00 	movl   $0x0,-0x94(%ebp)
4016a1:	00 00 00
4016a4:	c7 85 7c ff ff ff 00 	movl   $0x0,-0x84(%ebp)
4016ab:	00 00 00
4016ae:	c7 45 80 07 00 00 00 	movl   $0x7,-0x80(%ebp)
4016b5:	66 89 85 6c ff ff ff 	mov    %ax,-0x94(%ebp)
4016bc:	8d 85 3c ff ff ff    	lea    -0xc4(%ebp),%eax
4016c2:	c6 45 fc 09          	movb   $0x9,-0x4(%ebp)
4016c6:	50                   	push   %eax
4016c7:	8d 45 e4             	lea    -0x1c(%ebp),%eax
4016ca:	50                   	push   %eax
4016cb:	8d 4d b4             	lea    -0x4c(%ebp),%ecx
4016ce:	e8 7d 23 00 00       	call   0x403a50
4016d3:	8b 75 ec             	mov    -0x14(%ebp),%esi
4016d6:	8b 9d 3c ff ff ff    	mov    -0xc4(%ebp),%ebx
4016dc:	80 7e 0d 00          	cmpb   $0x0,0xd(%esi)
4016e0:	0f 85 e3 08 00 00    	jne    0x401fc9
4016e6:	83 7e 24 08          	cmpl   $0x8,0x24(%esi)
4016ea:	8d 56 10             	lea    0x10(%esi),%edx
4016ed:	72 03                	jb     0x4016f2
4016ef:	8b 56 10             	mov    0x10(%esi),%edx
4016f2:	8b bd 50 ff ff ff    	mov    -0xb0(%ebp),%edi
4016f8:	8d 8d 3c ff ff ff    	lea    -0xc4(%ebp),%ecx
4016fe:	ff 76 20             	push   0x20(%esi)
401701:	83 ff 08             	cmp    $0x8,%edi
401704:	52                   	push   %edx
401705:	8b 95 4c ff ff ff    	mov    -0xb4(%ebp),%edx
40170b:	0f 43 cb             	cmovae %ebx,%ecx
40170e:	e8 8d 0d 00 00       	call   0x4024a0
401713:	c1 e8 1f             	shr    $0x1f,%eax
401716:	83 c4 08             	add    $0x8,%esp
401719:	84 c0                	test   %al,%al
40171b:	0f 85 a8 08 00 00    	jne    0x401fc9
401721:	3b 75 b4             	cmp    -0x4c(%ebp),%esi
401724:	0f 84 9f 08 00 00    	je     0x401fc9
40172a:	83 7e 3c 08          	cmpl   $0x8,0x3c(%esi)
40172e:	8d 56 28             	lea    0x28(%esi),%edx
401731:	72 02                	jb     0x401735
401733:	8b 12                	mov    (%edx),%edx
401735:	8b ca                	mov    %edx,%ecx
401737:	8d 71 02             	lea    0x2(%ecx),%esi
40173a:	66 0f 1f 44 00 00    	nopw   0x0(%eax,%eax,1)
401740:	66 8b 01             	mov    (%ecx),%ax
401743:	83 c1 02             	add    $0x2,%ecx
401746:	66 85 c0             	test   %ax,%ax
401749:	75 f5                	jne    0x401740
40174b:	2b ce                	sub    %esi,%ecx
40174d:	d1 f9                	sar    $1,%ecx
40174f:	83 f9 07             	cmp    $0x7,%ecx
401752:	77 26                	ja     0x40177a
401754:	8d 34 09             	lea    (%ecx,%ecx,1),%esi
401757:	89 8d 7c ff ff ff    	mov    %ecx,-0x84(%ebp)
40175d:	56                   	push   %esi
40175e:	52                   	push   %edx
40175f:	8d 85 6c ff ff ff    	lea    -0x94(%ebp),%eax
401765:	50                   	push   %eax
401766:	e8 e5 bc 01 00       	call   0x41d450
40176b:	83 c4 0c             	add    $0xc,%esp
40176e:	33 c0                	xor    %eax,%eax
401770:	66 89 84 35 6c ff ff 	mov    %ax,-0x94(%ebp,%esi,1)
401777:	ff
401778:	eb 1a                	jmp    0x401794
40177a:	52                   	push   %edx
40177b:	c6 85 a4 fd ff ff 00 	movb   $0x0,-0x25c(%ebp)
401782:	ff b5 a4 fd ff ff    	push   -0x25c(%ebp)
401788:	51                   	push   %ecx
401789:	8d 8d 6c ff ff ff    	lea    -0x94(%ebp),%ecx
40178f:	e8 7c 0e 00 00       	call   0x402610
401794:	83 7d 80 08          	cmpl   $0x8,-0x80(%ebp)
401798:	8d 8d 6c ff ff ff    	lea    -0x94(%ebp),%ecx
40179e:	8b 95 7c ff ff ff    	mov    -0x84(%ebp),%edx
4017a4:	0f 43 8d 6c ff ff ff 	cmovae -0x94(%ebp),%ecx
4017ab:	6a 09                	push   $0x9
4017ad:	68 9c af 44 00       	push   $0x44af9c
4017b2:	e8 e9 0c 00 00       	call   0x4024a0
4017b7:	83 c4 08             	add    $0x8,%esp
4017ba:	85 c0                	test   %eax,%eax
4017bc:	0f 85 07 08 00 00    	jne    0x401fc9
4017c2:	8d 85 b8 fe ff ff    	lea    -0x148(%ebp),%eax
4017c8:	68 b0 af 44 00       	push   $0x44afb0
4017cd:	50                   	push   %eax
4017ce:	e8 6d dd 00 00       	call   0x40f540
4017d3:	33 c0                	xor    %eax,%eax
4017d5:	c7 85 54 ff ff ff 00 	movl   $0x0,-0xac(%ebp)
4017dc:	00 00 00
4017df:	c7 85 64 ff ff ff 00 	movl   $0x0,-0x9c(%ebp)
4017e6:	00 00 00
4017e9:	c7 85 68 ff ff ff 07 	movl   $0x7,-0x98(%ebp)
4017f0:	00 00 00
4017f3:	66 89 85 54 ff ff ff 	mov    %ax,-0xac(%ebp)
4017fa:	89 45 c0             	mov    %eax,-0x40(%ebp)
4017fd:	89 45 d0             	mov    %eax,-0x30(%ebp)
401800:	c7 45 d4 07 00 00 00 	movl   $0x7,-0x2c(%ebp)
401807:	66 89 45 c0          	mov    %ax,-0x40(%ebp)
40180b:	83 c4 04             	add    $0x4,%esp
40180e:	c6 45 fc 0b          	movb   $0xb,-0x4(%ebp)
401812:	8d 95 54 ff ff ff    	lea    -0xac(%ebp),%edx
401818:	8d 48 1b             	lea    0x1b(%eax),%ecx
40181b:	e8 f0 fb 00 00       	call   0x411410
401820:	83 c4 04             	add    $0x4,%esp
401823:	84 c0                	test   %al,%al
401825:	0f 85 c0 00 00 00    	jne    0x4018eb
40182b:	68 e8 af 44 00       	push   $0x44afe8
401830:	8d 85 b8 fe ff ff    	lea    -0x148(%ebp),%eax
401836:	6a 00                	push   $0x0
401838:	50                   	push   %eax
401839:	e8 12 d8 00 00       	call   0x40f050
40183e:	83 c4 0c             	add    $0xc,%esp
401841:	8d 85 a8 fd ff ff    	lea    -0x258(%ebp),%eax
401847:	50                   	push   %eax
401848:	e8 93 10 00 00       	call   0x4028e0
40184d:	8b c8                	mov    %eax,%ecx
40184f:	e8 bc 13 00 00       	call   0x402c10
401854:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
401857:	83 f9 08             	cmp    $0x8,%ecx
40185a:	72 32                	jb     0x40188e
40185c:	8b 55 c0             	mov    -0x40(%ebp),%edx
40185f:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
401866:	8b c2                	mov    %edx,%eax
401868:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40186e:	72 14                	jb     0x401884
401870:	8b 50 fc             	mov    -0x4(%eax),%edx
401873:	83 c1 23             	add    $0x23,%ecx
401876:	2b c2                	sub    %edx,%eax
401878:	83 c0 fc             	add    $0xfffffffc,%eax
40187b:	83 f8 1f             	cmp    $0x1f,%eax
40187e:	0f 87 ac 07 00 00    	ja     0x402030
401884:	51                   	push   %ecx
401885:	52                   	push   %edx
401886:	e8 83 a0 01 00       	call   0x41b90e
40188b:	83 c4 08             	add    $0x8,%esp
40188e:	8b 8d 68 ff ff ff    	mov    -0x98(%ebp),%ecx
401894:	33 c0                	xor    %eax,%eax
401896:	c7 45 d0 00 00 00 00 	movl   $0x0,-0x30(%ebp)
40189d:	c7 45 d4 07 00 00 00 	movl   $0x7,-0x2c(%ebp)
4018a4:	66 89 45 c0          	mov    %ax,-0x40(%ebp)
4018a8:	83 f9 08             	cmp    $0x8,%ecx
4018ab:	0f 82 95 06 00 00    	jb     0x401f46
4018b1:	8b 95 54 ff ff ff    	mov    -0xac(%ebp),%edx
4018b7:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
4018be:	8b c2                	mov    %edx,%eax
4018c0:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
4018c6:	72 14                	jb     0x4018dc
4018c8:	8b 50 fc             	mov    -0x4(%eax),%edx
4018cb:	83 c1 23             	add    $0x23,%ecx
4018ce:	2b c2                	sub    %edx,%eax
4018d0:	83 c0 fc             	add    $0xfffffffc,%eax
4018d3:	83 f8 1f             	cmp    $0x1f,%eax
4018d6:	0f 87 54 07 00 00    	ja     0x402030
4018dc:	51                   	push   %ecx
4018dd:	52                   	push   %edx
4018de:	e8 2b a0 01 00       	call   0x41b90e
4018e3:	83 c4 08             	add    $0x8,%esp
4018e6:	e9 5b 06 00 00       	jmp    0x401f46
4018eb:	83 ec 18             	sub    $0x18,%esp
4018ee:	8b cc                	mov    %esp,%ecx
4018f0:	89 a5 a4 fd ff ff    	mov    %esp,-0x25c(%ebp)
4018f6:	6a 00                	push   $0x0
4018f8:	68 2c af 44 00       	push   $0x44af2c
4018fd:	c7 01 00 00 00 00    	movl   $0x0,(%ecx)
401903:	c7 41 10 00 00 00 00 	movl   $0x0,0x10(%ecx)
40190a:	c7 41 14 00 00 00 00 	movl   $0x0,0x14(%ecx)
401911:	e8 fa 0b 00 00       	call   0x402510
401916:	83 ec 18             	sub    $0x18,%esp
401919:	c6 45 fc 0c          	movb   $0xc,-0x4(%ebp)
40191d:	8b cc                	mov    %esp,%ecx
40191f:	89 a5 a0 fd ff ff    	mov    %esp,-0x260(%ebp)
401925:	6a 05                	push   $0x5
401927:	68 3c b0 44 00       	push   $0x44b03c
40192c:	c7 01 00 00 00 00    	movl   $0x0,(%ecx)
401932:	c7 41 10 00 00 00 00 	movl   $0x0,0x10(%ecx)
401939:	c7 41 14 00 00 00 00 	movl   $0x0,0x14(%ecx)
401940:	e8 cb 0b 00 00       	call   0x402510
401945:	83 ec 18             	sub    $0x18,%esp
401948:	c6 45 fc 0d          	movb   $0xd,-0x4(%ebp)
40194c:	8d 85 54 ff ff ff    	lea    -0xac(%ebp),%eax
401952:	8b cc                	mov    %esp,%ecx
401954:	50                   	push   %eax
401955:	e8 66 09 00 00       	call   0x4022c0
40195a:	8d 8d b8 fe ff ff    	lea    -0x148(%ebp),%ecx
401960:	c6 45 fc 0b          	movb   $0xb,-0x4(%ebp)
401964:	e8 27 23 01 00       	call   0x413c90
401969:	8b bd 64 ff ff ff    	mov    -0x9c(%ebp),%edi
40196f:	8d 8d 54 ff ff ff    	lea    -0xac(%ebp),%ecx
401975:	8b 45 d4             	mov    -0x2c(%ebp),%eax
401978:	83 c4 48             	add    $0x48,%esp
40197b:	83 bd 68 ff ff ff 08 	cmpl   $0x8,-0x98(%ebp)
401982:	0f 43 8d 54 ff ff ff 	cmovae -0xac(%ebp),%ecx
401989:	3b f8                	cmp    %eax,%edi
40198b:	77 23                	ja     0x4019b0
40198d:	83 f8 08             	cmp    $0x8,%eax
401990:	89 7d d0             	mov    %edi,-0x30(%ebp)
401993:	8d 04 3f             	lea    (%edi,%edi,1),%eax
401996:	50                   	push   %eax
401997:	8d 75 c0             	lea    -0x40(%ebp),%esi
40199a:	0f 43 75 c0          	cmovae -0x40(%ebp),%esi
40199e:	51                   	push   %ecx
40199f:	56                   	push   %esi
4019a0:	e8 ab ba 01 00       	call   0x41d450
4019a5:	83 c4 0c             	add    $0xc,%esp
4019a8:	33 c0                	xor    %eax,%eax
4019aa:	66 89 04 7e          	mov    %ax,(%esi,%edi,2)
4019ae:	eb 17                	jmp    0x4019c7
4019b0:	51                   	push   %ecx
4019b1:	c6 85 a4 fd ff ff 00 	movb   $0x0,-0x25c(%ebp)
4019b8:	8d 4d c0             	lea    -0x40(%ebp),%ecx
4019bb:	ff b5 a4 fd ff ff    	push   -0x25c(%ebp)
4019c1:	57                   	push   %edi
4019c2:	e8 49 0c 00 00       	call   0x402610
4019c7:	6a 0b                	push   $0xb
4019c9:	68 48 b0 44 00       	push   $0x44b048
4019ce:	8d 4d d8             	lea    -0x28(%ebp),%ecx
4019d1:	c7 45 d8 00 00 00 00 	movl   $0x0,-0x28(%ebp)
4019d8:	c7 45 e8 00 00 00 00 	movl   $0x0,-0x18(%ebp)
4019df:	c7 45 ec 00 00 00 00 	movl   $0x0,-0x14(%ebp)
4019e6:	e8 25 0b 00 00       	call   0x402510
4019eb:	c6 45 fc 0e          	movb   $0xe,-0x4(%ebp)
4019ef:	bb 02 00 00 00       	mov    $0x2,%ebx
4019f4:	8b 4d d0             	mov    -0x30(%ebp),%ecx
4019f7:	85 c9                	test   %ecx,%ecx
4019f9:	0f 84 bf 00 00 00    	je     0x401abe
4019ff:	8b 45 e8             	mov    -0x18(%ebp),%eax
401a02:	85 c0                	test   %eax,%eax
401a04:	0f 84 b4 00 00 00    	je     0x401abe
401a0a:	8d 71 0b             	lea    0xb(%ecx),%esi
401a0d:	33 c9                	xor    %ecx,%ecx
401a0f:	03 f0                	add    %eax,%esi
401a11:	8b c6                	mov    %esi,%eax
401a13:	f7 e3                	mul    %ebx
401a15:	0f 90 c1             	seto   %cl
401a18:	f7 d9                	neg    %ecx
401a1a:	0b c8                	or     %eax,%ecx
401a1c:	51                   	push   %ecx
401a1d:	e8 31 4c 02 00       	call   0x426653
401a22:	8b d8                	mov    %eax,%ebx
401a24:	83 c4 04             	add    $0x4,%esp
401a27:	85 db                	test   %ebx,%ebx
401a29:	0f 84 8a 00 00 00    	je     0x401ab9
401a2f:	83 7d d4 08          	cmpl   $0x8,-0x2c(%ebp)
401a33:	8d 4d c0             	lea    -0x40(%ebp),%ecx
401a36:	0f 43 4d c0          	cmovae -0x40(%ebp),%ecx
401a3a:	51                   	push   %ecx
401a3b:	56                   	push   %esi
401a3c:	53                   	push   %ebx
401a3d:	e8 34 4a 02 00       	call   0x426476
401a42:	83 c4 0c             	add    $0xc,%esp
401a45:	8d 45 d8             	lea    -0x28(%ebp),%eax
401a48:	83 7d ec 08          	cmpl   $0x8,-0x14(%ebp)
401a4c:	0f 43 45 d8          	cmovae -0x28(%ebp),%eax
401a50:	50                   	push   %eax
401a51:	53                   	push   %ebx
401a52:	ff 15 fc f1 43 00    	call   *0x43f1fc
401a58:	8b cb                	mov    %ebx,%ecx
401a5a:	8d 51 02             	lea    0x2(%ecx),%edx
401a5d:	0f 1f 00             	nopl   (%eax)
401a60:	66 8b 01             	mov    (%ecx),%ax
401a63:	83 c1 02             	add    $0x2,%ecx
401a66:	66 85 c0             	test   %ax,%ax
401a69:	75 f5                	jne    0x401a60
401a6b:	8b 45 d4             	mov    -0x2c(%ebp),%eax
401a6e:	2b ca                	sub    %edx,%ecx
401a70:	d1 f9                	sar    $1,%ecx
401a72:	3b c8                	cmp    %eax,%ecx
401a74:	77 23                	ja     0x401a99
401a76:	8d 34 09             	lea    (%ecx,%ecx,1),%esi
401a79:	89 4d d0             	mov    %ecx,-0x30(%ebp)
401a7c:	83 f8 08             	cmp    $0x8,%eax
401a7f:	8d 7d c0             	lea    -0x40(%ebp),%edi
401a82:	56                   	push   %esi
401a83:	0f 43 7d c0          	cmovae -0x40(%ebp),%edi
401a87:	53                   	push   %ebx
401a88:	57                   	push   %edi
401a89:	e8 c2 b9 01 00       	call   0x41d450
401a8e:	83 c4 0c             	add    $0xc,%esp
401a91:	33 c0                	xor    %eax,%eax
401a93:	66 89 04 37          	mov    %ax,(%edi,%esi,1)
401a97:	eb 17                	jmp    0x401ab0
401a99:	53                   	push   %ebx
401a9a:	c6 85 a4 fd ff ff 00 	movb   $0x0,-0x25c(%ebp)
401aa1:	ff b5 a4 fd ff ff    	push   -0x25c(%ebp)
401aa7:	51                   	push   %ecx
401aa8:	8d 4d c0             	lea    -0x40(%ebp),%ecx
401aab:	e8 60 0b 00 00       	call   0x402610
401ab0:	53                   	push   %ebx
401ab1:	e8 97 45 02 00       	call   0x42604d
401ab6:	83 c4 04             	add    $0x4,%esp
401ab9:	bb 02 00 00 00       	mov    $0x2,%ebx
401abe:	c6 45 fc 0b          	movb   $0xb,-0x4(%ebp)
401ac2:	8b 4d ec             	mov    -0x14(%ebp),%ecx