405154:	53                   	push   %ebx
405155:	85 c0                	test   %eax,%eax
405157:	74 52                	je     0x4051ab
405159:	8b 54 24 08          	mov    0x8(%esp),%edx
40515d:	33 db                	xor    %ebx,%ebx
40515f:	8a 5c 24 0c          	mov    0xc(%esp),%bl
405163:	f7 c2 03 00 00 00    	test   $0x3,%edx
405169:	74 16                	je     0x405181
40516b:	8a 0a                	mov    (%edx),%cl
40516d:	83 c2 01             	add    $0x1,%edx
405170:	32 cb                	xor    %bl,%cl
405172:	74 72                	je     0x4051e6
405174:	83 e8 01             	sub    $0x1,%eax
405177:	74 32                	je     0x4051ab
405179:	f7 c2 03 00 00 00    	test   $0x3,%edx
40517f:	75 ea                	jne    0x40516b
405181:	83 e8 04             	sub    $0x4,%eax
405184:	72 12                	jb     0x405198
405186:	57                   	push   %edi
405187:	8b fb                	mov    %ebx,%edi
405189:	c1 e3 08             	shl    $0x8,%ebx
40518c:	03 df                	add    %edi,%ebx
40518e:	8b fb                	mov    %ebx,%edi
405190:	c1 e3 10             	shl    $0x10,%ebx
405193:	03 df                	add    %edi,%ebx
405195:	eb 1b                	jmp    0x4051b2
405197:	5f                   	pop    %edi
405198:	83 c0 04             	add    $0x4,%eax
40519b:	74 0e                	je     0x4051ab
40519d:	8a 0a                	mov    (%edx),%cl
40519f:	83 c2 01             	add    $0x1,%edx
4051a2:	32 cb                	xor    %bl,%cl
4051a4:	74 40                	je     0x4051e6
4051a6:	83 e8 01             	sub    $0x1,%eax
4051a9:	75 f2                	jne    0x40519d
4051ab:	5b                   	pop    %ebx
4051ac:	c3                   	ret
4051ad:	83 e8 04             	sub    $0x4,%eax
4051b0:	72 e5                	jb     0x405197
4051b2:	8b 0a                	mov    (%edx),%ecx
4051b4:	33 cb                	xor    %ebx,%ecx
4051b6:	bf ff fe fe 7e       	mov    $0x7efefeff,%edi
4051bb:	03 f9                	add    %ecx,%edi
4051bd:	83 f1 ff             	xor    $0xffffffff,%ecx
4051c0:	33 cf                	xor    %edi,%ecx
4051c2:	83 c2 04             	add    $0x4,%edx
4051c5:	81 e1 00 01 01 81    	and    $0x81010100,%ecx
4051cb:	74 e0                	je     0x4051ad
4051cd:	8b 4a fc             	mov    -0x4(%edx),%ecx
4051d0:	32 cb                	xor    %bl,%cl
4051d2:	74 23                	je     0x4051f7
4051d4:	32 eb                	xor    %bl,%ch
4051d6:	74 19                	je     0x4051f1
4051d8:	c1 e9 10             	shr    $0x10,%ecx
4051db:	32 cb                	xor    %bl,%cl
4051dd:	74 0c                	je     0x4051eb
4051df:	32 eb                	xor    %bl,%ch
4051e1:	74 02                	je     0x4051e5
4051e3:	eb c8                	jmp    0x4051ad
4051e5:	5f                   	pop    %edi
4051e6:	8d 42 ff             	lea    -0x1(%edx),%eax
4051e9:	5b                   	pop    %ebx
4051ea:	c3                   	ret
4051eb:	8d 42 fe             	lea    -0x2(%edx),%eax
4051ee:	5f                   	pop    %edi
4051ef:	5b                   	pop    %ebx
4051f0:	c3                   	ret
4051f1:	8d 42 fd             	lea    -0x3(%edx),%eax
4051f4:	5f                   	pop    %edi
4051f5:	5b                   	pop    %ebx
4051f6:	c3                   	ret
4051f7:	8d 42 fc             	lea    -0x4(%edx),%eax
4051fa:	5f                   	pop    %edi
4051fb:	5b                   	pop    %ebx
4051fc:	c3                   	ret
4051fd:	55                   	push   %ebp
4051fe:	8b ec                	mov    %esp,%ebp
405200:	56                   	push   %esi
405201:	8b f1                	mov    %ecx,%esi
405203:	8b 4d 08             	mov    0x8(%ebp),%ecx
405206:	c6 46 0c 00          	movb   $0x0,0xc(%esi)
40520a:	85 c9                	test   %ecx,%ecx
40520c:	75 66                	jne    0x405274
40520e:	e8 c3 71 00 00       	call   0x40c3d6
405213:	8b d0                	mov    %eax,%edx
405215:	89 56 08             	mov    %edx,0x8(%esi)
405218:	8b 4a 6c             	mov    0x6c(%edx),%ecx
40521b:	89 0e                	mov    %ecx,(%esi)
40521d:	8b 4a 68             	mov    0x68(%edx),%ecx
405220:	89 4e 04             	mov    %ecx,0x4(%esi)
405223:	8b 0e                	mov    (%esi),%ecx
405225:	3b 0d 44 0f 42 00    	cmp    0x420f44,%ecx
40522b:	74 11                	je     0x40523e
40522d:	a1 0c 10 42 00       	mov    0x42100c,%eax
405232:	85 42 70             	test   %eax,0x70(%edx)
405235:	75 07                	jne    0x40523e
405237:	e8 ea 67 00 00       	call   0x40ba26
40523c:	89 06                	mov    %eax,(%esi)
40523e:	8b 46 04             	mov    0x4(%esi),%eax
405241:	3b 05 bc 08 42 00    	cmp    0x4208bc,%eax
405247:	74 15                	je     0x40525e
405249:	8b 4e 08             	mov    0x8(%esi),%ecx
40524c:	a1 0c 10 42 00       	mov    0x42100c,%eax
405251:	85 41 70             	test   %eax,0x70(%ecx)
405254:	75 08                	jne    0x40525e
405256:	e8 4d 6b 00 00       	call   0x40bda8
40525b:	89 46 04             	mov    %eax,0x4(%esi)
40525e:	8b 4e 08             	mov    0x8(%esi),%ecx
405261:	8b 41 70             	mov    0x70(%ecx),%eax
405264:	a8 02                	test   $0x2,%al
405266:	75 16                	jne    0x40527e
405268:	83 c8 02             	or     $0x2,%eax
40526b:	89 41 70             	mov    %eax,0x70(%ecx)
40526e:	c6 46 0c 01          	movb   $0x1,0xc(%esi)
405272:	eb 0a                	jmp    0x40527e
405274:	8b 01                	mov    (%ecx),%eax
405276:	89 06                	mov    %eax,(%esi)
405278:	8b 41 04             	mov    0x4(%ecx),%eax
40527b:	89 46 04             	mov    %eax,0x4(%esi)
40527e:	8b c6                	mov    %esi,%eax
405280:	5e                   	pop    %esi
405281:	5d                   	pop    %ebp
405282:	c2 04 00             	ret    $0x4
405285:	55                   	push   %ebp
405286:	8b ec                	mov    %esp,%ebp
405288:	83 ec 24             	sub    $0x24,%esp
40528b:	8d 4d dc             	lea    -0x24(%ebp),%ecx
40528e:	ff 75 08             	push   0x8(%ebp)
405291:	e8 67 ff ff ff       	call   0x4051fd
405296:	8b 45 10             	mov    0x10(%ebp),%eax
405299:	85 c0                	test   %eax,%eax
40529b:	74 05                	je     0x4052a2
40529d:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4052a0:	89 08                	mov    %ecx,(%eax)
4052a2:	8b 45 0c             	mov    0xc(%ebp),%eax
4052a5:	53                   	push   %ebx
4052a6:	56                   	push   %esi
4052a7:	57                   	push   %edi
4052a8:	85 c0                	test   %eax,%eax
4052aa:	74 11                	je     0x4052bd
4052ac:	8b 7d 14             	mov    0x14(%ebp),%edi
4052af:	85 ff                	test   %edi,%edi
4052b1:	74 1f                	je     0x4052d2
4052b3:	83 ff 02             	cmp    $0x2,%edi
4052b6:	7c 05                	jl     0x4052bd
4052b8:	83 ff 24             	cmp    $0x24,%edi
4052bb:	7e 15                	jle    0x4052d2
4052bd:	e8 bb 2e 00 00       	call   0x40817d
4052c2:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4052c8:	e8 28 63 00 00       	call   0x40b5f5
4052cd:	e9 c1 01 00 00       	jmp    0x405493
4052d2:	8b 7d dc             	mov    -0x24(%ebp),%edi
4052d5:	33 db                	xor    %ebx,%ebx
4052d7:	89 5d f4             	mov    %ebx,-0xc(%ebp)
4052da:	8a 18                	mov    (%eax),%bl
4052dc:	8d 70 01             	lea    0x1(%eax),%esi
4052df:	83 7f 74 01          	cmpl   $0x1,0x74(%edi)
4052e3:	7e 17                	jle    0x4052fc
4052e5:	8d 45 dc             	lea    -0x24(%ebp),%eax
4052e8:	50                   	push   %eax
4052e9:	0f b6 c3             	movzbl %bl,%eax
4052ec:	6a 08                	push   $0x8
4052ee:	50                   	push   %eax
4052ef:	e8 fc 6e 00 00       	call   0x40c1f0
4052f4:	8b 7d dc             	mov    -0x24(%ebp),%edi
4052f7:	83 c4 0c             	add    $0xc,%esp
4052fa:	eb 10                	jmp    0x40530c
4052fc:	8b 87 90 00 00 00    	mov    0x90(%edi),%eax
405302:	0f b6 cb             	movzbl %bl,%ecx
405305:	0f b7 04 48          	movzwl (%eax,%ecx,2),%eax
405309:	83 e0 08             	and    $0x8,%eax
40530c:	85 c0                	test   %eax,%eax
40530e:	74 05                	je     0x405315
405310:	8a 1e                	mov    (%esi),%bl
405312:	46                   	inc    %esi
405313:	eb ca                	jmp    0x4052df
405315:	8b 45 18             	mov    0x18(%ebp),%eax
405318:	88 5d ff             	mov    %bl,-0x1(%ebp)
40531b:	80 fb 2d             	cmp    $0x2d,%bl
40531e:	75 0b                	jne    0x40532b
405320:	83 c8 02             	or     $0x2,%eax
405323:	8a 0e                	mov    (%esi),%cl
405325:	88 4d ff             	mov    %cl,-0x1(%ebp)
405328:	46                   	inc    %esi
405329:	eb 08                	jmp    0x405333
40532b:	80 fb 2b             	cmp    $0x2b,%bl
40532e:	74 f3                	je     0x405323
405330:	8a 4d ff             	mov    -0x1(%ebp),%cl
405333:	8b 7d 14             	mov    0x14(%ebp),%edi
405336:	8b 5d f4             	mov    -0xc(%ebp),%ebx
405339:	89 45 f8             	mov    %eax,-0x8(%ebp)
40533c:	85 ff                	test   %edi,%edi
40533e:	0f 88 43 01 00 00    	js     0x405487
405344:	83 ff 01             	cmp    $0x1,%edi
405347:	0f 84 3a 01 00 00    	je     0x405487
40534d:	83 ff 24             	cmp    $0x24,%edi
405350:	0f 8f 31 01 00 00    	jg     0x405487
405356:	85 ff                	test   %edi,%edi
405358:	75 1d                	jne    0x405377
40535a:	80 f9 30             	cmp    $0x30,%cl
40535d:	74 05                	je     0x405364
40535f:	6a 0a                	push   $0xa
405361:	5f                   	pop    %edi
405362:	eb 30                	jmp    0x405394
405364:	8a 06                	mov    (%esi),%al
405366:	3c 78                	cmp    $0x78,%al
405368:	74 08                	je     0x405372
40536a:	3c 58                	cmp    $0x58,%al
40536c:	74 04                	je     0x405372
40536e:	6a 08                	push   $0x8
405370:	eb ef                	jmp    0x405361
405372:	6a 10                	push   $0x10
405374:	5f                   	pop    %edi
405375:	eb 0a                	jmp    0x405381
405377:	83 ff 10             	cmp    $0x10,%edi
40537a:	75 18                	jne    0x405394
40537c:	80 f9 30             	cmp    $0x30,%cl
40537f:	75 13                	jne    0x405394
405381:	8a 06                	mov    (%esi),%al
405383:	3c 78                	cmp    $0x78,%al
405385:	74 04                	je     0x40538b
405387:	3c 58                	cmp    $0x58,%al
405389:	75 09                	jne    0x405394
40538b:	8a 4e 01             	mov    0x1(%esi),%cl
40538e:	88 4d ff             	mov    %cl,-0x1(%ebp)
405391:	83 c6 02             	add    $0x2,%esi
405394:	83 c8 ff             	or     $0xffffffff,%eax
405397:	33 d2                	xor    %edx,%edx
405399:	f7 f7                	div    %edi
40539b:	89 45 f4             	mov    %eax,-0xc(%ebp)
40539e:	8b 45 dc             	mov    -0x24(%ebp),%eax
4053a1:	89 55 f0             	mov    %edx,-0x10(%ebp)
4053a4:	8b 80 90 00 00 00    	mov    0x90(%eax),%eax
4053aa:	8b 55 f8             	mov    -0x8(%ebp),%edx
4053ad:	89 45 ec             	mov    %eax,-0x14(%ebp)
4053b0:	0f b6 c9             	movzbl %cl,%ecx
4053b3:	0f b7 04 48          	movzwl (%eax,%ecx,2),%eax
4053b7:	8b c8                	mov    %eax,%ecx
4053b9:	83 e1 04             	and    $0x4,%ecx
4053bc:	74 09                	je     0x4053c7
4053be:	0f be 45 ff          	movsbl -0x1(%ebp),%eax
4053c2:	83 e8 30             	sub    $0x30,%eax
4053c5:	eb 1a                	jmp    0x4053e1
4053c7:	25 03 01 00 00       	and    $0x103,%eax
4053cc:	74 44                	je     0x405412
4053ce:	8a 4d ff             	mov    -0x1(%ebp),%cl
4053d1:	8d 41 9f             	lea    -0x61(%ecx),%eax
4053d4:	3c 19                	cmp    $0x19,%al
4053d6:	0f be c1             	movsbl %cl,%eax
4053d9:	77 03                	ja     0x4053de
4053db:	83 e8 20             	sub    $0x20,%eax
4053de:	83 c0 c9             	add    $0xffffffc9,%eax
4053e1:	3b c7                	cmp    %edi,%eax
4053e3:	73 2d                	jae    0x405412
4053e5:	8b 4d f4             	mov    -0xc(%ebp),%ecx
4053e8:	83 ca 08             	or     $0x8,%edx
4053eb:	3b d9                	cmp    %ecx,%ebx
4053ed:	72 13                	jb     0x405402
4053ef:	75 05                	jne    0x4053f6
4053f1:	3b 45 f0             	cmp    -0x10(%ebp),%eax
4053f4:	76 0c                	jbe    0x405402
4053f6:	8b 45 10             	mov    0x10(%ebp),%eax
4053f9:	83 ca 04             	or     $0x4,%edx
4053fc:	85 c0                	test   %eax,%eax
4053fe:	74 15                	je     0x405415
405400:	eb 05                	jmp    0x405407
405402:	0f af df             	imul   %edi,%ebx
405405:	03 d8                	add    %eax,%ebx
405407:	8a 0e                	mov    (%esi),%cl
405409:	8b 45 ec             	mov    -0x14(%ebp),%eax
40540c:	88 4d ff             	mov    %cl,-0x1(%ebp)
40540f:	46                   	inc    %esi
405410:	eb 9e                	jmp    0x4053b0
405412:	8b 45 10             	mov    0x10(%ebp),%eax
405415:	4e                   	dec    %esi
405416:	89 55 f8             	mov    %edx,-0x8(%ebp)
405419:	89 55 f8             	mov    %edx,-0x8(%ebp)
40541c:	f6 c2 08             	test   $0x8,%dl
40541f:	75 0b                	jne    0x40542c
405421:	85 c0                	test   %eax,%eax
405423:	74 03                	je     0x405428
405425:	8b 75 0c             	mov    0xc(%ebp),%esi
405428:	33 db                	xor    %ebx,%ebx
40542a:	eb 49                	jmp    0x405475
40542c:	bf ff ff ff 7f       	mov    $0x7fffffff,%edi
405431:	f6 c2 04             	test   $0x4,%dl
405434:	75 1c                	jne    0x405452
405436:	f6 c2 01             	test   $0x1,%dl
405439:	75 3a                	jne    0x405475
40543b:	8b c2                	mov    %edx,%eax
40543d:	83 e0 02             	and    $0x2,%eax
405440:	74 08                	je     0x40544a
405442:	81 fb 00 00 00 80    	cmp    $0x80000000,%ebx
405448:	77 08                	ja     0x405452
40544a:	85 c0                	test   %eax,%eax
40544c:	75 27                	jne    0x405475
40544e:	3b df                	cmp    %edi,%ebx
405450:	76 23                	jbe    0x405475
405452:	e8 26 2d 00 00       	call   0x40817d
405457:	8b 55 f8             	mov    -0x8(%ebp),%edx
40545a:	c7 00 22 00 00 00    	movl   $0x22,(%eax)
405460:	f6 c2 01             	test   $0x1,%dl
405463:	74 05                	je     0x40546a
405465:	83 cb ff             	or     $0xffffffff,%ebx
405468:	eb 0b                	jmp    0x405475
40546a:	6a 00                	push   $0x0
40546c:	f6 c2 02             	test   $0x2,%dl
40546f:	5b                   	pop    %ebx
405470:	0f 95 c3             	setne  %bl
405473:	03 df                	add    %edi,%ebx
405475:	8b 45 10             	mov    0x10(%ebp),%eax
405478:	85 c0                	test   %eax,%eax
40547a:	74 02                	je     0x40547e
40547c:	89 30                	mov    %esi,(%eax)
40547e:	f6 c2 02             	test   $0x2,%dl
405481:	74 12                	je     0x405495
405483:	f7 db                	neg    %ebx
405485:	eb 0e                	jmp    0x405495
405487:	8b 45 10             	mov    0x10(%ebp),%eax
40548a:	85 c0                	test   %eax,%eax
40548c:	74 05                	je     0x405493
40548e:	8b 4d 0c             	mov    0xc(%ebp),%ecx
405491:	89 08                	mov    %ecx,(%eax)
405493:	33 db                	xor    %ebx,%ebx
405495:	80 7d e8 00          	cmpb   $0x0,-0x18(%ebp)
405499:	74 07                	je     0x4054a2
40549b:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
40549e:	83 61 70 fd          	andl   $0xfffffffd,0x70(%ecx)
4054a2:	5f                   	pop    %edi
4054a3:	5e                   	pop    %esi
4054a4:	8b c3                	mov    %ebx,%eax
4054a6:	5b                   	pop    %ebx
4054a7:	c9                   	leave
4054a8:	c3                   	ret
4054a9:	55                   	push   %ebp
4054aa:	8b ec                	mov    %esp,%ebp
4054ac:	83 3d 74 27 42 00 00 	cmpl   $0x0,0x422774
4054b3:	6a 00                	push   $0x0
4054b5:	ff 75 10             	push   0x10(%ebp)
4054b8:	ff 75 0c             	push   0xc(%ebp)
4054bb:	ff 75 08             	push   0x8(%ebp)
4054be:	75 07                	jne    0x4054c7
4054c0:	68 00 10 42 00       	push   $0x421000
4054c5:	eb 02                	jmp    0x4054c9
4054c7:	6a 00                	push   $0x0
4054c9:	e8 b7 fd ff ff       	call   0x405285
4054ce:	83 c4 14             	add    $0x14,%esp
4054d1:	5d                   	pop    %ebp
4054d2:	c3                   	ret
4054d3:	e9 20 fa ff ff       	jmp    0x404ef8