40a070:	8b ff                	mov    %edi,%edi
40a072:	55                   	push   %ebp
40a073:	8b ec                	mov    %esp,%ebp
40a075:	80 3d d0 d4 40 00 00 	cmpb   $0x0,0x40d4d0
40a07c:	74 04                	je     0x40a082
40a07e:	b0 01                	mov    $0x1,%al
40a080:	5d                   	pop    %ebp
40a081:	c3                   	ret
40a082:	56                   	push   %esi
40a083:	8b 75 08             	mov    0x8(%ebp),%esi
40a086:	85 f6                	test   %esi,%esi
40a088:	74 05                	je     0x40a08f
40a08a:	83 fe 01             	cmp    $0x1,%esi
40a08d:	75 77                	jne    0x40a106
40a08f:	e8 3a 07 00 00       	call   0x40a7ce
40a094:	85 c0                	test   %eax,%eax
40a096:	74 26                	je     0x40a0be
40a098:	85 f6                	test   %esi,%esi
40a09a:	75 22                	jne    0x40a0be
40a09c:	68 b8 d4 40 00       	push   $0x40d4b8
40a0a1:	e8 bd 07 00 00       	call   0x40a863
40a0a6:	59                   	pop    %ecx
40a0a7:	85 c0                	test   %eax,%eax
40a0a9:	75 0f                	jne    0x40a0ba
40a0ab:	68 c4 d4 40 00       	push   $0x40d4c4
40a0b0:	e8 ae 07 00 00       	call   0x40a863
40a0b5:	59                   	pop    %ecx
40a0b6:	85 c0                	test   %eax,%eax
40a0b8:	74 40                	je     0x40a0fa
40a0ba:	32 c0                	xor    %al,%al
40a0bc:	eb 45                	jmp    0x40a103
40a0be:	a1 50 d1 40 00       	mov    0x40d150,%eax
40a0c3:	83 ce ff             	or     $0xffffffff,%esi
40a0c6:	6a 20                	push   $0x20
40a0c8:	83 e0 1f             	and    $0x1f,%eax
40a0cb:	59                   	pop    %ecx
40a0cc:	2b c8                	sub    %eax,%ecx
40a0ce:	d3 ce                	ror    %cl,%esi
40a0d0:	33 35 50 d1 40 00    	xor    0x40d150,%esi
40a0d6:	89 35 b8 d4 40 00    	mov    %esi,0x40d4b8
40a0dc:	89 35 bc d4 40 00    	mov    %esi,0x40d4bc
40a0e2:	89 35 c0 d4 40 00    	mov    %esi,0x40d4c0
40a0e8:	89 35 c4 d4 40 00    	mov    %esi,0x40d4c4
40a0ee:	89 35 c8 d4 40 00    	mov    %esi,0x40d4c8
40a0f4:	89 35 cc d4 40 00    	mov    %esi,0x40d4cc
40a0fa:	c6 05 d0 d4 40 00 01 	movb   $0x1,0x40d4d0
40a101:	b0 01                	mov    $0x1,%al
40a103:	5e                   	pop    %esi
40a104:	5d                   	pop    %ebp
40a105:	c3                   	ret
40a106:	6a 05                	push   $0x5
40a108:	e8 6f 02 00 00       	call   0x40a37c
40a10d:	cc                   	int3
40a10e:	6a 08                	push   $0x8
40a110:	68 a0 c5 40 00       	push   $0x40c5a0
40a115:	e8 86 04 00 00       	call   0x40a5a0
40a11a:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40a11e:	b8 4d 5a 00 00       	mov    $0x5a4d,%eax
40a123:	66 39 05 00 00 40 00 	cmp    %ax,0x400000
40a12a:	75 5d                	jne    0x40a189
40a12c:	a1 3c 00 40 00       	mov    0x40003c,%eax
40a131:	81 b8 00 00 40 00 50 	cmpl   $0x4550,0x400000(%eax)
40a138:	45 00 00
40a13b:	75 4c                	jne    0x40a189
40a13d:	b9 0b 01 00 00       	mov    $0x10b,%ecx
40a142:	66 39 88 18 00 40 00 	cmp    %cx,0x400018(%eax)
40a149:	75 3e                	jne    0x40a189
40a14b:	8b 45 08             	mov    0x8(%ebp),%eax
40a14e:	b9 00 00 40 00       	mov    $0x400000,%ecx
40a153:	2b c1                	sub    %ecx,%eax
40a155:	50                   	push   %eax
40a156:	51                   	push   %ecx
40a157:	e8 5f fe ff ff       	call   0x409fbb
40a15c:	59                   	pop    %ecx
40a15d:	59                   	pop    %ecx
40a15e:	85 c0                	test   %eax,%eax
40a160:	74 27                	je     0x40a189
40a162:	83 78 24 00          	cmpl   $0x0,0x24(%eax)
40a166:	7c 21                	jl     0x40a189
40a168:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40a16f:	b0 01                	mov    $0x1,%al
40a171:	eb 1f                	jmp    0x40a192
40a173:	8b 45 ec             	mov    -0x14(%ebp),%eax
40a176:	8b 00                	mov    (%eax),%eax
40a178:	33 c9                	xor    %ecx,%ecx
40a17a:	81 38 05 00 00 c0    	cmpl   $0xc0000005,(%eax)
40a180:	0f 94 c1             	sete   %cl
40a183:	8b c1                	mov    %ecx,%eax
40a185:	c3                   	ret
40a186:	8b 65 e8             	mov    -0x18(%ebp),%esp
40a189:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40a190:	32 c0                	xor    %al,%al
40a192:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40a195:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40a19c:	59                   	pop    %ecx
40a19d:	5f                   	pop    %edi
40a19e:	5e                   	pop    %esi
40a19f:	5b                   	pop    %ebx
40a1a0:	c9                   	leave
40a1a1:	c3                   	ret
40a1a2:	8b ff                	mov    %edi,%edi
40a1a4:	55                   	push   %ebp
40a1a5:	8b ec                	mov    %esp,%ebp
40a1a7:	e8 22 06 00 00       	call   0x40a7ce
40a1ac:	85 c0                	test   %eax,%eax
40a1ae:	74 0f                	je     0x40a1bf
40a1b0:	80 7d 08 00          	cmpb   $0x0,0x8(%ebp)
40a1b4:	75 09                	jne    0x40a1bf
40a1b6:	33 c0                	xor    %eax,%eax
40a1b8:	b9 b4 d4 40 00       	mov    $0x40d4b4,%ecx
40a1bd:	87 01                	xchg   %eax,(%ecx)
40a1bf:	5d                   	pop    %ebp
40a1c0:	c3                   	ret
40a1c1:	8b ff                	mov    %edi,%edi
40a1c3:	55                   	push   %ebp
40a1c4:	8b ec                	mov    %esp,%ebp
40a1c6:	80 3d d1 d4 40 00 00 	cmpb   $0x0,0x40d4d1
40a1cd:	74 06                	je     0x40a1d5
40a1cf:	80 7d 0c 00          	cmpb   $0x0,0xc(%ebp)
40a1d3:	75 12                	jne    0x40a1e7
40a1d5:	ff 75 08             	push   0x8(%ebp)
40a1d8:	e8 48 01 00 00       	call   0x40a325
40a1dd:	ff 75 08             	push   0x8(%ebp)
40a1e0:	e8 40 01 00 00       	call   0x40a325
40a1e5:	59                   	pop    %ecx
40a1e6:	59                   	pop    %ecx
40a1e7:	b0 01                	mov    $0x1,%al
40a1e9:	5d                   	pop    %ebp
40a1ea:	c3                   	ret
40a1eb:	8b ff                	mov    %edi,%edi
40a1ed:	55                   	push   %ebp
40a1ee:	8b ec                	mov    %esp,%ebp
40a1f0:	a1 50 d1 40 00       	mov    0x40d150,%eax
40a1f5:	8b c8                	mov    %eax,%ecx
40a1f7:	33 05 b8 d4 40 00    	xor    0x40d4b8,%eax
40a1fd:	83 e1 1f             	and    $0x1f,%ecx
40a200:	ff 75 08             	push   0x8(%ebp)
40a203:	d3 c8                	ror    %cl,%eax
40a205:	83 f8 ff             	cmp    $0xffffffff,%eax
40a208:	75 07                	jne    0x40a211
40a20a:	e8 42 06 00 00       	call   0x40a851
40a20f:	eb 0b                	jmp    0x40a21c
40a211:	68 b8 d4 40 00       	push   $0x40d4b8
40a216:	e8 5a 06 00 00       	call   0x40a875
40a21b:	59                   	pop    %ecx
40a21c:	f7 d8                	neg    %eax
40a21e:	59                   	pop    %ecx
40a21f:	1b c0                	sbb    %eax,%eax
40a221:	f7 d0                	not    %eax
40a223:	23 45 08             	and    0x8(%ebp),%eax
40a226:	5d                   	pop    %ebp
40a227:	c3                   	ret
40a228:	8b ff                	mov    %edi,%edi
40a22a:	55                   	push   %ebp
40a22b:	8b ec                	mov    %esp,%ebp
40a22d:	ff 75 08             	push   0x8(%ebp)
40a230:	e8 b6 ff ff ff       	call   0x40a1eb
40a235:	f7 d8                	neg    %eax
40a237:	59                   	pop    %ecx
40a238:	1b c0                	sbb    %eax,%eax
40a23a:	f7 d8                	neg    %eax
40a23c:	48                   	dec    %eax
40a23d:	5d                   	pop    %ebp
40a23e:	c3                   	ret
40a23f:	8b ff                	mov    %edi,%edi
40a241:	55                   	push   %ebp
40a242:	8b ec                	mov    %esp,%ebp
40a244:	ff 75 08             	push   0x8(%ebp)
40a247:	e8 8e 05 00 00       	call   0x40a7da
40a24c:	59                   	pop    %ecx
40a24d:	5d                   	pop    %ebp
40a24e:	c3                   	ret
40a24f:	cc                   	int3
40a250:	8b ff                	mov    %edi,%edi
40a252:	55                   	push   %ebp
40a253:	8b ec                	mov    %esp,%ebp
40a255:	f6 45 08 01          	testb  $0x1,0x8(%ebp)
40a259:	56                   	push   %esi
40a25a:	8b f1                	mov    %ecx,%esi
40a25c:	c7 06 0c 10 40 00    	movl   $0x40100c,(%esi)
40a262:	74 07                	je     0x40a26b
40a264:	56                   	push   %esi
40a265:	e8 70 05 00 00       	call   0x40a7da
40a26a:	59                   	pop    %ecx
40a26b:	8b c6                	mov    %esi,%eax
40a26d:	5e                   	pop    %esi
40a26e:	5d                   	pop    %ebp
40a26f:	c2 04 00             	ret    $0x4
40a272:	8b ff                	mov    %edi,%edi
40a274:	55                   	push   %ebp
40a275:	8b ec                	mov    %esp,%ebp
40a277:	83 ec 14             	sub    $0x14,%esp
40a27a:	83 65 f4 00          	andl   $0x0,-0xc(%ebp)
40a27e:	8d 45 f4             	lea    -0xc(%ebp),%eax
40a281:	83 65 f8 00          	andl   $0x0,-0x8(%ebp)
40a285:	50                   	push   %eax
40a286:	ff 15 0c e1 40 00    	call   *0x40e10c
40a28c:	8b 45 f8             	mov    -0x8(%ebp),%eax
40a28f:	33 45 f4             	xor    -0xc(%ebp),%eax
40a292:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a295:	ff 15 b4 e0 40 00    	call   *0x40e0b4
40a29b:	31 45 fc             	xor    %eax,-0x4(%ebp)
40a29e:	ff 15 ac e0 40 00    	call   *0x40e0ac
40a2a4:	31 45 fc             	xor    %eax,-0x4(%ebp)
40a2a7:	8d 45 ec             	lea    -0x14(%ebp),%eax
40a2aa:	50                   	push   %eax
40a2ab:	ff 15 c4 e0 40 00    	call   *0x40e0c4
40a2b1:	8b 45 f0             	mov    -0x10(%ebp),%eax
40a2b4:	8d 4d fc             	lea    -0x4(%ebp),%ecx
40a2b7:	33 45 ec             	xor    -0x14(%ebp),%eax
40a2ba:	33 45 fc             	xor    -0x4(%ebp),%eax
40a2bd:	33 c1                	xor    %ecx,%eax
40a2bf:	c9                   	leave
40a2c0:	c3                   	ret
40a2c1:	8b 0d 50 d1 40 00    	mov    0x40d150,%ecx
40a2c7:	56                   	push   %esi
40a2c8:	57                   	push   %edi
40a2c9:	bf 4e e6 40 bb       	mov    $0xbb40e64e,%edi
40a2ce:	be 00 00 ff ff       	mov    $0xffff0000,%esi
40a2d3:	3b cf                	cmp    %edi,%ecx
40a2d5:	74 04                	je     0x40a2db
40a2d7:	85 ce                	test   %ecx,%esi
40a2d9:	75 26                	jne    0x40a301
40a2db:	e8 92 ff ff ff       	call   0x40a272
40a2e0:	8b c8                	mov    %eax,%ecx
40a2e2:	3b cf                	cmp    %edi,%ecx
40a2e4:	75 07                	jne    0x40a2ed
40a2e6:	b9 4f e6 40 bb       	mov    $0xbb40e64f,%ecx
40a2eb:	eb 0e                	jmp    0x40a2fb
40a2ed:	85 ce                	test   %ecx,%esi
40a2ef:	75 0a                	jne    0x40a2fb
40a2f1:	0d 11 47 00 00       	or     $0x4711,%eax
40a2f6:	c1 e0 10             	shl    $0x10,%eax
40a2f9:	0b c8                	or     %eax,%ecx
40a2fb:	89 0d 50 d1 40 00    	mov    %ecx,0x40d150
40a301:	f7 d1                	not    %ecx
40a303:	5f                   	pop    %edi
40a304:	89 0d 54 d1 40 00    	mov    %ecx,0x40d154
40a30a:	5e                   	pop    %esi
40a30b:	c3                   	ret
40a30c:	33 c0                	xor    %eax,%eax
40a30e:	40                   	inc    %eax
40a30f:	c3                   	ret
40a310:	33 c0                	xor    %eax,%eax
40a312:	c3                   	ret
40a313:	b8 00 40 00 00       	mov    $0x4000,%eax
40a318:	c3                   	ret
40a319:	68 d8 d4 40 00       	push   $0x40d4d8
40a31e:	ff 15 70 e0 40 00    	call   *0x40e070
40a324:	c3                   	ret
40a325:	b0 01                	mov    $0x1,%al
40a327:	c3                   	ret
40a328:	68 00 00 03 00       	push   $0x30000
40a32d:	68 00 00 01 00       	push   $0x10000
40a332:	6a 00                	push   $0x0
40a334:	e8 12 05 00 00       	call   0x40a84b
40a339:	83 c4 0c             	add    $0xc,%esp
40a33c:	85 c0                	test   %eax,%eax
40a33e:	75 01                	jne    0x40a341
40a340:	c3                   	ret
40a341:	6a 07                	push   $0x7
40a343:	e8 34 00 00 00       	call   0x40a37c
40a348:	cc                   	int3
40a349:	cc                   	int3
40a34a:	cc                   	int3
40a34b:	cc                   	int3
40a34c:	cc                   	int3
40a34d:	cc                   	int3
40a34e:	cc                   	int3
40a34f:	cc                   	int3
40a350:	c2 00 00             	ret    $0x0
40a353:	e8 49 f8 ff ff       	call   0x409ba1
40a358:	8b 48 04             	mov    0x4(%eax),%ecx
40a35b:	83 08 04             	orl    $0x4,(%eax)
40a35e:	89 48 04             	mov    %ecx,0x4(%eax)
40a361:	e8 69 f8 ff ff       	call   0x409bcf
40a366:	8b 48 04             	mov    0x4(%eax),%ecx
40a369:	83 08 02             	orl    $0x2,(%eax)
40a36c:	89 48 04             	mov    %ecx,0x4(%eax)
40a36f:	c3                   	ret
40a370:	b8 70 d7 40 00       	mov    $0x40d770,%eax
40a375:	c3                   	ret
40a376:	b8 6c d7 40 00       	mov    $0x40d76c,%eax
40a37b:	c3                   	ret
40a37c:	8b ff                	mov    %edi,%edi
40a37e:	55                   	push   %ebp
40a37f:	8b ec                	mov    %esp,%ebp
40a381:	81 ec 24 03 00 00    	sub    $0x324,%esp
40a387:	53                   	push   %ebx
40a388:	6a 17                	push   $0x17
40a38a:	ff 15 bc e0 40 00    	call   *0x40e0bc
40a390:	85 c0                	test   %eax,%eax
40a392:	74 05                	je     0x40a399
40a394:	8b 4d 08             	mov    0x8(%ebp),%ecx
40a397:	cd 29                	int    $0x29
40a399:	6a 03                	push   $0x3
40a39b:	e8 93 01 00 00       	call   0x40a533
40a3a0:	c7 04 24 cc 02 00 00 	movl   $0x2cc,(%esp)
40a3a7:	8d 85 dc fc ff ff    	lea    -0x324(%ebp),%eax
40a3ad:	6a 00                	push   $0x0
40a3af:	50                   	push   %eax
40a3b0:	e8 f6 04 00 00       	call   0x40a8ab
40a3b5:	83 c4 0c             	add    $0xc,%esp
40a3b8:	89 85 8c fd ff ff    	mov    %eax,-0x274(%ebp)
40a3be:	89 8d 88 fd ff ff    	mov    %ecx,-0x278(%ebp)
40a3c4:	89 95 84 fd ff ff    	mov    %edx,-0x27c(%ebp)
40a3ca:	89 9d 80 fd ff ff    	mov    %ebx,-0x280(%ebp)
40a3d0:	89 b5 7c fd ff ff    	mov    %esi,-0x284(%ebp)
40a3d6:	89 bd 78 fd ff ff    	mov    %edi,-0x288(%ebp)
40a3dc:	66 8c 95 a4 fd ff ff 	data16 mov %ss,-0x25c(%ebp)
40a3e3:	66 8c 8d 98 fd ff ff 	data16 mov %cs,-0x268(%ebp)
40a3ea:	66 8c 9d 74 fd ff ff 	data16 mov %ds,-0x28c(%ebp)
40a3f1:	66 8c 85 70 fd ff ff 	data16 mov %es,-0x290(%ebp)
40a3f8:	66 8c a5 6c fd ff ff 	data16 mov %fs,-0x294(%ebp)
40a3ff:	66 8c ad 68 fd ff ff 	data16 mov %gs,-0x298(%ebp)
40a406:	9c                   	pushf
40a407:	8f 85 9c fd ff ff    	pop    -0x264(%ebp)
40a40d:	8b 45 04             	mov    0x4(%ebp),%eax
40a410:	89 85 94 fd ff ff    	mov    %eax,-0x26c(%ebp)
40a416:	8d 45 04             	lea    0x4(%ebp),%eax
40a419:	89 85 a0 fd ff ff    	mov    %eax,-0x260(%ebp)
40a41f:	c7 85 dc fc ff ff 01 	movl   $0x10001,-0x324(%ebp)
40a426:	00 01 00
40a429:	8b 40 fc             	mov    -0x4(%eax),%eax
40a42c:	6a 50                	push   $0x50
40a42e:	89 85 90 fd ff ff    	mov    %eax,-0x270(%ebp)
40a434:	8d 45 a8             	lea    -0x58(%ebp),%eax
40a437:	6a 00                	push   $0x0
40a439:	50                   	push   %eax
40a43a:	e8 6c 04 00 00       	call   0x40a8ab
40a43f:	8b 45 04             	mov    0x4(%ebp),%eax
40a442:	83 c4 0c             	add    $0xc,%esp
40a445:	c7 45 a8 15 00 00 40 	movl   $0x40000015,-0x58(%ebp)
40a44c:	c7 45 ac 01 00 00 00 	movl   $0x1,-0x54(%ebp)
40a453:	89 45 b4             	mov    %eax,-0x4c(%ebp)
40a456:	ff 15 30 e0 40 00    	call   *0x40e030
40a45c:	6a 00                	push   $0x0
40a45e:	8d 58 ff             	lea    -0x1(%eax),%ebx
40a461:	f7 db                	neg    %ebx
40a463:	8d 45 a8             	lea    -0x58(%ebp),%eax
40a466:	89 45 f8             	mov    %eax,-0x8(%ebp)
40a469:	8d 85 dc fc ff ff    	lea    -0x324(%ebp),%eax
40a46f:	1a db                	sbb    %bl,%bl
40a471:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a474:	fe c3                	inc    %bl
40a476:	ff 15 4c e0 40 00    	call   *0x40e04c
40a47c:	8d 45 f8             	lea    -0x8(%ebp),%eax
40a47f:	50                   	push   %eax
40a480:	ff 15 48 e0 40 00    	call   *0x40e048
40a486:	85 c0                	test   %eax,%eax