40616a:	85 c0                	test   %eax,%eax
40616c:	74 05                	je     0x406173
40616e:	ff 75 08             	push   0x8(%ebp)
406171:	ff d0                	call   *%eax
406173:	5d                   	pop    %ebp
406174:	c3                   	ret
406175:	8b ff                	mov    %edi,%edi
406177:	55                   	push   %ebp
406178:	8b ec                	mov    %esp,%ebp
40617a:	ff 75 08             	push   0x8(%ebp)
40617d:	e8 c8 ff ff ff       	call   0x40614a
406182:	59                   	pop    %ecx
406183:	ff 75 08             	push   0x8(%ebp)
406186:	ff 15 00 f0 40 00    	call   *0x40f000
40618c:	cc                   	int3
40618d:	6a 08                	push   $0x8
40618f:	e8 05 0c 00 00       	call   0x406d99
406194:	59                   	pop    %ecx
406195:	c3                   	ret
406196:	6a 08                	push   $0x8
406198:	e8 23 0b 00 00       	call   0x406cc0
40619d:	59                   	pop    %ecx
40619e:	c3                   	ret
40619f:	8b ff                	mov    %edi,%edi
4061a1:	56                   	push   %esi
4061a2:	e8 8f fa ff ff       	call   0x405c36
4061a7:	8b f0                	mov    %eax,%esi
4061a9:	56                   	push   %esi
4061aa:	e8 94 04 00 00       	call   0x406643
4061af:	56                   	push   %esi
4061b0:	e8 21 c9 ff ff       	call   0x402ad6
4061b5:	56                   	push   %esi
4061b6:	e8 d3 5b 00 00       	call   0x40bd8e
4061bb:	56                   	push   %esi
4061bc:	e8 be 5b 00 00       	call   0x40bd7f
4061c1:	56                   	push   %esi
4061c2:	e8 b3 59 00 00       	call   0x40bb7a
4061c7:	56                   	push   %esi
4061c8:	e8 9c 59 00 00       	call   0x40bb69
4061cd:	83 c4 18             	add    $0x18,%esp
4061d0:	5e                   	pop    %esi
4061d1:	c3                   	ret
4061d2:	8b ff                	mov    %edi,%edi
4061d4:	55                   	push   %ebp
4061d5:	8b ec                	mov    %esp,%ebp
4061d7:	56                   	push   %esi
4061d8:	8b 75 08             	mov    0x8(%ebp),%esi
4061db:	33 c0                	xor    %eax,%eax
4061dd:	eb 0f                	jmp    0x4061ee
4061df:	85 c0                	test   %eax,%eax
4061e1:	75 10                	jne    0x4061f3
4061e3:	8b 0e                	mov    (%esi),%ecx
4061e5:	85 c9                	test   %ecx,%ecx
4061e7:	74 02                	je     0x4061eb
4061e9:	ff d1                	call   *%ecx
4061eb:	83 c6 04             	add    $0x4,%esi
4061ee:	3b 75 0c             	cmp    0xc(%ebp),%esi
4061f1:	72 ec                	jb     0x4061df
4061f3:	5e                   	pop    %esi
4061f4:	5d                   	pop    %ebp
4061f5:	c3                   	ret
4061f6:	8b ff                	mov    %edi,%edi
4061f8:	55                   	push   %ebp
4061f9:	8b ec                	mov    %esp,%ebp
4061fb:	83 3d 30 47 41 00 00 	cmpl   $0x0,0x414730
406202:	74 19                	je     0x40621d
406204:	68 30 47 41 00       	push   $0x414730
406209:	e8 42 45 00 00       	call   0x40a750
40620e:	59                   	pop    %ecx
40620f:	85 c0                	test   %eax,%eax
406211:	74 0a                	je     0x40621d
406213:	ff 75 08             	push   0x8(%ebp)
406216:	ff 15 30 47 41 00    	call   *0x414730
40621c:	59                   	pop    %ecx
40621d:	e8 02 49 00 00       	call   0x40ab24
406222:	68 7c f1 40 00       	push   $0x40f17c
406227:	68 64 f1 40 00       	push   $0x40f164
40622c:	e8 a1 ff ff ff       	call   0x4061d2
406231:	59                   	pop    %ecx
406232:	59                   	pop    %ecx
406233:	85 c0                	test   %eax,%eax
406235:	75 54                	jne    0x40628b
406237:	56                   	push   %esi
406238:	57                   	push   %edi
406239:	68 a5 9d 40 00       	push   $0x409da5
40623e:	e8 7d 5c 00 00       	call   0x40bec0
406243:	b8 5c f1 40 00       	mov    $0x40f15c,%eax
406248:	be 60 f1 40 00       	mov    $0x40f160,%esi
40624d:	59                   	pop    %ecx
40624e:	8b f8                	mov    %eax,%edi
406250:	3b c6                	cmp    %esi,%eax
406252:	73 0f                	jae    0x406263
406254:	8b 07                	mov    (%edi),%eax
406256:	85 c0                	test   %eax,%eax
406258:	74 02                	je     0x40625c
40625a:	ff d0                	call   *%eax
40625c:	83 c7 04             	add    $0x4,%edi
40625f:	3b fe                	cmp    %esi,%edi
406261:	72 f1                	jb     0x406254
406263:	83 3d 34 47 41 00 00 	cmpl   $0x0,0x414734
40626a:	5f                   	pop    %edi
40626b:	5e                   	pop    %esi
40626c:	74 1b                	je     0x406289
40626e:	68 34 47 41 00       	push   $0x414734
406273:	e8 d8 44 00 00       	call   0x40a750
406278:	59                   	pop    %ecx
406279:	85 c0                	test   %eax,%eax
40627b:	74 0c                	je     0x406289
40627d:	6a 00                	push   $0x0
40627f:	6a 02                	push   $0x2
406281:	6a 00                	push   $0x0
406283:	ff 15 34 47 41 00    	call   *0x414734
406289:	33 c0                	xor    %eax,%eax
40628b:	5d                   	pop    %ebp
40628c:	c3                   	ret
40628d:	6a 20                	push   $0x20
40628f:	68 a8 12 41 00       	push   $0x4112a8
406294:	e8 d7 de ff ff       	call   0x404170
406299:	6a 08                	push   $0x8
40629b:	e8 f9 0a 00 00       	call   0x406d99
4062a0:	59                   	pop    %ecx
4062a1:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
4062a5:	33 c0                	xor    %eax,%eax
4062a7:	40                   	inc    %eax
4062a8:	39 05 88 32 41 00    	cmp    %eax,0x413288
4062ae:	0f 84 d8 00 00 00    	je     0x40638c
4062b4:	a3 84 32 41 00       	mov    %eax,0x413284
4062b9:	8a 45 10             	mov    0x10(%ebp),%al
4062bc:	a2 80 32 41 00       	mov    %al,0x413280
4062c1:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
4062c5:	0f 85 a0 00 00 00    	jne    0x40636b
4062cb:	ff 35 28 47 41 00    	push   0x414728
4062d1:	8b 35 90 f0 40 00    	mov    0x40f090,%esi
4062d7:	ff d6                	call   *%esi
4062d9:	8b d8                	mov    %eax,%ebx
4062db:	89 5d d0             	mov    %ebx,-0x30(%ebp)
4062de:	85 db                	test   %ebx,%ebx
4062e0:	74 68                	je     0x40634a
4062e2:	ff 35 24 47 41 00    	push   0x414724
4062e8:	ff d6                	call   *%esi
4062ea:	8b f8                	mov    %eax,%edi
4062ec:	89 7d d4             	mov    %edi,-0x2c(%ebp)
4062ef:	89 5d dc             	mov    %ebx,-0x24(%ebp)
4062f2:	89 7d d8             	mov    %edi,-0x28(%ebp)
4062f5:	83 ef 04             	sub    $0x4,%edi
4062f8:	89 7d d4             	mov    %edi,-0x2c(%ebp)
4062fb:	3b fb                	cmp    %ebx,%edi
4062fd:	72 4b                	jb     0x40634a
4062ff:	e8 32 f9 ff ff       	call   0x405c36
406304:	39 07                	cmp    %eax,(%edi)
406306:	74 ed                	je     0x4062f5
406308:	3b fb                	cmp    %ebx,%edi
40630a:	72 3e                	jb     0x40634a
40630c:	ff 37                	push   (%edi)
40630e:	ff d6                	call   *%esi
406310:	8b d8                	mov    %eax,%ebx
406312:	e8 1f f9 ff ff       	call   0x405c36
406317:	89 07                	mov    %eax,(%edi)
406319:	ff d3                	call   *%ebx
40631b:	ff 35 28 47 41 00    	push   0x414728
406321:	ff d6                	call   *%esi
406323:	8b d8                	mov    %eax,%ebx
406325:	ff 35 24 47 41 00    	push   0x414724
40632b:	ff d6                	call   *%esi
40632d:	39 5d dc             	cmp    %ebx,-0x24(%ebp)
406330:	75 05                	jne    0x406337
406332:	39 45 d8             	cmp    %eax,-0x28(%ebp)
406335:	74 0e                	je     0x406345
406337:	89 5d dc             	mov    %ebx,-0x24(%ebp)
40633a:	89 5d d0             	mov    %ebx,-0x30(%ebp)
40633d:	89 45 d8             	mov    %eax,-0x28(%ebp)
406340:	8b f8                	mov    %eax,%edi
406342:	89 7d d4             	mov    %edi,-0x2c(%ebp)
406345:	8b 5d d0             	mov    -0x30(%ebp),%ebx
406348:	eb ab                	jmp    0x4062f5
40634a:	c7 45 e4 80 f1 40 00 	movl   $0x40f180,-0x1c(%ebp)
406351:	81 7d e4 8c f1 40 00 	cmpl   $0x40f18c,-0x1c(%ebp)
406358:	73 11                	jae    0x40636b
40635a:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40635d:	8b 00                	mov    (%eax),%eax
40635f:	85 c0                	test   %eax,%eax
406361:	74 02                	je     0x406365
406363:	ff d0                	call   *%eax
406365:	83 45 e4 04          	addl   $0x4,-0x1c(%ebp)
406369:	eb e6                	jmp    0x406351
40636b:	c7 45 e0 90 f1 40 00 	movl   $0x40f190,-0x20(%ebp)
406372:	81 7d e0 94 f1 40 00 	cmpl   $0x40f194,-0x20(%ebp)
406379:	73 11                	jae    0x40638c
40637b:	8b 45 e0             	mov    -0x20(%ebp),%eax
40637e:	8b 00                	mov    (%eax),%eax
406380:	85 c0                	test   %eax,%eax
406382:	74 02                	je     0x406386
406384:	ff d0                	call   *%eax
406386:	83 45 e0 04          	addl   $0x4,-0x20(%ebp)
40638a:	eb e6                	jmp    0x406372
40638c:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
406393:	e8 20 00 00 00       	call   0x4063b8
406398:	83 7d 10 00          	cmpl   $0x0,0x10(%ebp)
40639c:	75 29                	jne    0x4063c7
40639e:	c7 05 88 32 41 00 01 	movl   $0x1,0x413288
4063a5:	00 00 00
4063a8:	6a 08                	push   $0x8
4063aa:	e8 11 09 00 00       	call   0x406cc0
4063af:	59                   	pop    %ecx
4063b0:	ff 75 08             	push   0x8(%ebp)
4063b3:	e8 bd fd ff ff       	call   0x406175
4063b8:	83 7d 10 00          	cmpl   $0x0,0x10(%ebp)
4063bc:	74 08                	je     0x4063c6
4063be:	6a 08                	push   $0x8
4063c0:	e8 fb 08 00 00       	call   0x406cc0
4063c5:	59                   	pop    %ecx
4063c6:	c3                   	ret
4063c7:	e8 e9 dd ff ff       	call   0x4041b5
4063cc:	c3                   	ret
4063cd:	8b ff                	mov    %edi,%edi
4063cf:	55                   	push   %ebp
4063d0:	8b ec                	mov    %esp,%ebp
4063d2:	6a 00                	push   $0x0
4063d4:	6a 00                	push   $0x0
4063d6:	ff 75 08             	push   0x8(%ebp)
4063d9:	e8 af fe ff ff       	call   0x40628d
4063de:	83 c4 0c             	add    $0xc,%esp
4063e1:	5d                   	pop    %ebp
4063e2:	c3                   	ret
4063e3:	8b ff                	mov    %edi,%edi
4063e5:	55                   	push   %ebp
4063e6:	8b ec                	mov    %esp,%ebp
4063e8:	6a 00                	push   $0x0
4063ea:	6a 01                	push   $0x1
4063ec:	ff 75 08             	push   0x8(%ebp)
4063ef:	e8 99 fe ff ff       	call   0x40628d
4063f4:	83 c4 0c             	add    $0xc,%esp
4063f7:	5d                   	pop    %ebp
4063f8:	c3                   	ret
4063f9:	6a 01                	push   $0x1
4063fb:	6a 00                	push   $0x0
4063fd:	6a 00                	push   $0x0
4063ff:	e8 89 fe ff ff       	call   0x40628d
406404:	83 c4 0c             	add    $0xc,%esp
406407:	c3                   	ret
406408:	6a 01                	push   $0x1
40640a:	6a 01                	push   $0x1
40640c:	6a 00                	push   $0x0
40640e:	e8 7a fe ff ff       	call   0x40628d
406413:	83 c4 0c             	add    $0xc,%esp
406416:	c3                   	ret
406417:	8b ff                	mov    %edi,%edi
406419:	55                   	push   %ebp
40641a:	8b ec                	mov    %esp,%ebp
40641c:	e8 e9 01 00 00       	call   0x40660a
406421:	ff 75 08             	push   0x8(%ebp)
406424:	e8 32 00 00 00       	call   0x40645b
406429:	59                   	pop    %ecx
40642a:	68 ff 00 00 00       	push   $0xff
40642f:	e8 af ff ff ff       	call   0x4063e3
406434:	cc                   	int3
406435:	8b ff                	mov    %edi,%edi
406437:	55                   	push   %ebp
406438:	8b ec                	mov    %esp,%ebp
40643a:	33 c0                	xor    %eax,%eax
40643c:	8b 4d 08             	mov    0x8(%ebp),%ecx
40643f:	3b 0c c5 c0 fe 40 00 	cmp    0x40fec0(,%eax,8),%ecx
406446:	74 0a                	je     0x406452
406448:	40                   	inc    %eax
406449:	83 f8 16             	cmp    $0x16,%eax
40644c:	72 ee                	jb     0x40643c
40644e:	33 c0                	xor    %eax,%eax
406450:	5d                   	pop    %ebp
406451:	c3                   	ret
406452:	8b 04 c5 c4 fe 40 00 	mov    0x40fec4(,%eax,8),%eax
406459:	5d                   	pop    %ebp
40645a:	c3                   	ret
40645b:	8b ff                	mov    %edi,%edi
40645d:	55                   	push   %ebp
40645e:	8b ec                	mov    %esp,%ebp
406460:	81 ec fc 01 00 00    	sub    $0x1fc,%esp
406466:	a1 84 22 41 00       	mov    0x412284,%eax
40646b:	33 c5                	xor    %ebp,%eax
40646d:	89 45 fc             	mov    %eax,-0x4(%ebp)
406470:	53                   	push   %ebx
406471:	56                   	push   %esi
406472:	8b 75 08             	mov    0x8(%ebp),%esi
406475:	57                   	push   %edi
406476:	56                   	push   %esi
406477:	e8 b9 ff ff ff       	call   0x406435
40647c:	8b f8                	mov    %eax,%edi
40647e:	33 db                	xor    %ebx,%ebx
406480:	59                   	pop    %ecx
406481:	89 bd 04 fe ff ff    	mov    %edi,-0x1fc(%ebp)
406487:	3b fb                	cmp    %ebx,%edi
406489:	0f 84 6c 01 00 00    	je     0x4065fb
40648f:	6a 03                	push   $0x3
406491:	e8 f1 5c 00 00       	call   0x40c187
406496:	59                   	pop    %ecx
406497:	83 f8 01             	cmp    $0x1,%eax
40649a:	0f 84 07 01 00 00    	je     0x4065a7
4064a0:	6a 03                	push   $0x3
4064a2:	e8 e0 5c 00 00       	call   0x40c187
4064a7:	59                   	pop    %ecx
4064a8:	85 c0                	test   %eax,%eax
4064aa:	75 0d                	jne    0x4064b9
4064ac:	83 3d 80 22 41 00 01 	cmpl   $0x1,0x412280
4064b3:	0f 84 ee 00 00 00    	je     0x4065a7
4064b9:	81 fe fc 00 00 00    	cmp    $0xfc,%esi
4064bf:	0f 84 36 01 00 00    	je     0x4065fb
4064c5:	68 fc ff 40 00       	push   $0x40fffc
4064ca:	68 14 03 00 00       	push   $0x314
4064cf:	bf 90 32 41 00       	mov    $0x413290,%edi
4064d4:	57                   	push   %edi
4064d5:	e8 e1 d2 ff ff       	call   0x4037bb
4064da:	83 c4 0c             	add    $0xc,%esp
4064dd:	85 c0                	test   %eax,%eax
4064df:	0f 85 b8 00 00 00    	jne    0x40659d
4064e5:	68 04 01 00 00       	push   $0x104
4064ea:	be c2 32 41 00       	mov    $0x4132c2,%esi
4064ef:	56                   	push   %esi
4064f0:	53                   	push   %ebx
4064f1:	66 a3 ca 34 41 00    	mov    %ax,0x4134ca
4064f7:	ff 15 28 f0 40 00    	call   *0x40f028
4064fd:	bb fb 02 00 00       	mov    $0x2fb,%ebx
406502:	85 c0                	test   %eax,%eax
406504:	75 1f                	jne    0x406525
406506:	68 cc ff 40 00       	push   $0x40ffcc
40650b:	53                   	push   %ebx
40650c:	56                   	push   %esi
40650d:	e8 a9 d2 ff ff       	call   0x4037bb
406512:	83 c4 0c             	add    $0xc,%esp
406515:	85 c0                	test   %eax,%eax
406517:	74 0c                	je     0x406525
406519:	33 c0                	xor    %eax,%eax
40651b:	50                   	push   %eax
40651c:	50                   	push   %eax
40651d:	50                   	push   %eax
40651e:	50                   	push   %eax
40651f:	50                   	push   %eax
406520:	e8 10 c7 ff ff       	call   0x402c35
406525:	56                   	push   %esi
406526:	e8 eb 30 00 00       	call   0x409616
40652b:	40                   	inc    %eax
40652c:	59                   	pop    %ecx
40652d:	83 f8 3c             	cmp    $0x3c,%eax
406530:	76 2a                	jbe    0x40655c
406532:	56                   	push   %esi
406533:	e8 de 30 00 00       	call   0x409616
406538:	8d 04 45 4c 32 41 00 	lea    0x41324c(,%eax,2),%eax
40653f:	8b c8                	mov    %eax,%ecx
406541:	2b ce                	sub    %esi,%ecx
406543:	6a 03                	push   $0x3
406545:	d1 f9                	sar    $1,%ecx
406547:	68 c4 ff 40 00       	push   $0x40ffc4