405148:	89 45 fc             	mov    %eax,-0x4(%ebp)
40514b:	89 46 08             	mov    %eax,0x8(%esi)
40514e:	89 46 0c             	mov    %eax,0xc(%esi)
405151:	89 46 10             	mov    %eax,0x10(%esi)
405154:	8a 45 08             	mov    0x8(%ebp),%al
405157:	68 0c 76 41 00       	push   $0x41760c
40515c:	8d 4e 18             	lea    0x18(%esi),%ecx
40515f:	c7 06 08 76 41 00    	movl   $0x417608,(%esi)
405165:	88 46 14             	mov    %al,0x14(%esi)
405168:	e8 b3 d2 ff ff       	call   0x402420
40516d:	8b c6                	mov    %esi,%eax
40516f:	e8 16 17 00 00       	call   0x40688a
405174:	c2 04 00             	ret    $0x4
405177:	6a 04                	push   $0x4
405179:	b8 2e 5f 41 00       	mov    $0x415f2e,%eax
40517e:	e8 68 16 00 00       	call   0x4067eb
405183:	8b f1                	mov    %ecx,%esi
405185:	89 75 f0             	mov    %esi,-0x10(%ebp)
405188:	c7 06 08 76 41 00    	movl   $0x417608,(%esi)
40518e:	56                   	push   %esi
40518f:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
405196:	e8 94 fe ff ff       	call   0x40502f
40519b:	59                   	pop    %ecx
40519c:	6a 00                	push   $0x0
40519e:	6a 01                	push   $0x1
4051a0:	8d 4e 18             	lea    0x18(%esi),%ecx
4051a3:	e8 38 cc ff ff       	call   0x401de0
4051a8:	c7 06 e4 74 41 00    	movl   $0x4174e4,(%esi)
4051ae:	e8 d7 16 00 00       	call   0x40688a
4051b3:	c3                   	ret
4051b4:	56                   	push   %esi
4051b5:	8b f1                	mov    %ecx,%esi
4051b7:	e8 bb ff ff ff       	call   0x405177
4051bc:	f6 44 24 08 01       	testb  $0x1,0x8(%esp)
4051c1:	74 07                	je     0x4051ca
4051c3:	56                   	push   %esi
4051c4:	e8 66 08 00 00       	call   0x405a2f
4051c9:	59                   	pop    %ecx
4051ca:	8b c6                	mov    %esi,%eax
4051cc:	5e                   	pop    %esi
4051cd:	c2 04 00             	ret    $0x4
4051d0:	6a 08                	push   $0x8
4051d2:	b8 5b 5f 41 00       	mov    $0x415f5b,%eax
4051d7:	e8 0f 16 00 00       	call   0x4067eb
4051dc:	a1 28 d8 41 00       	mov    0x41d828,%eax
4051e1:	85 c0                	test   %eax,%eax
4051e3:	8b f0                	mov    %eax,%esi
4051e5:	75 7b                	jne    0x405262
4051e7:	50                   	push   %eax
4051e8:	8d 4d f0             	lea    -0x10(%ebp),%ecx
4051eb:	e8 86 fd ff ff       	call   0x404f76
4051f0:	a1 28 d8 41 00       	mov    0x41d828,%eax
4051f5:	21 75 fc             	and    %esi,-0x4(%ebp)
4051f8:	85 c0                	test   %eax,%eax
4051fa:	8b f0                	mov    %eax,%esi
4051fc:	75 58                	jne    0x405256
4051fe:	6a 34                	push   $0x34
405200:	e8 d3 0d 00 00       	call   0x405fd8
405205:	59                   	pop    %ecx
405206:	8b c8                	mov    %eax,%ecx
405208:	89 4d ec             	mov    %ecx,-0x14(%ebp)
40520b:	85 c9                	test   %ecx,%ecx
40520d:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
405211:	74 0a                	je     0x40521d
405213:	56                   	push   %esi
405214:	e8 15 ff ff ff       	call   0x40512e
405219:	8b f0                	mov    %eax,%esi
40521b:	eb 02                	jmp    0x40521f
40521d:	33 f6                	xor    %esi,%esi
40521f:	56                   	push   %esi
405220:	c6 45 fc 00          	movb   $0x0,-0x4(%ebp)
405224:	e8 e1 fd ff ff       	call   0x40500a
405229:	8d 4e 18             	lea    0x18(%esi),%ecx
40522c:	c7 46 10 3f 00 00 00 	movl   $0x3f,0x10(%esi)
405233:	c7 04 24 ac 75 41 00 	movl   $0x4175ac,(%esp)
40523a:	e8 f1 d0 ff ff       	call   0x402330
40523f:	8b ce                	mov    %esi,%ecx
405241:	89 35 2c d8 41 00    	mov    %esi,0x41d82c
405247:	e8 d2 e2 ff ff       	call   0x40351e
40524c:	a1 2c d8 41 00       	mov    0x41d82c,%eax
405251:	a3 44 d8 41 00       	mov    %eax,0x41d844
405256:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40525a:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40525d:	e8 35 fd ff ff       	call   0x404f97
405262:	8b c6                	mov    %esi,%eax
405264:	e8 21 16 00 00       	call   0x40688a
405269:	c3                   	ret
40526a:	6a 00                	push   $0x0
40526c:	6a 00                	push   $0x0
40526e:	e8 ac 50 00 00       	call   0x40a31f
405273:	85 c0                	test   %eax,%eax
405275:	59                   	pop    %ecx
405276:	59                   	pop    %ecx
405277:	75 05                	jne    0x40527e
405279:	b8 0e 76 41 00       	mov    $0x41760e,%eax
40527e:	56                   	push   %esi
40527f:	8b 74 24 08          	mov    0x8(%esp),%esi
405283:	50                   	push   %eax
405284:	8d 4e 3c             	lea    0x3c(%esi),%ecx
405287:	e8 a4 d0 ff ff       	call   0x402330
40528c:	83 7c 24 0c 00       	cmpl   $0x0,0xc(%esp)
405291:	74 11                	je     0x4052a4
405293:	ff 74 24 0c          	push   0xc(%esp)
405297:	6a 00                	push   $0x0
405299:	e8 81 50 00 00       	call   0x40a31f
40529e:	85 c0                	test   %eax,%eax
4052a0:	59                   	pop    %ecx
4052a1:	59                   	pop    %ecx
4052a2:	75 05                	jne    0x4052a9
4052a4:	b8 0c 76 41 00       	mov    $0x41760c,%eax
4052a9:	50                   	push   %eax
4052aa:	8d 4e 58             	lea    0x58(%esi),%ecx
4052ad:	e8 7e d0 ff ff       	call   0x402330
4052b2:	5e                   	pop    %esi
4052b3:	c3                   	ret
4052b4:	56                   	push   %esi
4052b5:	57                   	push   %edi
4052b6:	8b f9                	mov    %ecx,%edi
4052b8:	8b 77 20             	mov    0x20(%edi),%esi
4052bb:	eb 10                	jmp    0x4052cd
4052bd:	ff 76 04             	push   0x4(%esi)
4052c0:	57                   	push   %edi
4052c1:	ff 74 24 14          	push   0x14(%esp)
4052c5:	ff 56 08             	call   *0x8(%esi)
4052c8:	8b 36                	mov    (%esi),%esi
4052ca:	83 c4 0c             	add    $0xc,%esp
4052cd:	85 f6                	test   %esi,%esi
4052cf:	75 ec                	jne    0x4052bd
4052d1:	5f                   	pop    %edi
4052d2:	5e                   	pop    %esi
4052d3:	c2 04 00             	ret    $0x4
4052d6:	56                   	push   %esi
4052d7:	8b 74 24 08          	mov    0x8(%esp),%esi
4052db:	57                   	push   %edi
4052dc:	6a 00                	push   $0x0
4052de:	8b ce                	mov    %esi,%ecx
4052e0:	e8 cf ff ff ff       	call   0x4052b4
4052e5:	8b 46 1c             	mov    0x1c(%esi),%eax
4052e8:	85 c0                	test   %eax,%eax
4052ea:	74 0f                	je     0x4052fb
4052ec:	8b 38                	mov    (%eax),%edi
4052ee:	50                   	push   %eax
4052ef:	e8 3b 07 00 00       	call   0x405a2f
4052f4:	85 ff                	test   %edi,%edi
4052f6:	59                   	pop    %ecx
4052f7:	8b c7                	mov    %edi,%eax
4052f9:	75 f1                	jne    0x4052ec
4052fb:	8b 46 20             	mov    0x20(%esi),%eax
4052fe:	83 66 1c 00          	andl   $0x0,0x1c(%esi)
405302:	85 c0                	test   %eax,%eax
405304:	74 0f                	je     0x405315
405306:	8b 38                	mov    (%eax),%edi
405308:	50                   	push   %eax
405309:	e8 21 07 00 00       	call   0x405a2f
40530e:	85 ff                	test   %edi,%edi
405310:	59                   	pop    %ecx
405311:	8b c7                	mov    %edi,%eax
405313:	75 f1                	jne    0x405306
405315:	83 66 20 00          	andl   $0x0,0x20(%esi)
405319:	5f                   	pop    %edi
40531a:	5e                   	pop    %esi
40531b:	c3                   	ret
40531c:	55                   	push   %ebp
40531d:	8b ec                	mov    %esp,%ebp
40531f:	51                   	push   %ecx
405320:	6a 02                	push   $0x2
405322:	8d 4d fc             	lea    -0x4(%ebp),%ecx
405325:	e8 4c fc ff ff       	call   0x404f76
40532a:	8b 45 08             	mov    0x8(%ebp),%eax
40532d:	c7 40 04 01 00 00 00 	movl   $0x1,0x4(%eax)
405334:	8b 48 04             	mov    0x4(%eax),%ecx
405337:	8b 0c 8d 5c d8 41 00 	mov    0x41d85c(,%ecx,4),%ecx
40533e:	85 c9                	test   %ecx,%ecx
405340:	74 0d                	je     0x40534f
405342:	3b c8                	cmp    %eax,%ecx
405344:	74 09                	je     0x40534f
405346:	ff 40 04             	incl   0x4(%eax)
405349:	83 78 04 08          	cmpl   $0x8,0x4(%eax)
40534d:	72 e5                	jb     0x405334
40534f:	8b 48 04             	mov    0x4(%eax),%ecx
405352:	89 04 8d 5c d8 41 00 	mov    %eax,0x41d85c(,%ecx,4)
405359:	8b 40 04             	mov    0x4(%eax),%eax
40535c:	fe 80 84 d8 41 00    	incb   0x41d884(%eax)
405362:	8d 4d fc             	lea    -0x4(%ebp),%ecx
405365:	e8 2d fc ff ff       	call   0x404f97
40536a:	c9                   	leave
40536b:	c3                   	ret
40536c:	56                   	push   %esi
40536d:	8b 74 24 08          	mov    0x8(%esp),%esi
405371:	83 7e 04 00          	cmpl   $0x0,0x4(%esi)
405375:	76 15                	jbe    0x40538c
405377:	8b 46 04             	mov    0x4(%esi),%eax
40537a:	fe 88 84 d8 41 00    	decb   0x41d884(%eax)
405380:	8b 46 04             	mov    0x4(%esi),%eax
405383:	80 b8 84 d8 41 00 00 	cmpb   $0x0,0x41d884(%eax)
40538a:	7f 1c                	jg     0x4053a8
40538c:	56                   	push   %esi
40538d:	e8 44 ff ff ff       	call   0x4052d6
405392:	8b 76 24             	mov    0x24(%esi),%esi
405395:	85 f6                	test   %esi,%esi
405397:	59                   	pop    %ecx
405398:	74 0e                	je     0x4053a8
40539a:	8b ce                	mov    %esi,%ecx
40539c:	e8 10 e2 ff ff       	call   0x4035b1
4053a1:	56                   	push   %esi
4053a2:	e8 88 06 00 00       	call   0x405a2f
4053a7:	59                   	pop    %ecx
4053a8:	5e                   	pop    %esi
4053a9:	c3                   	ret
4053aa:	a1 9c c4 41 00       	mov    0x41c49c,%eax
4053af:	85 c0                	test   %eax,%eax
4053b1:	75 05                	jne    0x4053b8
4053b3:	e9 d7 50 00 00       	jmp    0x40a48f
4053b8:	8b 4c 24 04          	mov    0x4(%esp),%ecx
4053bc:	48                   	dec    %eax
4053bd:	a3 9c c4 41 00       	mov    %eax,0x41c49c
4053c2:	89 0c 85 b0 d8 41 00 	mov    %ecx,0x41d8b0(,%eax,4)
4053c9:	c3                   	ret
4053ca:	eb 18                	jmp    0x4053e4
4053cc:	8b 0c 85 b0 d8 41 00 	mov    0x41d8b0(,%eax,4),%ecx
4053d3:	40                   	inc    %eax
4053d4:	85 c9                	test   %ecx,%ecx
4053d6:	a3 9c c4 41 00       	mov    %eax,0x41c49c
4053db:	74 0c                	je     0x4053e9
4053dd:	ff 14 85 ac d8 41 00 	call   *0x41d8ac(,%eax,4)
4053e4:	a1 9c c4 41 00       	mov    0x41c49c,%eax
4053e9:	83 f8 0a             	cmp    $0xa,%eax
4053ec:	72 de                	jb     0x4053cc
4053ee:	c3                   	ret
4053ef:	55                   	push   %ebp
4053f0:	8b ec                	mov    %esp,%ebp
4053f2:	83 ec 24             	sub    $0x24,%esp
4053f5:	a1 20 c5 41 00       	mov    0x41c520,%eax
4053fa:	33 c5                	xor    %ebp,%eax
4053fc:	89 45 fc             	mov    %eax,-0x4(%ebp)
4053ff:	6a 0a                	push   $0xa
405401:	6a 1f                	push   $0x1f
405403:	8d 45 dd             	lea    -0x23(%ebp),%eax
405406:	50                   	push   %eax
405407:	6a 00                	push   $0x0
405409:	ff 75 08             	push   0x8(%ebp)
40540c:	c6 45 dc 2e          	movb   $0x2e,-0x24(%ebp)
405410:	e8 66 53 00 00       	call   0x40a77b
405415:	8d 45 dc             	lea    -0x24(%ebp),%eax
405418:	50                   	push   %eax
405419:	6a 00                	push   $0x0
40541b:	e8 0c 4e 00 00       	call   0x40a22c
405420:	8b 4d fc             	mov    -0x4(%ebp),%ecx
405423:	33 cd                	xor    %ebp,%ecx
405425:	83 c4 1c             	add    $0x1c,%esp
405428:	e8 08 0b 00 00       	call   0x405f35
40542d:	c9                   	leave
40542e:	c3                   	ret
40542f:	8b 44 24 04          	mov    0x4(%esp),%eax
405433:	53                   	push   %ebx
405434:	55                   	push   %ebp
405435:	56                   	push   %esi
405436:	57                   	push   %edi
405437:	6a 3e                	push   $0x3e
405439:	33 d2                	xor    %edx,%edx
40543b:	59                   	pop    %ecx
40543c:	f7 f1                	div    %ecx
40543e:	33 f6                	xor    %esi,%esi
405440:	8d 2c 95 e0 d8 41 00 	lea    0x41d8e0(,%edx,4),%ebp
405447:	8b 7d 00             	mov    0x0(%ebp),%edi
40544a:	85 ff                	test   %edi,%edi
40544c:	8b df                	mov    %edi,%ebx
40544e:	74 0f                	je     0x40545f
405450:	8b 43 04             	mov    0x4(%ebx),%eax
405453:	3b 44 24 14          	cmp    0x14(%esp),%eax
405457:	74 44                	je     0x40549d
405459:	8b 1b                	mov    (%ebx),%ebx
40545b:	85 db                	test   %ebx,%ebx
40545d:	75 f1                	jne    0x405450
40545f:	85 f6                	test   %esi,%esi
405461:	75 23                	jne    0x405486
405463:	6a 0c                	push   $0xc
405465:	e8 82 3e 00 00       	call   0x4092ec
40546a:	8b f0                	mov    %eax,%esi
40546c:	85 f6                	test   %esi,%esi
40546e:	59                   	pop    %ecx
40546f:	74 4c                	je     0x4054bd
405471:	8b 5c 24 14          	mov    0x14(%esp),%ebx
405475:	53                   	push   %ebx
405476:	e8 74 ff ff ff       	call   0x4053ef
40547b:	85 c0                	test   %eax,%eax
40547d:	59                   	pop    %ecx
40547e:	89 46 08             	mov    %eax,0x8(%esi)
405481:	74 33                	je     0x4054b6
405483:	89 5e 04             	mov    %ebx,0x4(%esi)
405486:	57                   	push   %edi
405487:	56                   	push   %esi
405488:	55                   	push   %ebp
405489:	89 3e                	mov    %edi,(%esi)
40548b:	ff 15 9c 70 41 00    	call   *0x41709c
405491:	3b c7                	cmp    %edi,%eax
405493:	75 b2                	jne    0x405447
405495:	8b 46 08             	mov    0x8(%esi),%eax
405498:	5f                   	pop    %edi
405499:	5e                   	pop    %esi
40549a:	5d                   	pop    %ebp
40549b:	5b                   	pop    %ebx
40549c:	c3                   	ret
40549d:	85 f6                	test   %esi,%esi
40549f:	74 10                	je     0x4054b1
4054a1:	ff 76 08             	push   0x8(%esi)
4054a4:	e8 12 43 00 00       	call   0x4097bb
4054a9:	56                   	push   %esi
4054aa:	e8 a4 0f 00 00       	call   0x406453
4054af:	59                   	pop    %ecx
4054b0:	59                   	pop    %ecx
4054b1:	8b 43 08             	mov    0x8(%ebx),%eax
4054b4:	eb e2                	jmp    0x405498
4054b6:	56                   	push   %esi
4054b7:	e8 97 0f 00 00       	call   0x406453
4054bc:	59                   	pop    %ecx
4054bd:	33 c0                	xor    %eax,%eax
4054bf:	eb d7                	jmp    0x405498
4054c1:	53                   	push   %ebx
4054c2:	56                   	push   %esi
4054c3:	57                   	push   %edi
4054c4:	bb e0 d8 41 00       	mov    $0x41d8e0,%ebx
4054c9:	6a 00                	push   $0x0
4054cb:	53                   	push   %ebx
4054cc:	ff 15 7c 70 41 00    	call   *0x41707c
4054d2:	8b f0                	mov    %eax,%esi
4054d4:	85 f6                	test   %esi,%esi
4054d6:	74 18                	je     0x4054f0
4054d8:	ff 76 08             	push   0x8(%esi)
4054db:	8b 3e                	mov    (%esi),%edi
4054dd:	e8 d9 42 00 00       	call   0x4097bb
4054e2:	56                   	push   %esi
4054e3:	e8 6b 0f 00 00       	call   0x406453
4054e8:	85 ff                	test   %edi,%edi
4054ea:	59                   	pop    %ecx
4054eb:	59                   	pop    %ecx
4054ec:	8b f7                	mov    %edi,%esi
4054ee:	75 e8                	jne    0x4054d8
4054f0:	83 c3 04             	add    $0x4,%ebx
4054f3:	81 fb d8 d9 41 00    	cmp    $0x41d9d8,%ebx
4054f9:	7c ce                	jl     0x4054c9
4054fb:	5f                   	pop    %edi
4054fc:	5e                   	pop    %esi
4054fd:	5b                   	pop    %ebx
4054fe:	c3                   	ret
4054ff:	68 c1 54 40 00       	push   $0x4054c1
405504:	e8 13 33 00 00       	call   0x40881c
405509:	f7 d8                	neg    %eax
40550b:	1b c0                	sbb    %eax,%eax
40550d:	59                   	pop    %ecx