4070b8:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
4070be:	f2 c3                	bnd ret
4070c0:	50                   	push   %eax
4070c1:	64 ff 35 00 00 00 00 	push   %fs:0x0
4070c8:	8d 44 24 0c          	lea    0xc(%esp),%eax
4070cc:	2b 64 24 0c          	sub    0xc(%esp),%esp
4070d0:	53                   	push   %ebx
4070d1:	56                   	push   %esi
4070d2:	57                   	push   %edi
4070d3:	89 28                	mov    %ebp,(%eax)
4070d5:	8b e8                	mov    %eax,%ebp
4070d7:	a1 28 ba 43 00       	mov    0x43ba28,%eax
4070dc:	33 c5                	xor    %ebp,%eax
4070de:	50                   	push   %eax
4070df:	89 65 f0             	mov    %esp,-0x10(%ebp)
4070e2:	ff 75 fc             	push   -0x4(%ebp)
4070e5:	c7 45 fc ff ff ff ff 	movl   $0xffffffff,-0x4(%ebp)
4070ec:	8d 45 f4             	lea    -0xc(%ebp),%eax
4070ef:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
4070f5:	f2 c3                	bnd ret
4070f7:	cc                   	int3
4070f8:	cc                   	int3
4070f9:	cc                   	int3
4070fa:	cc                   	int3
4070fb:	cc                   	int3
4070fc:	cc                   	int3
4070fd:	cc                   	int3
4070fe:	cc                   	int3
4070ff:	cc                   	int3
407100:	51                   	push   %ecx
407101:	8d 4c 24 08          	lea    0x8(%esp),%ecx
407105:	2b c8                	sub    %eax,%ecx
407107:	83 e1 0f             	and    $0xf,%ecx
40710a:	03 c1                	add    %ecx,%eax
40710c:	1b c9                	sbb    %ecx,%ecx
40710e:	0b c1                	or     %ecx,%eax
407110:	59                   	pop    %ecx
407111:	e9 ca fc ff ff       	jmp    0x406de0
407116:	51                   	push   %ecx
407117:	8d 4c 24 08          	lea    0x8(%esp),%ecx
40711b:	2b c8                	sub    %eax,%ecx
40711d:	83 e1 07             	and    $0x7,%ecx
407120:	03 c1                	add    %ecx,%eax
407122:	1b c9                	sbb    %ecx,%ecx
407124:	0b c1                	or     %ecx,%eax
407126:	59                   	pop    %ecx
407127:	e9 b4 fc ff ff       	jmp    0x406de0
40712c:	cc                   	int3
40712d:	cc                   	int3
40712e:	cc                   	int3
40712f:	cc                   	int3
407130:	8b 44 24 08          	mov    0x8(%esp),%eax
407134:	8b 4c 24 10          	mov    0x10(%esp),%ecx
407138:	0b c8                	or     %eax,%ecx
40713a:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
40713e:	75 09                	jne    0x407149
407140:	8b 44 24 04          	mov    0x4(%esp),%eax
407144:	f7 e1                	mul    %ecx
407146:	c2 10 00             	ret    $0x10
407149:	53                   	push   %ebx
40714a:	f7 e1                	mul    %ecx
40714c:	8b d8                	mov    %eax,%ebx
40714e:	8b 44 24 08          	mov    0x8(%esp),%eax
407152:	f7 64 24 14          	mull   0x14(%esp)
407156:	03 d8                	add    %eax,%ebx
407158:	8b 44 24 08          	mov    0x8(%esp),%eax
40715c:	f7 e1                	mul    %ecx
40715e:	03 d3                	add    %ebx,%edx
407160:	5b                   	pop    %ebx
407161:	c2 10 00             	ret    $0x10
407164:	cc                   	int3
407165:	cc                   	int3
407166:	cc                   	int3
407167:	cc                   	int3
407168:	cc                   	int3
407169:	cc                   	int3
40716a:	cc                   	int3
40716b:	cc                   	int3
40716c:	cc                   	int3
40716d:	cc                   	int3
40716e:	cc                   	int3
40716f:	cc                   	int3
407170:	53                   	push   %ebx
407171:	56                   	push   %esi
407172:	8b 44 24 18          	mov    0x18(%esp),%eax
407176:	0b c0                	or     %eax,%eax
407178:	75 18                	jne    0x407192
40717a:	8b 4c 24 14          	mov    0x14(%esp),%ecx
40717e:	8b 44 24 10          	mov    0x10(%esp),%eax
407182:	33 d2                	xor    %edx,%edx
407184:	f7 f1                	div    %ecx
407186:	8b d8                	mov    %eax,%ebx
407188:	8b 44 24 0c          	mov    0xc(%esp),%eax
40718c:	f7 f1                	div    %ecx
40718e:	8b d3                	mov    %ebx,%edx
407190:	eb 41                	jmp    0x4071d3
407192:	8b c8                	mov    %eax,%ecx
407194:	8b 5c 24 14          	mov    0x14(%esp),%ebx
407198:	8b 54 24 10          	mov    0x10(%esp),%edx
40719c:	8b 44 24 0c          	mov    0xc(%esp),%eax
4071a0:	d1 e9                	shr    $1,%ecx
4071a2:	d1 db                	rcr    $1,%ebx
4071a4:	d1 ea                	shr    $1,%edx
4071a6:	d1 d8                	rcr    $1,%eax
4071a8:	0b c9                	or     %ecx,%ecx
4071aa:	75 f4                	jne    0x4071a0
4071ac:	f7 f3                	div    %ebx
4071ae:	8b f0                	mov    %eax,%esi
4071b0:	f7 64 24 18          	mull   0x18(%esp)
4071b4:	8b c8                	mov    %eax,%ecx
4071b6:	8b 44 24 14          	mov    0x14(%esp),%eax
4071ba:	f7 e6                	mul    %esi
4071bc:	03 d1                	add    %ecx,%edx
4071be:	72 0e                	jb     0x4071ce
4071c0:	3b 54 24 10          	cmp    0x10(%esp),%edx
4071c4:	77 08                	ja     0x4071ce
4071c6:	72 07                	jb     0x4071cf
4071c8:	3b 44 24 0c          	cmp    0xc(%esp),%eax
4071cc:	76 01                	jbe    0x4071cf
4071ce:	4e                   	dec    %esi
4071cf:	33 d2                	xor    %edx,%edx
4071d1:	8b c6                	mov    %esi,%eax
4071d3:	5e                   	pop    %esi
4071d4:	5b                   	pop    %ebx
4071d5:	c2 10 00             	ret    $0x10
4071d8:	55                   	push   %ebp
4071d9:	8b ec                	mov    %esp,%ebp
4071db:	56                   	push   %esi
4071dc:	ff 75 08             	push   0x8(%ebp)
4071df:	8b f1                	mov    %ecx,%esi
4071e1:	e8 09 ba ff ff       	call   0x402bef
4071e6:	c7 06 1c a6 42 00    	movl   $0x42a61c,(%esi)
4071ec:	8b c6                	mov    %esi,%eax
4071ee:	5e                   	pop    %esi
4071ef:	5d                   	pop    %ebp
4071f0:	c2 04 00             	ret    $0x4
4071f3:	83 61 04 00          	andl   $0x0,0x4(%ecx)
4071f7:	8b c1                	mov    %ecx,%eax
4071f9:	83 61 08 00          	andl   $0x0,0x8(%ecx)
4071fd:	c7 41 04 24 a6 42 00 	movl   $0x42a624,0x4(%ecx)
407204:	c7 01 1c a6 42 00    	movl   $0x42a61c,(%ecx)
40720a:	c3                   	ret
40720b:	8d 41 04             	lea    0x4(%ecx),%eax
40720e:	c7 01 c4 72 42 00    	movl   $0x4272c4,(%ecx)
407214:	50                   	push   %eax
407215:	e8 dd 0d 00 00       	call   0x407ff7
40721a:	59                   	pop    %ecx
40721b:	c3                   	ret
40721c:	55                   	push   %ebp
40721d:	8b ec                	mov    %esp,%ebp
40721f:	56                   	push   %esi
407220:	8b f1                	mov    %ecx,%esi
407222:	8d 46 04             	lea    0x4(%esi),%eax
407225:	c7 06 c4 72 42 00    	movl   $0x4272c4,(%esi)
40722b:	50                   	push   %eax
40722c:	e8 c6 0d 00 00       	call   0x407ff7
407231:	f6 45 08 01          	testb  $0x1,0x8(%ebp)
407235:	59                   	pop    %ecx
407236:	74 0a                	je     0x407242
407238:	6a 0c                	push   $0xc
40723a:	56                   	push   %esi
40723b:	e8 93 f6 ff ff       	call   0x4068d3
407240:	59                   	pop    %ecx
407241:	59                   	pop    %ecx
407242:	8b c6                	mov    %esi,%eax
407244:	5e                   	pop    %esi
407245:	5d                   	pop    %ebp
407246:	c2 04 00             	ret    $0x4
407249:	55                   	push   %ebp
40724a:	8b ec                	mov    %esp,%ebp
40724c:	83 ec 0c             	sub    $0xc,%esp
40724f:	8d 4d f4             	lea    -0xc(%ebp),%ecx
407252:	e8 53 e5 ff ff       	call   0x4057aa
407257:	68 74 7c 43 00       	push   $0x437c74
40725c:	8d 45 f4             	lea    -0xc(%ebp),%eax
40725f:	50                   	push   %eax
407260:	e8 b1 0d 00 00       	call   0x408016
407265:	cc                   	int3
407266:	55                   	push   %ebp
407267:	8b ec                	mov    %esp,%ebp
407269:	83 ec 0c             	sub    $0xc,%esp
40726c:	8d 4d f4             	lea    -0xc(%ebp),%ecx
40726f:	e8 7f ff ff ff       	call   0x4071f3
407274:	68 44 7e 43 00       	push   $0x437e44
407279:	8d 45 f4             	lea    -0xc(%ebp),%eax
40727c:	50                   	push   %eax
40727d:	e8 94 0d 00 00       	call   0x408016
407282:	cc                   	int3
407283:	55                   	push   %ebp
407284:	8b ec                	mov    %esp,%ebp
407286:	83 25 48 96 83 02 00 	andl   $0x0,0x2839648
40728d:	83 ec 28             	sub    $0x28,%esp
407290:	53                   	push   %ebx
407291:	33 db                	xor    %ebx,%ebx
407293:	43                   	inc    %ebx
407294:	09 1d 30 ba 43 00    	or     %ebx,0x43ba30
40729a:	6a 0a                	push   $0xa
40729c:	e8 31 ef 01 00       	call   0x4261d2
4072a1:	85 c0                	test   %eax,%eax
4072a3:	0f 84 6d 01 00 00    	je     0x407416
4072a9:	83 65 f0 00          	andl   $0x0,-0x10(%ebp)
4072ad:	33 c0                	xor    %eax,%eax
4072af:	83 0d 30 ba 43 00 02 	orl    $0x2,0x43ba30
4072b6:	33 c9                	xor    %ecx,%ecx
4072b8:	56                   	push   %esi
4072b9:	57                   	push   %edi
4072ba:	89 1d 48 96 83 02    	mov    %ebx,0x2839648
4072c0:	8d 7d d8             	lea    -0x28(%ebp),%edi
4072c3:	53                   	push   %ebx
4072c4:	0f a2                	cpuid
4072c6:	8b f3                	mov    %ebx,%esi
4072c8:	5b                   	pop    %ebx
4072c9:	89 07                	mov    %eax,(%edi)
4072cb:	89 77 04             	mov    %esi,0x4(%edi)
4072ce:	89 4f 08             	mov    %ecx,0x8(%edi)
4072d1:	89 57 0c             	mov    %edx,0xc(%edi)
4072d4:	8b 45 d8             	mov    -0x28(%ebp),%eax
4072d7:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
4072da:	89 45 f8             	mov    %eax,-0x8(%ebp)
4072dd:	81 f1 69 6e 65 49    	xor    $0x49656e69,%ecx
4072e3:	8b 45 e0             	mov    -0x20(%ebp),%eax
4072e6:	35 6e 74 65 6c       	xor    $0x6c65746e,%eax
4072eb:	0b c8                	or     %eax,%ecx
4072ed:	8b 45 dc             	mov    -0x24(%ebp),%eax
4072f0:	6a 01                	push   $0x1
4072f2:	35 47 65 6e 75       	xor    $0x756e6547,%eax
4072f7:	0b c8                	or     %eax,%ecx
4072f9:	58                   	pop    %eax
4072fa:	6a 00                	push   $0x0
4072fc:	59                   	pop    %ecx
4072fd:	53                   	push   %ebx
4072fe:	0f a2                	cpuid
407300:	8b f3                	mov    %ebx,%esi
407302:	5b                   	pop    %ebx
407303:	89 07                	mov    %eax,(%edi)
407305:	89 77 04             	mov    %esi,0x4(%edi)
407308:	89 4f 08             	mov    %ecx,0x8(%edi)
40730b:	89 57 0c             	mov    %edx,0xc(%edi)
40730e:	75 43                	jne    0x407353
407310:	8b 45 d8             	mov    -0x28(%ebp),%eax
407313:	25 f0 3f ff 0f       	and    $0xfff3ff0,%eax
407318:	3d c0 06 01 00       	cmp    $0x106c0,%eax
40731d:	74 23                	je     0x407342
40731f:	3d 60 06 02 00       	cmp    $0x20660,%eax
407324:	74 1c                	je     0x407342
407326:	3d 70 06 02 00       	cmp    $0x20670,%eax
40732b:	74 15                	je     0x407342
40732d:	3d 50 06 03 00       	cmp    $0x30650,%eax
407332:	74 0e                	je     0x407342
407334:	3d 60 06 03 00       	cmp    $0x30660,%eax
407339:	74 07                	je     0x407342
40733b:	3d 70 06 03 00       	cmp    $0x30670,%eax
407340:	75 11                	jne    0x407353
407342:	8b 3d 4c 96 83 02    	mov    0x283964c,%edi
407348:	83 cf 01             	or     $0x1,%edi
40734b:	89 3d 4c 96 83 02    	mov    %edi,0x283964c
407351:	eb 06                	jmp    0x407359
407353:	8b 3d 4c 96 83 02    	mov    0x283964c,%edi
407359:	83 7d f8 07          	cmpl   $0x7,-0x8(%ebp)
40735d:	8b 45 e4             	mov    -0x1c(%ebp),%eax
407360:	89 45 e8             	mov    %eax,-0x18(%ebp)
407363:	8b 45 e0             	mov    -0x20(%ebp),%eax
407366:	89 45 fc             	mov    %eax,-0x4(%ebp)
407369:	89 45 ec             	mov    %eax,-0x14(%ebp)
40736c:	7c 32                	jl     0x4073a0
40736e:	6a 07                	push   $0x7
407370:	58                   	pop    %eax
407371:	33 c9                	xor    %ecx,%ecx
407373:	53                   	push   %ebx
407374:	0f a2                	cpuid
407376:	8b f3                	mov    %ebx,%esi
407378:	5b                   	pop    %ebx
407379:	8d 5d d8             	lea    -0x28(%ebp),%ebx
40737c:	89 03                	mov    %eax,(%ebx)
40737e:	89 73 04             	mov    %esi,0x4(%ebx)
407381:	89 4b 08             	mov    %ecx,0x8(%ebx)
407384:	89 53 0c             	mov    %edx,0xc(%ebx)
407387:	8b 45 dc             	mov    -0x24(%ebp),%eax
40738a:	a9 00 02 00 00       	test   $0x200,%eax
40738f:	89 45 f0             	mov    %eax,-0x10(%ebp)
407392:	8b 45 fc             	mov    -0x4(%ebp),%eax
407395:	74 09                	je     0x4073a0
407397:	83 cf 02             	or     $0x2,%edi
40739a:	89 3d 4c 96 83 02    	mov    %edi,0x283964c
4073a0:	5f                   	pop    %edi
4073a1:	5e                   	pop    %esi
4073a2:	a9 00 00 10 00       	test   $0x100000,%eax
4073a7:	74 6d                	je     0x407416
4073a9:	83 0d 30 ba 43 00 04 	orl    $0x4,0x43ba30
4073b0:	c7 05 48 96 83 02 02 	movl   $0x2,0x2839648
4073b7:	00 00 00
4073ba:	a9 00 00 00 08       	test   $0x8000000,%eax
4073bf:	74 55                	je     0x407416
4073c1:	a9 00 00 00 10       	test   $0x10000000,%eax
4073c6:	74 4e                	je     0x407416
4073c8:	33 c9                	xor    %ecx,%ecx
4073ca:	0f 01 d0             	xgetbv
4073cd:	89 45 f4             	mov    %eax,-0xc(%ebp)
4073d0:	89 55 f8             	mov    %edx,-0x8(%ebp)
4073d3:	8b 45 f4             	mov    -0xc(%ebp),%eax
4073d6:	8b 4d f8             	mov    -0x8(%ebp),%ecx
4073d9:	83 e0 06             	and    $0x6,%eax
4073dc:	33 c9                	xor    %ecx,%ecx
4073de:	83 f8 06             	cmp    $0x6,%eax
4073e1:	75 33                	jne    0x407416
4073e3:	85 c9                	test   %ecx,%ecx
4073e5:	75 2f                	jne    0x407416
4073e7:	a1 30 ba 43 00       	mov    0x43ba30,%eax
4073ec:	83 c8 08             	or     $0x8,%eax
4073ef:	c7 05 48 96 83 02 03 	movl   $0x3,0x2839648
4073f6:	00 00 00
4073f9:	f6 45 f0 20          	testb  $0x20,-0x10(%ebp)
4073fd:	a3 30 ba 43 00       	mov    %eax,0x43ba30
407402:	74 12                	je     0x407416
407404:	83 c8 20             	or     $0x20,%eax
407407:	c7 05 48 96 83 02 05 	movl   $0x5,0x2839648
40740e:	00 00 00
407411:	a3 30 ba 43 00       	mov    %eax,0x43ba30
407416:	33 c0                	xor    %eax,%eax
407418:	5b                   	pop    %ebx
407419:	8b e5                	mov    %ebp,%esp
40741b:	5d                   	pop    %ebp
40741c:	c3                   	ret
40741d:	33 c0                	xor    %eax,%eax
40741f:	40                   	inc    %eax
407420:	c3                   	ret
407421:	33 c0                	xor    %eax,%eax
407423:	39 05 f8 a0 83 02    	cmp    %eax,0x283a0f8
407429:	0f 95 c0             	setne  %al
40742c:	c3                   	ret
40742d:	55                   	push   %ebp
40742e:	8b ec                	mov    %esp,%ebp
407430:	81 ec 24 03 00 00    	sub    $0x324,%esp
407436:	53                   	push   %ebx
407437:	56                   	push   %esi
407438:	6a 17                	push   $0x17
40743a:	e8 93 ed 01 00       	call   0x4261d2
40743f:	85 c0                	test   %eax,%eax
407441:	74 05                	je     0x407448
407443:	8b 4d 08             	mov    0x8(%ebp),%ecx
407446:	cd 29                	int    $0x29
407448:	33 f6                	xor    %esi,%esi
40744a:	8d 85 dc fc ff ff    	lea    -0x324(%ebp),%eax
407450:	68 cc 02 00 00       	push   $0x2cc
407455:	56                   	push   %esi
407456:	50                   	push   %eax
407457:	89 35 50 96 83 02    	mov    %esi,0x2839650
40745d:	e8 7e 15 00 00       	call   0x4089e0
407462:	83 c4 0c             	add    $0xc,%esp
407465:	89 85 8c fd ff ff    	mov    %eax,-0x274(%ebp)