408096:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40809c:	e8 af f5 ff ff       	call   0x407650
4080a1:	83 c4 14             	add    $0x14,%esp
4080a4:	8b c5                	mov    %ebp,%eax
4080a6:	5f                   	pop    %edi
4080a7:	5e                   	pop    %esi
4080a8:	5d                   	pop    %ebp
4080a9:	5b                   	pop    %ebx
4080aa:	c3                   	ret
4080ab:	8b 5c 24 14          	mov    0x14(%esp),%ebx
4080af:	3b dd                	cmp    %ebp,%ebx
4080b1:	74 f1                	je     0x4080a4
4080b3:	8b 46 0c             	mov    0xc(%esi),%eax
4080b6:	a8 01                	test   $0x1,%al
4080b8:	75 08                	jne    0x4080c2
4080ba:	84 c0                	test   %al,%al
4080bc:	79 e6                	jns    0x4080a4
4080be:	a8 02                	test   $0x2,%al
4080c0:	75 e2                	jne    0x4080a4
4080c2:	33 ff                	xor    %edi,%edi
4080c4:	39 7e 08             	cmp    %edi,0x8(%esi)
4080c7:	75 07                	jne    0x4080d0
4080c9:	56                   	push   %esi
4080ca:	e8 8e 6c 00 00       	call   0x40ed5d
4080cf:	59                   	pop    %ecx
4080d0:	8b 06                	mov    (%esi),%eax
4080d2:	3b 46 08             	cmp    0x8(%esi),%eax
4080d5:	75 08                	jne    0x4080df
4080d7:	39 7e 04             	cmp    %edi,0x4(%esi)
4080da:	75 c8                	jne    0x4080a4
4080dc:	40                   	inc    %eax
4080dd:	89 06                	mov    %eax,(%esi)
4080df:	ff 0e                	decl   (%esi)
4080e1:	f6 46 0c 40          	testb  $0x40,0xc(%esi)
4080e5:	8b 06                	mov    (%esi),%eax
4080e7:	74 09                	je     0x4080f2
4080e9:	38 18                	cmp    %bl,(%eax)
4080eb:	74 07                	je     0x4080f4
4080ed:	40                   	inc    %eax
4080ee:	89 06                	mov    %eax,(%esi)
4080f0:	eb b2                	jmp    0x4080a4
4080f2:	88 18                	mov    %bl,(%eax)
4080f4:	8b 46 0c             	mov    0xc(%esi),%eax
4080f7:	ff 46 04             	incl   0x4(%esi)
4080fa:	83 e0 ef             	and    $0xffffffef,%eax
4080fd:	83 c8 01             	or     $0x1,%eax
408100:	89 46 0c             	mov    %eax,0xc(%esi)
408103:	8b c3                	mov    %ebx,%eax
408105:	25 ff 00 00 00       	and    $0xff,%eax
40810a:	eb 9a                	jmp    0x4080a6
40810c:	6a 0c                	push   $0xc
40810e:	68 98 aa 41 00       	push   $0x41aa98
408113:	e8 30 55 00 00       	call   0x40d648
408118:	33 c0                	xor    %eax,%eax
40811a:	33 f6                	xor    %esi,%esi
40811c:	39 75 0c             	cmp    %esi,0xc(%ebp)
40811f:	0f 95 c0             	setne  %al
408122:	3b c6                	cmp    %esi,%eax
408124:	75 1d                	jne    0x408143
408126:	e8 cf 12 00 00       	call   0x4093fa
40812b:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
408131:	56                   	push   %esi
408132:	56                   	push   %esi
408133:	56                   	push   %esi
408134:	56                   	push   %esi
408135:	56                   	push   %esi
408136:	e8 15 f5 ff ff       	call   0x407650
40813b:	83 c4 14             	add    $0x14,%esp
40813e:	83 c8 ff             	or     $0xffffffff,%eax
408141:	eb 2b                	jmp    0x40816e
408143:	ff 75 0c             	push   0xc(%ebp)
408146:	e8 ba 07 00 00       	call   0x408905
40814b:	59                   	pop    %ecx
40814c:	89 75 fc             	mov    %esi,-0x4(%ebp)
40814f:	ff 75 0c             	push   0xc(%ebp)
408152:	ff 75 08             	push   0x8(%ebp)
408155:	e8 94 fe ff ff       	call   0x407fee
40815a:	59                   	pop    %ecx
40815b:	59                   	pop    %ecx
40815c:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40815f:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
408166:	e8 09 00 00 00       	call   0x408174
40816b:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40816e:	e8 1a 55 00 00       	call   0x40d68d
408173:	c3                   	ret
408174:	ff 75 0c             	push   0xc(%ebp)
408177:	e8 db 07 00 00       	call   0x408957
40817c:	59                   	pop    %ecx
40817d:	c3                   	ret
40817e:	6a 0c                	push   $0xc
408180:	68 b8 aa 41 00       	push   $0x41aab8
408185:	e8 be 54 00 00       	call   0x40d648
40818a:	33 db                	xor    %ebx,%ebx
40818c:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
40818f:	33 c0                	xor    %eax,%eax
408191:	8b 75 08             	mov    0x8(%ebp),%esi
408194:	3b f3                	cmp    %ebx,%esi
408196:	0f 95 c0             	setne  %al
408199:	3b c3                	cmp    %ebx,%eax
40819b:	75 20                	jne    0x4081bd
40819d:	e8 58 12 00 00       	call   0x4093fa
4081a2:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4081a8:	53                   	push   %ebx
4081a9:	53                   	push   %ebx
4081aa:	53                   	push   %ebx
4081ab:	53                   	push   %ebx
4081ac:	53                   	push   %ebx
4081ad:	e8 9e f4 ff ff       	call   0x407650
4081b2:	83 c4 14             	add    $0x14,%esp
4081b5:	83 c8 ff             	or     $0xffffffff,%eax
4081b8:	e9 e7 00 00 00       	jmp    0x4082a4
4081bd:	56                   	push   %esi
4081be:	e8 42 07 00 00       	call   0x408905
4081c3:	59                   	pop    %ecx
4081c4:	89 5d fc             	mov    %ebx,-0x4(%ebp)
4081c7:	f6 46 0c 40          	testb  $0x40,0xc(%esi)
4081cb:	0f 85 a6 00 00 00    	jne    0x408277
4081d1:	56                   	push   %esi
4081d2:	e8 6f 68 00 00       	call   0x40ea46
4081d7:	59                   	pop    %ecx
4081d8:	83 f8 ff             	cmp    $0xffffffff,%eax
4081db:	74 2e                	je     0x40820b
4081dd:	56                   	push   %esi
4081de:	e8 63 68 00 00       	call   0x40ea46
4081e3:	59                   	pop    %ecx
4081e4:	83 f8 fe             	cmp    $0xfffffffe,%eax
4081e7:	74 22                	je     0x40820b
4081e9:	56                   	push   %esi
4081ea:	e8 57 68 00 00       	call   0x40ea46
4081ef:	c1 f8 05             	sar    $0x5,%eax
4081f2:	8d 3c 85 c0 e4 41 00 	lea    0x41e4c0(,%eax,4),%edi
4081f9:	56                   	push   %esi
4081fa:	e8 47 68 00 00       	call   0x40ea46
4081ff:	59                   	pop    %ecx
408200:	59                   	pop    %ecx
408201:	83 e0 1f             	and    $0x1f,%eax
408204:	6b c0 28             	imul   $0x28,%eax,%eax
408207:	03 07                	add    (%edi),%eax
408209:	eb 05                	jmp    0x408210
40820b:	b8 f0 cb 41 00       	mov    $0x41cbf0,%eax
408210:	f6 40 24 7f          	testb  $0x7f,0x24(%eax)
408214:	75 45                	jne    0x40825b
408216:	56                   	push   %esi
408217:	e8 2a 68 00 00       	call   0x40ea46
40821c:	59                   	pop    %ecx
40821d:	83 f8 ff             	cmp    $0xffffffff,%eax
408220:	74 2e                	je     0x408250
408222:	56                   	push   %esi
408223:	e8 1e 68 00 00       	call   0x40ea46
408228:	59                   	pop    %ecx
408229:	83 f8 fe             	cmp    $0xfffffffe,%eax
40822c:	74 22                	je     0x408250
40822e:	56                   	push   %esi
40822f:	e8 12 68 00 00       	call   0x40ea46
408234:	c1 f8 05             	sar    $0x5,%eax
408237:	8d 3c 85 c0 e4 41 00 	lea    0x41e4c0(,%eax,4),%edi
40823e:	56                   	push   %esi
40823f:	e8 02 68 00 00       	call   0x40ea46
408244:	59                   	pop    %ecx
408245:	59                   	pop    %ecx
408246:	83 e0 1f             	and    $0x1f,%eax
408249:	6b c0 28             	imul   $0x28,%eax,%eax
40824c:	03 07                	add    (%edi),%eax
40824e:	eb 05                	jmp    0x408255
408250:	b8 f0 cb 41 00       	mov    $0x41cbf0,%eax
408255:	f6 40 24 80          	testb  $0x80,0x24(%eax)
408259:	74 1c                	je     0x408277
40825b:	e8 9a 11 00 00       	call   0x4093fa
408260:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
408266:	53                   	push   %ebx
408267:	53                   	push   %ebx
408268:	53                   	push   %ebx
408269:	53                   	push   %ebx
40826a:	53                   	push   %ebx
40826b:	e8 e0 f3 ff ff       	call   0x407650
408270:	83 c4 14             	add    $0x14,%esp
408273:	83 4d e4 ff          	orl    $0xffffffff,-0x1c(%ebp)
408277:	39 5d e4             	cmp    %ebx,-0x1c(%ebp)
40827a:	75 19                	jne    0x408295
40827c:	ff 4e 04             	decl   0x4(%esi)
40827f:	78 0a                	js     0x40828b
408281:	8b 0e                	mov    (%esi),%ecx
408283:	0f b6 01             	movzbl (%ecx),%eax
408286:	41                   	inc    %ecx
408287:	89 0e                	mov    %ecx,(%esi)
408289:	eb 07                	jmp    0x408292
40828b:	56                   	push   %esi
40828c:	e8 95 66 00 00       	call   0x40e926
408291:	59                   	pop    %ecx
408292:	89 45 e4             	mov    %eax,-0x1c(%ebp)
408295:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40829c:	e8 0c 00 00 00       	call   0x4082ad
4082a1:	8b 45 e4             	mov    -0x1c(%ebp),%eax
4082a4:	e8 e4 53 00 00       	call   0x40d68d
4082a9:	c3                   	ret
4082aa:	8b 75 08             	mov    0x8(%ebp),%esi
4082ad:	56                   	push   %esi
4082ae:	e8 a4 06 00 00       	call   0x408957
4082b3:	59                   	pop    %ecx
4082b4:	c3                   	ret
4082b5:	55                   	push   %ebp
4082b6:	8b ec                	mov    %esp,%ebp
4082b8:	51                   	push   %ecx
4082b9:	51                   	push   %ecx
4082ba:	8b 45 08             	mov    0x8(%ebp),%eax
4082bd:	89 45 08             	mov    %eax,0x8(%ebp)
4082c0:	8b 45 0c             	mov    0xc(%ebp),%eax
4082c3:	0f af 45 10          	imul   0x10(%ebp),%eax
4082c7:	85 c0                	test   %eax,%eax
4082c9:	53                   	push   %ebx
4082ca:	89 45 f8             	mov    %eax,-0x8(%ebp)
4082cd:	8b d8                	mov    %eax,%ebx
4082cf:	0f 84 f1 00 00 00    	je     0x4083c6
4082d5:	56                   	push   %esi
4082d6:	8b 75 14             	mov    0x14(%ebp),%esi
4082d9:	66 f7 46 0c 0c 01    	testw  $0x10c,0xc(%esi)
4082df:	74 08                	je     0x4082e9
4082e1:	8b 4e 18             	mov    0x18(%esi),%ecx
4082e4:	89 4d fc             	mov    %ecx,-0x4(%ebp)
4082e7:	eb 07                	jmp    0x4082f0
4082e9:	c7 45 fc 00 10 00 00 	movl   $0x1000,-0x4(%ebp)
4082f0:	57                   	push   %edi
4082f1:	eb 03                	jmp    0x4082f6
4082f3:	8b 45 f8             	mov    -0x8(%ebp),%eax
4082f6:	8b 4e 0c             	mov    0xc(%esi),%ecx
4082f9:	81 e1 08 01 00 00    	and    $0x108,%ecx
4082ff:	74 30                	je     0x408331
408301:	8b 7e 04             	mov    0x4(%esi),%edi
408304:	85 ff                	test   %edi,%edi
408306:	74 29                	je     0x408331
408308:	0f 8c bb 00 00 00    	jl     0x4083c9
40830e:	3b df                	cmp    %edi,%ebx
408310:	73 02                	jae    0x408314
408312:	8b fb                	mov    %ebx,%edi
408314:	57                   	push   %edi
408315:	ff 75 08             	push   0x8(%ebp)
408318:	ff 36                	push   (%esi)
40831a:	e8 b1 d8 ff ff       	call   0x405bd0
40831f:	29 7e 04             	sub    %edi,0x4(%esi)
408322:	01 3e                	add    %edi,(%esi)
408324:	83 c4 0c             	add    $0xc,%esp
408327:	2b df                	sub    %edi,%ebx
408329:	01 7d 08             	add    %edi,0x8(%ebp)
40832c:	e9 88 00 00 00       	jmp    0x4083b9
408331:	3b 5d fc             	cmp    -0x4(%ebp),%ebx
408334:	72 5a                	jb     0x408390
408336:	85 c9                	test   %ecx,%ecx
408338:	74 0b                	je     0x408345
40833a:	56                   	push   %esi
40833b:	e8 d6 f9 ff ff       	call   0x407d16
408340:	85 c0                	test   %eax,%eax
408342:	59                   	pop    %ecx
408343:	75 3f                	jne    0x408384
408345:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
408349:	8b fb                	mov    %ebx,%edi
40834b:	74 09                	je     0x408356
40834d:	33 d2                	xor    %edx,%edx
40834f:	8b c3                	mov    %ebx,%eax
408351:	f7 75 fc             	divl   -0x4(%ebp)
408354:	2b fa                	sub    %edx,%edi
408356:	57                   	push   %edi
408357:	ff 75 08             	push   0x8(%ebp)
40835a:	56                   	push   %esi
40835b:	e8 e6 66 00 00       	call   0x40ea46
408360:	59                   	pop    %ecx
408361:	50                   	push   %eax
408362:	e8 00 70 00 00       	call   0x40f367
408367:	83 c4 0c             	add    $0xc,%esp
40836a:	83 f8 ff             	cmp    $0xffffffff,%eax
40836d:	74 11                	je     0x408380
40836f:	3b c7                	cmp    %edi,%eax
408371:	8b cf                	mov    %edi,%ecx
408373:	77 02                	ja     0x408377
408375:	8b c8                	mov    %eax,%ecx
408377:	01 4d 08             	add    %ecx,0x8(%ebp)
40837a:	2b d9                	sub    %ecx,%ebx
40837c:	3b c7                	cmp    %edi,%eax
40837e:	73 39                	jae    0x4083b9
408380:	83 4e 0c 20          	orl    $0x20,0xc(%esi)
408384:	8b 45 f8             	mov    -0x8(%ebp),%eax
408387:	2b c3                	sub    %ebx,%eax
408389:	33 d2                	xor    %edx,%edx
40838b:	f7 75 0c             	divl   0xc(%ebp)
40838e:	eb 34                	jmp    0x4083c4
408390:	8b 45 08             	mov    0x8(%ebp),%eax
408393:	0f be 00             	movsbl (%eax),%eax
408396:	56                   	push   %esi
408397:	50                   	push   %eax
408398:	e8 c3 32 00 00       	call   0x40b660
40839d:	83 f8 ff             	cmp    $0xffffffff,%eax
4083a0:	59                   	pop    %ecx
4083a1:	59                   	pop    %ecx
4083a2:	74 e0                	je     0x408384
4083a4:	ff 45 08             	incl   0x8(%ebp)
4083a7:	8b 46 18             	mov    0x18(%esi),%eax
4083aa:	4b                   	dec    %ebx
4083ab:	85 c0                	test   %eax,%eax
4083ad:	89 45 fc             	mov    %eax,-0x4(%ebp)
4083b0:	7f 07                	jg     0x4083b9
4083b2:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
4083b9:	85 db                	test   %ebx,%ebx
4083bb:	0f 85 32 ff ff ff    	jne    0x4082f3
4083c1:	8b 45 10             	mov    0x10(%ebp),%eax
4083c4:	5f                   	pop    %edi
4083c5:	5e                   	pop    %esi
4083c6:	5b                   	pop    %ebx
4083c7:	c9                   	leave
4083c8:	c3                   	ret
4083c9:	83 4e 0c 20          	orl    $0x20,0xc(%esi)
4083cd:	eb b8                	jmp    0x408387
4083cf:	6a 0c                	push   $0xc
4083d1:	68 d8 aa 41 00       	push   $0x41aad8
4083d6:	e8 6d 52 00 00       	call   0x40d648
4083db:	8b 45 0c             	mov    0xc(%ebp),%eax
4083de:	0f af 45 10          	imul   0x10(%ebp),%eax
4083e2:	85 c0                	test   %eax,%eax
4083e4:	75 04                	jne    0x4083ea
4083e6:	33 c0                	xor    %eax,%eax
4083e8:	eb 62                	jmp    0x40844c
4083ea:	33 c0                	xor    %eax,%eax
4083ec:	33 f6                	xor    %esi,%esi
4083ee:	39 75 14             	cmp    %esi,0x14(%ebp)
4083f1:	0f 95 c0             	setne  %al
4083f4:	3b c6                	cmp    %esi,%eax
4083f6:	75 16                	jne    0x40840e
4083f8:	e8 fd 0f 00 00       	call   0x4093fa
4083fd:	89 30                	mov    %esi,(%eax)
4083ff:	56                   	push   %esi
408400:	56                   	push   %esi
408401:	56                   	push   %esi
408402:	56                   	push   %esi
408403:	56                   	push   %esi
408404:	e8 47 f2 ff ff       	call   0x407650
408409:	83 c4 14             	add    $0x14,%esp
40840c:	eb d8                	jmp    0x4083e6
40840e:	33 c0                	xor    %eax,%eax
408410:	39 75 08             	cmp    %esi,0x8(%ebp)
408413:	0f 95 c0             	setne  %al
408416:	3b c6                	cmp    %esi,%eax
408418:	74 de                	je     0x4083f8
40841a:	ff 75 14             	push   0x14(%ebp)
40841d:	e8 e3 04 00 00       	call   0x408905
408422:	59                   	pop    %ecx
408423:	89 75 fc             	mov    %esi,-0x4(%ebp)
408426:	ff 75 14             	push   0x14(%ebp)
408429:	ff 75 10             	push   0x10(%ebp)
40842c:	ff 75 0c             	push   0xc(%ebp)
40842f:	ff 75 08             	push   0x8(%ebp)
408432:	e8 7e fe ff ff       	call   0x4082b5
408437:	83 c4 10             	add    $0x10,%esp