405071:	89 7d f0             	mov    %edi,-0x10(%ebp)
405074:	e8 44 2f 01 00       	call   0x417fbd
405079:	33 c0                	xor    %eax,%eax
40507b:	8d 8d e0 fd ff ff    	lea    -0x220(%ebp),%ecx
405081:	83 c4 0c             	add    $0xc,%esp
405084:	38 45 ec             	cmp    %al,-0x14(%ebp)
405087:	0f 94 c0             	sete   %al
40508a:	48                   	dec    %eax
40508b:	25 e3 7e 00 00       	and    $0x7ee3,%eax
405090:	03 c7                	add    %edi,%eax
405092:	50                   	push   %eax
405093:	e8 58 93 00 00       	call   0x40e3f0
405098:	85 c0                	test   %eax,%eax
40509a:	0f 88 e5 00 00 00    	js     0x405185
4050a0:	8b 4e 3c             	mov    0x3c(%esi),%ecx
4050a3:	33 c0                	xor    %eax,%eax
4050a5:	38 05 55 67 43 00    	cmp    %al,0x436755
4050ab:	ba b8 20 40 00       	mov    $0x4020b8,%edx
4050b0:	0f 95 c0             	setne  %al
4050b3:	83 c0 02             	add    $0x2,%eax
4050b6:	50                   	push   %eax
4050b7:	e8 74 6b 00 00       	call   0x40bc30
4050bc:	80 3d 55 67 43 00 00 	cmpb   $0x0,0x436755
4050c3:	8b f8                	mov    %eax,%edi
4050c5:	89 bd d8 fd ff ff    	mov    %edi,-0x228(%ebp)
4050cb:	74 15                	je     0x4050e2
4050cd:	0f b7 07             	movzwl (%edi),%eax
4050d0:	8b cf                	mov    %edi,%ecx
4050d2:	8b f7                	mov    %edi,%esi
4050d4:	66 85 c0             	test   %ax,%ax
4050d7:	0f 85 7d 41 01 00    	jne    0x41925a
4050dd:	33 c0                	xor    %eax,%eax
4050df:	66 89 06             	mov    %ax,(%esi)
4050e2:	8b f7                	mov    %edi,%esi
4050e4:	33 d2                	xor    %edx,%edx
4050e6:	8d 4e 02             	lea    0x2(%esi),%ecx
4050e9:	66 8b 06             	mov    (%esi),%ax
4050ec:	83 c6 02             	add    $0x2,%esi
4050ef:	66 3b c2             	cmp    %dx,%ax
4050f2:	75 f5                	jne    0x4050e9
4050f4:	2b f1                	sub    %ecx,%esi
4050f6:	8b cf                	mov    %edi,%ecx
4050f8:	d1 fe                	sar    $1,%esi
4050fa:	e8 61 af 00 00       	call   0x410060
4050ff:	50                   	push   %eax
405100:	8d 56 01             	lea    0x1(%esi),%edx
405103:	8b cf                	mov    %edi,%ecx
405105:	e8 96 a2 00 00       	call   0x40f3a0
40510a:	0f b7 17             	movzwl (%edi),%edx
40510d:	66 85 d2             	test   %dx,%dx
405110:	0f 85 a1 41 01 00    	jne    0x4192b7
405116:	8b 0d f8 8d 44 00    	mov    0x448df8,%ecx
40511c:	be f0 8b 44 00       	mov    $0x448bf0,%esi
405121:	85 c9                	test   %ecx,%ecx
405123:	74 58                	je     0x40517d
405125:	8b 15 00 8e 44 00    	mov    0x448e00,%edx
40512b:	33 c0                	xor    %eax,%eax
40512d:	50                   	push   %eax
40512e:	e8 6b 3d 00 00       	call   0x408e9e
405133:	a1 f8 8d 44 00       	mov    0x448df8,%eax
405138:	85 c0                	test   %eax,%eax
40513a:	74 45                	je     0x405181
40513c:	50                   	push   %eax
40513d:	68 80 22 40 00       	push   $0x402280
405142:	e8 09 48 00 00       	call   0x409950
405147:	33 c0                	xor    %eax,%eax
405149:	59                   	pop    %ecx
40514a:	59                   	pop    %ecx
40514b:	a3 dc 65 43 00       	mov    %eax,0x4365dc
405150:	8b f0                	mov    %eax,%esi
405152:	8b 45 e8             	mov    -0x18(%ebp),%eax
405155:	33 c9                	xor    %ecx,%ecx
405157:	89 4d e8             	mov    %ecx,-0x18(%ebp)
40515a:	85 c0                	test   %eax,%eax
40515c:	74 08                	je     0x405166
40515e:	50                   	push   %eax
40515f:	ff 15 e0 a3 44 00    	call   *0x44a3e0
405165:	59                   	pop    %ecx
405166:	8b 4d fc             	mov    -0x4(%ebp),%ecx
405169:	8b c6                	mov    %esi,%eax
40516b:	5f                   	pop    %edi
40516c:	33 cd                	xor    %ebp,%ecx
40516e:	5e                   	pop    %esi
40516f:	e8 bc 19 01 00       	call   0x416b30
405174:	8b e5                	mov    %ebp,%esp
405176:	5d                   	pop    %ebp
405177:	8b e3                	mov    %ebx,%esp
405179:	5b                   	pop    %ebx
40517a:	c2 04 00             	ret    $0x4
40517d:	8b ce                	mov    %esi,%ecx
40517f:	eb a4                	jmp    0x405125
405181:	8b c6                	mov    %esi,%eax
405183:	eb b7                	jmp    0x40513c
405185:	8b b5 dc fd ff ff    	mov    -0x224(%ebp),%esi
40518b:	eb c5                	jmp    0x405152
40518d:	cc                   	int3
40518e:	cc                   	int3
40518f:	cc                   	int3
405190:	8b ff                	mov    %edi,%edi
405192:	55                   	push   %ebp
405193:	8b ec                	mov    %esp,%ebp
405195:	81 ec 48 04 00 00    	sub    $0x448,%esp
40519b:	a1 b4 e0 42 00       	mov    0x42e0b4,%eax
4051a0:	33 c5                	xor    %ebp,%eax
4051a2:	89 45 fc             	mov    %eax,-0x4(%ebp)
4051a5:	8b 45 08             	mov    0x8(%ebp),%eax
4051a8:	53                   	push   %ebx
4051a9:	56                   	push   %esi
4051aa:	57                   	push   %edi
4051ab:	33 f6                	xor    %esi,%esi
4051ad:	89 85 c0 fb ff ff    	mov    %eax,-0x440(%ebp)
4051b3:	56                   	push   %esi
4051b4:	68 70 0a 44 00       	push   $0x440a70
4051b9:	e8 f3 2d 01 00       	call   0x417fb1
4051be:	33 db                	xor    %ebx,%ebx
4051c0:	59                   	pop    %ecx
4051c1:	43                   	inc    %ebx
4051c2:	59                   	pop    %ecx
4051c3:	85 c0                	test   %eax,%eax
4051c5:	0f 85 62 41 01 00    	jne    0x41932d
4051cb:	39 35 58 67 43 00    	cmp    %esi,0x436758
4051d1:	0f 84 61 41 01 00    	je     0x419338
4051d7:	8b c6                	mov    %esi,%eax
4051d9:	bf 04 01 00 00       	mov    $0x104,%edi
4051de:	89 85 c4 fb ff ff    	mov    %eax,-0x43c(%ebp)
4051e4:	57                   	push   %edi
4051e5:	8d 85 c8 fb ff ff    	lea    -0x438(%ebp),%eax
4051eb:	89 b5 d0 fd ff ff    	mov    %esi,-0x230(%ebp)
4051f1:	56                   	push   %esi
4051f2:	50                   	push   %eax
4051f3:	88 9d d4 fd ff ff    	mov    %bl,-0x22c(%ebp)
4051f9:	89 bd d8 fd ff ff    	mov    %edi,-0x228(%ebp)
4051ff:	e8 b9 2d 01 00       	call   0x417fbd
405204:	83 c4 0c             	add    $0xc,%esp
405207:	89 75 e8             	mov    %esi,-0x18(%ebp)
40520a:	8d 85 e0 fd ff ff    	lea    -0x220(%ebp),%eax
405210:	88 5d ec             	mov    %bl,-0x14(%ebp)
405213:	89 7d f0             	mov    %edi,-0x10(%ebp)
405216:	57                   	push   %edi
405217:	56                   	push   %esi
405218:	50                   	push   %eax
405219:	e8 9f 2d 01 00       	call   0x417fbd
40521e:	33 c0                	xor    %eax,%eax
405220:	8d 8d c8 fb ff ff    	lea    -0x438(%ebp),%ecx
405226:	83 c4 0c             	add    $0xc,%esp
405229:	38 85 d4 fd ff ff    	cmp    %al,-0x22c(%ebp)
40522f:	0f 94 c0             	sete   %al
405232:	48                   	dec    %eax
405233:	25 e3 7e 00 00       	and    $0x7ee3,%eax
405238:	03 c7                	add    %edi,%eax
40523a:	50                   	push   %eax
40523b:	e8 b0 91 00 00       	call   0x40e3f0
405240:	85 c0                	test   %eax,%eax
405242:	0f 88 93 00 00 00    	js     0x4052db
405248:	33 c0                	xor    %eax,%eax
40524a:	8d 8d e0 fd ff ff    	lea    -0x220(%ebp),%ecx
405250:	38 45 ec             	cmp    %al,-0x14(%ebp)
405253:	0f 94 c0             	sete   %al
405256:	48                   	dec    %eax
405257:	25 e3 7e 00 00       	and    $0x7ee3,%eax
40525c:	03 c7                	add    %edi,%eax
40525e:	50                   	push   %eax
40525f:	e8 8c 91 00 00       	call   0x40e3f0
405264:	85 c0                	test   %eax,%eax
405266:	78 73                	js     0x4052db
405268:	8b 45 e8             	mov    -0x18(%ebp),%eax
40526b:	85 c0                	test   %eax,%eax
40526d:	0f 84 e4 40 01 00    	je     0x419357
405273:	8b 8d d0 fd ff ff    	mov    -0x230(%ebp),%ecx
405279:	85 c9                	test   %ecx,%ecx
40527b:	0f 84 e1 40 01 00    	je     0x419362
405281:	8d 95 bc fb ff ff    	lea    -0x444(%ebp),%edx
405287:	52                   	push   %edx
405288:	8d 95 b8 fb ff ff    	lea    -0x448(%ebp),%edx
40528e:	52                   	push   %edx
40528f:	ff 75 f0             	push   -0x10(%ebp)
405292:	8d 95 c4 fb ff ff    	lea    -0x43c(%ebp),%edx
405298:	50                   	push   %eax
405299:	ff b5 d8 fd ff ff    	push   -0x228(%ebp)
40529f:	51                   	push   %ecx
4052a0:	8b 8d c0 fb ff ff    	mov    -0x440(%ebp),%ecx
4052a6:	e8 ca f5 00 00       	call   0x414875
4052ab:	8b d8                	mov    %eax,%ebx
4052ad:	85 db                	test   %ebx,%ebx
4052af:	75 2a                	jne    0x4052db
4052b1:	8b 55 e8             	mov    -0x18(%ebp),%edx
4052b4:	85 d2                	test   %edx,%edx
4052b6:	74 66                	je     0x40531e
4052b8:	8b 8d d0 fd ff ff    	mov    -0x230(%ebp),%ecx
4052be:	85 c9                	test   %ecx,%ecx
4052c0:	74 64                	je     0x405326
4052c2:	ff b5 bc fb ff ff    	push   -0x444(%ebp)
4052c8:	ff b5 b8 fb ff ff    	push   -0x448(%ebp)
4052ce:	ff b5 c4 fb ff ff    	push   -0x43c(%ebp)
4052d4:	e8 31 01 00 00       	call   0x40540a
4052d9:	8b d8                	mov    %eax,%ebx
4052db:	8b 45 e8             	mov    -0x18(%ebp),%eax
4052de:	89 1d dc 65 43 00    	mov    %ebx,0x4365dc
4052e4:	89 75 e8             	mov    %esi,-0x18(%ebp)
4052e7:	85 c0                	test   %eax,%eax
4052e9:	74 08                	je     0x4052f3
4052eb:	50                   	push   %eax
4052ec:	ff 15 e0 a3 44 00    	call   *0x44a3e0
4052f2:	59                   	pop    %ecx
4052f3:	8b 85 d0 fd ff ff    	mov    -0x230(%ebp),%eax
4052f9:	89 b5 d0 fd ff ff    	mov    %esi,-0x230(%ebp)
4052ff:	85 c0                	test   %eax,%eax
405301:	74 08                	je     0x40530b
405303:	50                   	push   %eax
405304:	ff 15 e0 a3 44 00    	call   *0x44a3e0
40530a:	59                   	pop    %ecx
40530b:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40530e:	8b c3                	mov    %ebx,%eax
405310:	5f                   	pop    %edi
405311:	5e                   	pop    %esi
405312:	33 cd                	xor    %ebp,%ecx
405314:	5b                   	pop    %ebx
405315:	e8 16 18 01 00       	call   0x416b30
40531a:	c9                   	leave
40531b:	c2 04 00             	ret    $0x4
40531e:	8d 95 e0 fd ff ff    	lea    -0x220(%ebp),%edx
405324:	eb 92                	jmp    0x4052b8
405326:	8d 8d c8 fb ff ff    	lea    -0x438(%ebp),%ecx
40532c:	eb 94                	jmp    0x4052c2
40532e:	8b ff                	mov    %edi,%edi
405330:	55                   	push   %ebp
405331:	8b ec                	mov    %esp,%ebp
405333:	81 ec 88 04 00 00    	sub    $0x488,%esp
405339:	a1 b4 e0 42 00       	mov    0x42e0b4,%eax
40533e:	33 c5                	xor    %ebp,%eax
405340:	89 45 f8             	mov    %eax,-0x8(%ebp)
405343:	8b 45 08             	mov    0x8(%ebp),%eax
405346:	53                   	push   %ebx
405347:	8b d9                	mov    %ecx,%ebx
405349:	89 85 84 fb ff ff    	mov    %eax,-0x47c(%ebp)
40534f:	56                   	push   %esi
405350:	8b f3                	mov    %ebx,%esi
405352:	33 c9                	xor    %ecx,%ecx
405354:	57                   	push   %edi
405355:	89 8d 88 fb ff ff    	mov    %ecx,-0x478(%ebp)
40535b:	8d 7e 02             	lea    0x2(%esi),%edi
40535e:	66 8b 06             	mov    (%esi),%ax
405361:	83 c6 02             	add    $0x2,%esi
405364:	66 3b c1             	cmp    %cx,%ax
405367:	75 f5                	jne    0x40535e
405369:	2b f7                	sub    %edi,%esi
40536b:	d1 fe                	sar    $1,%esi
40536d:	8d 46 02             	lea    0x2(%esi),%eax
405370:	3b c2                	cmp    %edx,%eax
405372:	77 53                	ja     0x4053c7
405374:	8b cb                	mov    %ebx,%ecx
405376:	33 ff                	xor    %edi,%edi
405378:	8d 51 02             	lea    0x2(%ecx),%edx
40537b:	66 8b 01             	mov    (%ecx),%ax
40537e:	83 c1 02             	add    $0x2,%ecx
405381:	66 3b c7             	cmp    %di,%ax
405384:	75 f5                	jne    0x40537b
405386:	8b b5 84 fb ff ff    	mov    -0x47c(%ebp),%esi
40538c:	2b ca                	sub    %edx,%ecx
40538e:	d1 f9                	sar    $1,%ecx
405390:	53                   	push   %ebx
405391:	8d 41 fe             	lea    -0x2(%ecx),%eax
405394:	89 85 78 fb ff ff    	mov    %eax,-0x488(%ebp)
40539a:	89 06                	mov    %eax,(%esi)
40539c:	ff 15 98 a0 44 00    	call   *0x44a098
4053a2:	83 f8 ff             	cmp    $0xffffffff,%eax
4053a5:	0f 84 c2 3f 01 00    	je     0x41936d
4053ab:	a8 10                	test   $0x10,%al
4053ad:	0f 85 d2 3f 01 00    	jne    0x419385
4053b3:	33 c0                	xor    %eax,%eax
4053b5:	40                   	inc    %eax
4053b6:	8b 4d f8             	mov    -0x8(%ebp),%ecx
4053b9:	5f                   	pop    %edi
4053ba:	5e                   	pop    %esi
4053bb:	33 cd                	xor    %ebp,%ecx
4053bd:	5b                   	pop    %ebx
4053be:	e8 6d 17 01 00       	call   0x416b30
4053c3:	c9                   	leave
4053c4:	c2 04 00             	ret    $0x4
4053c7:	33 c0                	xor    %eax,%eax
4053c9:	eb eb                	jmp    0x4053b6
4053cb:	8b ff                	mov    %edi,%edi
4053cd:	55                   	push   %ebp
4053ce:	8b ec                	mov    %esp,%ebp
4053d0:	51                   	push   %ecx
4053d1:	53                   	push   %ebx
4053d2:	56                   	push   %esi
4053d3:	8b 75 08             	mov    0x8(%ebp),%esi
4053d6:	8b da                	mov    %edx,%ebx
4053d8:	57                   	push   %edi
4053d9:	8b 7d 0c             	mov    0xc(%ebp),%edi
4053dc:	8b c1                	mov    %ecx,%eax
4053de:	89 45 fc             	mov    %eax,-0x4(%ebp)
4053e1:	8b 36                	mov    (%esi),%esi
4053e3:	f7 de                	neg    %esi
4053e5:	1b f6                	sbb    %esi,%esi
4053e7:	83 27 00             	andl   $0x0,(%edi)
4053ea:	83 c6 03             	add    $0x3,%esi
4053ed:	56                   	push   %esi
4053ee:	53                   	push   %ebx
4053ef:	50                   	push   %eax
4053f0:	ff 15 0c a1 44 00    	call   *0x44a10c
4053f6:	85 c0                	test   %eax,%eax
4053f8:	0f 84 20 42 01 00    	je     0x41961e
4053fe:	33 c0                	xor    %eax,%eax
405400:	40                   	inc    %eax
405401:	89 07                	mov    %eax,(%edi)
405403:	5f                   	pop    %edi
405404:	5e                   	pop    %esi
405405:	5b                   	pop    %ebx
405406:	c9                   	leave
405407:	c2 08 00             	ret    $0x8
40540a:	8b ff                	mov    %edi,%edi
40540c:	55                   	push   %ebp
40540d:	8b ec                	mov    %esp,%ebp
40540f:	83 e4 f8             	and    $0xfffffff8,%esp
405412:	81 ec 8c 06 00 00    	sub    $0x68c,%esp
405418:	a1 b4 e0 42 00       	mov    0x42e0b4,%eax
40541d:	33 c4                	xor    %esp,%eax
40541f:	89 84 24 88 06 00 00 	mov    %eax,0x688(%esp)
405426:	8b 45 0c             	mov    0xc(%ebp),%eax
405429:	53                   	push   %ebx
40542a:	56                   	push   %esi
40542b:	57                   	push   %edi
40542c:	be 04 01 00 00       	mov    $0x104,%esi
405431:	89 44 24 18          	mov    %eax,0x18(%esp)
405435:	33 db                	xor    %ebx,%ebx
405437:	89 54 24 28          	mov    %edx,0x28(%esp)
40543b:	56                   	push   %esi
40543c:	8d 84 24 5c 02 00 00 	lea    0x25c(%esp),%eax
405443:	89 5c 24 30          	mov    %ebx,0x30(%esp)
405447:	53                   	push   %ebx
405448:	50                   	push   %eax
405449:	8b f9                	mov    %ecx,%edi
40544b:	89 9c 24 6c 04 00 00 	mov    %ebx,0x46c(%esp)
405452:	c6 84 24 70 04 00 00 	movb   $0x1,0x470(%esp)
405459:	01
40545a:	89 b4 24 74 04 00 00 	mov    %esi,0x474(%esp)
405461:	e8 57 2b 01 00       	call   0x417fbd
405466:	83 c4 0c             	add    $0xc,%esp
405469:	89 9c 24 48 02 00 00 	mov    %ebx,0x248(%esp)
405470:	8d 44 24 40          	lea    0x40(%esp),%eax
405474:	c6 84 24 4c 02 00 00 	movb   $0x1,0x24c(%esp)
40547b:	01
40547c:	89 b4 24 50 02 00 00 	mov    %esi,0x250(%esp)
405483:	56                   	push   %esi
405484:	53                   	push   %ebx
405485:	50                   	push   %eax
405486:	e8 32 2b 01 00       	call   0x417fbd
40548b:	33 c0                	xor    %eax,%eax