407016:	8b 5d d4             	mov    -0x2c(%ebp),%ebx
407019:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40701c:	eb 03                	jmp    0x407021
40701e:	89 55 e4             	mov    %edx,-0x1c(%ebp)
407021:	80 78 0d 00          	cmpb   $0x0,0xd(%eax)
407025:	75 2d                	jne    0x407054
407027:	83 c0 10             	add    $0x10,%eax
40702a:	50                   	push   %eax
40702b:	56                   	push   %esi
40702c:	e8 2f 0d 00 00       	call   0x407d60
407031:	84 c0                	test   %al,%al
407033:	75 1f                	jne    0x407054
407035:	8b 45 08             	mov    0x8(%ebp),%eax
407038:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40703b:	5f                   	pop    %edi
40703c:	5e                   	pop    %esi
40703d:	89 08                	mov    %ecx,(%eax)
40703f:	c6 40 04 00          	movb   $0x0,0x4(%eax)
407043:	5b                   	pop    %ebx
407044:	8b 4d f4             	mov    -0xc(%ebp),%ecx
407047:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40704e:	8b e5                	mov    %ebp,%esp
407050:	5d                   	pop    %ebp
407051:	c2 08 00             	ret    $0x8
407054:	8b 45 e8             	mov    -0x18(%ebp),%eax
407057:	81 78 04 ff ff ff 03 	cmpl   $0x3ffffff,0x4(%eax)
40705e:	0f 84 ed 00 00 00    	je     0x407151
407064:	89 45 d0             	mov    %eax,-0x30(%ebp)
407067:	6a 40                	push   $0x40
407069:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
407070:	c7 45 d4 00 00 00 00 	movl   $0x0,-0x2c(%ebp)
407077:	e8 44 f9 ff ff       	call   0x4069c0
40707c:	8b c8                	mov    %eax,%ecx
40707e:	83 c4 04             	add    $0x4,%esp
407081:	33 c0                	xor    %eax,%eax
407083:	89 41 10             	mov    %eax,0x10(%ecx)
407086:	89 41 14             	mov    %eax,0x14(%ecx)
407089:	89 41 18             	mov    %eax,0x18(%ecx)
40708c:	89 41 1c             	mov    %eax,0x1c(%ecx)
40708f:	89 41 20             	mov    %eax,0x20(%ecx)
407092:	89 41 24             	mov    %eax,0x24(%ecx)
407095:	8b 06                	mov    (%esi),%eax
407097:	89 41 10             	mov    %eax,0x10(%ecx)
40709a:	8b 46 04             	mov    0x4(%esi),%eax
40709d:	89 41 14             	mov    %eax,0x14(%ecx)
4070a0:	8b 46 08             	mov    0x8(%esi),%eax
4070a3:	89 41 18             	mov    %eax,0x18(%ecx)
4070a6:	8b 46 0c             	mov    0xc(%esi),%eax
4070a9:	89 41 1c             	mov    %eax,0x1c(%ecx)
4070ac:	8b 46 10             	mov    0x10(%esi),%eax
4070af:	89 41 20             	mov    %eax,0x20(%ecx)
4070b2:	8b 46 14             	mov    0x14(%esi),%eax
4070b5:	89 41 24             	mov    %eax,0x24(%ecx)
4070b8:	8b 45 e4             	mov    -0x1c(%ebp),%eax
4070bb:	c7 46 14 07 00 00 00 	movl   $0x7,0x14(%esi)
4070c2:	51                   	push   %ecx
4070c3:	57                   	push   %edi
4070c4:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
4070ca:	33 c0                	xor    %eax,%eax
4070cc:	66 89 06             	mov    %ax,(%esi)
4070cf:	89 41 28             	mov    %eax,0x28(%ecx)
4070d2:	89 41 2c             	mov    %eax,0x2c(%ecx)
4070d5:	89 41 30             	mov    %eax,0x30(%ecx)
4070d8:	89 41 34             	mov    %eax,0x34(%ecx)
4070db:	89 41 38             	mov    %eax,0x38(%ecx)
4070de:	89 41 3c             	mov    %eax,0x3c(%ecx)
4070e1:	8b 46 18             	mov    0x18(%esi),%eax
4070e4:	89 41 28             	mov    %eax,0x28(%ecx)
4070e7:	8b 46 1c             	mov    0x1c(%esi),%eax
4070ea:	89 41 2c             	mov    %eax,0x2c(%ecx)
4070ed:	8b 46 20             	mov    0x20(%esi),%eax
4070f0:	89 41 30             	mov    %eax,0x30(%ecx)
4070f3:	8b 46 24             	mov    0x24(%esi),%eax
4070f6:	89 41 34             	mov    %eax,0x34(%ecx)
4070f9:	8b 46 28             	mov    0x28(%esi),%eax
4070fc:	89 41 38             	mov    %eax,0x38(%ecx)
4070ff:	8b 46 2c             	mov    0x2c(%esi),%eax
407102:	89 41 3c             	mov    %eax,0x3c(%ecx)
407105:	33 c0                	xor    %eax,%eax
407107:	66 89 46 18          	mov    %ax,0x18(%esi)
40710b:	8b 45 cc             	mov    -0x34(%ebp),%eax
40710e:	c7 46 28 00 00 00 00 	movl   $0x0,0x28(%esi)
407115:	c7 46 2c 07 00 00 00 	movl   $0x7,0x2c(%esi)
40711c:	89 01                	mov    %eax,(%ecx)
40711e:	89 41 04             	mov    %eax,0x4(%ecx)
407121:	89 41 08             	mov    %eax,0x8(%ecx)
407124:	66 c7 41 0c 00 00    	movw   $0x0,0xc(%ecx)
40712a:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40712d:	53                   	push   %ebx
40712e:	e8 fd 14 00 00       	call   0x408630
407133:	8b 4d 08             	mov    0x8(%ebp),%ecx
407136:	5f                   	pop    %edi
407137:	5e                   	pop    %esi
407138:	5b                   	pop    %ebx
407139:	89 01                	mov    %eax,(%ecx)
40713b:	8b c1                	mov    %ecx,%eax
40713d:	c6 41 04 01          	movb   $0x1,0x4(%ecx)
407141:	8b 4d f4             	mov    -0xc(%ebp),%ecx
407144:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40714b:	8b e5                	mov    %ebp,%esp
40714d:	5d                   	pop    %ebp
40714e:	c2 08 00             	ret    $0x8
407151:	e8 ea 16 00 00       	call   0x408840
407156:	cc                   	int3
407157:	cc                   	int3
407158:	cc                   	int3
407159:	cc                   	int3
40715a:	cc                   	int3
40715b:	cc                   	int3
40715c:	cc                   	int3
40715d:	cc                   	int3
40715e:	cc                   	int3
40715f:	cc                   	int3
407160:	55                   	push   %ebp
407161:	8b ec                	mov    %esp,%ebp
407163:	6a ff                	push   $0xffffffff
407165:	68 90 00 43 00       	push   $0x430090
40716a:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
407170:	50                   	push   %eax
407171:	64 89 25 00 00 00 00 	mov    %esp,%fs:0x0
407178:	83 ec 20             	sub    $0x20,%esp
40717b:	8b 45 08             	mov    0x8(%ebp),%eax
40717e:	53                   	push   %ebx
40717f:	56                   	push   %esi
407180:	8b f1                	mov    %ecx,%esi
407182:	57                   	push   %edi
407183:	89 65 f0             	mov    %esp,-0x10(%ebp)
407186:	89 75 d8             	mov    %esi,-0x28(%ebp)
407189:	8b 16                	mov    (%esi),%edx
40718b:	2b c2                	sub    %edx,%eax
40718d:	c1 f8 05             	sar    $0x5,%eax
407190:	89 45 e8             	mov    %eax,-0x18(%ebp)
407193:	8b 46 04             	mov    0x4(%esi),%eax
407196:	2b c2                	sub    %edx,%eax
407198:	c1 f8 05             	sar    $0x5,%eax
40719b:	3d ff ff ff 07       	cmp    $0x7ffffff,%eax
4071a0:	0f 84 ef 00 00 00    	je     0x407295
4071a6:	8b 4e 08             	mov    0x8(%esi),%ecx
4071a9:	8d 58 01             	lea    0x1(%eax),%ebx
4071ac:	2b ca                	sub    %edx,%ecx
4071ae:	89 5d dc             	mov    %ebx,-0x24(%ebp)
4071b1:	c1 f9 05             	sar    $0x5,%ecx
4071b4:	b8 ff ff ff 07       	mov    $0x7ffffff,%eax
4071b9:	8b d1                	mov    %ecx,%edx
4071bb:	d1 ea                	shr    $1,%edx
4071bd:	2b c2                	sub    %edx,%eax
4071bf:	3b c8                	cmp    %eax,%ecx
4071c1:	76 07                	jbe    0x4071ca
4071c3:	bf ff ff ff 07       	mov    $0x7ffffff,%edi
4071c8:	eb 08                	jmp    0x4071d2
4071ca:	8d 3c 0a             	lea    (%edx,%ecx,1),%edi
4071cd:	3b fb                	cmp    %ebx,%edi
4071cf:	0f 42 fb             	cmovb  %ebx,%edi
4071d2:	8d 45 e4             	lea    -0x1c(%ebp),%eax
4071d5:	89 7d e0             	mov    %edi,-0x20(%ebp)
4071d8:	50                   	push   %eax
4071d9:	56                   	push   %esi
4071da:	89 7d e4             	mov    %edi,-0x1c(%ebp)
4071dd:	e8 ee fa ff ff       	call   0x406cd0
4071e2:	8b d8                	mov    %eax,%ebx
4071e4:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
4071eb:	8b 45 e8             	mov    -0x18(%ebp),%eax
4071ee:	83 c4 08             	add    $0x8,%esp
4071f1:	c1 e0 05             	shl    $0x5,%eax
4071f4:	03 c3                	add    %ebx,%eax
4071f6:	89 5d d4             	mov    %ebx,-0x2c(%ebp)
4071f9:	89 45 e8             	mov    %eax,-0x18(%ebp)
4071fc:	ff 75 0c             	push   0xc(%ebp)
4071ff:	8d 48 20             	lea    0x20(%eax),%ecx
407202:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
407205:	89 4d ec             	mov    %ecx,-0x14(%ebp)
407208:	8b c8                	mov    %eax,%ecx
40720a:	e8 31 07 00 00       	call   0x407940
40720f:	8b 45 e8             	mov    -0x18(%ebp),%eax
407212:	8b 56 04             	mov    0x4(%esi),%edx
407215:	8b 0e                	mov    (%esi),%ecx
407217:	89 45 ec             	mov    %eax,-0x14(%ebp)
40721a:	8b 45 08             	mov    0x8(%ebp),%eax
40721d:	56                   	push   %esi
40721e:	53                   	push   %ebx
40721f:	3b c2                	cmp    %edx,%eax
407221:	75 09                	jne    0x40722c
407223:	52                   	push   %edx
407224:	51                   	push   %ecx
407225:	e8 c6 00 00 00       	call   0x4072f0
40722a:	eb 1c                	jmp    0x407248
40722c:	50                   	push   %eax
40722d:	51                   	push   %ecx
40722e:	e8 2d 01 00 00       	call   0x407360
407233:	83 c4 10             	add    $0x10,%esp
407236:	89 5d ec             	mov    %ebx,-0x14(%ebp)
407239:	56                   	push   %esi
40723a:	ff 75 e4             	push   -0x1c(%ebp)
40723d:	ff 76 04             	push   0x4(%esi)
407240:	ff 75 08             	push   0x8(%ebp)
407243:	e8 18 01 00 00       	call   0x407360
407248:	83 c4 10             	add    $0x10,%esp
40724b:	8b ce                	mov    %esi,%ecx
40724d:	57                   	push   %edi
40724e:	ff 75 dc             	push   -0x24(%ebp)
407251:	53                   	push   %ebx
407252:	e8 59 13 00 00       	call   0x4085b0
407257:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40725a:	8b 45 e8             	mov    -0x18(%ebp),%eax
40725d:	5f                   	pop    %edi
40725e:	5e                   	pop    %esi
40725f:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
407266:	5b                   	pop    %ebx
407267:	8b e5                	mov    %ebp,%esp
407269:	5d                   	pop    %ebp
40726a:	c2 08 00             	ret    $0x8
40726d:	8b 75 d8             	mov    -0x28(%ebp),%esi
407270:	56                   	push   %esi
407271:	ff 75 e4             	push   -0x1c(%ebp)
407274:	ff 75 ec             	push   -0x14(%ebp)
407277:	e8 a4 fc ff ff       	call   0x406f20
40727c:	83 c4 0c             	add    $0xc,%esp
40727f:	8b ce                	mov    %esi,%ecx
407281:	ff 75 e0             	push   -0x20(%ebp)
407284:	ff 75 d4             	push   -0x2c(%ebp)
407287:	e8 64 17 00 00       	call   0x4089f0
40728c:	6a 00                	push   $0x0
40728e:	6a 00                	push   $0x0
407290:	e8 78 45 00 00       	call   0x40b80d
407295:	e8 c6 15 00 00       	call   0x408860
40729a:	cc                   	int3
40729b:	cc                   	int3
40729c:	cc                   	int3
40729d:	cc                   	int3
40729e:	cc                   	int3
40729f:	cc                   	int3
4072a0:	55                   	push   %ebp
4072a1:	8b ec                	mov    %esp,%ebp
4072a3:	51                   	push   %ecx
4072a4:	56                   	push   %esi
4072a5:	8b 75 0c             	mov    0xc(%ebp),%esi
4072a8:	8b c1                	mov    %ecx,%eax
4072aa:	89 45 fc             	mov    %eax,-0x4(%ebp)
4072ad:	80 7e 0d 00          	cmpb   $0x0,0xd(%esi)
4072b1:	75 34                	jne    0x4072e7
4072b3:	53                   	push   %ebx
4072b4:	8b 5d 08             	mov    0x8(%ebp),%ebx
4072b7:	57                   	push   %edi
4072b8:	ff 76 08             	push   0x8(%esi)
4072bb:	8b c8                	mov    %eax,%ecx
4072bd:	53                   	push   %ebx
4072be:	e8 dd ff ff ff       	call   0x4072a0
4072c3:	8b fe                	mov    %esi,%edi
4072c5:	8b 36                	mov    (%esi),%esi
4072c7:	8d 47 10             	lea    0x10(%edi),%eax
4072ca:	50                   	push   %eax
4072cb:	53                   	push   %ebx
4072cc:	e8 8f 01 00 00       	call   0x407460
4072d1:	6a 40                	push   $0x40
4072d3:	57                   	push   %edi
4072d4:	e8 17 f7 ff ff       	call   0x4069f0
4072d9:	8b 45 fc             	mov    -0x4(%ebp),%eax
4072dc:	83 c4 10             	add    $0x10,%esp
4072df:	80 7e 0d 00          	cmpb   $0x0,0xd(%esi)
4072e3:	74 d3                	je     0x4072b8
4072e5:	5f                   	pop    %edi
4072e6:	5b                   	pop    %ebx
4072e7:	5e                   	pop    %esi
4072e8:	8b e5                	mov    %ebp,%esp
4072ea:	5d                   	pop    %ebp
4072eb:	c2 08 00             	ret    $0x8
4072ee:	cc                   	int3
4072ef:	cc                   	int3
4072f0:	55                   	push   %ebp
4072f1:	8b ec                	mov    %esp,%ebp
4072f3:	6a ff                	push   $0xffffffff
4072f5:	68 ad 00 43 00       	push   $0x4300ad
4072fa:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
407300:	50                   	push   %eax
407301:	64 89 25 00 00 00 00 	mov    %esp,%fs:0x0
407308:	83 ec 0c             	sub    $0xc,%esp
40730b:	8b 45 14             	mov    0x14(%ebp),%eax
40730e:	53                   	push   %ebx
40730f:	56                   	push   %esi
407310:	8b 75 08             	mov    0x8(%ebp),%esi
407313:	57                   	push   %edi
407314:	8b 7d 10             	mov    0x10(%ebp),%edi
407317:	89 7d e8             	mov    %edi,-0x18(%ebp)
40731a:	89 7d ec             	mov    %edi,-0x14(%ebp)
40731d:	89 45 f0             	mov    %eax,-0x10(%ebp)
407320:	8b 5d 0c             	mov    0xc(%ebp),%ebx
407323:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
40732a:	3b f3                	cmp    %ebx,%esi
40732c:	74 17                	je     0x407345
40732e:	8b ff                	mov    %edi,%edi
407330:	56                   	push   %esi
407331:	8b cf                	mov    %edi,%ecx
407333:	e8 08 06 00 00       	call   0x407940
407338:	83 c7 20             	add    $0x20,%edi
40733b:	83 c6 20             	add    $0x20,%esi
40733e:	89 7d ec             	mov    %edi,-0x14(%ebp)
407341:	3b f3                	cmp    %ebx,%esi
407343:	75 eb                	jne    0x407330
407345:	8b 4d f4             	mov    -0xc(%ebp),%ecx
407348:	8b c7                	mov    %edi,%eax
40734a:	5f                   	pop    %edi
40734b:	5e                   	pop    %esi
40734c:	5b                   	pop    %ebx
40734d:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
407354:	8b e5                	mov    %ebp,%esp
407356:	5d                   	pop    %ebp
407357:	c3                   	ret
407358:	cc                   	int3
407359:	cc                   	int3
40735a:	cc                   	int3
40735b:	cc                   	int3
40735c:	cc                   	int3
40735d:	cc                   	int3
40735e:	cc                   	int3
40735f:	cc                   	int3
407360:	55                   	push   %ebp
407361:	8b ec                	mov    %esp,%ebp
407363:	6a ff                	push   $0xffffffff
407365:	68 ad 00 43 00       	push   $0x4300ad
40736a:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
407370:	50                   	push   %eax
407371:	64 89 25 00 00 00 00 	mov    %esp,%fs:0x0
407378:	83 ec 0c             	sub    $0xc,%esp
40737b:	8b 45 14             	mov    0x14(%ebp),%eax
40737e:	53                   	push   %ebx
40737f:	56                   	push   %esi
407380:	57                   	push   %edi
407381:	8b 7d 10             	mov    0x10(%ebp),%edi
407384:	89 7d e8             	mov    %edi,-0x18(%ebp)
407387:	89 7d ec             	mov    %edi,-0x14(%ebp)
40738a:	89 45 f0             	mov    %eax,-0x10(%ebp)
40738d:	8b 75 08             	mov    0x8(%ebp),%esi
407390:	8b 5d 0c             	mov    0xc(%ebp),%ebx
407393:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
40739a:	3b f3                	cmp    %ebx,%esi
40739c:	0f 84 ab 00 00 00    	je     0x40744d
4073a2:	83 c6 04             	add    $0x4,%esi
4073a5:	eb 09                	jmp    0x4073b0
4073a7:	8d a4 24 00 00 00 00 	lea    0x0(%esp),%esp
4073ae:	8b ff                	mov    %edi,%edi
4073b0:	6a 40                	push   $0x40
4073b2:	c7 07 00 00 00 00    	movl   $0x0,(%edi)
4073b8:	c7 47 04 00 00 00 00 	movl   $0x0,0x4(%edi)
4073bf:	e8 fc f5 ff ff       	call   0x4069c0
4073c4:	8b c8                	mov    %eax,%ecx
4073c6:	8d 76 20             	lea    0x20(%esi),%esi
4073c9:	83 c4 04             	add    $0x4,%esp
4073cc:	89 09                	mov    %ecx,(%ecx)
4073ce:	89 49 04             	mov    %ecx,0x4(%ecx)
4073d1:	89 49 08             	mov    %ecx,0x8(%ecx)