407826:	50                   	push   %eax
407827:	56                   	push   %esi
407828:	ff 15 80 20 41 00    	call   *0x412080
40782e:	85 c0                	test   %eax,%eax
407830:	74 e1                	je     0x407813
407832:	8b 44 24 0c          	mov    0xc(%esp),%eax
407836:	89 06                	mov    %eax,(%esi)
407838:	8b 44 24 10          	mov    0x10(%esp),%eax
40783c:	89 46 04             	mov    %eax,0x4(%esi)
40783f:	33 c0                	xor    %eax,%eax
407841:	e9 42 ff ff ff       	jmp    0x407788
407846:	8b ff                	mov    %edi,%edi
407848:	55                   	push   %ebp
407849:	8b ec                	mov    %esp,%ebp
40784b:	81 ec 0c 02 00 00    	sub    $0x20c,%esp
407851:	a1 54 13 41 00       	mov    0x411354,%eax
407856:	33 c5                	xor    %ebp,%eax
407858:	89 45 fc             	mov    %eax,-0x4(%ebp)
40785b:	53                   	push   %ebx
40785c:	56                   	push   %esi
40785d:	57                   	push   %edi
40785e:	33 ff                	xor    %edi,%edi
407860:	8b da                	mov    %edx,%ebx
407862:	57                   	push   %edi
407863:	6a 01                	push   $0x1
407865:	53                   	push   %ebx
407866:	57                   	push   %edi
407867:	8b f1                	mov    %ecx,%esi
407869:	56                   	push   %esi
40786a:	57                   	push   %edi
40786b:	68 00 13 00 00       	push   $0x1300
407870:	ff 15 c4 20 41 00    	call   *0x4120c4
407876:	85 c0                	test   %eax,%eax
407878:	74 05                	je     0x40787f
40787a:	33 c0                	xor    %eax,%eax
40787c:	40                   	inc    %eax
40787d:	eb 5f                	jmp    0x4078de
40787f:	68 04 01 00 00       	push   $0x104
407884:	8d 85 f4 fd ff ff    	lea    -0x20c(%ebp),%eax
40788a:	50                   	push   %eax
40788b:	68 c8 25 40 00       	push   $0x4025c8
407890:	ff 15 d0 20 41 00    	call   *0x4120d0
407896:	85 c0                	test   %eax,%eax
407898:	74 42                	je     0x4078dc
40789a:	3d 04 01 00 00       	cmp    $0x104,%eax
40789f:	73 3b                	jae    0x4078dc
4078a1:	6a 02                	push   $0x2
4078a3:	57                   	push   %edi
4078a4:	8d 85 f4 fd ff ff    	lea    -0x20c(%ebp),%eax
4078aa:	50                   	push   %eax
4078ab:	ff 15 b4 20 41 00    	call   *0x4120b4
4078b1:	8b f8                	mov    %eax,%edi
4078b3:	85 ff                	test   %edi,%edi
4078b5:	74 25                	je     0x4078dc
4078b7:	6a 00                	push   $0x0
4078b9:	6a 01                	push   $0x1
4078bb:	53                   	push   %ebx
4078bc:	6a 00                	push   $0x0
4078be:	56                   	push   %esi
4078bf:	57                   	push   %edi
4078c0:	68 00 0b 00 00       	push   $0xb00
4078c5:	ff 15 c4 20 41 00    	call   *0x4120c4
4078cb:	f7 d8                	neg    %eax
4078cd:	57                   	push   %edi
4078ce:	1b f6                	sbb    %esi,%esi
4078d0:	f7 de                	neg    %esi
4078d2:	ff 15 b8 20 41 00    	call   *0x4120b8
4078d8:	8b c6                	mov    %esi,%eax
4078da:	eb 02                	jmp    0x4078de
4078dc:	33 c0                	xor    %eax,%eax
4078de:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4078e1:	5f                   	pop    %edi
4078e2:	5e                   	pop    %esi
4078e3:	33 cd                	xor    %ebp,%ecx
4078e5:	5b                   	pop    %ebx
4078e6:	e8 b5 6a 00 00       	call   0x40e3a0
4078eb:	c9                   	leave
4078ec:	c3                   	ret
4078ed:	8b ff                	mov    %edi,%edi
4078ef:	55                   	push   %ebp
4078f0:	8b ec                	mov    %esp,%ebp
4078f2:	51                   	push   %ecx
4078f3:	53                   	push   %ebx
4078f4:	8b d9                	mov    %ecx,%ebx
4078f6:	56                   	push   %esi
4078f7:	8b 75 08             	mov    0x8(%ebp),%esi
4078fa:	8b 53 04             	mov    0x4(%ebx),%edx
4078fd:	8b 03                	mov    (%ebx),%eax
4078ff:	2b d0                	sub    %eax,%edx
407901:	d1 fa                	sar    $1,%edx
407903:	3b f2                	cmp    %edx,%esi
407905:	73 12                	jae    0x407919
407907:	ff 73 04             	push   0x4(%ebx)
40790a:	8d 04 70             	lea    (%eax,%esi,2),%eax
40790d:	50                   	push   %eax
40790e:	8d 45 fc             	lea    -0x4(%ebp),%eax
407911:	50                   	push   %eax
407912:	e8 8d 00 00 00       	call   0x4079a4
407917:	eb 3f                	jmp    0x407958
407919:	76 3d                	jbe    0x407958
40791b:	8b c6                	mov    %esi,%eax
40791d:	57                   	push   %edi
40791e:	2b c2                	sub    %edx,%eax
407920:	50                   	push   %eax
407921:	e8 38 00 00 00       	call   0x40795e
407926:	8b 53 04             	mov    0x4(%ebx),%edx
407929:	8b ce                	mov    %esi,%ecx
40792b:	8b 3b                	mov    (%ebx),%edi
40792d:	8b c2                	mov    %edx,%eax
40792f:	2b c7                	sub    %edi,%eax
407931:	d1 f8                	sar    $1,%eax
407933:	2b c8                	sub    %eax,%ecx
407935:	74 12                	je     0x407949
407937:	33 c0                	xor    %eax,%eax
407939:	8b fa                	mov    %edx,%edi
40793b:	d1 e9                	shr    $1,%ecx
40793d:	f3 ab                	rep stos %eax,%es:(%edi)
40793f:	13 c9                	adc    %ecx,%ecx
407941:	66 f3 ab             	rep stos %ax,%es:(%edi)
407944:	8b 53 04             	mov    0x4(%ebx),%edx
407947:	8b 3b                	mov    (%ebx),%edi
407949:	8b c2                	mov    %edx,%eax
40794b:	2b c7                	sub    %edi,%eax
40794d:	d1 f8                	sar    $1,%eax
40794f:	2b f0                	sub    %eax,%esi
407951:	5f                   	pop    %edi
407952:	8d 04 72             	lea    (%edx,%esi,2),%eax
407955:	89 43 04             	mov    %eax,0x4(%ebx)
407958:	5e                   	pop    %esi
407959:	5b                   	pop    %ebx
40795a:	c9                   	leave
40795b:	c2 04 00             	ret    $0x4
40795e:	8b ff                	mov    %edi,%edi
407960:	55                   	push   %ebp
407961:	8b ec                	mov    %esp,%ebp
407963:	56                   	push   %esi
407964:	8b f1                	mov    %ecx,%esi
407966:	8b 4d 08             	mov    0x8(%ebp),%ecx
407969:	8b 46 08             	mov    0x8(%esi),%eax
40796c:	8b 56 04             	mov    0x4(%esi),%edx
40796f:	2b c2                	sub    %edx,%eax
407971:	d1 f8                	sar    $1,%eax
407973:	3b c1                	cmp    %ecx,%eax
407975:	73 22                	jae    0x407999
407977:	2b 16                	sub    (%esi),%edx
407979:	b8 ff ff ff 7f       	mov    $0x7fffffff,%eax
40797e:	d1 fa                	sar    $1,%edx
407980:	2b c2                	sub    %edx,%eax
407982:	3b c1                	cmp    %ecx,%eax
407984:	72 18                	jb     0x40799e
407986:	8d 04 0a             	lea    (%edx,%ecx,1),%eax
407989:	8b ce                	mov    %esi,%ecx
40798b:	50                   	push   %eax
40798c:	e8 b6 00 00 00       	call   0x407a47
407991:	50                   	push   %eax
407992:	8b ce                	mov    %esi,%ecx
407994:	e8 59 00 00 00       	call   0x4079f2
407999:	5e                   	pop    %esi
40799a:	5d                   	pop    %ebp
40799b:	c2 04 00             	ret    $0x4
40799e:	e8 a7 f3 ff ff       	call   0x406d4a
4079a3:	cc                   	int3
4079a4:	8b ff                	mov    %edi,%edi
4079a6:	55                   	push   %ebp
4079a7:	8b ec                	mov    %esp,%ebp
4079a9:	8b 45 10             	mov    0x10(%ebp),%eax
4079ac:	53                   	push   %ebx
4079ad:	8b d9                	mov    %ecx,%ebx
4079af:	57                   	push   %edi
4079b0:	8b 7d 0c             	mov    0xc(%ebp),%edi
4079b3:	8b 0b                	mov    (%ebx),%ecx
4079b5:	3b f9                	cmp    %ecx,%edi
4079b7:	75 0a                	jne    0x4079c3
4079b9:	3b 43 04             	cmp    0x4(%ebx),%eax
4079bc:	75 05                	jne    0x4079c3
4079be:	89 4b 04             	mov    %ecx,0x4(%ebx)
4079c1:	eb 24                	jmp    0x4079e7
4079c3:	3b f8                	cmp    %eax,%edi
4079c5:	74 20                	je     0x4079e7
4079c7:	8b 4b 04             	mov    0x4(%ebx),%ecx
4079ca:	2b c8                	sub    %eax,%ecx
4079cc:	d1 f9                	sar    $1,%ecx
4079ce:	56                   	push   %esi
4079cf:	8d 34 09             	lea    (%ecx,%ecx,1),%esi
4079d2:	56                   	push   %esi
4079d3:	50                   	push   %eax
4079d4:	57                   	push   %edi
4079d5:	e8 52 6d 00 00       	call   0x40e72c
4079da:	83 c4 0c             	add    $0xc,%esp
4079dd:	8d 04 3e             	lea    (%esi,%edi,1),%eax
4079e0:	8b 7d 0c             	mov    0xc(%ebp),%edi
4079e3:	89 43 04             	mov    %eax,0x4(%ebx)
4079e6:	5e                   	pop    %esi
4079e7:	8b 45 08             	mov    0x8(%ebp),%eax
4079ea:	89 38                	mov    %edi,(%eax)
4079ec:	5f                   	pop    %edi
4079ed:	5b                   	pop    %ebx
4079ee:	5d                   	pop    %ebp
4079ef:	c2 0c 00             	ret    $0xc
4079f2:	8b ff                	mov    %edi,%edi
4079f4:	55                   	push   %ebp
4079f5:	8b ec                	mov    %esp,%ebp
4079f7:	53                   	push   %ebx
4079f8:	56                   	push   %esi
4079f9:	57                   	push   %edi
4079fa:	ff 75 08             	push   0x8(%ebp)
4079fd:	8b f1                	mov    %ecx,%esi
4079ff:	e8 c2 e8 ff ff       	call   0x4062c6
407a04:	8b 56 04             	mov    0x4(%esi),%edx
407a07:	8b f8                	mov    %eax,%edi
407a09:	2b 16                	sub    (%esi),%edx
407a0b:	83 e2 fe             	and    $0xfffffffe,%edx
407a0e:	52                   	push   %edx
407a0f:	ff 36                	push   (%esi)
407a11:	57                   	push   %edi
407a12:	e8 15 6d 00 00       	call   0x40e72c
407a17:	8b 5e 04             	mov    0x4(%esi),%ebx
407a1a:	83 c4 0c             	add    $0xc,%esp
407a1d:	2b 1e                	sub    (%esi),%ebx
407a1f:	d1 fb                	sar    $1,%ebx
407a21:	83 3e 00             	cmpl   $0x0,(%esi)
407a24:	74 09                	je     0x407a2f
407a26:	ff 36                	push   (%esi)
407a28:	ff 15 e4 21 41 00    	call   *0x4121e4
407a2e:	59                   	pop    %ecx
407a2f:	8b 45 08             	mov    0x8(%ebp),%eax
407a32:	89 3e                	mov    %edi,(%esi)
407a34:	8d 04 47             	lea    (%edi,%eax,2),%eax
407a37:	89 46 08             	mov    %eax,0x8(%esi)
407a3a:	8d 04 5f             	lea    (%edi,%ebx,2),%eax
407a3d:	5f                   	pop    %edi
407a3e:	89 46 04             	mov    %eax,0x4(%esi)
407a41:	5e                   	pop    %esi
407a42:	5b                   	pop    %ebx
407a43:	5d                   	pop    %ebp
407a44:	c2 04 00             	ret    $0x4
407a47:	8b ff                	mov    %edi,%edi
407a49:	55                   	push   %ebp
407a4a:	8b ec                	mov    %esp,%ebp
407a4c:	8b 51 08             	mov    0x8(%ecx),%edx
407a4f:	b8 ff ff ff 7f       	mov    $0x7fffffff,%eax
407a54:	2b 11                	sub    (%ecx),%edx
407a56:	d1 fa                	sar    $1,%edx
407a58:	8b ca                	mov    %edx,%ecx
407a5a:	d1 e9                	shr    $1,%ecx
407a5c:	2b c1                	sub    %ecx,%eax
407a5e:	03 ca                	add    %edx,%ecx
407a60:	3b c2                	cmp    %edx,%eax
407a62:	1b c0                	sbb    %eax,%eax
407a64:	f7 d0                	not    %eax
407a66:	23 c1                	and    %ecx,%eax
407a68:	3b 45 08             	cmp    0x8(%ebp),%eax
407a6b:	73 03                	jae    0x407a70
407a6d:	8b 45 08             	mov    0x8(%ebp),%eax
407a70:	5d                   	pop    %ebp
407a71:	c2 04 00             	ret    $0x4
407a74:	6a 1c                	push   $0x1c
407a76:	b8 f9 ee 40 00       	mov    $0x40eef9,%eax
407a7b:	e8 ce 6b 00 00       	call   0x40e64e
407a80:	89 55 e8             	mov    %edx,-0x18(%ebp)
407a83:	8b f1                	mov    %ecx,%esi
407a85:	33 db                	xor    %ebx,%ebx
407a87:	89 5d ec             	mov    %ebx,-0x14(%ebp)
407a8a:	89 5d fc             	mov    %ebx,-0x4(%ebp)
407a8d:	8d 7d d8             	lea    -0x28(%ebp),%edi
407a90:	33 c0                	xor    %eax,%eax
407a92:	ab                   	stos   %eax,%es:(%edi)
407a93:	ab                   	stos   %eax,%es:(%edi)
407a94:	ab                   	stos   %eax,%es:(%edi)
407a95:	ab                   	stos   %eax,%es:(%edi)
407a96:	33 c0                	xor    %eax,%eax
407a98:	66 89 45 d8          	mov    %ax,-0x28(%ebp)
407a9c:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
407aa0:	6a 08                	push   $0x8
407aa2:	5f                   	pop    %edi
407aa3:	85 f6                	test   %esi,%esi
407aa5:	74 73                	je     0x407b1a
407aa7:	66 39 1e             	cmp    %bx,(%esi)
407aaa:	74 6e                	je     0x407b1a
407aac:	8d 45 ec             	lea    -0x14(%ebp),%eax
407aaf:	50                   	push   %eax
407ab0:	68 fc 20 40 00       	push   $0x4020fc
407ab5:	6a 01                	push   $0x1
407ab7:	53                   	push   %ebx
407ab8:	68 0c 21 40 00       	push   $0x40210c
407abd:	ff 15 48 20 41 00    	call   *0x412048
407ac3:	85 c0                	test   %eax,%eax
407ac5:	78 58                	js     0x407b1f
407ac7:	56                   	push   %esi
407ac8:	66 89 7d d8          	mov    %di,-0x28(%ebp)
407acc:	89 5d e0             	mov    %ebx,-0x20(%ebp)
407acf:	ff 15 08 40 41 00    	call   *0x414008
407ad5:	89 45 e0             	mov    %eax,-0x20(%ebp)
407ad8:	85 c0                	test   %eax,%eax
407ada:	75 07                	jne    0x407ae3
407adc:	b8 0e 00 07 80       	mov    $0x8007000e,%eax
407ae1:	eb 3c                	jmp    0x407b1f
407ae3:	8b 45 ec             	mov    -0x14(%ebp),%eax
407ae6:	8d 55 f0             	lea    -0x10(%ebp),%edx
407ae9:	52                   	push   %edx
407aea:	83 ec 10             	sub    $0x10,%esp
407aed:	8d 75 d8             	lea    -0x28(%ebp),%esi
407af0:	8b fc                	mov    %esp,%edi
407af2:	8b 08                	mov    (%eax),%ecx
407af4:	50                   	push   %eax
407af5:	a5                   	movsl  %ds:(%esi),%es:(%edi)
407af6:	a5                   	movsl  %ds:(%esi),%es:(%edi)
407af7:	a5                   	movsl  %ds:(%esi),%es:(%edi)
407af8:	a5                   	movsl  %ds:(%esi),%es:(%edi)
407af9:	8b b1 e8 00 00 00    	mov    0xe8(%ecx),%esi
407aff:	8b ce                	mov    %esi,%ecx
407b01:	ff 15 10 22 41 00    	call   *0x412210
407b07:	ff d6                	call   *%esi
407b09:	85 c0                	test   %eax,%eax
407b0b:	75 12                	jne    0x407b1f
407b0d:	8b 4d e8             	mov    -0x18(%ebp),%ecx
407b10:	8b 45 ec             	mov    -0x14(%ebp),%eax
407b13:	89 5d ec             	mov    %ebx,-0x14(%ebp)
407b16:	89 01                	mov    %eax,(%ecx)
407b18:	eb 07                	jmp    0x407b21
407b1a:	b8 57 00 07 80       	mov    $0x80070057,%eax
407b1f:	8b d8                	mov    %eax,%ebx
407b21:	b8 ff 0f 00 00       	mov    $0xfff,%eax
407b26:	66 39 45 d8          	cmp    %ax,-0x28(%ebp)
407b2a:	75 07                	jne    0x407b33
407b2c:	6a 08                	push   $0x8
407b2e:	58                   	pop    %eax
407b2f:	66 89 45 d8          	mov    %ax,-0x28(%ebp)
407b33:	8d 45 d8             	lea    -0x28(%ebp),%eax
407b36:	50                   	push   %eax
407b37:	ff 15 00 40 41 00    	call   *0x414000
407b3d:	c7 45 fc 06 00 00 00 	movl   $0x6,-0x4(%ebp)
407b44:	8b 4d ec             	mov    -0x14(%ebp),%ecx
407b47:	85 c9                	test   %ecx,%ecx
407b49:	74 10                	je     0x407b5b
407b4b:	8b 11                	mov    (%ecx),%edx
407b4d:	51                   	push   %ecx
407b4e:	8b 72 08             	mov    0x8(%edx),%esi
407b51:	8b ce                	mov    %esi,%ecx
407b53:	ff 15 10 22 41 00    	call   *0x412210
407b59:	ff d6                	call   *%esi
407b5b:	8b c3                	mov    %ebx,%eax
407b5d:	e8 ba 6a 00 00       	call   0x40e61c
407b62:	c3                   	ret
407b63:	6a 04                	push   $0x4
407b65:	b8 1c ef 40 00       	mov    $0x40ef1c,%eax
407b6a:	e8 df 6a 00 00       	call   0x40e64e
407b6f:	8b fa                	mov    %edx,%edi
407b71:	8b d9                	mov    %ecx,%ebx
407b73:	33 f6                	xor    %esi,%esi