4077cd:	8b ff                	mov    %edi,%edi
4077cf:	55                   	push   %ebp
4077d0:	8b ec                	mov    %esp,%ebp
4077d2:	83 ec 0c             	sub    $0xc,%esp
4077d5:	53                   	push   %ebx
4077d6:	56                   	push   %esi
4077d7:	8b 75 0c             	mov    0xc(%ebp),%esi
4077da:	57                   	push   %edi
4077db:	85 f6                	test   %esi,%esi
4077dd:	74 1e                	je     0x4077fd
4077df:	8b 7d 10             	mov    0x10(%ebp),%edi
4077e2:	85 ff                	test   %edi,%edi
4077e4:	74 17                	je     0x4077fd
4077e6:	8b 5d 14             	mov    0x14(%ebp),%ebx
4077e9:	85 db                	test   %ebx,%ebx
4077eb:	75 19                	jne    0x407806
4077ed:	e8 15 05 00 00       	call   0x407d07
4077f2:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4077f8:	e8 31 04 00 00       	call   0x407c2e
4077fd:	33 c0                	xor    %eax,%eax
4077ff:	5f                   	pop    %edi
407800:	5e                   	pop    %esi
407801:	5b                   	pop    %ebx
407802:	8b e5                	mov    %ebp,%esp
407804:	5d                   	pop    %ebp
407805:	c3                   	ret
407806:	8b 4d 08             	mov    0x8(%ebp),%ecx
407809:	85 c9                	test   %ecx,%ecx
40780b:	74 e0                	je     0x4077ed
40780d:	83 c8 ff             	or     $0xffffffff,%eax
407810:	33 d2                	xor    %edx,%edx
407812:	f7 f6                	div    %esi
407814:	3b f8                	cmp    %eax,%edi
407816:	77 d5                	ja     0x4077ed
407818:	8d 43 0c             	lea    0xc(%ebx),%eax
40781b:	89 45 f4             	mov    %eax,-0xc(%ebp)
40781e:	8b 00                	mov    (%eax),%eax
407820:	a9 c0 04 00 00       	test   $0x4c0,%eax
407825:	74 05                	je     0x40782c
407827:	8b 53 18             	mov    0x18(%ebx),%edx
40782a:	eb 05                	jmp    0x407831
40782c:	ba 00 10 00 00       	mov    $0x1000,%edx
407831:	0f af f7             	imul   %edi,%esi
407834:	89 55 fc             	mov    %edx,-0x4(%ebp)
407837:	8b fe                	mov    %esi,%edi
407839:	85 f6                	test   %esi,%esi
40783b:	0f 84 e6 00 00 00    	je     0x407927
407841:	8b 43 0c             	mov    0xc(%ebx),%eax
407844:	a8 c0                	test   $0xc0,%al
407846:	74 39                	je     0x407881
407848:	8b 43 08             	mov    0x8(%ebx),%eax
40784b:	89 45 f8             	mov    %eax,-0x8(%ebp)
40784e:	85 c0                	test   %eax,%eax
407850:	74 2f                	je     0x407881
407852:	0f 88 d7 00 00 00    	js     0x40792f
407858:	3b f8                	cmp    %eax,%edi
40785a:	73 05                	jae    0x407861
40785c:	8b c7                	mov    %edi,%eax
40785e:	89 7d f8             	mov    %edi,-0x8(%ebp)
407861:	50                   	push   %eax
407862:	51                   	push   %ecx
407863:	ff 33                	push   (%ebx)
407865:	e8 76 0c 01 00       	call   0x4184e0
40786a:	8b 45 f8             	mov    -0x8(%ebp),%eax
40786d:	83 c4 0c             	add    $0xc,%esp
407870:	29 43 08             	sub    %eax,0x8(%ebx)
407873:	2b f8                	sub    %eax,%edi
407875:	8b 4d 08             	mov    0x8(%ebp),%ecx
407878:	01 03                	add    %eax,(%ebx)
40787a:	03 c8                	add    %eax,%ecx
40787c:	89 4d 08             	mov    %ecx,0x8(%ebp)
40787f:	eb 70                	jmp    0x4078f1
407881:	3b fa                	cmp    %edx,%edi
407883:	72 71                	jb     0x4078f6
407885:	8b 43 0c             	mov    0xc(%ebx),%eax
407888:	a8 c0                	test   $0xc0,%al
40788a:	74 15                	je     0x4078a1
40788c:	53                   	push   %ebx
40788d:	e8 94 62 00 00       	call   0x40db26
407892:	59                   	pop    %ecx
407893:	85 c0                	test   %eax,%eax
407895:	0f 85 9d 00 00 00    	jne    0x407938
40789b:	8b 4d 08             	mov    0x8(%ebp),%ecx
40789e:	8b 55 fc             	mov    -0x4(%ebp),%edx
4078a1:	8b c7                	mov    %edi,%eax
4078a3:	85 d2                	test   %edx,%edx
4078a5:	74 0e                	je     0x4078b5
4078a7:	33 d2                	xor    %edx,%edx
4078a9:	f7 75 fc             	divl   -0x4(%ebp)
4078ac:	8b c7                	mov    %edi,%eax
4078ae:	2b c2                	sub    %edx,%eax
4078b0:	89 45 f8             	mov    %eax,-0x8(%ebp)
4078b3:	eb 03                	jmp    0x4078b8
4078b5:	89 7d f8             	mov    %edi,-0x8(%ebp)
4078b8:	83 f8 ff             	cmp    $0xffffffff,%eax
4078bb:	72 06                	jb     0x4078c3
4078bd:	83 c8 ff             	or     $0xffffffff,%eax
4078c0:	89 45 f8             	mov    %eax,-0x8(%ebp)
4078c3:	50                   	push   %eax
4078c4:	51                   	push   %ecx
4078c5:	53                   	push   %ebx
4078c6:	e8 15 3d 00 00       	call   0x40b5e0
4078cb:	59                   	pop    %ecx
4078cc:	50                   	push   %eax
4078cd:	e8 ea 6f 00 00       	call   0x40e8bc
4078d2:	83 c4 0c             	add    $0xc,%esp
4078d5:	83 f8 ff             	cmp    $0xffffffff,%eax
4078d8:	74 55                	je     0x40792f
4078da:	8b 4d f8             	mov    -0x8(%ebp),%ecx
4078dd:	8b d1                	mov    %ecx,%edx
4078df:	3b c1                	cmp    %ecx,%eax
4078e1:	77 02                	ja     0x4078e5
4078e3:	8b d0                	mov    %eax,%edx
4078e5:	01 55 08             	add    %edx,0x8(%ebp)
4078e8:	2b fa                	sub    %edx,%edi
4078ea:	3b c1                	cmp    %ecx,%eax
4078ec:	72 41                	jb     0x40792f
4078ee:	8b 4d 08             	mov    0x8(%ebp),%ecx
4078f1:	8b 55 fc             	mov    -0x4(%ebp),%edx
4078f4:	eb 29                	jmp    0x40791f
4078f6:	0f be 01             	movsbl (%ecx),%eax
4078f9:	53                   	push   %ebx
4078fa:	50                   	push   %eax
4078fb:	e8 90 74 00 00       	call   0x40ed90
407900:	59                   	pop    %ecx
407901:	59                   	pop    %ecx
407902:	83 f8 ff             	cmp    $0xffffffff,%eax
407905:	74 31                	je     0x407938
407907:	8b 4d 08             	mov    0x8(%ebp),%ecx
40790a:	8b 53 18             	mov    0x18(%ebx),%edx
40790d:	41                   	inc    %ecx
40790e:	4f                   	dec    %edi
40790f:	89 4d 08             	mov    %ecx,0x8(%ebp)
407912:	89 55 fc             	mov    %edx,-0x4(%ebp)
407915:	85 d2                	test   %edx,%edx
407917:	7f 06                	jg     0x40791f
407919:	33 d2                	xor    %edx,%edx
40791b:	42                   	inc    %edx
40791c:	89 55 fc             	mov    %edx,-0x4(%ebp)
40791f:	85 ff                	test   %edi,%edi
407921:	0f 85 1a ff ff ff    	jne    0x407841
407927:	8b 45 10             	mov    0x10(%ebp),%eax
40792a:	e9 d0 fe ff ff       	jmp    0x4077ff
40792f:	8b 45 f4             	mov    -0xc(%ebp),%eax
407932:	6a 10                	push   $0x10
407934:	59                   	pop    %ecx
407935:	f0 09 08             	lock or %ecx,(%eax)
407938:	2b f7                	sub    %edi,%esi
40793a:	33 d2                	xor    %edx,%edx
40793c:	8b c6                	mov    %esi,%eax
40793e:	f7 75 0c             	divl   0xc(%ebp)
407941:	e9 b9 fe ff ff       	jmp    0x4077ff
407946:	8b ff                	mov    %edi,%edi
407948:	55                   	push   %ebp
407949:	8b ec                	mov    %esp,%ebp
40794b:	83 ec 10             	sub    $0x10,%esp
40794e:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
407952:	74 1c                	je     0x407970
407954:	83 7d 10 00          	cmpl   $0x0,0x10(%ebp)
407958:	74 16                	je     0x407970
40795a:	83 7d 14 00          	cmpl   $0x0,0x14(%ebp)
40795e:	75 16                	jne    0x407976
407960:	e8 a2 03 00 00       	call   0x407d07
407965:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40796b:	e8 be 02 00 00       	call   0x407c2e
407970:	33 c0                	xor    %eax,%eax
407972:	8b e5                	mov    %ebp,%esp
407974:	5d                   	pop    %ebp
407975:	c3                   	ret
407976:	8d 45 14             	lea    0x14(%ebp),%eax
407979:	89 45 f0             	mov    %eax,-0x10(%ebp)
40797c:	8d 45 08             	lea    0x8(%ebp),%eax
40797f:	89 45 f4             	mov    %eax,-0xc(%ebp)
407982:	8d 45 0c             	lea    0xc(%ebp),%eax
407985:	89 45 f8             	mov    %eax,-0x8(%ebp)
407988:	8d 45 10             	lea    0x10(%ebp),%eax
40798b:	89 45 fc             	mov    %eax,-0x4(%ebp)
40798e:	8d 45 f0             	lea    -0x10(%ebp),%eax
407991:	50                   	push   %eax
407992:	ff 75 14             	push   0x14(%ebp)
407995:	e8 c5 fd ff ff       	call   0x40775f
40799a:	59                   	pop    %ecx
40799b:	59                   	pop    %ecx
40799c:	eb d4                	jmp    0x407972
40799e:	8b ff                	mov    %edi,%edi
4079a0:	55                   	push   %ebp
4079a1:	8b ec                	mov    %esp,%ebp
4079a3:	51                   	push   %ecx
4079a4:	51                   	push   %ecx
4079a5:	56                   	push   %esi
4079a6:	8b 75 08             	mov    0x8(%ebp),%esi
4079a9:	85 f6                	test   %esi,%esi
4079ab:	75 14                	jne    0x4079c1
4079ad:	e8 55 03 00 00       	call   0x407d07
4079b2:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4079b8:	e8 71 02 00 00       	call   0x407c2e
4079bd:	33 c0                	xor    %eax,%eax
4079bf:	eb 57                	jmp    0x407a18
4079c1:	83 7d 0c 01          	cmpl   $0x1,0xc(%ebp)
4079c5:	75 f6                	jne    0x4079bd
4079c7:	83 65 f8 00          	andl   $0x0,-0x8(%ebp)
4079cb:	8d 45 f8             	lea    -0x8(%ebp),%eax
4079ce:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
4079d2:	53                   	push   %ebx
4079d3:	50                   	push   %eax
4079d4:	e8 19 46 00 00       	call   0x40bff2
4079d9:	8b 4d f8             	mov    -0x8(%ebp),%ecx
4079dc:	8b 45 fc             	mov    -0x4(%ebp),%eax
4079df:	81 e9 00 80 3e d5    	sub    $0xd53e8000,%ecx
4079e5:	6a 00                	push   $0x0
4079e7:	68 80 96 98 00       	push   $0x989680
4079ec:	1d de b1 9d 01       	sbb    $0x19db1de,%eax
4079f1:	50                   	push   %eax
4079f2:	51                   	push   %ecx
4079f3:	e8 08 08 01 00       	call   0x418200
4079f8:	89 5d fc             	mov    %ebx,-0x4(%ebp)
4079fb:	5b                   	pop    %ebx
4079fc:	83 fa 07             	cmp    $0x7,%edx
4079ff:	7c 09                	jl     0x407a0a
407a01:	7f ba                	jg     0x4079bd
407a03:	3d ff 6f 40 93       	cmp    $0x93406fff,%eax
407a08:	77 b3                	ja     0x4079bd
407a0a:	6b c9 64             	imul   $0x64,%ecx,%ecx
407a0d:	89 06                	mov    %eax,(%esi)
407a0f:	33 c0                	xor    %eax,%eax
407a11:	89 56 04             	mov    %edx,0x4(%esi)
407a14:	40                   	inc    %eax
407a15:	89 4e 08             	mov    %ecx,0x8(%esi)
407a18:	5e                   	pop    %esi
407a19:	8b e5                	mov    %ebp,%esp
407a1b:	5d                   	pop    %ebp
407a1c:	c3                   	ret
407a1d:	8b ff                	mov    %edi,%edi
407a1f:	55                   	push   %ebp
407a20:	8b ec                	mov    %esp,%ebp
407a22:	83 ec 10             	sub    $0x10,%esp
407a25:	33 c0                	xor    %eax,%eax
407a27:	57                   	push   %edi
407a28:	8d 7d f0             	lea    -0x10(%ebp),%edi
407a2b:	ab                   	stos   %eax,%es:(%edi)
407a2c:	6a 01                	push   $0x1
407a2e:	ab                   	stos   %eax,%es:(%edi)
407a2f:	ab                   	stos   %eax,%es:(%edi)
407a30:	ab                   	stos   %eax,%es:(%edi)
407a31:	8d 45 f0             	lea    -0x10(%ebp),%eax
407a34:	50                   	push   %eax
407a35:	e8 64 ff ff ff       	call   0x40799e
407a3a:	59                   	pop    %ecx
407a3b:	59                   	pop    %ecx
407a3c:	5f                   	pop    %edi
407a3d:	83 f8 01             	cmp    $0x1,%eax
407a40:	74 07                	je     0x407a49
407a42:	83 c8 ff             	or     $0xffffffff,%eax
407a45:	8b d0                	mov    %eax,%edx
407a47:	eb 06                	jmp    0x407a4f
407a49:	8b 55 f4             	mov    -0xc(%ebp),%edx
407a4c:	8b 45 f0             	mov    -0x10(%ebp),%eax
407a4f:	8b 4d 08             	mov    0x8(%ebp),%ecx
407a52:	85 c9                	test   %ecx,%ecx
407a54:	74 05                	je     0x407a5b
407a56:	89 01                	mov    %eax,(%ecx)
407a58:	89 51 04             	mov    %edx,0x4(%ecx)
407a5b:	8b e5                	mov    %ebp,%esp
407a5d:	5d                   	pop    %ebp
407a5e:	c3                   	ret
407a5f:	e9 c0 1d 00 00       	jmp    0x409824
407a64:	8b ff                	mov    %edi,%edi
407a66:	55                   	push   %ebp
407a67:	8b ec                	mov    %esp,%ebp
407a69:	81 ec 28 03 00 00    	sub    $0x328,%esp
407a6f:	a1 0c 30 42 00       	mov    0x42300c,%eax
407a74:	33 c5                	xor    %ebp,%eax
407a76:	89 45 fc             	mov    %eax,-0x4(%ebp)
407a79:	83 7d 08 ff          	cmpl   $0xffffffff,0x8(%ebp)
407a7d:	57                   	push   %edi
407a7e:	74 09                	je     0x407a89
407a80:	ff 75 08             	push   0x8(%ebp)
407a83:	e8 b5 c0 ff ff       	call   0x403b3d
407a88:	59                   	pop    %ecx
407a89:	6a 50                	push   $0x50
407a8b:	8d 85 e0 fc ff ff    	lea    -0x320(%ebp),%eax
407a91:	6a 00                	push   $0x0
407a93:	50                   	push   %eax
407a94:	e8 c7 cf ff ff       	call   0x404a60
407a99:	68 cc 02 00 00       	push   $0x2cc
407a9e:	8d 85 30 fd ff ff    	lea    -0x2d0(%ebp),%eax
407aa4:	6a 00                	push   $0x0
407aa6:	50                   	push   %eax
407aa7:	e8 b4 cf ff ff       	call   0x404a60
407aac:	8d 85 e0 fc ff ff    	lea    -0x320(%ebp),%eax
407ab2:	83 c4 18             	add    $0x18,%esp
407ab5:	89 85 d8 fc ff ff    	mov    %eax,-0x328(%ebp)
407abb:	8d 85 30 fd ff ff    	lea    -0x2d0(%ebp),%eax
407ac1:	89 85 dc fc ff ff    	mov    %eax,-0x324(%ebp)
407ac7:	89 85 e0 fd ff ff    	mov    %eax,-0x220(%ebp)
407acd:	89 8d dc fd ff ff    	mov    %ecx,-0x224(%ebp)
407ad3:	89 95 d8 fd ff ff    	mov    %edx,-0x228(%ebp)
407ad9:	89 9d d4 fd ff ff    	mov    %ebx,-0x22c(%ebp)
407adf:	89 b5 d0 fd ff ff    	mov    %esi,-0x230(%ebp)
407ae5:	89 bd cc fd ff ff    	mov    %edi,-0x234(%ebp)
407aeb:	66 8c 95 f8 fd ff ff 	data16 mov %ss,-0x208(%ebp)
407af2:	66 8c 8d ec fd ff ff 	data16 mov %cs,-0x214(%ebp)
407af9:	66 8c 9d c8 fd ff ff 	data16 mov %ds,-0x238(%ebp)
407b00:	66 8c 85 c4 fd ff ff 	data16 mov %es,-0x23c(%ebp)
407b07:	66 8c a5 c0 fd ff ff 	data16 mov %fs,-0x240(%ebp)
407b0e:	66 8c ad bc fd ff ff 	data16 mov %gs,-0x244(%ebp)
407b15:	9c                   	pushf
407b16:	8f 85 f0 fd ff ff    	pop    -0x210(%ebp)
407b1c:	8b 45 04             	mov    0x4(%ebp),%eax
407b1f:	89 85 e8 fd ff ff    	mov    %eax,-0x218(%ebp)
407b25:	8d 45 04             	lea    0x4(%ebp),%eax
407b28:	89 85 f4 fd ff ff    	mov    %eax,-0x20c(%ebp)
407b2e:	c7 85 30 fd ff ff 01 	movl   $0x10001,-0x2d0(%ebp)
407b35:	00 01 00
407b38:	8b 40 fc             	mov    -0x4(%eax),%eax
407b3b:	89 85 e4 fd ff ff    	mov    %eax,-0x21c(%ebp)
407b41:	8b 45 0c             	mov    0xc(%ebp),%eax
407b44:	89 85 e0 fc ff ff    	mov    %eax,-0x320(%ebp)
407b4a:	8b 45 10             	mov    0x10(%ebp),%eax
407b4d:	89 85 e4 fc ff ff    	mov    %eax,-0x31c(%ebp)
407b53:	8b 45 04             	mov    0x4(%ebp),%eax
407b56:	89 85 ec fc ff ff    	mov    %eax,-0x314(%ebp)
407b5c:	ff 15 c0 b0 41 00    	call   *0x41b0c0
407b62:	6a 00                	push   $0x0
407b64:	8b f8                	mov    %eax,%edi
407b66:	ff 15 b0 b0 41 00    	call   *0x41b0b0
407b6c:	8d 85 d8 fc ff ff    	lea    -0x328(%ebp),%eax
407b72:	50                   	push   %eax
407b73:	ff 15 ac b0 41 00    	call   *0x41b0ac
407b79:	85 c0                	test   %eax,%eax
407b7b:	75 13                	jne    0x407b90
407b7d:	85 ff                	test   %edi,%edi
407b7f:	75 0f                	jne    0x407b90
407b81:	83 7d 08 ff          	cmpl   $0xffffffff,0x8(%ebp)
407b85:	74 09                	je     0x407b90
407b87:	ff 75 08             	push   0x8(%ebp)
407b8a:	e8 ae bf ff ff       	call   0x403b3d
407b8f:	59                   	pop    %ecx
407b90:	8b 4d fc             	mov    -0x4(%ebp),%ecx
407b93:	33 cd                	xor    %ebp,%ecx
407b95:	5f                   	pop    %edi
407b96:	e8 bb b3 ff ff       	call   0x402f56
407b9b:	8b e5                	mov    %ebp,%esp
407b9d:	5d                   	pop    %ebp
407b9e:	c3                   	ret
407b9f:	8b ff                	mov    %edi,%edi
407ba1:	55                   	push   %ebp
407ba2:	8b ec                	mov    %esp,%ebp
407ba4:	ff 75 08             	push   0x8(%ebp)
407ba7:	b9 2c 3f 42 00       	mov    $0x423f2c,%ecx