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
407b75:	89 75 fc             	mov    %esi,-0x4(%ebp)
407b78:	85 ff                	test   %edi,%edi
407b7a:	74 49                	je     0x407bc5
407b7c:	66 39 37             	cmp    %si,(%edi)
407b7f:	74 44                	je     0x407bc5
407b81:	56                   	push   %esi
407b82:	ff 15 0c 40 41 00    	call   *0x41400c
407b88:	57                   	push   %edi
407b89:	ff 15 08 40 41 00    	call   *0x414008
407b8f:	8b f0                	mov    %eax,%esi
407b91:	89 75 f0             	mov    %esi,-0x10(%ebp)
407b94:	85 f6                	test   %esi,%esi
407b96:	74 26                	je     0x407bbe
407b98:	56                   	push   %esi
407b99:	ff 15 04 40 41 00    	call   *0x414004
407b9f:	85 c0                	test   %eax,%eax
407ba1:	74 1b                	je     0x407bbe
407ba3:	8b 03                	mov    (%ebx),%eax
407ba5:	ff 75 08             	push   0x8(%ebp)
407ba8:	56                   	push   %esi
407ba9:	8b b8 94 00 00 00    	mov    0x94(%eax),%edi
407baf:	8b cf                	mov    %edi,%ecx
407bb1:	53                   	push   %ebx
407bb2:	ff 15 10 22 41 00    	call   *0x412210
407bb8:	ff d7                	call   *%edi
407bba:	8b f8                	mov    %eax,%edi
407bbc:	eb 0c                	jmp    0x407bca
407bbe:	bf 0e 00 07 80       	mov    $0x8007000e,%edi
407bc3:	eb 05                	jmp    0x407bca
407bc5:	bf 57 00 07 80       	mov    $0x80070057,%edi
407bca:	56                   	push   %esi
407bcb:	ff 15 0c 40 41 00    	call   *0x41400c
407bd1:	8b c7                	mov    %edi,%eax
407bd3:	e8 44 6a 00 00       	call   0x40e61c
407bd8:	c2 04 00             	ret    $0x4
407bdb:	6a 04                	push   $0x4
407bdd:	b8 3f ef 40 00       	mov    $0x40ef3f,%eax
407be2:	e8 67 6a 00 00       	call   0x40e64e
407be7:	83 65 f0 00          	andl   $0x0,-0x10(%ebp)
407beb:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
407bef:	8d 45 f0             	lea    -0x10(%ebp),%eax
407bf2:	50                   	push   %eax
407bf3:	ba e4 45 40 00       	mov    $0x4045e4,%edx
407bf8:	e8 66 ff ff ff       	call   0x407b63
407bfd:	8b f8                	mov    %eax,%edi
407bff:	85 ff                	test   %edi,%edi
407c01:	75 1b                	jne    0x407c1e
407c03:	8b 45 f0             	mov    -0x10(%ebp),%eax
407c06:	ff 75 08             	push   0x8(%ebp)
407c09:	50                   	push   %eax
407c0a:	8b 08                	mov    (%eax),%ecx
407c0c:	8b b1 88 00 00 00    	mov    0x88(%ecx),%esi
407c12:	8b ce                	mov    %esi,%ecx
407c14:	ff 15 10 22 41 00    	call   *0x412210
407c1a:	ff d6                	call   *%esi
407c1c:	8b f8                	mov    %eax,%edi
407c1e:	c7 45 fc 02 00 00 00 	movl   $0x2,-0x4(%ebp)
407c25:	8b 4d f0             	mov    -0x10(%ebp),%ecx
407c28:	85 c9                	test   %ecx,%ecx
407c2a:	74 10                	je     0x407c3c
407c2c:	8b 11                	mov    (%ecx),%edx
407c2e:	51                   	push   %ecx
407c2f:	8b 72 08             	mov    0x8(%edx),%esi
407c32:	8b ce                	mov    %esi,%ecx
407c34:	ff 15 10 22 41 00    	call   *0x412210
407c3a:	ff d6                	call   *%esi
407c3c:	8b c7                	mov    %edi,%eax
407c3e:	e8 d9 69 00 00       	call   0x40e61c
407c43:	c2 04 00             	ret    $0x4
407c46:	6a 04                	push   $0x4
407c48:	b8 3f ef 40 00       	mov    $0x40ef3f,%eax
407c4d:	e8 fc 69 00 00       	call   0x40e64e
407c52:	83 65 f0 00          	andl   $0x0,-0x10(%ebp)
407c56:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
407c5a:	8d 45 f0             	lea    -0x10(%ebp),%eax
407c5d:	50                   	push   %eax
407c5e:	e8 00 ff ff ff       	call   0x407b63
407c63:	8b f8                	mov    %eax,%edi
407c65:	85 ff                	test   %edi,%edi
407c67:	75 18                	jne    0x407c81
407c69:	8b 45 f0             	mov    -0x10(%ebp),%eax
407c6c:	ff 75 08             	push   0x8(%ebp)
407c6f:	50                   	push   %eax
407c70:	8b 08                	mov    (%eax),%ecx
407c72:	8b 71 68             	mov    0x68(%ecx),%esi
407c75:	8b ce                	mov    %esi,%ecx
407c77:	ff 15 10 22 41 00    	call   *0x412210
407c7d:	ff d6                	call   *%esi
407c7f:	8b f8                	mov    %eax,%edi
407c81:	c7 45 fc 02 00 00 00 	movl   $0x2,-0x4(%ebp)
407c88:	8b 4d f0             	mov    -0x10(%ebp),%ecx
407c8b:	85 c9                	test   %ecx,%ecx
407c8d:	74 10                	je     0x407c9f
407c8f:	8b 11                	mov    (%ecx),%edx
407c91:	51                   	push   %ecx
407c92:	8b 72 08             	mov    0x8(%edx),%esi
407c95:	8b ce                	mov    %esi,%ecx
407c97:	ff 15 10 22 41 00    	call   *0x412210
407c9d:	ff d6                	call   *%esi
407c9f:	8b c7                	mov    %edi,%eax
407ca1:	e8 76 69 00 00       	call   0x40e61c
407ca6:	c2 04 00             	ret    $0x4
407ca9:	6a 2c                	push   $0x2c
407cab:	b8 82 ef 40 00       	mov    $0x40ef82,%eax
407cb0:	e8 cc 69 00 00       	call   0x40e681
407cb5:	8b f2                	mov    %edx,%esi
407cb7:	8b d9                	mov    %ecx,%ebx
407cb9:	8b 45 0c             	mov    0xc(%ebp),%eax
407cbc:	89 45 c8             	mov    %eax,-0x38(%ebp)
407cbf:	33 c0                	xor    %eax,%eax
407cc1:	89 45 cc             	mov    %eax,-0x34(%ebp)
407cc4:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
407ccb:	85 f6                	test   %esi,%esi
407ccd:	74 5d                	je     0x407d2c
407ccf:	66 39 06             	cmp    %ax,(%esi)
407cd2:	74 58                	je     0x407d2c
407cd4:	50                   	push   %eax
407cd5:	ff 15 0c 40 41 00    	call   *0x41400c
407cdb:	56                   	push   %esi
407cdc:	ff 15 08 40 41 00    	call   *0x414008
407ce2:	8b f0                	mov    %eax,%esi
407ce4:	89 75 d4             	mov    %esi,-0x2c(%ebp)
407ce7:	85 f6                	test   %esi,%esi
407ce9:	74 30                	je     0x407d1b
407ceb:	56                   	push   %esi
407cec:	ff 15 04 40 41 00    	call   *0x414004
407cf2:	85 c0                	test   %eax,%eax
407cf4:	74 25                	je     0x407d1b
407cf6:	8b 3b                	mov    (%ebx),%edi
407cf8:	8d 45 cc             	lea    -0x34(%ebp),%eax
407cfb:	50                   	push   %eax
407cfc:	56                   	push   %esi
407cfd:	53                   	push   %ebx
407cfe:	8b bf 90 00 00 00    	mov    0x90(%edi),%edi
407d04:	8b cf                	mov    %edi,%ecx
407d06:	ff 15 10 22 41 00    	call   *0x412210
407d0c:	ff d7                	call   *%edi
407d0e:	56                   	push   %esi
407d0f:	8b f8                	mov    %eax,%edi
407d11:	ff 15 0c 40 41 00    	call   *0x41400c
407d17:	33 db                	xor    %ebx,%ebx
407d19:	eb 1f                	jmp    0x407d3a
407d1b:	56                   	push   %esi
407d1c:	ff 15 0c 40 41 00    	call   *0x41400c
407d22:	bf 0e 00 07 80       	mov    $0x8007000e,%edi
407d27:	e9 0e 01 00 00       	jmp    0x407e3a
407d2c:	33 db                	xor    %ebx,%ebx
407d2e:	53                   	push   %ebx
407d2f:	ff 15 0c 40 41 00    	call   *0x41400c
407d35:	bf 57 00 07 80       	mov    $0x80070057,%edi
407d3a:	85 ff                	test   %edi,%edi
407d3c:	0f 85 f8 00 00 00    	jne    0x407e3a
407d42:	33 c0                	xor    %eax,%eax
407d44:	c7 45 ec 07 00 00 00 	movl   $0x7,-0x14(%ebp)
407d4b:	89 5d e8             	mov    %ebx,-0x18(%ebp)
407d4e:	66 89 45 d8          	mov    %ax,-0x28(%ebp)
407d52:	89 5d d0             	mov    %ebx,-0x30(%ebp)
407d55:	c6 45 fc 04          	movb   $0x4,-0x4(%ebp)
407d59:	eb 70                	jmp    0x407dcb
407d5b:	89 5d d4             	mov    %ebx,-0x2c(%ebp)
407d5e:	c6 45 fc 05          	movb   $0x5,-0x4(%ebp)
407d62:	8d 55 d4             	lea    -0x2c(%ebp),%edx
407d65:	8b 45 d0             	mov    -0x30(%ebp),%eax
407d68:	52                   	push   %edx
407d69:	50                   	push   %eax
407d6a:	8b 08                	mov    (%eax),%ecx
407d6c:	8b 71 68             	mov    0x68(%ecx),%esi
407d6f:	8b ce                	mov    %esi,%ecx
407d71:	ff 15 10 22 41 00    	call   *0x412210
407d77:	ff d6                	call   *%esi
407d79:	85 c0                	test   %eax,%eax
407d7b:	8b 45 d4             	mov    -0x2c(%ebp),%eax
407d7e:	75 40                	jne    0x407dc0
407d80:	85 c0                	test   %eax,%eax
407d82:	74 3c                	je     0x407dc0