40d186:	ff 74 24 0c          	push   0xc(%esp)
40d18a:	ff 74 24 0c          	push   0xc(%esp)
40d18e:	50                   	push   %eax
40d18f:	e8 8c 77 ff ff       	call   0x404920
40d194:	93                   	xchg   %eax,%ebx
40d195:	e8 46 7f ff ff       	call   0x4050e0
40d19a:	93                   	xchg   %eax,%ebx
40d19b:	5a                   	pop    %edx
40d19c:	5a                   	pop    %edx
40d19d:	5b                   	pop    %ebx
40d19e:	c3                   	ret
40d19f:	90                   	nop
40d1a0:	55                   	push   %ebp
40d1a1:	8b ec                	mov    %esp,%ebp
40d1a3:	53                   	push   %ebx
40d1a4:	89 c3                	mov    %eax,%ebx
40d1a6:	51                   	push   %ecx
40d1a7:	52                   	push   %edx
40d1a8:	e8 b3 f9 ff ff       	call   0x40cb60
40d1ad:	74 24                	je     0x40d1d3
40d1af:	e8 04 7f ff ff       	call   0x4050b8
40d1b4:	8b 45 08             	mov    0x8(%ebp),%eax
40d1b7:	e8 a8 d2 ff ff       	call   0x40a464
40d1bc:	50                   	push   %eax
40d1bd:	ff 74 24 10          	push   0x10(%esp)
40d1c1:	ff 74 24 10          	push   0x10(%esp)
40d1c5:	ff 74 24 10          	push   0x10(%esp)
40d1c9:	e8 b2 77 ff ff       	call   0x404980
40d1ce:	e8 0d 7f ff ff       	call   0x4050e0
40d1d3:	5a                   	pop    %edx
40d1d4:	59                   	pop    %ecx
40d1d5:	5b                   	pop    %ebx
40d1d6:	5d                   	pop    %ebp
40d1d7:	c2 04 00             	ret    $0x4
40d1da:	8b c0                	mov    %eax,%eax
40d1dc:	55                   	push   %ebp
40d1dd:	8b ec                	mov    %esp,%ebp
40d1df:	52                   	push   %edx
40d1e0:	ff 70 5e             	push   0x5e(%eax)
40d1e3:	51                   	push   %ecx
40d1e4:	ff 70 62             	push   0x62(%eax)
40d1e7:	8b 45 08             	mov    0x8(%ebp),%eax
40d1ea:	e8 75 d2 ff ff       	call   0x40a464
40d1ef:	89 c2                	mov    %eax,%edx
40d1f1:	c1 e8 10             	shr    $0x10,%eax
40d1f4:	00 d0                	add    %dl,%al
40d1f6:	10 f0                	adc    %dh,%al
40d1f8:	3d aa 00 00 00       	cmp    $0xaa,%eax
40d1fd:	0f 9d c1             	setge  %cl
40d200:	83 e1 01             	and    $0x1,%ecx
40d203:	c1 e1 07             	shl    $0x7,%ecx
40d206:	58                   	pop    %eax
40d207:	5a                   	pop    %edx
40d208:	f7 ea                	imul   %edx
40d20a:	5a                   	pop    %edx
40d20b:	01 d0                	add    %edx,%eax
40d20d:	5a                   	pop    %edx
40d20e:	51                   	push   %ecx
40d20f:	89 d1                	mov    %edx,%ecx
40d211:	c1 ea 03             	shr    $0x3,%edx
40d214:	01 d0                	add    %edx,%eax
40d216:	83 e1 07             	and    $0x7,%ecx
40d219:	66 ba 7f ff          	mov    $0xff7f,%dx
40d21d:	d3 ea                	shr    %cl,%edx
40d21f:	20 10                	and    %dl,(%eax)
40d221:	5a                   	pop    %edx
40d222:	d3 ea                	shr    %cl,%edx
40d224:	08 10                	or     %dl,(%eax)
40d226:	5d                   	pop    %ebp
40d227:	c2 04 00             	ret    $0x4
40d22a:	8b c0                	mov    %eax,%eax
40d22c:	55                   	push   %ebp
40d22d:	8b ec                	mov    %esp,%ebp
40d22f:	95                   	xchg   %eax,%ebp
40d230:	52                   	push   %edx
40d231:	51                   	push   %ecx
40d232:	8b 4d 6a             	mov    0x6a(%ebp),%ecx
40d235:	41                   	inc    %ecx
40d236:	92                   	xchg   %eax,%edx
40d237:	99                   	cltd
40d238:	f7 f1                	div    %ecx
40d23a:	91                   	xchg   %eax,%ecx
40d23b:	58                   	pop    %eax
40d23c:	8b 55 62             	mov    0x62(%ebp),%edx
40d23f:	f7 ea                	imul   %edx
40d241:	01 c1                	add    %eax,%ecx
40d243:	03 4d 5e             	add    0x5e(%ebp),%ecx
40d246:	51                   	push   %ecx
40d247:	8b 54 24 10          	mov    0x10(%esp),%edx
40d24b:	89 e8                	mov    %ebp,%eax
40d24d:	e8 b2 fc ff ff       	call   0x40cf04
40d252:	59                   	pop    %ecx
40d253:	5a                   	pop    %edx
40d254:	50                   	push   %eax
40d255:	8b 45 6a             	mov    0x6a(%ebp),%eax
40d258:	21 c2                	and    %eax,%edx
40d25a:	29 d0                	sub    %edx,%eax
40d25c:	8b 55 3d             	mov    0x3d(%ebp),%edx
40d25f:	0f b7 52 0e          	movzwl 0xe(%edx),%edx
40d263:	f7 e2                	mul    %edx
40d265:	91                   	xchg   %eax,%ecx
40d266:	8b 55 66             	mov    0x66(%ebp),%edx
40d269:	d3 e2                	shl    %cl,%edx
40d26b:	f7 d2                	not    %edx
40d26d:	20 10                	and    %dl,(%eax)
40d26f:	5a                   	pop    %edx
40d270:	d3 e2                	shl    %cl,%edx
40d272:	08 10                	or     %dl,(%eax)
40d274:	5d                   	pop    %ebp
40d275:	c2 04 00             	ret    $0x4
40d278:	55                   	push   %ebp
40d279:	8b ec                	mov    %esp,%ebp
40d27b:	01 d2                	add    %edx,%edx
40d27d:	03 50 5e             	add    0x5e(%eax),%edx
40d280:	52                   	push   %edx
40d281:	ff 70 66             	push   0x66(%eax)
40d284:	8b 40 62             	mov    0x62(%eax),%eax
40d287:	f7 e9                	imul   %ecx
40d289:	50                   	push   %eax
40d28a:	8b 45 08             	mov    0x8(%ebp),%eax
40d28d:	e8 d2 d1 ff ff       	call   0x40a464
40d292:	5d                   	pop    %ebp
40d293:	5a                   	pop    %edx
40d294:	31 c9                	xor    %ecx,%ecx
40d296:	80 ea 10             	sub    $0x10,%dl
40d299:	74 13                	je     0x40d2ae
40d29b:	88 c5                	mov    %al,%ch
40d29d:	d0 ed                	shr    $1,%ch
40d29f:	c1 e8 06             	shr    $0x6,%eax
40d2a2:	89 c2                	mov    %eax,%edx
40d2a4:	66 81 e2 e0 03       	and    $0x3e0,%dx
40d2a9:	c1 e8 0d             	shr    $0xd,%eax
40d2ac:	eb 11                	jmp    0x40d2bf
40d2ae:	24 f8                	and    $0xf8,%al
40d2b0:	88 c5                	mov    %al,%ch
40d2b2:	c1 e8 05             	shr    $0x5,%eax
40d2b5:	89 c2                	mov    %eax,%edx
40d2b7:	66 81 e2 e0 07       	and    $0x7e0,%dx
40d2bc:	c1 e8 0e             	shr    $0xe,%eax
40d2bf:	88 ec                	mov    %ch,%ah
40d2c1:	66 25 1f fc          	and    $0xfc1f,%ax
40d2c5:	66 09 d0             	or     %dx,%ax
40d2c8:	5a                   	pop    %edx
40d2c9:	66 89 04 2a          	mov    %ax,(%edx,%ebp,1)
40d2cd:	5d                   	pop    %ebp
40d2ce:	c2 04 00             	ret    $0x4
40d2d1:	8d 40 00             	lea    0x0(%eax),%eax
40d2d4:	55                   	push   %ebp
40d2d5:	8b ec                	mov    %esp,%ebp
40d2d7:	ff 70 62             	push   0x62(%eax)
40d2da:	ff 70 5e             	push   0x5e(%eax)
40d2dd:	8b 40 6e             	mov    0x6e(%eax),%eax
40d2e0:	f7 e2                	mul    %edx
40d2e2:	5a                   	pop    %edx
40d2e3:	01 c2                	add    %eax,%edx
40d2e5:	58                   	pop    %eax
40d2e6:	52                   	push   %edx
40d2e7:	f7 e9                	imul   %ecx
40d2e9:	5a                   	pop    %edx
40d2ea:	01 c2                	add    %eax,%edx
40d2ec:	52                   	push   %edx
40d2ed:	8b 45 08             	mov    0x8(%ebp),%eax
40d2f0:	e8 7f d1 ff ff       	call   0x40a474
40d2f5:	5a                   	pop    %edx
40d2f6:	81 22 00 00 00 ff    	andl   $0xff000000,(%edx)
40d2fc:	09 02                	or     %eax,(%edx)
40d2fe:	5d                   	pop    %ebp
40d2ff:	c2 04 00             	ret    $0x4
40d302:	8b c0                	mov    %eax,%eax
40d304:	55                   	push   %ebp
40d305:	8b ec                	mov    %esp,%ebp
40d307:	66 83 78 5c 00       	cmpw   $0x0,0x5c(%eax)
40d30c:	75 7d                	jne    0x40d38b
40d30e:	60                   	pusha
40d30f:	89 c3                	mov    %eax,%ebx
40d311:	31 d2                	xor    %edx,%edx
40d313:	38 53 3c             	cmp    %dl,0x3c(%ebx)
40d316:	75 66                	jne    0x40d37e
40d318:	e8 eb fa ff ff       	call   0x40ce08
40d31d:	89 43 5e             	mov    %eax,0x5e(%ebx)
40d320:	31 d2                	xor    %edx,%edx
40d322:	42                   	inc    %edx
40d323:	89 d8                	mov    %ebx,%eax
40d325:	e8 de fa ff ff       	call   0x40ce08
40d32a:	2b 43 5e             	sub    0x5e(%ebx),%eax
40d32d:	89 43 62             	mov    %eax,0x62(%ebx)
40d330:	89 d8                	mov    %ebx,%eax
40d332:	e8 91 c1 ff ff       	call   0x4094c8
40d337:	0f b6 c8             	movzbl %al,%ecx
40d33a:	66 ba 01 0f          	mov    $0xf01,%dx
40d33e:	b8 2c d2 40 00       	mov    $0x40d22c,%eax
40d343:	c6 43 6e 04          	movb   $0x4,0x6e(%ebx)
40d347:	e2 05                	loop   0x40d34e
40d349:	b8 dc d1 40 00       	mov    $0x40d1dc,%eax
40d34e:	e2 00                	loop   0x40d350
40d350:	e2 04                	loop   0x40d356
40d352:	fe ca                	dec    %dl
40d354:	b6 ff                	mov    $0xff,%dh
40d356:	e2 03                	loop   0x40d35b
40d358:	fe ce                	dec    %dh
40d35a:	41                   	inc    %ecx
40d35b:	e2 07                	loop   0x40d364
40d35d:	fe c6                	inc    %dh
40d35f:	b8 78 d2 40 00       	mov    $0x40d278,%eax
40d364:	e2 05                	loop   0x40d36b
40d366:	4a                   	dec    %edx
40d367:	ff 4b 6e             	decl   0x6e(%ebx)
40d36a:	41                   	inc    %ecx
40d36b:	e2 06                	loop   0x40d373
40d36d:	42                   	inc    %edx
40d36e:	b8 d4 d2 40 00       	mov    $0x40d2d4,%eax
40d373:	88 73 66             	mov    %dh,0x66(%ebx)
40d376:	88 53 6a             	mov    %dl,0x6a(%ebx)
40d379:	89 43 5a             	mov    %eax,0x5a(%ebx)
40d37c:	85 c0                	test   %eax,%eax
40d37e:	61                   	popa
40d37f:	75 0a                	jne    0x40d38b
40d381:	ff 75 08             	push   0x8(%ebp)
40d384:	e8 17 fe ff ff       	call   0x40d1a0
40d389:	eb 06                	jmp    0x40d391
40d38b:	ff 75 08             	push   0x8(%ebp)
40d38e:	ff 50 5a             	call   *0x5a(%eax)
40d391:	5d                   	pop    %ebp
40d392:	c2 04 00             	ret    $0x4
40d395:	8d 40 00             	lea    0x0(%eax),%eax
40d398:	56                   	push   %esi
40d399:	89 c6                	mov    %eax,%esi
40d39b:	84 d2                	test   %dl,%dl
40d39d:	74 06                	je     0x40d3a5
40d39f:	f6 46 26 01          	testb  $0x1,0x26(%esi)
40d3a3:	74 5c                	je     0x40d401
40d3a5:	f6 46 36 08          	testb  $0x8,0x36(%esi)
40d3a9:	74 4a                	je     0x40d3f5
40d3ab:	e8 90 eb ff ff       	call   0x40bf40
40d3b0:	50                   	push   %eax
40d3b1:	8b 88 f2 00 00 00    	mov    0xf2(%eax),%ecx
40d3b7:	e3 27                	jecxz  0x40d3e0
40d3b9:	39 f1                	cmp    %esi,%ecx
40d3bb:	74 23                	je     0x40d3e0
40d3bd:	8b 80 f2 00 00 00    	mov    0xf2(%eax),%eax
40d3c3:	8b 48 50             	mov    0x50(%eax),%ecx
40d3c6:	8b 91 ac 00 00 00    	mov    0xac(%ecx),%edx
40d3cc:	8b 89 a8 00 00 00    	mov    0xa8(%ecx),%ecx
40d3d2:	e3 05                	jecxz  0x40d3d9
40d3d4:	92                   	xchg   %eax,%edx
40d3d5:	ff d1                	call   *%ecx
40d3d7:	eb 07                	jmp    0x40d3e0
40d3d9:	6a 00                	push   $0x0
40d3db:	e8 38 77 ff ff       	call   0x404b18
40d3e0:	58                   	pop    %eax
40d3e1:	89 b0 f2 00 00 00    	mov    %esi,0xf2(%eax)
40d3e7:	96                   	xchg   %eax,%esi
40d3e8:	e8 57 08 00 00       	call   0x40dc44
40d3ed:	50                   	push   %eax
40d3ee:	e8 25 77 ff ff       	call   0x404b18
40d3f3:	5e                   	pop    %esi
40d3f4:	c3                   	ret
40d3f5:	96                   	xchg   %eax,%esi
40d3f6:	e8 49 08 00 00       	call   0x40dc44
40d3fb:	50                   	push   %eax
40d3fc:	e8 1f 77 ff ff       	call   0x404b20
40d401:	5e                   	pop    %esi
40d402:	c3                   	ret
40d403:	90                   	nop
40d404:	53                   	push   %ebx
40d405:	57                   	push   %edi
40d406:	51                   	push   %ecx
40d407:	93                   	xchg   %eax,%ebx
40d408:	89 d7                	mov    %edx,%edi
40d40a:	c7 43 5c 8c 99 40 00 	movl   $0x40998c,0x5c(%ebx)
40d411:	8b 43 40             	mov    0x40(%ebx),%eax
40d414:	89 fa                	mov    %edi,%edx
40d416:	e8 69 7e ff ff       	call   0x405284
40d41b:	85 c0                	test   %eax,%eax
40d41d:	7d 13                	jge    0x40d432
40d41f:	8b 43 40             	mov    0x40(%ebx),%eax
40d422:	50                   	push   %eax
40d423:	89 fa                	mov    %edi,%edx
40d425:	e8 a6 7d ff ff       	call   0x4051d0
40d42a:	58                   	pop    %eax
40d42b:	5a                   	pop    %edx
40d42c:	52                   	push   %edx
40d42d:	e8 9e 7d ff ff       	call   0x4051d0
40d432:	8b 43 40             	mov    0x40(%ebx),%eax
40d435:	ff 15 40 61 42 00    	call   *0x426140
40d43b:	59                   	pop    %ecx
40d43c:	5f                   	pop    %edi
40d43d:	5b                   	pop    %ebx
40d43e:	c3                   	ret
40d43f:	90                   	nop
40d440:	f6 40 27 10          	testb  $0x10,0x27(%eax)
40d444:	0f 95 c6             	setne  %dh
40d447:	f6 40 37 03          	testb  $0x3,0x37(%eax)
40d44b:	0f 95 c2             	setne  %dl
40d44e:	08 f2                	or     %dh,%dl
40d450:	f6 40 36 08          	testb  $0x8,0x36(%eax)
40d454:	74 17                	je     0x40d46d
40d456:	8b 48 30             	mov    0x30(%eax),%ecx
40d459:	e3 12                	jecxz  0x40d46d
40d45b:	84 d2                	test   %dl,%dl
40d45d:	74 0e                	je     0x40d46d
40d45f:	91                   	xchg   %eax,%ecx
40d460:	50                   	push   %eax
40d461:	e8 46 e4 ff ff       	call   0x40b8ac
40d466:	58                   	pop    %eax
40d467:	e8 d4 ff ff ff       	call   0x40d440
40d46c:	92                   	xchg   %eax,%edx
40d46d:	92                   	xchg   %eax,%edx
40d46e:	c3                   	ret
40d46f:	90                   	nop
40d470:	0f be 05 58 64 42 00 	movsbl 0x426458,%eax
40d477:	fe c4                	inc    %ah
40d479:	75 58                	jne    0x40d4d3
40d47b:	e8 98 73 ff ff       	call   0x404818
40d480:	92                   	xchg   %eax,%edx
40d481:	31 c0                	xor    %eax,%eax
40d483:	85 d2                	test   %edx,%edx
40d485:	86 d6                	xchg   %dl,%dh
40d487:	7c 2b                	jl     0x40d4b4
40d489:	b0 04                	mov    $0x4,%al
40d48b:	66 81 fa 00 04       	cmp    $0x400,%dx
40d490:	74 3b                	je     0x40d4cd
40d492:	fe c0                	inc    %al
40d494:	66 81 ea 00 05       	sub    $0x500,%dx
40d499:	74 32                	je     0x40d4cd
40d49b:	fe c0                	inc    %al
40d49d:	66 4a                	dec    %dx
40d49f:	74 2c                	je     0x40d4cd
40d4a1:	fe c0                	inc    %al
40d4a3:	66 4a                	dec    %dx
40d4a5:	74 26                	je     0x40d4cd
40d4a7:	fe c0                	inc    %al
40d4a9:	66 81 fa fe 00       	cmp    $0xfe,%dx
40d4ae:	74 1d                	je     0x40d4cd
40d4b0:	fe c0                	inc    %al
40d4b2:	eb 19                	jmp    0x40d4cd
40d4b4:	80 fe 04             	cmp    $0x4,%dh
40d4b7:	72 14                	jb     0x40d4cd
40d4b9:	fe c0                	inc    %al
40d4bb:	66 81 fa 0a 04       	cmp    $0x40a,%dx
40d4c0:	72 0b                	jb     0x40d4cd
40d4c2:	fe c0                	inc    %al
40d4c4:	66 81 fa 5a 04       	cmp    $0x45a,%dx
40d4c9:	72 02                	jb     0x40d4cd
40d4cb:	fe c0                	inc    %al
40d4cd:	88 05 58 64 42 00    	mov    %al,0x426458
40d4d3:	c3                   	ret
40d4d4:	80 48 34 01          	orb    $0x1,0x34(%eax)
40d4d8:	8b 50 24             	mov    0x24(%eax),%edx
40d4db:	f6 40 38 01          	testb  $0x1,0x38(%eax)