4051be:	83 e8 06             	sub    $0x6,%eax
4051c1:	74 2b                	je     0x4051ee
4051c3:	48                   	dec    %eax
4051c4:	74 1c                	je     0x4051e2
4051c6:	e8 8e f9 ff ff       	call   0x404b59
4051cb:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4051d1:	33 c0                	xor    %eax,%eax
4051d3:	50                   	push   %eax
4051d4:	50                   	push   %eax
4051d5:	50                   	push   %eax
4051d6:	50                   	push   %eax
4051d7:	50                   	push   %eax
4051d8:	e8 14 f9 ff ff       	call   0x404af1
4051dd:	83 c4 14             	add    $0x14,%esp
4051e0:	eb ae                	jmp    0x405190
4051e2:	be 80 cf 45 00       	mov    $0x45cf80,%esi
4051e7:	a1 80 cf 45 00       	mov    0x45cf80,%eax
4051ec:	eb 16                	jmp    0x405204
4051ee:	be 7c cf 45 00       	mov    $0x45cf7c,%esi
4051f3:	a1 7c cf 45 00       	mov    0x45cf7c,%eax
4051f8:	eb 0a                	jmp    0x405204
4051fa:	be 84 cf 45 00       	mov    $0x45cf84,%esi
4051ff:	a1 84 cf 45 00       	mov    0x45cf84,%eax
405204:	c7 45 e4 01 00 00 00 	movl   $0x1,-0x1c(%ebp)
40520b:	50                   	push   %eax
40520c:	e8 0e e5 ff ff       	call   0x40371f
405211:	89 45 e0             	mov    %eax,-0x20(%ebp)
405214:	59                   	pop    %ecx
405215:	33 c0                	xor    %eax,%eax
405217:	83 7d e0 01          	cmpl   $0x1,-0x20(%ebp)
40521b:	0f 84 d8 00 00 00    	je     0x4052f9
405221:	39 45 e0             	cmp    %eax,-0x20(%ebp)
405224:	75 07                	jne    0x40522d
405226:	6a 03                	push   $0x3
405228:	e8 90 da ff ff       	call   0x402cbd
40522d:	39 45 e4             	cmp    %eax,-0x1c(%ebp)
405230:	74 07                	je     0x405239
405232:	50                   	push   %eax
405233:	e8 d3 fb ff ff       	call   0x404e0b
405238:	59                   	pop    %ecx
405239:	33 c0                	xor    %eax,%eax
40523b:	89 45 fc             	mov    %eax,-0x4(%ebp)
40523e:	83 fb 08             	cmp    $0x8,%ebx
405241:	74 0a                	je     0x40524d
405243:	83 fb 0b             	cmp    $0xb,%ebx
405246:	74 05                	je     0x40524d
405248:	83 fb 04             	cmp    $0x4,%ebx
40524b:	75 1b                	jne    0x405268
40524d:	8b 4f 60             	mov    0x60(%edi),%ecx
405250:	89 4d d4             	mov    %ecx,-0x2c(%ebp)
405253:	89 47 60             	mov    %eax,0x60(%edi)
405256:	83 fb 08             	cmp    $0x8,%ebx
405259:	75 40                	jne    0x40529b
40525b:	8b 4f 64             	mov    0x64(%edi),%ecx
40525e:	89 4d d0             	mov    %ecx,-0x30(%ebp)
405261:	c7 47 64 8c 00 00 00 	movl   $0x8c,0x64(%edi)
405268:	83 fb 08             	cmp    $0x8,%ebx
40526b:	75 2e                	jne    0x40529b
40526d:	8b 0d c8 b0 40 00    	mov    0x40b0c8,%ecx
405273:	89 4d dc             	mov    %ecx,-0x24(%ebp)
405276:	8b 0d cc b0 40 00    	mov    0x40b0cc,%ecx
40527c:	8b 15 c8 b0 40 00    	mov    0x40b0c8,%edx
405282:	03 ca                	add    %edx,%ecx
405284:	39 4d dc             	cmp    %ecx,-0x24(%ebp)
405287:	7d 19                	jge    0x4052a2
405289:	8b 4d dc             	mov    -0x24(%ebp),%ecx
40528c:	6b c9 0c             	imul   $0xc,%ecx,%ecx
40528f:	8b 57 5c             	mov    0x5c(%edi),%edx
405292:	89 44 11 08          	mov    %eax,0x8(%ecx,%edx,1)
405296:	ff 45 dc             	incl   -0x24(%ebp)
405299:	eb db                	jmp    0x405276
40529b:	e8 76 e4 ff ff       	call   0x403716
4052a0:	89 06                	mov    %eax,(%esi)
4052a2:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
4052a9:	e8 15 00 00 00       	call   0x4052c3
4052ae:	83 fb 08             	cmp    $0x8,%ebx
4052b1:	75 1f                	jne    0x4052d2
4052b3:	ff 77 64             	push   0x64(%edi)
4052b6:	53                   	push   %ebx
4052b7:	ff 55 e0             	call   *-0x20(%ebp)
4052ba:	59                   	pop    %ecx
4052bb:	eb 19                	jmp    0x4052d6
4052bd:	8b 5d 08             	mov    0x8(%ebp),%ebx
4052c0:	8b 7d d8             	mov    -0x28(%ebp),%edi
4052c3:	83 7d e4 00          	cmpl   $0x0,-0x1c(%ebp)
4052c7:	74 08                	je     0x4052d1
4052c9:	6a 00                	push   $0x0
4052cb:	e8 61 fa ff ff       	call   0x404d31
4052d0:	59                   	pop    %ecx
4052d1:	c3                   	ret
4052d2:	53                   	push   %ebx
4052d3:	ff 55 e0             	call   *-0x20(%ebp)
4052d6:	59                   	pop    %ecx
4052d7:	83 fb 08             	cmp    $0x8,%ebx
4052da:	74 0a                	je     0x4052e6
4052dc:	83 fb 0b             	cmp    $0xb,%ebx
4052df:	74 05                	je     0x4052e6
4052e1:	83 fb 04             	cmp    $0x4,%ebx
4052e4:	75 11                	jne    0x4052f7
4052e6:	8b 45 d4             	mov    -0x2c(%ebp),%eax
4052e9:	89 47 60             	mov    %eax,0x60(%edi)
4052ec:	83 fb 08             	cmp    $0x8,%ebx
4052ef:	75 06                	jne    0x4052f7
4052f1:	8b 45 d0             	mov    -0x30(%ebp),%eax
4052f4:	89 47 64             	mov    %eax,0x64(%edi)
4052f7:	33 c0                	xor    %eax,%eax
4052f9:	e8 bb e9 ff ff       	call   0x403cb9
4052fe:	c3                   	ret
4052ff:	8b ff                	mov    %edi,%edi
405301:	55                   	push   %ebp
405302:	8b ec                	mov    %esp,%ebp
405304:	8b 45 08             	mov    0x8(%ebp),%eax
405307:	a3 8c cf 45 00       	mov    %eax,0x45cf8c
40530c:	5d                   	pop    %ebp
40530d:	c3                   	ret
40530e:	8b ff                	mov    %edi,%edi
405310:	55                   	push   %ebp
405311:	8b ec                	mov    %esp,%ebp
405313:	8b 45 08             	mov    0x8(%ebp),%eax
405316:	a3 98 cf 45 00       	mov    %eax,0x45cf98
40531b:	5d                   	pop    %ebp
40531c:	c3                   	ret
40531d:	8b ff                	mov    %edi,%edi
40531f:	55                   	push   %ebp
405320:	8b ec                	mov    %esp,%ebp
405322:	8b 45 08             	mov    0x8(%ebp),%eax
405325:	a3 9c cf 45 00       	mov    %eax,0x45cf9c
40532a:	5d                   	pop    %ebp
40532b:	c3                   	ret
40532c:	6a 10                	push   $0x10
40532e:	68 58 a6 40 00       	push   $0x40a658
405333:	e8 3c e9 ff ff       	call   0x403c74
405338:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40533c:	ff 75 0c             	push   0xc(%ebp)
40533f:	ff 75 08             	push   0x8(%ebp)
405342:	ff 15 00 11 40 00    	call   *0x401100
405348:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40534b:	eb 2f                	jmp    0x40537c
40534d:	8b 45 ec             	mov    -0x14(%ebp),%eax
405350:	8b 00                	mov    (%eax),%eax
405352:	8b 00                	mov    (%eax),%eax
405354:	89 45 e0             	mov    %eax,-0x20(%ebp)
405357:	33 c9                	xor    %ecx,%ecx
405359:	3d 17 00 00 c0       	cmp    $0xc0000017,%eax
40535e:	0f 94 c1             	sete   %cl
405361:	8b c1                	mov    %ecx,%eax
405363:	c3                   	ret
405364:	8b 65 e8             	mov    -0x18(%ebp),%esp
405367:	81 7d e0 17 00 00 c0 	cmpl   $0xc0000017,-0x20(%ebp)
40536e:	75 08                	jne    0x405378
405370:	6a 08                	push   $0x8
405372:	ff 15 c0 10 40 00    	call   *0x4010c0
405378:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
40537c:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
405383:	8b 45 e4             	mov    -0x1c(%ebp),%eax
405386:	e8 2e e9 ff ff       	call   0x403cb9
40538b:	c3                   	ret
40538c:	8b ff                	mov    %edi,%edi
40538e:	55                   	push   %ebp
40538f:	8b ec                	mov    %esp,%ebp
405391:	8b 45 08             	mov    0x8(%ebp),%eax
405394:	a3 a0 cf 45 00       	mov    %eax,0x45cfa0
405399:	5d                   	pop    %ebp
40539a:	c3                   	ret
40539b:	8b ff                	mov    %edi,%edi
40539d:	55                   	push   %ebp
40539e:	8b ec                	mov    %esp,%ebp
4053a0:	ff 35 a0 cf 45 00    	push   0x45cfa0
4053a6:	e8 74 e3 ff ff       	call   0x40371f
4053ab:	59                   	pop    %ecx
4053ac:	85 c0                	test   %eax,%eax
4053ae:	74 0f                	je     0x4053bf
4053b0:	ff 75 08             	push   0x8(%ebp)
4053b3:	ff d0                	call   *%eax
4053b5:	59                   	pop    %ecx
4053b6:	85 c0                	test   %eax,%eax
4053b8:	74 05                	je     0x4053bf
4053ba:	33 c0                	xor    %eax,%eax
4053bc:	40                   	inc    %eax
4053bd:	5d                   	pop    %ebp
4053be:	c3                   	ret
4053bf:	33 c0                	xor    %eax,%eax
4053c1:	5d                   	pop    %ebp
4053c2:	c3                   	ret
4053c3:	8b ff                	mov    %edi,%edi
4053c5:	55                   	push   %ebp
4053c6:	8b ec                	mov    %esp,%ebp
4053c8:	83 ec 14             	sub    $0x14,%esp
4053cb:	53                   	push   %ebx
4053cc:	56                   	push   %esi
4053cd:	57                   	push   %edi
4053ce:	e8 43 e3 ff ff       	call   0x403716
4053d3:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
4053d7:	83 3d a4 cf 45 00 00 	cmpl   $0x0,0x45cfa4
4053de:	8b d8                	mov    %eax,%ebx
4053e0:	0f 85 8e 00 00 00    	jne    0x405474
4053e6:	68 4c 19 40 00       	push   $0x40194c
4053eb:	ff 15 fc 10 40 00    	call   *0x4010fc
4053f1:	8b f8                	mov    %eax,%edi
4053f3:	85 ff                	test   %edi,%edi
4053f5:	0f 84 2a 01 00 00    	je     0x405525
4053fb:	8b 35 38 10 40 00    	mov    0x401038,%esi
405401:	68 40 19 40 00       	push   $0x401940
405406:	57                   	push   %edi
405407:	ff d6                	call   *%esi
405409:	85 c0                	test   %eax,%eax
40540b:	0f 84 14 01 00 00    	je     0x405525
405411:	50                   	push   %eax
405412:	e8 8d e2 ff ff       	call   0x4036a4
405417:	c7 04 24 30 19 40 00 	movl   $0x401930,(%esp)
40541e:	57                   	push   %edi
40541f:	a3 a4 cf 45 00       	mov    %eax,0x45cfa4
405424:	ff d6                	call   *%esi
405426:	50                   	push   %eax
405427:	e8 78 e2 ff ff       	call   0x4036a4
40542c:	c7 04 24 1c 19 40 00 	movl   $0x40191c,(%esp)
405433:	57                   	push   %edi
405434:	a3 a8 cf 45 00       	mov    %eax,0x45cfa8
405439:	ff d6                	call   *%esi
40543b:	50                   	push   %eax
40543c:	e8 63 e2 ff ff       	call   0x4036a4
405441:	c7 04 24 00 19 40 00 	movl   $0x401900,(%esp)
405448:	57                   	push   %edi
405449:	a3 ac cf 45 00       	mov    %eax,0x45cfac
40544e:	ff d6                	call   *%esi
405450:	50                   	push   %eax
405451:	e8 4e e2 ff ff       	call   0x4036a4
405456:	59                   	pop    %ecx
405457:	a3 b4 cf 45 00       	mov    %eax,0x45cfb4
40545c:	85 c0                	test   %eax,%eax
40545e:	74 14                	je     0x405474
405460:	68 e8 18 40 00       	push   $0x4018e8
405465:	57                   	push   %edi
405466:	ff d6                	call   *%esi
405468:	50                   	push   %eax
405469:	e8 36 e2 ff ff       	call   0x4036a4
40546e:	59                   	pop    %ecx
40546f:	a3 b0 cf 45 00       	mov    %eax,0x45cfb0
405474:	a1 b0 cf 45 00       	mov    0x45cfb0,%eax
405479:	3b c3                	cmp    %ebx,%eax
40547b:	74 4f                	je     0x4054cc
40547d:	39 1d b4 cf 45 00    	cmp    %ebx,0x45cfb4
405483:	74 47                	je     0x4054cc
405485:	50                   	push   %eax
405486:	e8 94 e2 ff ff       	call   0x40371f
40548b:	ff 35 b4 cf 45 00    	push   0x45cfb4
405491:	8b f0                	mov    %eax,%esi
405493:	e8 87 e2 ff ff       	call   0x40371f
405498:	59                   	pop    %ecx
405499:	59                   	pop    %ecx
40549a:	8b f8                	mov    %eax,%edi
40549c:	85 f6                	test   %esi,%esi
40549e:	74 2c                	je     0x4054cc
4054a0:	85 ff                	test   %edi,%edi
4054a2:	74 28                	je     0x4054cc
4054a4:	ff d6                	call   *%esi
4054a6:	85 c0                	test   %eax,%eax
4054a8:	74 19                	je     0x4054c3
4054aa:	8d 4d f8             	lea    -0x8(%ebp),%ecx
4054ad:	51                   	push   %ecx
4054ae:	6a 0c                	push   $0xc
4054b0:	8d 4d ec             	lea    -0x14(%ebp),%ecx
4054b3:	51                   	push   %ecx
4054b4:	6a 01                	push   $0x1
4054b6:	50                   	push   %eax
4054b7:	ff d7                	call   *%edi
4054b9:	85 c0                	test   %eax,%eax
4054bb:	74 06                	je     0x4054c3
4054bd:	f6 45 f4 01          	testb  $0x1,-0xc(%ebp)
4054c1:	75 09                	jne    0x4054cc
4054c3:	81 4d 10 00 00 20 00 	orl    $0x200000,0x10(%ebp)
4054ca:	eb 39                	jmp    0x405505
4054cc:	a1 a8 cf 45 00       	mov    0x45cfa8,%eax
4054d1:	3b c3                	cmp    %ebx,%eax
4054d3:	74 30                	je     0x405505
4054d5:	50                   	push   %eax
4054d6:	e8 44 e2 ff ff       	call   0x40371f
4054db:	59                   	pop    %ecx
4054dc:	85 c0                	test   %eax,%eax
4054de:	74 25                	je     0x405505
4054e0:	ff d0                	call   *%eax
4054e2:	89 45 fc             	mov    %eax,-0x4(%ebp)
4054e5:	85 c0                	test   %eax,%eax
4054e7:	74 1c                	je     0x405505
4054e9:	a1 ac cf 45 00       	mov    0x45cfac,%eax
4054ee:	3b c3                	cmp    %ebx,%eax
4054f0:	74 13                	je     0x405505
4054f2:	50                   	push   %eax
4054f3:	e8 27 e2 ff ff       	call   0x40371f
4054f8:	59                   	pop    %ecx
4054f9:	85 c0                	test   %eax,%eax
4054fb:	74 08                	je     0x405505
4054fd:	ff 75 fc             	push   -0x4(%ebp)
405500:	ff d0                	call   *%eax
405502:	89 45 fc             	mov    %eax,-0x4(%ebp)
405505:	ff 35 a4 cf 45 00    	push   0x45cfa4
40550b:	e8 0f e2 ff ff       	call   0x40371f
405510:	59                   	pop    %ecx
405511:	85 c0                	test   %eax,%eax
405513:	74 10                	je     0x405525
405515:	ff 75 10             	push   0x10(%ebp)
405518:	ff 75 0c             	push   0xc(%ebp)
40551b:	ff 75 08             	push   0x8(%ebp)
40551e:	ff 75 fc             	push   -0x4(%ebp)
405521:	ff d0                	call   *%eax
405523:	eb 02                	jmp    0x405527
405525:	33 c0                	xor    %eax,%eax
405527:	5f                   	pop    %edi
405528:	5e                   	pop    %esi
405529:	5b                   	pop    %ebx
40552a:	c9                   	leave
40552b:	c3                   	ret
40552c:	8b ff                	mov    %edi,%edi
40552e:	55                   	push   %ebp
40552f:	8b ec                	mov    %esp,%ebp
405531:	8b 45 08             	mov    0x8(%ebp),%eax
405534:	53                   	push   %ebx
405535:	33 db                	xor    %ebx,%ebx
405537:	56                   	push   %esi
405538:	57                   	push   %edi
405539:	3b c3                	cmp    %ebx,%eax
40553b:	74 07                	je     0x405544
40553d:	8b 7d 0c             	mov    0xc(%ebp),%edi
405540:	3b fb                	cmp    %ebx,%edi
405542:	77 1b                	ja     0x40555f
405544:	e8 10 f6 ff ff       	call   0x404b59
405549:	6a 16                	push   $0x16
40554b:	5e                   	pop    %esi
40554c:	89 30                	mov    %esi,(%eax)
40554e:	53                   	push   %ebx
40554f:	53                   	push   %ebx
405550:	53                   	push   %ebx
405551:	53                   	push   %ebx
405552:	53                   	push   %ebx
405553:	e8 99 f5 ff ff       	call   0x404af1
405558:	83 c4 14             	add    $0x14,%esp
40555b:	8b c6                	mov    %esi,%eax
40555d:	eb 3c                	jmp    0x40559b
40555f:	8b 75 10             	mov    0x10(%ebp),%esi
405562:	3b f3                	cmp    %ebx,%esi
405564:	75 04                	jne    0x40556a
405566:	88 18                	mov    %bl,(%eax)
405568:	eb da                	jmp    0x405544
40556a:	8b d0                	mov    %eax,%edx
40556c:	38 1a                	cmp    %bl,(%edx)
40556e:	74 04                	je     0x405574
405570:	42                   	inc    %edx
405571:	4f                   	dec    %edi
405572:	75 f8                	jne    0x40556c
405574:	3b fb                	cmp    %ebx,%edi