40e206:	ff 15 50 21 41 00    	call   *0x412150
40e20c:	c3                   	ret
40e20d:	6a ff                	push   $0xffffffff
40e20f:	ff 31                	push   (%ecx)
40e211:	ff 15 e4 20 41 00    	call   *0x4120e4
40e217:	33 c9                	xor    %ecx,%ecx
40e219:	85 c0                	test   %eax,%eax
40e21b:	0f 94 c1             	sete   %cl
40e21e:	8b c1                	mov    %ecx,%eax
40e220:	c3                   	ret
40e221:	56                   	push   %esi
40e222:	8b f1                	mov    %ecx,%esi
40e224:	ff 36                	push   (%esi)
40e226:	ff 15 50 21 41 00    	call   *0x412150
40e22c:	ff 36                	push   (%esi)
40e22e:	ff 15 00 22 41 00    	call   *0x412200
40e234:	5e                   	pop    %esi
40e235:	c3                   	ret
40e236:	56                   	push   %esi
40e237:	33 c0                	xor    %eax,%eax
40e239:	8b f1                	mov    %ecx,%esi
40e23b:	50                   	push   %eax
40e23c:	50                   	push   %eax
40e23d:	50                   	push   %eax
40e23e:	ff 15 4c 21 41 00    	call   *0x41214c
40e244:	33 d2                	xor    %edx,%edx
40e246:	89 06                	mov    %eax,(%esi)
40e248:	83 f8 ff             	cmp    $0xffffffff,%eax
40e24b:	8b c6                	mov    %esi,%eax
40e24d:	0f 95 c2             	setne  %dl
40e250:	89 56 04             	mov    %edx,0x4(%esi)
40e253:	5e                   	pop    %esi
40e254:	c2 04 00             	ret    $0x4
40e257:	55                   	push   %ebp
40e258:	8b ec                	mov    %esp,%ebp
40e25a:	83 ec 3c             	sub    $0x3c,%esp
40e25d:	53                   	push   %ebx
40e25e:	56                   	push   %esi
40e25f:	8b d9                	mov    %ecx,%ebx
40e261:	57                   	push   %edi
40e262:	33 ff                	xor    %edi,%edi
40e264:	39 7b 34             	cmp    %edi,0x34(%ebx)
40e267:	76 74                	jbe    0x40e2dd
40e269:	8d 43 2c             	lea    0x2c(%ebx),%eax
40e26c:	89 7d f8             	mov    %edi,-0x8(%ebp)
40e26f:	89 45 f4             	mov    %eax,-0xc(%ebp)
40e272:	8b f7                	mov    %edi,%esi
40e274:	3b 78 08             	cmp    0x8(%eax),%edi
40e277:	0f 92 c1             	setb   %cl
40e27a:	e8 ac 75 ff ff       	call   0x40582b
40e27f:	8b 43 2c             	mov    0x2c(%ebx),%eax
40e282:	8d 4d c4             	lea    -0x3c(%ebp),%ecx
40e285:	03 c6                	add    %esi,%eax
40e287:	50                   	push   %eax
40e288:	e8 0a 08 00 00       	call   0x40ea97
40e28d:	8d 45 c4             	lea    -0x3c(%ebp),%eax
40e290:	50                   	push   %eax
40e291:	8d 4d fc             	lea    -0x4(%ebp),%ecx
40e294:	e8 53 4f ff ff       	call   0x4031ec
40e299:	ff 75 0c             	push   0xc(%ebp)
40e29c:	8d 4d fc             	lea    -0x4(%ebp),%ecx
40e29f:	e8 2c 4f ff ff       	call   0x4031d0
40e2a4:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40e2a7:	8b f0                	mov    %eax,%esi
40e2a9:	e8 7f 77 ff ff       	call   0x405a2d
40e2ae:	8d 4d ec             	lea    -0x14(%ebp),%ecx
40e2b1:	e8 b0 4b ff ff       	call   0x402e66
40e2b6:	85 f6                	test   %esi,%esi
40e2b8:	75 14                	jne    0x40e2ce
40e2ba:	8b 75 f8             	mov    -0x8(%ebp),%esi
40e2bd:	8d 43 2c             	lea    0x2c(%ebx),%eax
40e2c0:	47                   	inc    %edi
40e2c1:	83 c6 30             	add    $0x30,%esi
40e2c4:	89 75 f8             	mov    %esi,-0x8(%ebp)
40e2c7:	3b 7b 34             	cmp    0x34(%ebx),%edi
40e2ca:	72 a8                	jb     0x40e274
40e2cc:	eb 0f                	jmp    0x40e2dd
40e2ce:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40e2d1:	57                   	push   %edi
40e2d2:	ff 75 08             	push   0x8(%ebp)
40e2d5:	e8 e8 3f ff ff       	call   0x4022c2
40e2da:	8b 45 08             	mov    0x8(%ebp),%eax
40e2dd:	5f                   	pop    %edi
40e2de:	5e                   	pop    %esi
40e2df:	5b                   	pop    %ebx
40e2e0:	c9                   	leave
40e2e1:	c2 08 00             	ret    $0x8
40e2e4:	55                   	push   %ebp
40e2e5:	8b ec                	mov    %esp,%ebp
40e2e7:	53                   	push   %ebx
40e2e8:	56                   	push   %esi
40e2e9:	57                   	push   %edi
40e2ea:	8b 7d 08             	mov    0x8(%ebp),%edi
40e2ed:	8b f1                	mov    %ecx,%esi
40e2ef:	b8 4d 5a 00 00       	mov    $0x5a4d,%eax
40e2f4:	89 7e 20             	mov    %edi,0x20(%esi)
40e2f7:	66 39 07             	cmp    %ax,(%edi)
40e2fa:	0f 85 e4 00 00 00    	jne    0x40e3e4
40e300:	8b 47 3c             	mov    0x3c(%edi),%eax
40e303:	03 c7                	add    %edi,%eax
40e305:	81 38 50 45 00 00    	cmpl   $0x4550,(%eax)
40e30b:	0f 85 d3 00 00 00    	jne    0x40e3e4
40e311:	0f b7 48 04          	movzwl 0x4(%eax),%ecx
40e315:	ba 4c 01 00 00       	mov    $0x14c,%edx
40e31a:	66 3b ca             	cmp    %dx,%cx
40e31d:	75 5e                	jne    0x40e37d
40e31f:	c7 46 40 01 00 00 00 	movl   $0x1,0x40(%esi)
40e326:	8d 4e 18             	lea    0x18(%esi),%ecx
40e329:	89 46 24             	mov    %eax,0x24(%esi)
40e32c:	ff 70 54             	push   0x54(%eax)
40e32f:	57                   	push   %edi
40e330:	e8 8c 4a ff ff       	call   0x402dc1
40e335:	8b 4e 24             	mov    0x24(%esi),%ecx
40e338:	83 65 08 00          	andl   $0x0,0x8(%ebp)
40e33c:	0f b7 41 14          	movzwl 0x14(%ecx),%eax
40e340:	8d 59 18             	lea    0x18(%ecx),%ebx
40e343:	03 d8                	add    %eax,%ebx
40e345:	33 c0                	xor    %eax,%eax
40e347:	66 3b 41 06          	cmp    0x6(%ecx),%ax
40e34b:	0f 83 8b 00 00 00    	jae    0x40e3dc
40e351:	83 ec 30             	sub    $0x30,%esp
40e354:	8b cc                	mov    %esp,%ecx
40e356:	51                   	push   %ecx
40e357:	53                   	push   %ebx
40e358:	57                   	push   %edi
40e359:	e8 03 07 00 00       	call   0x40ea61
40e35e:	8d 4e 2c             	lea    0x2c(%esi),%ecx
40e361:	e8 54 3e ff ff       	call   0x4021ba
40e366:	8b 46 24             	mov    0x24(%esi),%eax
40e369:	83 c3 28             	add    $0x28,%ebx
40e36c:	8b 4d 08             	mov    0x8(%ebp),%ecx
40e36f:	41                   	inc    %ecx
40e370:	89 4d 08             	mov    %ecx,0x8(%ebp)
40e373:	0f b7 40 06          	movzwl 0x6(%eax),%eax
40e377:	3b c8                	cmp    %eax,%ecx
40e379:	7c d6                	jl     0x40e351
40e37b:	eb 5f                	jmp    0x40e3dc
40e37d:	ba 64 86 00 00       	mov    $0x8664,%edx
40e382:	66 3b ca             	cmp    %dx,%cx
40e385:	75 55                	jne    0x40e3dc
40e387:	33 db                	xor    %ebx,%ebx
40e389:	89 46 28             	mov    %eax,0x28(%esi)
40e38c:	89 5e 40             	mov    %ebx,0x40(%esi)
40e38f:	8d 4e 18             	lea    0x18(%esi),%ecx
40e392:	ff 70 54             	push   0x54(%eax)
40e395:	57                   	push   %edi
40e396:	e8 26 4a ff ff       	call   0x402dc1
40e39b:	8b 4e 28             	mov    0x28(%esi),%ecx
40e39e:	33 d2                	xor    %edx,%edx
40e3a0:	0f b7 41 14          	movzwl 0x14(%ecx),%eax
40e3a4:	83 c0 18             	add    $0x18,%eax
40e3a7:	03 c1                	add    %ecx,%eax
40e3a9:	89 45 08             	mov    %eax,0x8(%ebp)
40e3ac:	66 3b 51 06          	cmp    0x6(%ecx),%dx
40e3b0:	73 2a                	jae    0x40e3dc
40e3b2:	83 ec 30             	sub    $0x30,%esp
40e3b5:	8b cc                	mov    %esp,%ecx
40e3b7:	51                   	push   %ecx
40e3b8:	50                   	push   %eax
40e3b9:	57                   	push   %edi
40e3ba:	e8 a2 06 00 00       	call   0x40ea61
40e3bf:	8d 4e 2c             	lea    0x2c(%esi),%ecx
40e3c2:	e8 f3 3d ff ff       	call   0x4021ba
40e3c7:	8b 4e 28             	mov    0x28(%esi),%ecx
40e3ca:	43                   	inc    %ebx
40e3cb:	8b 45 08             	mov    0x8(%ebp),%eax
40e3ce:	83 c0 28             	add    $0x28,%eax
40e3d1:	89 45 08             	mov    %eax,0x8(%ebp)
40e3d4:	0f b7 49 06          	movzwl 0x6(%ecx),%ecx
40e3d8:	3b d9                	cmp    %ecx,%ebx
40e3da:	7c d6                	jl     0x40e3b2
40e3dc:	33 c0                	xor    %eax,%eax
40e3de:	40                   	inc    %eax
40e3df:	89 46 3c             	mov    %eax,0x3c(%esi)
40e3e2:	eb 02                	jmp    0x40e3e6
40e3e4:	33 c0                	xor    %eax,%eax
40e3e6:	5f                   	pop    %edi
40e3e7:	5e                   	pop    %esi
40e3e8:	5b                   	pop    %ebx
40e3e9:	5d                   	pop    %ebp
40e3ea:	c2 04 00             	ret    $0x4
40e3ed:	53                   	push   %ebx
40e3ee:	56                   	push   %esi
40e3ef:	57                   	push   %edi
40e3f0:	8b f1                	mov    %ecx,%esi
40e3f2:	e8 75 fa ff ff       	call   0x40de6c
40e3f7:	33 db                	xor    %ebx,%ebx
40e3f9:	b9 f4 00 00 00       	mov    $0xf4,%ecx
40e3fe:	89 5e 18             	mov    %ebx,0x18(%esi)
40e401:	89 5e 1c             	mov    %ebx,0x1c(%esi)
40e404:	6a 05                	push   $0x5
40e406:	5f                   	pop    %edi
40e407:	89 7e 38             	mov    %edi,0x38(%esi)
40e40a:	89 7e 30             	mov    %edi,0x30(%esi)
40e40d:	89 5e 34             	mov    %ebx,0x34(%esi)
40e410:	e8 c6 76 ff ff       	call   0x405adb
40e415:	85 c0                	test   %eax,%eax
40e417:	74 17                	je     0x40e430
40e419:	8d 48 04             	lea    0x4(%eax),%ecx
40e41c:	89 38                	mov    %edi,(%eax)
40e41e:	8d 41 28             	lea    0x28(%ecx),%eax
40e421:	89 18                	mov    %ebx,(%eax)
40e423:	8d 40 30             	lea    0x30(%eax),%eax
40e426:	89 58 d4             	mov    %ebx,-0x2c(%eax)
40e429:	83 ef 01             	sub    $0x1,%edi
40e42c:	75 f3                	jne    0x40e421
40e42e:	eb 02                	jmp    0x40e432
40e430:	8b cb                	mov    %ebx,%ecx
40e432:	89 4e 2c             	mov    %ecx,0x2c(%esi)
40e435:	8b c6                	mov    %esi,%eax
40e437:	5f                   	pop    %edi
40e438:	89 5e 3c             	mov    %ebx,0x3c(%esi)
40e43b:	5e                   	pop    %esi
40e43c:	5b                   	pop    %ebx
40e43d:	c3                   	ret
40e43e:	55                   	push   %ebp
40e43f:	8b ec                	mov    %esp,%ebp
40e441:	83 ec 18             	sub    $0x18,%esp
40e444:	53                   	push   %ebx
40e445:	56                   	push   %esi
40e446:	8b f1                	mov    %ecx,%esi
40e448:	8b 4d 08             	mov    0x8(%ebp),%ecx
40e44b:	89 75 f4             	mov    %esi,-0xc(%ebp)
40e44e:	57                   	push   %edi
40e44f:	85 d2                	test   %edx,%edx
40e451:	0f 84 55 01 00 00    	je     0x40e5ac
40e457:	8b 7d 0c             	mov    0xc(%ebp),%edi
40e45a:	c7 45 f0 01 00 00 00 	movl   $0x1,-0x10(%ebp)
40e461:	c7 45 e8 02 00 00 00 	movl   $0x2,-0x18(%ebp)
40e468:	0f b7 01             	movzwl (%ecx),%eax
40e46b:	4a                   	dec    %edx
40e46c:	8b d8                	mov    %eax,%ebx
40e46e:	89 55 f8             	mov    %edx,-0x8(%ebp)
40e471:	81 e3 ff 0f 00 00    	and    $0xfff,%ebx
40e477:	66 c1 e8 0c          	shr    $0xc,%ax
40e47b:	89 5d ec             	mov    %ebx,-0x14(%ebp)
40e47e:	0f b7 db             	movzwl %bx,%ebx
40e481:	03 de                	add    %esi,%ebx
40e483:	66 83 f8 03          	cmp    $0x3,%ax
40e487:	75 0a                	jne    0x40e493
40e489:	8b 45 0c             	mov    0xc(%ebp),%eax
40e48c:	01 03                	add    %eax,(%ebx)
40e48e:	e9 09 01 00 00       	jmp    0x40e59c
40e493:	66 3b 45 f0          	cmp    -0x10(%ebp),%ax
40e497:	75 13                	jne    0x40e4ac
40e499:	0f b7 03             	movzwl (%ebx),%eax
40e49c:	c1 e0 10             	shl    $0x10,%eax
40e49f:	03 c7                	add    %edi,%eax
40e4a1:	c1 f8 10             	sar    $0x10,%eax
40e4a4:	66 89 03             	mov    %ax,(%ebx)
40e4a7:	e9 f3 00 00 00       	jmp    0x40e59f
40e4ac:	66 83 f8 04          	cmp    $0x4,%ax
40e4b0:	75 5f                	jne    0x40e511
40e4b2:	8d 71 02             	lea    0x2(%ecx),%esi
40e4b5:	4a                   	dec    %edx
40e4b6:	f6 45 ec 02          	testb  $0x2,-0x14(%ebp)
40e4ba:	8b ce                	mov    %esi,%ecx
40e4bc:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40e4bf:	89 55 f8             	mov    %edx,-0x8(%ebp)
40e4c2:	75 45                	jne    0x40e509
40e4c4:	8b 7d 0c             	mov    0xc(%ebp),%edi
40e4c7:	0f b7 0b             	movzwl (%ebx),%ecx
40e4ca:	0f bf 06             	movswl (%esi),%eax
40e4cd:	c1 e1 10             	shl    $0x10,%ecx
40e4d0:	03 c1                	add    %ecx,%eax
40e4d2:	8d 97 00 80 00 00    	lea    0x8000(%edi),%edx
40e4d8:	03 d0                	add    %eax,%edx
40e4da:	8b c2                	mov    %edx,%eax
40e4dc:	2b d1                	sub    %ecx,%edx
40e4de:	c1 f8 10             	sar    $0x10,%eax
40e4e1:	66 89 03             	mov    %ax,(%ebx)
40e4e4:	8b c7                	mov    %edi,%eax
40e4e6:	c1 e8 10             	shr    $0x10,%eax
40e4e9:	c1 ea 10             	shr    $0x10,%edx
40e4ec:	2b d0                	sub    %eax,%edx
40e4ee:	33 c0                	xor    %eax,%eax
40e4f0:	40                   	inc    %eax
40e4f1:	3b d0                	cmp    %eax,%edx
40e4f3:	74 07                	je     0x40e4fc
40e4f5:	85 d2                	test   %edx,%edx
40e4f7:	74 07                	je     0x40e500
40e4f9:	6a 02                	push   $0x2
40e4fb:	58                   	pop    %eax
40e4fc:	66 09 46 fe          	or     %ax,-0x2(%esi)
40e500:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40e503:	8b 55 f8             	mov    -0x8(%ebp),%edx
40e506:	8b 7d 0c             	mov    0xc(%ebp),%edi
40e509:	8b 75 f4             	mov    -0xc(%ebp),%esi
40e50c:	e9 8e 00 00 00       	jmp    0x40e59f
40e511:	66 3b 45 e8          	cmp    -0x18(%ebp),%ax
40e515:	75 08                	jne    0x40e51f
40e517:	8b 45 0c             	mov    0xc(%ebp),%eax
40e51a:	66 01 03             	add    %ax,(%ebx)
40e51d:	eb 7d                	jmp    0x40e59c
40e51f:	66 85 c0             	test   %ax,%ax
40e522:	74 7b                	je     0x40e59f
40e524:	66 83 f8 06          	cmp    $0x6,%ax
40e528:	74 75                	je     0x40e59f
40e52a:	66 83 f8 07          	cmp    $0x7,%ax
40e52e:	74 6f                	je     0x40e59f
40e530:	66 83 f8 0b          	cmp    $0xb,%ax
40e534:	75 7d                	jne    0x40e5b3
40e536:	6a 02                	push   $0x2
40e538:	58                   	pop    %eax
40e539:	03 c8                	add    %eax,%ecx
40e53b:	0f b7 03             	movzwl (%ebx),%eax
40e53e:	c1 e0 10             	shl    $0x10,%eax
40e541:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40e544:	6a 02                	push   $0x2
40e546:	8d 79 02             	lea    0x2(%ecx),%edi
40e549:	b9 00 00 01 00       	mov    $0x10000,%ecx
40e54e:	f7 e9                	imul   %ecx
40e550:	8b f0                	mov    %eax,%esi
40e552:	8b ca                	mov    %edx,%ecx
40e554:	0f bf 07             	movswl (%edi),%eax
40e557:	99                   	cltd
40e558:	0f a4 c2 10          	shld   $0x10,%eax,%edx
40e55c:	c1 e0 10             	shl    $0x10,%eax
40e55f:	03 f0                	add    %eax,%esi
40e561:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e564:	13 ca                	adc    %edx,%ecx
40e566:	0f b7 00             	movzwl (%eax),%eax
40e569:	99                   	cltd
40e56a:	03 f0                	add    %eax,%esi
40e56c:	b8 00 80 00 00       	mov    $0x8000,%eax
40e571:	13 ca                	adc    %edx,%ecx
40e573:	03 75 0c             	add    0xc(%ebp),%esi
40e576:	8b 55 f8             	mov    -0x8(%ebp),%edx
40e579:	13 4d 10             	adc    0x10(%ebp),%ecx
40e57c:	03 f0                	add    %eax,%esi
40e57e:	83 d1 00             	adc    $0x0,%ecx
40e581:	0f ac ce 10          	shrd   $0x10,%ecx,%esi
40e585:	c1 f9 10             	sar    $0x10,%ecx
40e588:	03 f0                	add    %eax,%esi
40e58a:	83 d1 00             	adc    $0x0,%ecx
40e58d:	0f ac ce 10          	shrd   $0x10,%ecx,%esi
40e591:	8b cf                	mov    %edi,%ecx
40e593:	66 89 33             	mov    %si,(%ebx)
40e596:	5e                   	pop    %esi
40e597:	2b d6                	sub    %esi,%edx
40e599:	8b 75 f4             	mov    -0xc(%ebp),%esi
40e59c:	8b 7d 0c             	mov    0xc(%ebp),%edi
40e59f:	6a 02                	push   $0x2
40e5a1:	58                   	pop    %eax
40e5a2:	03 c8                	add    %eax,%ecx
40e5a4:	85 d2                	test   %edx,%edx
40e5a6:	0f 85 bc fe ff ff    	jne    0x40e468
40e5ac:	8b c1                	mov    %ecx,%eax
40e5ae:	5f                   	pop    %edi
40e5af:	5e                   	pop    %esi