40e043:	53                   	push   %ebx
40e044:	e8 ad 02 00 00       	call   0x40e2f6
40e049:	8b 0c b5 c0 41 42 00 	mov    0x4241c0(,%esi,4),%ecx
40e050:	83 c4 10             	add    $0x10,%esp
40e053:	89 85 f4 ef ff ff    	mov    %eax,-0x100c(%ebp)
40e059:	8b c2                	mov    %edx,%eax
40e05b:	8b 95 f4 ef ff ff    	mov    -0x100c(%ebp),%edx
40e061:	89 85 ec ef ff ff    	mov    %eax,-0x1014(%ebp)
40e067:	3b 54 39 20          	cmp    0x20(%ecx,%edi,1),%edx
40e06b:	0f 85 e1 00 00 00    	jne    0x40e152
40e071:	3b 44 39 24          	cmp    0x24(%ecx,%edi,1),%eax
40e075:	0f 85 d7 00 00 00    	jne    0x40e152
40e07b:	6a 00                	push   $0x0
40e07d:	8d 85 f0 ef ff ff    	lea    -0x1010(%ebp),%eax
40e083:	50                   	push   %eax
40e084:	68 00 10 00 00       	push   $0x1000
40e089:	8d 85 fc ef ff ff    	lea    -0x1004(%ebp),%eax
40e08f:	50                   	push   %eax
40e090:	ff 74 39 18          	push   0x18(%ecx,%edi,1)
40e094:	ff 15 90 b0 41 00    	call   *0x41b090
40e09a:	85 c0                	test   %eax,%eax
40e09c:	0f 84 b0 00 00 00    	je     0x40e152
40e0a2:	6a 00                	push   $0x0
40e0a4:	ff 75 10             	push   0x10(%ebp)
40e0a7:	ff 75 0c             	push   0xc(%ebp)
40e0aa:	53                   	push   %ebx
40e0ab:	e8 46 02 00 00       	call   0x40e2f6
40e0b0:	83 c4 10             	add    $0x10,%esp
40e0b3:	85 d2                	test   %edx,%edx
40e0b5:	7f 0e                	jg     0x40e0c5
40e0b7:	0f 8c 95 00 00 00    	jl     0x40e152
40e0bd:	85 c0                	test   %eax,%eax
40e0bf:	0f 82 8d 00 00 00    	jb     0x40e152
40e0c5:	8b 9d e8 ef ff ff    	mov    -0x1018(%ebp),%ebx
40e0cb:	8b 85 f0 ef ff ff    	mov    -0x1010(%ebp),%eax
40e0d1:	85 db                	test   %ebx,%ebx
40e0d3:	7c 0a                	jl     0x40e0df
40e0d5:	7f 7b                	jg     0x40e152
40e0d7:	39 85 f8 ef ff ff    	cmp    %eax,-0x1008(%ebp)
40e0dd:	77 73                	ja     0x40e152
40e0df:	8d bd fc ef ff ff    	lea    -0x1004(%ebp),%edi
40e0e5:	33 d2                	xor    %edx,%edx
40e0e7:	03 f8                	add    %eax,%edi
40e0e9:	8d 8d fc ef ff ff    	lea    -0x1004(%ebp),%ecx
40e0ef:	33 f6                	xor    %esi,%esi
40e0f1:	39 95 f8 ef ff ff    	cmp    %edx,-0x1008(%ebp)
40e0f7:	75 04                	jne    0x40e0fd
40e0f9:	85 db                	test   %ebx,%ebx
40e0fb:	74 3c                	je     0x40e139
40e0fd:	3b cf                	cmp    %edi,%ecx
40e0ff:	73 38                	jae    0x40e139
40e101:	8a 01                	mov    (%ecx),%al
40e103:	3c 0d                	cmp    $0xd,%al
40e105:	75 13                	jne    0x40e11a
40e107:	8d 47 ff             	lea    -0x1(%edi),%eax
40e10a:	3b c8                	cmp    %eax,%ecx
40e10c:	73 18                	jae    0x40e126
40e10e:	8d 41 01             	lea    0x1(%ecx),%eax
40e111:	80 38 0a             	cmpb   $0xa,(%eax)
40e114:	75 10                	jne    0x40e126
40e116:	8b c8                	mov    %eax,%ecx
40e118:	eb 0c                	jmp    0x40e126
40e11a:	0f b6 c0             	movzbl %al,%eax
40e11d:	0f be 80 30 38 42 00 	movsbl 0x423830(%eax),%eax
40e124:	03 c8                	add    %eax,%ecx
40e126:	83 c6 01             	add    $0x1,%esi
40e129:	83 d2 00             	adc    $0x0,%edx
40e12c:	41                   	inc    %ecx
40e12d:	3b b5 f8 ef ff ff    	cmp    -0x1008(%ebp),%esi
40e133:	75 c8                	jne    0x40e0fd
40e135:	3b d3                	cmp    %ebx,%edx
40e137:	75 c4                	jne    0x40e0fd
40e139:	8d 85 fc ef ff ff    	lea    -0x1004(%ebp),%eax
40e13f:	2b c8                	sub    %eax,%ecx
40e141:	8b c1                	mov    %ecx,%eax
40e143:	99                   	cltd
40e144:	03 85 f4 ef ff ff    	add    -0x100c(%ebp),%eax
40e14a:	13 95 ec ef ff ff    	adc    -0x1014(%ebp),%edx
40e150:	eb 05                	jmp    0x40e157
40e152:	83 c8 ff             	or     $0xffffffff,%eax
40e155:	0b d0                	or     %eax,%edx
40e157:	5f                   	pop    %edi
40e158:	5e                   	pop    %esi
40e159:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40e15c:	33 cd                	xor    %ebp,%ecx
40e15e:	5b                   	pop    %ebx
40e15f:	e8 f2 4d ff ff       	call   0x402f56
40e164:	8b e5                	mov    %ebp,%esp
40e166:	5d                   	pop    %ebp
40e167:	c3                   	ret
40e168:	8b ff                	mov    %edi,%edi
40e16a:	55                   	push   %ebp
40e16b:	8b ec                	mov    %esp,%ebp
40e16d:	5d                   	pop    %ebp
40e16e:	e9 41 fb ff ff       	jmp    0x40dcb4
40e173:	6a 1c                	push   $0x1c
40e175:	68 28 1e 42 00       	push   $0x421e28
40e17a:	e8 d1 59 ff ff       	call   0x403b50
40e17f:	8b 7d 08             	mov    0x8(%ebp),%edi
40e182:	83 ff fe             	cmp    $0xfffffffe,%edi
40e185:	75 18                	jne    0x40e19f
40e187:	e8 68 9b ff ff       	call   0x407cf4
40e18c:	83 20 00             	andl   $0x0,(%eax)
40e18f:	e8 73 9b ff ff       	call   0x407d07
40e194:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40e19a:	e9 cc 00 00 00       	jmp    0x40e26b
40e19f:	85 ff                	test   %edi,%edi
40e1a1:	0f 88 ac 00 00 00    	js     0x40e253
40e1a7:	3b 3d c0 43 42 00    	cmp    0x4243c0,%edi
40e1ad:	0f 83 a0 00 00 00    	jae    0x40e253
40e1b3:	8b cf                	mov    %edi,%ecx
40e1b5:	c1 f9 06             	sar    $0x6,%ecx
40e1b8:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
40e1bb:	8b c7                	mov    %edi,%eax
40e1bd:	83 e0 3f             	and    $0x3f,%eax
40e1c0:	6b d0 30             	imul   $0x30,%eax,%edx
40e1c3:	89 55 e0             	mov    %edx,-0x20(%ebp)
40e1c6:	8b 04 8d c0 41 42 00 	mov    0x4241c0(,%ecx,4),%eax
40e1cd:	0f b6 44 10 28       	movzbl 0x28(%eax,%edx,1),%eax
40e1d2:	83 e0 01             	and    $0x1,%eax
40e1d5:	74 7c                	je     0x40e253
40e1d7:	57                   	push   %edi
40e1d8:	e8 db e1 ff ff       	call   0x40c3b8
40e1dd:	59                   	pop    %ecx
40e1de:	83 ce ff             	or     $0xffffffff,%esi
40e1e1:	89 75 d4             	mov    %esi,-0x2c(%ebp)
40e1e4:	8b de                	mov    %esi,%ebx
40e1e6:	89 5d d8             	mov    %ebx,-0x28(%ebp)
40e1e9:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40e1ed:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40e1f0:	8b 04 85 c0 41 42 00 	mov    0x4241c0(,%eax,4),%eax
40e1f7:	8b 4d e0             	mov    -0x20(%ebp),%ecx
40e1fa:	f6 44 08 28 01       	testb  $0x1,0x28(%eax,%ecx,1)
40e1ff:	75 15                	jne    0x40e216
40e201:	e8 01 9b ff ff       	call   0x407d07
40e206:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40e20c:	e8 e3 9a ff ff       	call   0x407cf4
40e211:	83 20 00             	andl   $0x0,(%eax)
40e214:	eb 1c                	jmp    0x40e232
40e216:	ff 75 14             	push   0x14(%ebp)
40e219:	ff 75 10             	push   0x10(%ebp)
40e21c:	ff 75 0c             	push   0xc(%ebp)
40e21f:	57                   	push   %edi
40e220:	e8 53 00 00 00       	call   0x40e278
40e225:	83 c4 10             	add    $0x10,%esp
40e228:	8b f0                	mov    %eax,%esi
40e22a:	89 75 d4             	mov    %esi,-0x2c(%ebp)
40e22d:	8b da                	mov    %edx,%ebx
40e22f:	89 5d d8             	mov    %ebx,-0x28(%ebp)
40e232:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40e239:	e8 0d 00 00 00       	call   0x40e24b
40e23e:	8b d3                	mov    %ebx,%edx
40e240:	eb 2e                	jmp    0x40e270
40e242:	8b 7d 08             	mov    0x8(%ebp),%edi
40e245:	8b 5d d8             	mov    -0x28(%ebp),%ebx
40e248:	8b 75 d4             	mov    -0x2c(%ebp),%esi
40e24b:	57                   	push   %edi
40e24c:	e8 1e e2 ff ff       	call   0x40c46f
40e251:	59                   	pop    %ecx
40e252:	c3                   	ret
40e253:	e8 9c 9a ff ff       	call   0x407cf4
40e258:	83 20 00             	andl   $0x0,(%eax)
40e25b:	e8 a7 9a ff ff       	call   0x407d07
40e260:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40e266:	e8 c3 99 ff ff       	call   0x407c2e
40e26b:	83 ce ff             	or     $0xffffffff,%esi
40e26e:	8b d6                	mov    %esi,%edx
40e270:	8b c6                	mov    %esi,%eax
40e272:	e8 1f 59 ff ff       	call   0x403b96
40e277:	c3                   	ret
40e278:	8b ff                	mov    %edi,%edi
40e27a:	55                   	push   %ebp
40e27b:	8b ec                	mov    %esp,%ebp
40e27d:	51                   	push   %ecx
40e27e:	51                   	push   %ecx
40e27f:	56                   	push   %esi
40e280:	8b 75 08             	mov    0x8(%ebp),%esi
40e283:	57                   	push   %edi
40e284:	56                   	push   %esi
40e285:	e8 ab e3 ff ff       	call   0x40c635
40e28a:	83 cf ff             	or     $0xffffffff,%edi
40e28d:	59                   	pop    %ecx
40e28e:	3b c7                	cmp    %edi,%eax
40e290:	75 11                	jne    0x40e2a3
40e292:	e8 70 9a ff ff       	call   0x407d07
40e297:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40e29d:	8b c7                	mov    %edi,%eax
40e29f:	8b d7                	mov    %edi,%edx
40e2a1:	eb 4d                	jmp    0x40e2f0
40e2a3:	ff 75 14             	push   0x14(%ebp)
40e2a6:	8d 4d f8             	lea    -0x8(%ebp),%ecx
40e2a9:	51                   	push   %ecx
40e2aa:	ff 75 10             	push   0x10(%ebp)
40e2ad:	ff 75 0c             	push   0xc(%ebp)
40e2b0:	50                   	push   %eax
40e2b1:	ff 15 60 b1 41 00    	call   *0x41b160
40e2b7:	85 c0                	test   %eax,%eax
40e2b9:	75 0f                	jne    0x40e2ca
40e2bb:	ff 15 48 b0 41 00    	call   *0x41b048
40e2c1:	50                   	push   %eax
40e2c2:	e8 0a 9a ff ff       	call   0x407cd1
40e2c7:	59                   	pop    %ecx
40e2c8:	eb d3                	jmp    0x40e29d
40e2ca:	8b 45 f8             	mov    -0x8(%ebp),%eax
40e2cd:	8b 55 fc             	mov    -0x4(%ebp),%edx
40e2d0:	23 c2                	and    %edx,%eax
40e2d2:	3b c7                	cmp    %edi,%eax
40e2d4:	74 c7                	je     0x40e29d
40e2d6:	8b 45 f8             	mov    -0x8(%ebp),%eax
40e2d9:	8b ce                	mov    %esi,%ecx
40e2db:	83 e6 3f             	and    $0x3f,%esi
40e2de:	c1 f9 06             	sar    $0x6,%ecx
40e2e1:	6b f6 30             	imul   $0x30,%esi,%esi
40e2e4:	8b 0c 8d c0 41 42 00 	mov    0x4241c0(,%ecx,4),%ecx
40e2eb:	80 64 31 28 fd       	andb   $0xfd,0x28(%ecx,%esi,1)
40e2f0:	5f                   	pop    %edi
40e2f1:	5e                   	pop    %esi
40e2f2:	8b e5                	mov    %ebp,%esp
40e2f4:	5d                   	pop    %ebp
40e2f5:	c3                   	ret
40e2f6:	8b ff                	mov    %edi,%edi
40e2f8:	55                   	push   %ebp
40e2f9:	8b ec                	mov    %esp,%ebp
40e2fb:	ff 75 14             	push   0x14(%ebp)
40e2fe:	ff 75 10             	push   0x10(%ebp)
40e301:	ff 75 0c             	push   0xc(%ebp)
40e304:	ff 75 08             	push   0x8(%ebp)
40e307:	e8 67 fe ff ff       	call   0x40e173
40e30c:	83 c4 10             	add    $0x10,%esp
40e30f:	5d                   	pop    %ebp
40e310:	c3                   	ret
40e311:	8b ff                	mov    %edi,%edi
40e313:	55                   	push   %ebp
40e314:	8b ec                	mov    %esp,%ebp
40e316:	ff 75 14             	push   0x14(%ebp)
40e319:	ff 75 10             	push   0x10(%ebp)
40e31c:	ff 75 0c             	push   0xc(%ebp)
40e31f:	ff 75 08             	push   0x8(%ebp)
40e322:	e8 51 ff ff ff       	call   0x40e278
40e327:	83 c4 10             	add    $0x10,%esp
40e32a:	5d                   	pop    %ebp
40e32b:	c3                   	ret
40e32c:	8b ff                	mov    %edi,%edi
40e32e:	55                   	push   %ebp
40e32f:	8b ec                	mov    %esp,%ebp
40e331:	83 ec 38             	sub    $0x38,%esp
40e334:	a1 0c 30 42 00       	mov    0x42300c,%eax
40e339:	33 c5                	xor    %ebp,%eax
40e33b:	89 45 fc             	mov    %eax,-0x4(%ebp)
40e33e:	8b 45 0c             	mov    0xc(%ebp),%eax
40e341:	8b c8                	mov    %eax,%ecx
40e343:	83 e0 3f             	and    $0x3f,%eax
40e346:	c1 f9 06             	sar    $0x6,%ecx
40e349:	53                   	push   %ebx
40e34a:	6b d8 30             	imul   $0x30,%eax,%ebx
40e34d:	56                   	push   %esi
40e34e:	8b 04 8d c0 41 42 00 	mov    0x4241c0(,%ecx,4),%eax
40e355:	57                   	push   %edi
40e356:	8b 7d 10             	mov    0x10(%ebp),%edi
40e359:	89 7d d0             	mov    %edi,-0x30(%ebp)
40e35c:	89 4d d4             	mov    %ecx,-0x2c(%ebp)
40e35f:	8b 44 18 18          	mov    0x18(%eax,%ebx,1),%eax
40e363:	89 45 d8             	mov    %eax,-0x28(%ebp)
40e366:	8b 45 14             	mov    0x14(%ebp),%eax
40e369:	03 c7                	add    %edi,%eax
40e36b:	89 45 dc             	mov    %eax,-0x24(%ebp)
40e36e:	ff 15 64 b1 41 00    	call   *0x41b164
40e374:	8b 75 08             	mov    0x8(%ebp),%esi
40e377:	8b 4d dc             	mov    -0x24(%ebp),%ecx
40e37a:	89 45 c8             	mov    %eax,-0x38(%ebp)
40e37d:	33 c0                	xor    %eax,%eax
40e37f:	89 06                	mov    %eax,(%esi)
40e381:	89 46 04             	mov    %eax,0x4(%esi)
40e384:	89 46 08             	mov    %eax,0x8(%esi)
40e387:	3b f9                	cmp    %ecx,%edi
40e389:	0f 83 3d 01 00 00    	jae    0x40e4cc
40e38f:	8a 2f                	mov    (%edi),%ch
40e391:	33 c0                	xor    %eax,%eax
40e393:	66 89 45 e8          	mov    %ax,-0x18(%ebp)
40e397:	8b 45 d4             	mov    -0x2c(%ebp),%eax
40e39a:	88 6d e5             	mov    %ch,-0x1b(%ebp)
40e39d:	8b 14 85 c0 41 42 00 	mov    0x4241c0(,%eax,4),%edx
40e3a4:	8a 4c 1a 2d          	mov    0x2d(%edx,%ebx,1),%cl
40e3a8:	f6 c1 04             	test   $0x4,%cl
40e3ab:	74 19                	je     0x40e3c6
40e3ad:	8a 44 1a 2e          	mov    0x2e(%edx,%ebx,1),%al
40e3b1:	80 e1 fb             	and    $0xfb,%cl
40e3b4:	88 45 f4             	mov    %al,-0xc(%ebp)
40e3b7:	8d 45 f4             	lea    -0xc(%ebp),%eax
40e3ba:	6a 02                	push   $0x2
40e3bc:	88 6d f5             	mov    %ch,-0xb(%ebp)
40e3bf:	88 4c 1a 2d          	mov    %cl,0x2d(%edx,%ebx,1)
40e3c3:	50                   	push   %eax
40e3c4:	eb 3a                	jmp    0x40e400
40e3c6:	e8 5f 25 00 00       	call   0x41092a
40e3cb:	0f b6 0f             	movzbl (%edi),%ecx
40e3ce:	ba 00 80 00 00       	mov    $0x8000,%edx
40e3d3:	66 85 14 48          	test   %dx,(%eax,%ecx,2)
40e3d7:	74 24                	je     0x40e3fd
40e3d9:	3b 7d dc             	cmp    -0x24(%ebp),%edi
40e3dc:	0f 83 c1 00 00 00    	jae    0x40e4a3
40e3e2:	6a 02                	push   $0x2
40e3e4:	8d 45 e8             	lea    -0x18(%ebp),%eax
40e3e7:	57                   	push   %edi
40e3e8:	50                   	push   %eax
40e3e9:	e8 a8 c2 ff ff       	call   0x40a696
40e3ee:	83 c4 0c             	add    $0xc,%esp
40e3f1:	83 f8 ff             	cmp    $0xffffffff,%eax
40e3f4:	0f 84 d2 00 00 00    	je     0x40e4cc
40e3fa:	47                   	inc    %edi
40e3fb:	eb 18                	jmp    0x40e415
40e3fd:	6a 01                	push   $0x1
40e3ff:	57                   	push   %edi
40e400:	8d 45 e8             	lea    -0x18(%ebp),%eax
40e403:	50                   	push   %eax
40e404:	e8 8d c2 ff ff       	call   0x40a696
40e409:	83 c4 0c             	add    $0xc,%esp
40e40c:	83 f8 ff             	cmp    $0xffffffff,%eax
40e40f:	0f 84 b7 00 00 00    	je     0x40e4cc
40e415:	33 c9                	xor    %ecx,%ecx
40e417:	8d 45 ec             	lea    -0x14(%ebp),%eax
40e41a:	51                   	push   %ecx
40e41b:	51                   	push   %ecx
40e41c:	6a 05                	push   $0x5
40e41e:	50                   	push   %eax
40e41f:	6a 01                	push   $0x1
40e421:	8d 45 e8             	lea    -0x18(%ebp),%eax
40e424:	47                   	inc    %edi
40e425:	50                   	push   %eax
40e426:	51                   	push   %ecx
40e427:	ff 75 c8             	push   -0x38(%ebp)
40e42a:	ff 15 30 b1 41 00    	call   *0x41b130
40e430:	89 45 cc             	mov    %eax,-0x34(%ebp)
40e433:	85 c0                	test   %eax,%eax
40e435:	0f 84 91 00 00 00    	je     0x40e4cc
40e43b:	6a 00                	push   $0x0
40e43d:	8d 4d e0             	lea    -0x20(%ebp),%ecx
40e440:	51                   	push   %ecx
40e441:	50                   	push   %eax
40e442:	8d 45 ec             	lea    -0x14(%ebp),%eax
40e445:	50                   	push   %eax
40e446:	ff 75 d8             	push   -0x28(%ebp)
40e449:	ff 15 38 b1 41 00    	call   *0x41b138
40e44f:	85 c0                	test   %eax,%eax
40e451:	74 71                	je     0x40e4c4
40e453:	8b 46 08             	mov    0x8(%esi),%eax
40e456:	2b 45 d0             	sub    -0x30(%ebp),%eax
40e459:	03 c7                	add    %edi,%eax
40e45b:	89 46 04             	mov    %eax,0x4(%esi)
40e45e:	8b 45 cc             	mov    -0x34(%ebp),%eax