406f29:	8b ec                	mov    %esp,%ebp
406f2b:	5d                   	pop    %ebp
406f2c:	e9 f8 f7 ff ff       	jmp    0x406729
406f31:	8b ff                	mov    %edi,%edi
406f33:	55                   	push   %ebp
406f34:	8b ec                	mov    %esp,%ebp
406f36:	83 ec 14             	sub    $0x14,%esp
406f39:	56                   	push   %esi
406f3a:	8b 75 08             	mov    0x8(%ebp),%esi
406f3d:	85 f6                	test   %esi,%esi
406f3f:	75 13                	jne    0x406f54
406f41:	e8 c1 0d 00 00       	call   0x407d07
406f46:	6a 16                	push   $0x16
406f48:	5e                   	pop    %esi
406f49:	89 30                	mov    %esi,(%eax)
406f4b:	e8 de 0c 00 00       	call   0x407c2e
406f50:	8b c6                	mov    %esi,%eax
406f52:	eb 53                	jmp    0x406fa7
406f54:	57                   	push   %edi
406f55:	6a 09                	push   $0x9
406f57:	83 c8 ff             	or     $0xffffffff,%eax
406f5a:	8b fe                	mov    %esi,%edi
406f5c:	59                   	pop    %ecx
406f5d:	f3 ab                	rep stos %eax,%es:(%edi)
406f5f:	8b 7d 0c             	mov    0xc(%ebp),%edi
406f62:	85 ff                	test   %edi,%edi
406f64:	75 13                	jne    0x406f79
406f66:	e8 9c 0d 00 00       	call   0x407d07
406f6b:	6a 16                	push   $0x16
406f6d:	5e                   	pop    %esi
406f6e:	89 30                	mov    %esi,(%eax)
406f70:	e8 b9 0c 00 00       	call   0x407c2e
406f75:	8b c6                	mov    %esi,%eax
406f77:	eb 2d                	jmp    0x406fa6
406f79:	53                   	push   %ebx
406f7a:	33 db                	xor    %ebx,%ebx
406f7c:	39 5f 04             	cmp    %ebx,0x4(%edi)
406f7f:	7f 06                	jg     0x406f87
406f81:	7c 16                	jl     0x406f99
406f83:	39 1f                	cmp    %ebx,(%edi)
406f85:	72 12                	jb     0x406f99
406f87:	6a 07                	push   $0x7
406f89:	58                   	pop    %eax
406f8a:	39 47 04             	cmp    %eax,0x4(%edi)
406f8d:	7c 1d                	jl     0x406fac
406f8f:	7f 08                	jg     0x406f99
406f91:	81 3f ff 6f 40 93    	cmpl   $0x93406fff,(%edi)
406f97:	76 13                	jbe    0x406fac
406f99:	e8 69 0d 00 00       	call   0x407d07
406f9e:	6a 16                	push   $0x16
406fa0:	5e                   	pop    %esi
406fa1:	89 30                	mov    %esi,(%eax)
406fa3:	8b c6                	mov    %esi,%eax
406fa5:	5b                   	pop    %ebx
406fa6:	5f                   	pop    %edi
406fa7:	5e                   	pop    %esi
406fa8:	8b e5                	mov    %ebp,%esp
406faa:	5d                   	pop    %ebp
406fab:	c3                   	ret
406fac:	e8 b3 63 00 00       	call   0x40d364
406fb1:	8d 45 f8             	lea    -0x8(%ebp),%eax
406fb4:	89 5d f8             	mov    %ebx,-0x8(%ebp)
406fb7:	50                   	push   %eax
406fb8:	89 5d f4             	mov    %ebx,-0xc(%ebp)
406fbb:	89 5d fc             	mov    %ebx,-0x4(%ebp)
406fbe:	e8 da 59 00 00       	call   0x40c99d
406fc3:	59                   	pop    %ecx
406fc4:	85 c0                	test   %eax,%eax
406fc6:	0f 85 e4 01 00 00    	jne    0x4071b0
406fcc:	8d 45 f4             	lea    -0xc(%ebp),%eax
406fcf:	50                   	push   %eax
406fd0:	e8 f4 59 00 00       	call   0x40c9c9
406fd5:	59                   	pop    %ecx
406fd6:	85 c0                	test   %eax,%eax
406fd8:	0f 85 d2 01 00 00    	jne    0x4071b0
406fde:	8d 45 fc             	lea    -0x4(%ebp),%eax
406fe1:	50                   	push   %eax
406fe2:	e8 0e 5a 00 00       	call   0x40c9f5
406fe7:	59                   	pop    %ecx
406fe8:	85 c0                	test   %eax,%eax
406fea:	0f 85 c0 01 00 00    	jne    0x4071b0
406ff0:	8b 5f 04             	mov    0x4(%edi),%ebx
406ff3:	8b 0f                	mov    (%edi),%ecx
406ff5:	85 db                	test   %ebx,%ebx
406ff7:	7c 7f                	jl     0x407078
406ff9:	7f 08                	jg     0x407003
406ffb:	81 f9 80 f4 03 00    	cmp    $0x3f480,%ecx
407001:	76 75                	jbe    0x407078
407003:	6a 07                	push   $0x7
407005:	58                   	pop    %eax
407006:	3b d8                	cmp    %eax,%ebx
407008:	7f 6e                	jg     0x407078
40700a:	7c 08                	jl     0x407014
40700c:	81 f9 7f 7b 3c 93    	cmp    $0x933c7b7f,%ecx
407012:	73 64                	jae    0x407078
407014:	8b 45 fc             	mov    -0x4(%ebp),%eax
407017:	99                   	cltd
407018:	2b c8                	sub    %eax,%ecx
40701a:	8d 45 ec             	lea    -0x14(%ebp),%eax
40701d:	50                   	push   %eax
40701e:	1b da                	sbb    %edx,%ebx
407020:	89 4d ec             	mov    %ecx,-0x14(%ebp)
407023:	56                   	push   %esi
407024:	89 5d f0             	mov    %ebx,-0x10(%ebp)
407027:	e8 e6 5b 00 00       	call   0x40cc12
40702c:	59                   	pop    %ecx
40702d:	59                   	pop    %ecx
40702e:	85 c0                	test   %eax,%eax
407030:	0f 85 6f ff ff ff    	jne    0x406fa5
407036:	39 45 f8             	cmp    %eax,-0x8(%ebp)
407039:	0f 84 2a 01 00 00    	je     0x407169
40703f:	56                   	push   %esi
407040:	e8 70 63 00 00       	call   0x40d3b5
407045:	59                   	pop    %ecx
407046:	85 c0                	test   %eax,%eax
407048:	0f 84 1b 01 00 00    	je     0x407169
40704e:	8b 45 f4             	mov    -0xc(%ebp),%eax
407051:	99                   	cltd
407052:	29 45 ec             	sub    %eax,-0x14(%ebp)
407055:	8d 45 ec             	lea    -0x14(%ebp),%eax
407058:	50                   	push   %eax
407059:	19 55 f0             	sbb    %edx,-0x10(%ebp)
40705c:	56                   	push   %esi
40705d:	e8 b0 5b 00 00       	call   0x40cc12
407062:	59                   	pop    %ecx
407063:	59                   	pop    %ecx
407064:	85 c0                	test   %eax,%eax
407066:	0f 85 39 ff ff ff    	jne    0x406fa5
40706c:	c7 46 20 01 00 00 00 	movl   $0x1,0x20(%esi)
407073:	e9 f1 00 00 00       	jmp    0x407169
407078:	57                   	push   %edi
407079:	56                   	push   %esi
40707a:	e8 93 5b 00 00       	call   0x40cc12
40707f:	59                   	pop    %ecx
407080:	59                   	pop    %ecx
407081:	85 c0                	test   %eax,%eax
407083:	0f 85 1c ff ff ff    	jne    0x406fa5
407089:	83 7d f8 00          	cmpl   $0x0,-0x8(%ebp)
40708d:	8b 06                	mov    (%esi),%eax
40708f:	99                   	cltd
407090:	8b f8                	mov    %eax,%edi
407092:	8b da                	mov    %edx,%ebx
407094:	74 1a                	je     0x4070b0
407096:	56                   	push   %esi
407097:	e8 19 63 00 00       	call   0x40d3b5
40709c:	59                   	pop    %ecx
40709d:	85 c0                	test   %eax,%eax
40709f:	74 0f                	je     0x4070b0
4070a1:	8b 45 fc             	mov    -0x4(%ebp),%eax
4070a4:	03 45 f4             	add    -0xc(%ebp),%eax
4070a7:	c7 46 20 01 00 00 00 	movl   $0x1,0x20(%esi)
4070ae:	eb 03                	jmp    0x4070b3
4070b0:	8b 45 fc             	mov    -0x4(%ebp),%eax
4070b3:	99                   	cltd
4070b4:	2b f8                	sub    %eax,%edi
4070b6:	6a 00                	push   $0x0
4070b8:	6a 3c                	push   $0x3c
4070ba:	1b da                	sbb    %edx,%ebx
4070bc:	53                   	push   %ebx
4070bd:	57                   	push   %edi
4070be:	e8 7d 10 01 00       	call   0x418140
4070c3:	89 06                	mov    %eax,(%esi)
4070c5:	85 c0                	test   %eax,%eax
4070c7:	79 0b                	jns    0x4070d4
4070c9:	83 c0 3c             	add    $0x3c,%eax
4070cc:	83 c7 c4             	add    $0xffffffc4,%edi
4070cf:	89 06                	mov    %eax,(%esi)
4070d1:	83 d3 ff             	adc    $0xffffffff,%ebx
4070d4:	6a 00                	push   $0x0
4070d6:	6a 3c                	push   $0x3c
4070d8:	53                   	push   %ebx
4070d9:	57                   	push   %edi
4070da:	e8 b1 0f 01 00       	call   0x418090
4070df:	8b f8                	mov    %eax,%edi
4070e1:	8b da                	mov    %edx,%ebx
4070e3:	8b 46 04             	mov    0x4(%esi),%eax
4070e6:	99                   	cltd
4070e7:	03 f8                	add    %eax,%edi
4070e9:	6a 00                	push   $0x0
4070eb:	6a 3c                	push   $0x3c
4070ed:	13 da                	adc    %edx,%ebx
4070ef:	53                   	push   %ebx
4070f0:	57                   	push   %edi
4070f1:	e8 4a 10 01 00       	call   0x418140
4070f6:	89 46 04             	mov    %eax,0x4(%esi)
4070f9:	85 c0                	test   %eax,%eax
4070fb:	79 0c                	jns    0x407109
4070fd:	83 c0 3c             	add    $0x3c,%eax
407100:	83 c7 c4             	add    $0xffffffc4,%edi
407103:	89 46 04             	mov    %eax,0x4(%esi)
407106:	83 d3 ff             	adc    $0xffffffff,%ebx
407109:	6a 00                	push   $0x0
40710b:	6a 3c                	push   $0x3c
40710d:	53                   	push   %ebx
40710e:	57                   	push   %edi
40710f:	e8 7c 0f 01 00       	call   0x418090
407114:	8b f8                	mov    %eax,%edi
407116:	8b da                	mov    %edx,%ebx
407118:	8b 46 08             	mov    0x8(%esi),%eax
40711b:	99                   	cltd
40711c:	03 f8                	add    %eax,%edi
40711e:	6a 00                	push   $0x0
407120:	6a 18                	push   $0x18
407122:	13 da                	adc    %edx,%ebx
407124:	53                   	push   %ebx
407125:	57                   	push   %edi
407126:	e8 15 10 01 00       	call   0x418140
40712b:	89 46 08             	mov    %eax,0x8(%esi)
40712e:	85 c0                	test   %eax,%eax
407130:	79 0c                	jns    0x40713e
407132:	83 c0 18             	add    $0x18,%eax
407135:	83 c7 e8             	add    $0xffffffe8,%edi
407138:	89 46 08             	mov    %eax,0x8(%esi)
40713b:	83 d3 ff             	adc    $0xffffffff,%ebx
40713e:	6a 00                	push   $0x0
407140:	6a 18                	push   $0x18
407142:	53                   	push   %ebx
407143:	57                   	push   %edi
407144:	e8 47 0f 01 00       	call   0x418090
407149:	8b c8                	mov    %eax,%ecx
40714b:	85 d2                	test   %edx,%edx
40714d:	7c 2b                	jl     0x40717a
40714f:	7f 04                	jg     0x407155
407151:	85 c9                	test   %ecx,%ecx
407153:	74 1b                	je     0x407170
407155:	8b 46 18             	mov    0x18(%esi),%eax
407158:	03 c1                	add    %ecx,%eax
40715a:	6a 07                	push   $0x7
40715c:	99                   	cltd
40715d:	5f                   	pop    %edi
40715e:	f7 ff                	idiv   %edi
407160:	01 4e 0c             	add    %ecx,0xc(%esi)
407163:	89 56 18             	mov    %edx,0x18(%esi)
407166:	01 4e 1c             	add    %ecx,0x1c(%esi)
407169:	33 c0                	xor    %eax,%eax
40716b:	e9 35 fe ff ff       	jmp    0x406fa5
407170:	85 d2                	test   %edx,%edx
407172:	7f f5                	jg     0x407169
407174:	7c 04                	jl     0x40717a
407176:	85 c9                	test   %ecx,%ecx
407178:	73 ef                	jae    0x407169
40717a:	8b 46 18             	mov    0x18(%esi),%eax
40717d:	83 c0 07             	add    $0x7,%eax
407180:	01 4e 0c             	add    %ecx,0xc(%esi)
407183:	03 c1                	add    %ecx,%eax
407185:	6a 07                	push   $0x7
407187:	99                   	cltd
407188:	5f                   	pop    %edi
407189:	f7 ff                	idiv   %edi
40718b:	8b 46 0c             	mov    0xc(%esi),%eax
40718e:	89 56 18             	mov    %edx,0x18(%esi)
407191:	85 c0                	test   %eax,%eax
407193:	7f d1                	jg     0x407166
407195:	83 c0 1f             	add    $0x1f,%eax
407198:	c7 46 10 0b 00 00 00 	movl   $0xb,0x10(%esi)
40719f:	89 46 0c             	mov    %eax,0xc(%esi)
4071a2:	8d 81 6d 01 00 00    	lea    0x16d(%ecx),%eax
4071a8:	01 46 1c             	add    %eax,0x1c(%esi)
4071ab:	ff 4e 14             	decl   0x14(%esi)
4071ae:	eb b9                	jmp    0x407169
4071b0:	53                   	push   %ebx
4071b1:	53                   	push   %ebx
4071b2:	53                   	push   %ebx
4071b3:	53                   	push   %ebx
4071b4:	53                   	push   %ebx
4071b5:	e8 a1 0a 00 00       	call   0x407c5b
4071ba:	cc                   	int3
4071bb:	8b ff                	mov    %edi,%edi
4071bd:	55                   	push   %ebp
4071be:	8b ec                	mov    %esp,%ebp
4071c0:	5d                   	pop    %ebp
4071c1:	e9 6b fd ff ff       	jmp    0x406f31
4071c6:	6a 10                	push   $0x10
4071c8:	68 58 1b 42 00       	push   $0x421b58
4071cd:	e8 7e c9 ff ff       	call   0x403b50
4071d2:	33 c0                	xor    %eax,%eax
4071d4:	8b 75 08             	mov    0x8(%ebp),%esi
4071d7:	85 f6                	test   %esi,%esi
4071d9:	0f 95 c0             	setne  %al
4071dc:	85 c0                	test   %eax,%eax
4071de:	75 14                	jne    0x4071f4
4071e0:	e8 22 0b 00 00       	call   0x407d07
4071e5:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4071eb:	e8 3e 0a 00 00       	call   0x407c2e
4071f0:	33 c0                	xor    %eax,%eax
4071f2:	eb 73                	jmp    0x407267
4071f4:	33 c0                	xor    %eax,%eax
4071f6:	8b 7d 0c             	mov    0xc(%ebp),%edi
4071f9:	85 ff                	test   %edi,%edi
4071fb:	0f 95 c0             	setne  %al
4071fe:	85 c0                	test   %eax,%eax
407200:	74 de                	je     0x4071e0
407202:	33 c0                	xor    %eax,%eax
407204:	33 db                	xor    %ebx,%ebx
407206:	66 39 1f             	cmp    %bx,(%edi)
407209:	0f 95 c0             	setne  %al
40720c:	85 c0                	test   %eax,%eax
40720e:	74 d0                	je     0x4071e0
407210:	66 39 1e             	cmp    %bx,(%esi)
407213:	75 0d                	jne    0x407222
407215:	e8 ed 0a 00 00       	call   0x407d07
40721a:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
407220:	eb ce                	jmp    0x4071f0
407222:	8d 45 e4             	lea    -0x1c(%ebp),%eax
407225:	50                   	push   %eax
407226:	e8 d4 61 00 00       	call   0x40d3ff
40722b:	59                   	pop    %ecx
40722c:	39 5d e4             	cmp    %ebx,-0x1c(%ebp)
40722f:	75 0d                	jne    0x40723e
407231:	e8 d1 0a 00 00       	call   0x407d07
407236:	c7 00 18 00 00 00    	movl   $0x18,(%eax)
40723c:	eb b2                	jmp    0x4071f0
40723e:	89 5d e0             	mov    %ebx,-0x20(%ebp)
407241:	89 5d fc             	mov    %ebx,-0x4(%ebp)
407244:	ff 75 e4             	push   -0x1c(%ebp)
407247:	ff 75 10             	push   0x10(%ebp)
40724a:	57                   	push   %edi
40724b:	56                   	push   %esi
40724c:	e8 c7 66 00 00       	call   0x40d918
407251:	83 c4 10             	add    $0x10,%esp
407254:	8b f0                	mov    %eax,%esi
407256:	89 75 e0             	mov    %esi,-0x20(%ebp)
407259:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
407260:	e8 0b 00 00 00       	call   0x407270
407265:	8b c6                	mov    %esi,%eax
407267:	e8 2a c9 ff ff       	call   0x403b96
40726c:	c3                   	ret
40726d:	8b 75 e0             	mov    -0x20(%ebp),%esi
407270:	85 f6                	test   %esi,%esi
407272:	75 09                	jne    0x40727d
407274:	ff 75 e4             	push   -0x1c(%ebp)
407277:	e8 e2 61 00 00       	call   0x40d45e
40727c:	59                   	pop    %ecx
40727d:	ff 75 e4             	push   -0x1c(%ebp)
407280:	e8 b9 44 00 00       	call   0x40b73e
407285:	59                   	pop    %ecx
407286:	c3                   	ret
407287:	8b ff                	mov    %edi,%edi
407289:	55                   	push   %ebp
40728a:	8b ec                	mov    %esp,%ebp
40728c:	56                   	push   %esi
40728d:	8b 75 08             	mov    0x8(%ebp),%esi
407290:	85 f6                	test   %esi,%esi
407292:	75 11                	jne    0x4072a5
407294:	e8 6e 0a 00 00       	call   0x407d07
407299:	6a 16                	push   $0x16
40729b:	5e                   	pop    %esi
40729c:	89 30                	mov    %esi,(%eax)
40729e:	e8 8b 09 00 00       	call   0x407c2e
4072a3:	eb 24                	jmp    0x4072c9