405158:	33 db                	xor    %ebx,%ebx
40515a:	8b ce                	mov    %esi,%ecx
40515c:	89 5e 34             	mov    %ebx,0x34(%esi)
40515f:	e8 cc 12 00 00       	call   0x406430
405164:	33 db                	xor    %ebx,%ebx
405166:	c7 06 14 97 43 00    	movl   $0x439714,(%esi)
40516c:	8b ce                	mov    %esi,%ecx
40516e:	88 5e 48             	mov    %bl,0x48(%esi)
405171:	88 5e 3d             	mov    %bl,0x3d(%esi)
405174:	e8 b7 12 00 00       	call   0x406430
405179:	a1 a4 ff 43 00       	mov    0x43ffa4,%eax
40517e:	8b 0d a8 ff 43 00    	mov    0x43ffa8,%ecx
405184:	89 46 40             	mov    %eax,0x40(%esi)
405187:	8b c7                	mov    %edi,%eax
405189:	5f                   	pop    %edi
40518a:	89 5e 4c             	mov    %ebx,0x4c(%esi)
40518d:	89 5e 38             	mov    %ebx,0x38(%esi)
405190:	89 4e 44             	mov    %ecx,0x44(%esi)
405193:	5e                   	pop    %esi
405194:	5b                   	pop    %ebx
405195:	59                   	pop    %ecx
405196:	c2 04 00             	ret    $0x4
405199:	56                   	push   %esi
40519a:	57                   	push   %edi
40519b:	ff 74 24 0c          	push   0xc(%esp)
40519f:	8b f1                	mov    %ecx,%esi
4051a1:	e8 5c 15 00 00       	call   0x406702
4051a6:	8b f8                	mov    %eax,%edi
4051a8:	59                   	pop    %ecx
4051a9:	8b cf                	mov    %edi,%ecx
4051ab:	8b 17                	mov    (%edi),%edx
4051ad:	ff 52 0c             	call   *0xc(%edx)
4051b0:	84 c0                	test   %al,%al
4051b2:	74 06                	je     0x4051ba
4051b4:	83 66 38 00          	andl   $0x0,0x38(%esi)
4051b8:	eb 0a                	jmp    0x4051c4
4051ba:	8b ce                	mov    %esi,%ecx
4051bc:	89 7e 38             	mov    %edi,0x38(%esi)
4051bf:	e8 6c 12 00 00       	call   0x406430
4051c4:	5f                   	pop    %edi
4051c5:	5e                   	pop    %esi
4051c6:	c2 04 00             	ret    $0x4
4051c9:	56                   	push   %esi
4051ca:	57                   	push   %edi
4051cb:	8b f9                	mov    %ecx,%edi
4051cd:	83 7f 4c 00          	cmpl   $0x0,0x4c(%edi)
4051d1:	74 1a                	je     0x4051ed
4051d3:	8b 07                	mov    (%edi),%eax
4051d5:	83 ce ff             	or     $0xffffffff,%esi
4051d8:	56                   	push   %esi
4051d9:	ff 50 0c             	call   *0xc(%eax)
4051dc:	3b c6                	cmp    %esi,%eax
4051de:	74 0d                	je     0x4051ed
4051e0:	ff 77 4c             	push   0x4c(%edi)
4051e3:	e8 93 ad 01 00       	call   0x41ff7b
4051e8:	59                   	pop    %ecx
4051e9:	85 c0                	test   %eax,%eax
4051eb:	78 02                	js     0x4051ef
4051ed:	33 f6                	xor    %esi,%esi
4051ef:	5f                   	pop    %edi
4051f0:	8b c6                	mov    %esi,%eax
4051f2:	5e                   	pop    %esi
4051f3:	c3                   	ret
4051f4:	55                   	push   %ebp
4051f5:	8b ec                	mov    %esp,%ebp
4051f7:	56                   	push   %esi
4051f8:	8b f1                	mov    %ecx,%esi
4051fa:	83 7e 4c 00          	cmpl   $0x0,0x4c(%esi)
4051fe:	74 3b                	je     0x40523b
405200:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
405204:	75 0d                	jne    0x405213
405206:	8b 45 0c             	mov    0xc(%ebp),%eax
405209:	0b 45 10             	or     0x10(%ebp),%eax
40520c:	75 05                	jne    0x405213
40520e:	6a 04                	push   $0x4
405210:	58                   	pop    %eax
405211:	eb 02                	jmp    0x405215
405213:	33 c0                	xor    %eax,%eax
405215:	ff 75 0c             	push   0xc(%ebp)
405218:	50                   	push   %eax
405219:	ff 75 08             	push   0x8(%ebp)
40521c:	ff 76 4c             	push   0x4c(%esi)
40521f:	e8 4c a4 02 00       	call   0x42f670
405224:	83 c4 10             	add    $0x10,%esp
405227:	85 c0                	test   %eax,%eax
405229:	75 10                	jne    0x40523b
40522b:	6a 01                	push   $0x1
40522d:	ff 76 4c             	push   0x4c(%esi)
405230:	8b ce                	mov    %esi,%ecx
405232:	e8 ab 0f 00 00       	call   0x4061e2
405237:	8b c6                	mov    %esi,%eax
405239:	eb 02                	jmp    0x40523d
40523b:	33 c0                	xor    %eax,%eax
40523d:	5e                   	pop    %esi
40523e:	5d                   	pop    %ebp
40523f:	c2 0c 00             	ret    $0xc
405242:	55                   	push   %ebp
405243:	8b ec                	mov    %esp,%ebp
405245:	83 e4 f8             	and    $0xfffffff8,%esp
405248:	83 ec 0c             	sub    $0xc,%esp
40524b:	8b 45 14             	mov    0x14(%ebp),%eax
40524e:	8b 55 18             	mov    0x18(%ebp),%edx
405251:	53                   	push   %ebx
405252:	8b 5d 10             	mov    0x10(%ebp),%ebx
405255:	56                   	push   %esi
405256:	8b 75 0c             	mov    0xc(%ebp),%esi
405259:	57                   	push   %edi
40525a:	8b f9                	mov    %ecx,%edi
40525c:	89 44 24 10          	mov    %eax,0x10(%esp)
405260:	89 54 24 14          	mov    %edx,0x14(%esp)
405264:	83 7f 4c 00          	cmpl   $0x0,0x4c(%edi)
405268:	0f 84 81 00 00 00    	je     0x4052ef
40526e:	e8 53 0e 00 00       	call   0x4060c6
405273:	84 c0                	test   %al,%al
405275:	74 78                	je     0x4052ef
405277:	8d 44 24 10          	lea    0x10(%esp),%eax
40527b:	50                   	push   %eax
40527c:	ff 77 4c             	push   0x4c(%edi)
40527f:	e8 26 a4 02 00       	call   0x42f6aa
405284:	59                   	pop    %ecx
405285:	59                   	pop    %ecx
405286:	85 c0                	test   %eax,%eax
405288:	75 65                	jne    0x4052ef
40528a:	8b c6                	mov    %esi,%eax
40528c:	0b c3                	or     %ebx,%eax
40528e:	74 13                	je     0x4052a3
405290:	6a 01                	push   $0x1
405292:	53                   	push   %ebx
405293:	56                   	push   %esi
405294:	ff 77 4c             	push   0x4c(%edi)
405297:	e8 31 3a 01 00       	call   0x418ccd
40529c:	83 c4 10             	add    $0x10,%esp
40529f:	85 c0                	test   %eax,%eax
4052a1:	75 4c                	jne    0x4052ef
4052a3:	8d 44 24 10          	lea    0x10(%esp),%eax
4052a7:	50                   	push   %eax
4052a8:	ff 77 4c             	push   0x4c(%edi)
4052ab:	e8 a1 a1 02 00       	call   0x42f451
4052b0:	59                   	pop    %ecx
4052b1:	59                   	pop    %ecx
4052b2:	85 c0                	test   %eax,%eax
4052b4:	75 39                	jne    0x4052ef
4052b6:	8b 4d 20             	mov    0x20(%ebp),%ecx
4052b9:	8b 45 1c             	mov    0x1c(%ebp),%eax
4052bc:	89 4f 44             	mov    %ecx,0x44(%edi)
4052bf:	8b cf                	mov    %edi,%ecx
4052c1:	89 47 40             	mov    %eax,0x40(%edi)
4052c4:	e8 da 0d 00 00       	call   0x4060a3
4052c9:	8b 45 08             	mov    0x8(%ebp),%eax
4052cc:	8b 77 40             	mov    0x40(%edi),%esi
4052cf:	8b 7f 44             	mov    0x44(%edi),%edi
4052d2:	8b 4c 24 10          	mov    0x10(%esp),%ecx
4052d6:	83 20 00             	andl   $0x0,(%eax)
4052d9:	8b 54 24 14          	mov    0x14(%esp),%edx
4052dd:	83 60 04 00          	andl   $0x0,0x4(%eax)
4052e1:	89 48 08             	mov    %ecx,0x8(%eax)
4052e4:	89 50 0c             	mov    %edx,0xc(%eax)
4052e7:	89 70 10             	mov    %esi,0x10(%eax)
4052ea:	89 78 14             	mov    %edi,0x14(%eax)
4052ed:	eb 0c                	jmp    0x4052fb
4052ef:	51                   	push   %ecx
4052f0:	51                   	push   %ecx
4052f1:	8b 4d 08             	mov    0x8(%ebp),%ecx
4052f4:	e8 e2 0f 00 00       	call   0x4062db
4052f9:	8b c1                	mov    %ecx,%eax
4052fb:	5f                   	pop    %edi
4052fc:	5e                   	pop    %esi
4052fd:	5b                   	pop    %ebx
4052fe:	8b e5                	mov    %ebp,%esp
405300:	5d                   	pop    %ebp
405301:	c2 20 00             	ret    $0x20
405304:	55                   	push   %ebp
405305:	8b ec                	mov    %esp,%ebp
405307:	83 e4 f8             	and    $0xfffffff8,%esp
40530a:	83 ec 0c             	sub    $0xc,%esp
40530d:	53                   	push   %ebx
40530e:	56                   	push   %esi
40530f:	57                   	push   %edi
405310:	8b f9                	mov    %ecx,%edi
405312:	8b 57 1c             	mov    0x1c(%edi),%edx
405315:	8d 47 3c             	lea    0x3c(%edi),%eax
405318:	39 02                	cmp    %eax,(%edx)
40531a:	75 1a                	jne    0x405336
40531c:	83 7d 14 01          	cmpl   $0x1,0x14(%ebp)
405320:	75 14                	jne    0x405336
405322:	83 7f 38 00          	cmpl   $0x0,0x38(%edi)
405326:	75 0e                	jne    0x405336
405328:	8b 75 0c             	mov    0xc(%ebp),%esi
40532b:	8b 5d 10             	mov    0x10(%ebp),%ebx
40532e:	83 c6 ff             	add    $0xffffffff,%esi
405331:	83 d3 ff             	adc    $0xffffffff,%ebx
405334:	eb 06                	jmp    0x40533c
405336:	8b 5d 10             	mov    0x10(%ebp),%ebx
405339:	8b 75 0c             	mov    0xc(%ebp),%esi
40533c:	83 7f 4c 00          	cmpl   $0x0,0x4c(%edi)
405340:	74 69                	je     0x4053ab
405342:	e8 7f 0d 00 00       	call   0x4060c6
405347:	84 c0                	test   %al,%al
405349:	74 60                	je     0x4053ab
40534b:	8b c6                	mov    %esi,%eax
40534d:	0b c3                	or     %ebx,%eax
40534f:	75 06                	jne    0x405357
405351:	83 7d 14 01          	cmpl   $0x1,0x14(%ebp)
405355:	74 14                	je     0x40536b
405357:	ff 75 14             	push   0x14(%ebp)
40535a:	53                   	push   %ebx
40535b:	56                   	push   %esi
40535c:	ff 77 4c             	push   0x4c(%edi)
40535f:	e8 69 39 01 00       	call   0x418ccd
405364:	83 c4 10             	add    $0x10,%esp
405367:	85 c0                	test   %eax,%eax
405369:	75 40                	jne    0x4053ab
40536b:	8d 44 24 10          	lea    0x10(%esp),%eax
40536f:	50                   	push   %eax
405370:	ff 77 4c             	push   0x4c(%edi)
405373:	e8 d9 a0 02 00       	call   0x42f451
405378:	59                   	pop    %ecx
405379:	59                   	pop    %ecx
40537a:	85 c0                	test   %eax,%eax
40537c:	75 2d                	jne    0x4053ab
40537e:	8b cf                	mov    %edi,%ecx
405380:	e8 1e 0d 00 00       	call   0x4060a3
405385:	8b 45 08             	mov    0x8(%ebp),%eax
405388:	8b 77 40             	mov    0x40(%edi),%esi
40538b:	8b 7f 44             	mov    0x44(%edi),%edi
40538e:	8b 4c 24 10          	mov    0x10(%esp),%ecx
405392:	83 20 00             	andl   $0x0,(%eax)
405395:	8b 54 24 14          	mov    0x14(%esp),%edx
405399:	83 60 04 00          	andl   $0x0,0x4(%eax)
40539d:	89 48 08             	mov    %ecx,0x8(%eax)
4053a0:	89 50 0c             	mov    %edx,0xc(%eax)
4053a3:	89 70 10             	mov    %esi,0x10(%eax)
4053a6:	89 78 14             	mov    %edi,0x14(%eax)
4053a9:	eb 0c                	jmp    0x4053b7
4053ab:	51                   	push   %ecx
4053ac:	51                   	push   %ecx
4053ad:	8b 4d 08             	mov    0x8(%ebp),%ecx
4053b0:	e8 26 0f 00 00       	call   0x4062db
4053b5:	8b c1                	mov    %ecx,%eax
4053b7:	5f                   	pop    %edi
4053b8:	5e                   	pop    %esi
4053b9:	5b                   	pop    %ebx
4053ba:	8b e5                	mov    %ebp,%esp
4053bc:	5d                   	pop    %ebp
4053bd:	c2 14 00             	ret    $0x14
4053c0:	55                   	push   %ebp
4053c1:	8b ec                	mov    %esp,%ebp
4053c3:	83 e4 f8             	and    $0xfffffff8,%esp
4053c6:	83 ec 2c             	sub    $0x2c,%esp
4053c9:	a1 c0 d0 43 00       	mov    0x43d0c0,%eax
4053ce:	33 c4                	xor    %esp,%eax
4053d0:	89 44 24 28          	mov    %eax,0x28(%esp)
4053d4:	53                   	push   %ebx
4053d5:	8b d9                	mov    %ecx,%ebx
4053d7:	56                   	push   %esi
4053d8:	57                   	push   %edi
4053d9:	8b 43 1c             	mov    0x1c(%ebx),%eax
4053dc:	8b 08                	mov    (%eax),%ecx
4053de:	85 c9                	test   %ecx,%ecx
4053e0:	74 23                	je     0x405405
4053e2:	8b 53 2c             	mov    0x2c(%ebx),%edx
4053e5:	8b 32                	mov    (%edx),%esi
4053e7:	8d 04 0e             	lea    (%esi,%ecx,1),%eax
4053ea:	3b c8                	cmp    %eax,%ecx
4053ec:	73 17                	jae    0x405405
4053ee:	8d 46 ff             	lea    -0x1(%esi),%eax
4053f1:	89 02                	mov    %eax,(%edx)
4053f3:	8b 4b 1c             	mov    0x1c(%ebx),%ecx
4053f6:	8b 11                	mov    (%ecx),%edx
4053f8:	8d 42 01             	lea    0x1(%edx),%eax
4053fb:	89 01                	mov    %eax,(%ecx)
4053fd:	0f b6 02             	movzbl (%edx),%eax
405400:	e9 81 01 00 00       	jmp    0x405586
405405:	83 7b 4c 00          	cmpl   $0x0,0x4c(%ebx)
405409:	75 08                	jne    0x405413
40540b:	83 c8 ff             	or     $0xffffffff,%eax
40540e:	e9 73 01 00 00       	jmp    0x405586
405413:	8b cb                	mov    %ebx,%ecx
405415:	e8 89 0c 00 00       	call   0x4060a3
40541a:	8b 43 4c             	mov    0x4c(%ebx),%eax
40541d:	33 c9                	xor    %ecx,%ecx
40541f:	50                   	push   %eax
405420:	39 4b 38             	cmp    %ecx,0x38(%ebx)
405423:	75 19                	jne    0x40543e
405425:	e8 eb ab 01 00       	call   0x420015
40542a:	83 cf ff             	or     $0xffffffff,%edi
40542d:	59                   	pop    %ecx
40542e:	3b c7                	cmp    %edi,%eax
405430:	0f 84 4e 01 00 00    	je     0x405584
405436:	0f b6 f8             	movzbl %al,%edi
405439:	e9 46 01 00 00       	jmp    0x405584
40543e:	c7 44 24 34 0f 00 00 	movl   $0xf,0x34(%esp)
405445:	00
405446:	89 4c 24 30          	mov    %ecx,0x30(%esp)
40544a:	88 4c 24 20          	mov    %cl,0x20(%esp)
40544e:	e8 c2 ab 01 00       	call   0x420015
405453:	83 cf ff             	or     $0xffffffff,%edi
405456:	e9 c5 00 00 00       	jmp    0x405520
40545b:	50                   	push   %eax
40545c:	6a 01                	push   $0x1
40545e:	8d 4c 24 24          	lea    0x24(%esp),%ecx
405462:	e8 4f 0b 00 00       	call   0x405fb6
405467:	83 7c 24 30 10       	cmpl   $0x10,0x30(%esp)
40546c:	8d 4c 24 1c          	lea    0x1c(%esp),%ecx
405470:	8b 44 24 2c          	mov    0x2c(%esp),%eax
405474:	8d 74 24 1c          	lea    0x1c(%esp),%esi
405478:	0f 43 4c 24 1c       	cmovae 0x1c(%esp),%ecx
40547d:	0f 43 74 24 1c       	cmovae 0x1c(%esp),%esi
405482:	03 c1                	add    %ecx,%eax
405484:	8b 4b 38             	mov    0x38(%ebx),%ecx
405487:	8b 11                	mov    (%ecx),%edx
405489:	8d 4c 24 18          	lea    0x18(%esp),%ecx
40548d:	51                   	push   %ecx
40548e:	8d 4c 24 18          	lea    0x18(%esp),%ecx
405492:	51                   	push   %ecx
405493:	8d 4c 24 1b          	lea    0x1b(%esp),%ecx
405497:	51                   	push   %ecx
405498:	8d 4c 24 20          	lea    0x20(%esp),%ecx
40549c:	51                   	push   %ecx
40549d:	8b 4b 38             	mov    0x38(%ebx),%ecx
4054a0:	50                   	push   %eax
4054a1:	56                   	push   %esi
4054a2:	8d 43 40             	lea    0x40(%ebx),%eax
4054a5:	50                   	push   %eax
4054a6:	ff 52 18             	call   *0x18(%edx)
4054a9:	85 c0                	test   %eax,%eax
4054ab:	0f 88 c6 00 00 00    	js     0x405577
4054b1:	83 f8 01             	cmp    $0x1,%eax
4054b4:	7e 39                	jle    0x4054ef
4054b6:	83 f8 03             	cmp    $0x3,%eax
4054b9:	0f 85 b8 00 00 00    	jne    0x405577
4054bf:	83 7c 24 2c 01       	cmpl   $0x1,0x2c(%esp)
4054c4:	72 52                	jb     0x405518
4054c6:	83 7c 24 30 10       	cmpl   $0x10,0x30(%esp)
4054cb:	72 5e                	jb     0x40552b
4054cd:	8b 44 24 1c          	mov    0x1c(%esp),%eax
4054d1:	85 c0                	test   %eax,%eax
4054d3:	75 5a                	jne    0x40552f
4054d5:	88 44 24 13          	mov    %al,0x13(%esp)
4054d9:	e8 93 71 01 00       	call   0x41c671
4054de:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4054e4:	e8 05 7f 00 00       	call   0x40d3ee
4054e9:	8a 44 24 13          	mov    0x13(%esp),%al
4054ed:	eb 46                	jmp    0x405535
4054ef:	8d 44 24 13          	lea    0x13(%esp),%eax
4054f3:	39 44 24 18          	cmp    %eax,0x18(%esp)
4054f7:	75 41                	jne    0x40553a
4054f9:	83 7c 24 30 10       	cmpl   $0x10,0x30(%esp)
4054fe:	8d 4c 24 1c          	lea    0x1c(%esp),%ecx
405502:	8b 44 24 14          	mov    0x14(%esp),%eax