40df38:	c3                   	ret
40df39:	55                   	push   %ebp
40df3a:	8b ec                	mov    %esp,%ebp
40df3c:	8b 45 08             	mov    0x8(%ebp),%eax
40df3f:	85 c0                	test   %eax,%eax
40df41:	75 15                	jne    0x40df58
40df43:	e8 35 a2 ff ff       	call   0x40817d
40df48:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40df4e:	e8 a2 d6 ff ff       	call   0x40b5f5
40df53:	83 c8 ff             	or     $0xffffffff,%eax
40df56:	5d                   	pop    %ebp
40df57:	c3                   	ret
40df58:	8b 40 10             	mov    0x10(%eax),%eax
40df5b:	5d                   	pop    %ebp
40df5c:	c3                   	ret
40df5d:	6a 10                	push   $0x10
40df5f:	68 78 e6 41 00       	push   $0x41e678
40df64:	e8 47 ce ff ff       	call   0x40adb0
40df69:	8b 75 08             	mov    0x8(%ebp),%esi
40df6c:	83 fe fe             	cmp    $0xfffffffe,%esi
40df6f:	75 18                	jne    0x40df89
40df71:	e8 d3 a1 ff ff       	call   0x408149
40df76:	83 20 00             	andl   $0x0,(%eax)
40df79:	e8 ff a1 ff ff       	call   0x40817d
40df7e:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40df84:	e9 a2 00 00 00       	jmp    0x40e02b
40df89:	e8 64 f6 ff ff       	call   0x40d5f2
40df8e:	85 c0                	test   %eax,%eax
40df90:	0f 88 95 00 00 00    	js     0x40e02b
40df96:	85 f6                	test   %esi,%esi
40df98:	78 79                	js     0x40e013
40df9a:	3b 35 14 2a 42 00    	cmp    0x422a14,%esi
40dfa0:	73 71                	jae    0x40e013
40dfa2:	8b de                	mov    %esi,%ebx
40dfa4:	c1 fb 05             	sar    $0x5,%ebx
40dfa7:	8b fe                	mov    %esi,%edi
40dfa9:	83 e7 1f             	and    $0x1f,%edi
40dfac:	c1 e7 06             	shl    $0x6,%edi
40dfaf:	8b 04 9d 20 2a 42 00 	mov    0x422a20(,%ebx,4),%eax
40dfb6:	0f be 44 38 04       	movsbl 0x4(%eax,%edi,1),%eax
40dfbb:	83 e0 01             	and    $0x1,%eax
40dfbe:	74 53                	je     0x40e013
40dfc0:	56                   	push   %esi
40dfc1:	e8 d1 5b 00 00       	call   0x413b97
40dfc6:	59                   	pop    %ecx
40dfc7:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40dfcb:	8b 04 9d 20 2a 42 00 	mov    0x422a20(,%ebx,4),%eax
40dfd2:	f6 44 38 04 01       	testb  $0x1,0x4(%eax,%edi,1)
40dfd7:	74 0b                	je     0x40dfe4
40dfd9:	56                   	push   %esi
40dfda:	e8 55 00 00 00       	call   0x40e034
40dfdf:	59                   	pop    %ecx
40dfe0:	8b f8                	mov    %eax,%edi
40dfe2:	eb 0e                	jmp    0x40dff2
40dfe4:	e8 94 a1 ff ff       	call   0x40817d
40dfe9:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40dfef:	83 cf ff             	or     $0xffffffff,%edi
40dff2:	89 7d e4             	mov    %edi,-0x1c(%ebp)
40dff5:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40dffc:	e8 0a 00 00 00       	call   0x40e00b
40e001:	8b c7                	mov    %edi,%eax
40e003:	eb 29                	jmp    0x40e02e
40e005:	8b 75 08             	mov    0x8(%ebp),%esi
40e008:	8b 7d e4             	mov    -0x1c(%ebp),%edi
40e00b:	56                   	push   %esi
40e00c:	e8 0a 5d 00 00       	call   0x413d1b
40e011:	59                   	pop    %ecx
40e012:	c3                   	ret
40e013:	e8 31 a1 ff ff       	call   0x408149
40e018:	83 20 00             	andl   $0x0,(%eax)
40e01b:	e8 5d a1 ff ff       	call   0x40817d
40e020:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40e026:	e8 ca d5 ff ff       	call   0x40b5f5
40e02b:	83 c8 ff             	or     $0xffffffff,%eax
40e02e:	e8 c2 cd ff ff       	call   0x40adf5
40e033:	c3                   	ret
40e034:	55                   	push   %ebp
40e035:	8b ec                	mov    %esp,%ebp
40e037:	e8 b6 f5 ff ff       	call   0x40d5f2
40e03c:	85 c0                	test   %eax,%eax
40e03e:	79 05                	jns    0x40e045
40e040:	83 c8 ff             	or     $0xffffffff,%eax
40e043:	5d                   	pop    %ebp
40e044:	c3                   	ret
40e045:	56                   	push   %esi
40e046:	57                   	push   %edi
40e047:	8b 7d 08             	mov    0x8(%ebp),%edi
40e04a:	57                   	push   %edi
40e04b:	e8 59 5c 00 00       	call   0x413ca9
40e050:	59                   	pop    %ecx
40e051:	83 f8 ff             	cmp    $0xffffffff,%eax
40e054:	74 50                	je     0x40e0a6
40e056:	a1 20 2a 42 00       	mov    0x422a20,%eax
40e05b:	83 ff 01             	cmp    $0x1,%edi
40e05e:	75 09                	jne    0x40e069
40e060:	f6 80 84 00 00 00 01 	testb  $0x1,0x84(%eax)
40e067:	75 0b                	jne    0x40e074
40e069:	83 ff 02             	cmp    $0x2,%edi
40e06c:	75 1c                	jne    0x40e08a
40e06e:	f6 40 44 01          	testb  $0x1,0x44(%eax)
40e072:	74 16                	je     0x40e08a
40e074:	6a 02                	push   $0x2
40e076:	e8 2e 5c 00 00       	call   0x413ca9
40e07b:	6a 01                	push   $0x1
40e07d:	8b f0                	mov    %eax,%esi
40e07f:	e8 25 5c 00 00       	call   0x413ca9
40e084:	59                   	pop    %ecx
40e085:	59                   	pop    %ecx
40e086:	3b c6                	cmp    %esi,%eax
40e088:	74 1c                	je     0x40e0a6
40e08a:	57                   	push   %edi
40e08b:	e8 19 5c 00 00       	call   0x413ca9
40e090:	59                   	pop    %ecx
40e091:	50                   	push   %eax
40e092:	ff 15 40 90 41 00    	call   *0x419040
40e098:	85 c0                	test   %eax,%eax
40e09a:	75 0a                	jne    0x40e0a6
40e09c:	ff 15 18 90 41 00    	call   *0x419018
40e0a2:	8b f0                	mov    %eax,%esi
40e0a4:	eb 02                	jmp    0x40e0a8
40e0a6:	33 f6                	xor    %esi,%esi
40e0a8:	57                   	push   %edi
40e0a9:	e8 75 5b 00 00       	call   0x413c23
40e0ae:	59                   	pop    %ecx
40e0af:	8b cf                	mov    %edi,%ecx
40e0b1:	c1 f9 05             	sar    $0x5,%ecx
40e0b4:	83 e7 1f             	and    $0x1f,%edi
40e0b7:	8b 0c 8d 20 2a 42 00 	mov    0x422a20(,%ecx,4),%ecx
40e0be:	c1 e7 06             	shl    $0x6,%edi
40e0c1:	c6 44 39 04 00       	movb   $0x0,0x4(%ecx,%edi,1)
40e0c6:	85 f6                	test   %esi,%esi
40e0c8:	74 0c                	je     0x40e0d6
40e0ca:	56                   	push   %esi
40e0cb:	e8 8c a0 ff ff       	call   0x40815c
40e0d0:	59                   	pop    %ecx
40e0d1:	83 c8 ff             	or     $0xffffffff,%eax
40e0d4:	eb 02                	jmp    0x40e0d8
40e0d6:	33 c0                	xor    %eax,%eax
40e0d8:	5f                   	pop    %edi
40e0d9:	5e                   	pop    %esi
40e0da:	5d                   	pop    %ebp
40e0db:	c3                   	ret
40e0dc:	55                   	push   %ebp
40e0dd:	8b ec                	mov    %esp,%ebp
40e0df:	56                   	push   %esi
40e0e0:	8b 75 08             	mov    0x8(%ebp),%esi
40e0e3:	f6 46 0c 83          	testb  $0x83,0xc(%esi)
40e0e7:	74 20                	je     0x40e109
40e0e9:	f6 46 0c 08          	testb  $0x8,0xc(%esi)
40e0ed:	74 1a                	je     0x40e109
40e0ef:	ff 76 08             	push   0x8(%esi)
40e0f2:	e8 21 70 ff ff       	call   0x405118
40e0f7:	81 66 0c f7 fb ff ff 	andl   $0xfffffbf7,0xc(%esi)
40e0fe:	33 c0                	xor    %eax,%eax
40e100:	59                   	pop    %ecx
40e101:	89 06                	mov    %eax,(%esi)
40e103:	89 46 08             	mov    %eax,0x8(%esi)
40e106:	89 46 04             	mov    %eax,0x4(%esi)
40e109:	5e                   	pop    %esi
40e10a:	5d                   	pop    %ebp
40e10b:	c3                   	ret
40e10c:	6a 14                	push   $0x14
40e10e:	68 98 e6 41 00       	push   $0x41e698
40e113:	e8 98 cc ff ff       	call   0x40adb0
40e118:	8b 7d 08             	mov    0x8(%ebp),%edi
40e11b:	83 ff fe             	cmp    $0xfffffffe,%edi
40e11e:	75 10                	jne    0x40e130
40e120:	e8 58 a0 ff ff       	call   0x40817d
40e125:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40e12b:	e9 ca 00 00 00       	jmp    0x40e1fa
40e130:	e8 bd f4 ff ff       	call   0x40d5f2
40e135:	85 c0                	test   %eax,%eax
40e137:	79 08                	jns    0x40e141
40e139:	6a 09                	push   $0x9
40e13b:	58                   	pop    %eax
40e13c:	e9 bc 00 00 00       	jmp    0x40e1fd
40e141:	85 ff                	test   %edi,%edi
40e143:	0f 88 a1 00 00 00    	js     0x40e1ea
40e149:	3b 3d 14 2a 42 00    	cmp    0x422a14,%edi
40e14f:	0f 83 95 00 00 00    	jae    0x40e1ea
40e155:	8b c7                	mov    %edi,%eax
40e157:	c1 f8 05             	sar    $0x5,%eax
40e15a:	89 45 e0             	mov    %eax,-0x20(%ebp)
40e15d:	8b df                	mov    %edi,%ebx
40e15f:	83 e3 1f             	and    $0x1f,%ebx
40e162:	c1 e3 06             	shl    $0x6,%ebx
40e165:	8b 04 85 20 2a 42 00 	mov    0x422a20(,%eax,4),%eax
40e16c:	0f be 44 18 04       	movsbl 0x4(%eax,%ebx,1),%eax
40e171:	83 e0 01             	and    $0x1,%eax
40e174:	74 74                	je     0x40e1ea
40e176:	57                   	push   %edi
40e177:	e8 1b 5a 00 00       	call   0x413b97
40e17c:	59                   	pop    %ecx
40e17d:	33 f6                	xor    %esi,%esi
40e17f:	89 75 fc             	mov    %esi,-0x4(%ebp)
40e182:	8b 45 e0             	mov    -0x20(%ebp),%eax
40e185:	8b 04 85 20 2a 42 00 	mov    0x422a20(,%eax,4),%eax
40e18c:	f6 44 18 04 01       	testb  $0x1,0x4(%eax,%ebx,1)
40e191:	74 28                	je     0x40e1bb
40e193:	57                   	push   %edi
40e194:	e8 10 5b 00 00       	call   0x413ca9
40e199:	59                   	pop    %ecx
40e19a:	50                   	push   %eax
40e19b:	ff 15 f0 90 41 00    	call   *0x4190f0
40e1a1:	85 c0                	test   %eax,%eax
40e1a3:	75 08                	jne    0x40e1ad
40e1a5:	ff 15 18 90 41 00    	call   *0x419018
40e1ab:	8b f0                	mov    %eax,%esi
40e1ad:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40e1b0:	85 f6                	test   %esi,%esi
40e1b2:	74 18                	je     0x40e1cc
40e1b4:	e8 90 9f ff ff       	call   0x408149
40e1b9:	89 30                	mov    %esi,(%eax)
40e1bb:	e8 bd 9f ff ff       	call   0x40817d
40e1c0:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40e1c6:	83 ce ff             	or     $0xffffffff,%esi
40e1c9:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40e1cc:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40e1d3:	e8 0a 00 00 00       	call   0x40e1e2
40e1d8:	8b c6                	mov    %esi,%eax
40e1da:	eb 21                	jmp    0x40e1fd
40e1dc:	8b 7d 08             	mov    0x8(%ebp),%edi
40e1df:	8b 75 e4             	mov    -0x1c(%ebp),%esi
40e1e2:	57                   	push   %edi
40e1e3:	e8 33 5b 00 00       	call   0x413d1b
40e1e8:	59                   	pop    %ecx
40e1e9:	c3                   	ret
40e1ea:	e8 8e 9f ff ff       	call   0x40817d
40e1ef:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40e1f5:	e8 fb d3 ff ff       	call   0x40b5f5
40e1fa:	83 c8 ff             	or     $0xffffffff,%eax
40e1fd:	e8 f3 cb ff ff       	call   0x40adf5
40e202:	c3                   	ret
40e203:	6a 10                	push   $0x10
40e205:	68 b8 e6 41 00       	push   $0x41e6b8
40e20a:	e8 a1 cb ff ff       	call   0x40adb0
40e20f:	8b 75 08             	mov    0x8(%ebp),%esi
40e212:	83 fe fe             	cmp    $0xfffffffe,%esi
40e215:	75 18                	jne    0x40e22f
40e217:	e8 2d 9f ff ff       	call   0x408149
40e21c:	83 20 00             	andl   $0x0,(%eax)
40e21f:	e8 59 9f ff ff       	call   0x40817d
40e224:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40e22a:	e9 ba 00 00 00       	jmp    0x40e2e9
40e22f:	e8 be f3 ff ff       	call   0x40d5f2
40e234:	85 c0                	test   %eax,%eax
40e236:	0f 88 ad 00 00 00    	js     0x40e2e9
40e23c:	85 f6                	test   %esi,%esi
40e23e:	0f 88 8d 00 00 00    	js     0x40e2d1
40e244:	3b 35 14 2a 42 00    	cmp    0x422a14,%esi
40e24a:	0f 83 81 00 00 00    	jae    0x40e2d1
40e250:	8b de                	mov    %esi,%ebx
40e252:	c1 fb 05             	sar    $0x5,%ebx
40e255:	8b fe                	mov    %esi,%edi
40e257:	83 e7 1f             	and    $0x1f,%edi
40e25a:	c1 e7 06             	shl    $0x6,%edi
40e25d:	8b 04 9d 20 2a 42 00 	mov    0x422a20(,%ebx,4),%eax
40e264:	0f be 44 38 04       	movsbl 0x4(%eax,%edi,1),%eax
40e269:	83 e0 01             	and    $0x1,%eax
40e26c:	74 63                	je     0x40e2d1
40e26e:	56                   	push   %esi
40e26f:	e8 23 59 00 00       	call   0x413b97
40e274:	59                   	pop    %ecx
40e275:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40e279:	8b 04 9d 20 2a 42 00 	mov    0x422a20(,%ebx,4),%eax
40e280:	f6 44 38 04 01       	testb  $0x1,0x4(%eax,%edi,1)
40e285:	74 13                	je     0x40e29a
40e287:	ff 75 10             	push   0x10(%ebp)
40e28a:	ff 75 0c             	push   0xc(%ebp)
40e28d:	56                   	push   %esi
40e28e:	e8 5f 00 00 00       	call   0x40e2f2
40e293:	83 c4 0c             	add    $0xc,%esp
40e296:	8b f8                	mov    %eax,%edi
40e298:	eb 16                	jmp    0x40e2b0
40e29a:	e8 de 9e ff ff       	call   0x40817d
40e29f:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40e2a5:	e8 9f 9e ff ff       	call   0x408149
40e2aa:	83 20 00             	andl   $0x0,(%eax)
40e2ad:	83 cf ff             	or     $0xffffffff,%edi
40e2b0:	89 7d e4             	mov    %edi,-0x1c(%ebp)
40e2b3:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40e2ba:	e8 0a 00 00 00       	call   0x40e2c9
40e2bf:	8b c7                	mov    %edi,%eax
40e2c1:	eb 29                	jmp    0x40e2ec
40e2c3:	8b 75 08             	mov    0x8(%ebp),%esi
40e2c6:	8b 7d e4             	mov    -0x1c(%ebp),%edi
40e2c9:	56                   	push   %esi
40e2ca:	e8 4c 5a 00 00       	call   0x413d1b
40e2cf:	59                   	pop    %ecx
40e2d0:	c3                   	ret
40e2d1:	e8 73 9e ff ff       	call   0x408149
40e2d6:	83 20 00             	andl   $0x0,(%eax)
40e2d9:	e8 9f 9e ff ff       	call   0x40817d
40e2de:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40e2e4:	e8 0c d3 ff ff       	call   0x40b5f5
40e2e9:	83 c8 ff             	or     $0xffffffff,%eax
40e2ec:	e8 04 cb ff ff       	call   0x40adf5
40e2f1:	c3                   	ret
40e2f2:	55                   	push   %ebp
40e2f3:	8b ec                	mov    %esp,%ebp
40e2f5:	b8 f0 1a 00 00       	mov    $0x1af0,%eax
40e2fa:	e8 91 5b 00 00       	call   0x413e90
40e2ff:	a1 90 08 42 00       	mov    0x420890,%eax
40e304:	33 c5                	xor    %ebp,%eax
40e306:	89 45 fc             	mov    %eax,-0x4(%ebp)
40e309:	8b 45 0c             	mov    0xc(%ebp),%eax
40e30c:	56                   	push   %esi
40e30d:	8b 75 08             	mov    0x8(%ebp),%esi
40e310:	57                   	push   %edi
40e311:	33 ff                	xor    %edi,%edi
40e313:	21 bd 28 e5 ff ff    	and    %edi,-0x1ad8(%ebp)
40e319:	89 85 44 e5 ff ff    	mov    %eax,-0x1abc(%ebp)
40e31f:	89 bd 34 e5 ff ff    	mov    %edi,-0x1acc(%ebp)
40e325:	39 7d 10             	cmp    %edi,0x10(%ebp)
40e328:	75 07                	jne    0x40e331
40e32a:	33 c0                	xor    %eax,%eax
40e32c:	e9 fd 07 00 00       	jmp    0x40eb2e
40e331:	85 c0                	test   %eax,%eax
40e333:	75 1f                	jne    0x40e354
40e335:	e8 0f 9e ff ff       	call   0x408149
40e33a:	21 38                	and    %edi,(%eax)
40e33c:	e8 3c 9e ff ff       	call   0x40817d
40e341:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40e347:	e8 a9 d2 ff ff       	call   0x40b5f5
40e34c:	83 c8 ff             	or     $0xffffffff,%eax
40e34f:	e9 da 07 00 00       	jmp    0x40eb2e
40e354:	e8 99 f2 ff ff       	call   0x40d5f2
40e359:	85 c0                	test   %eax,%eax
40e35b:	78 ef                	js     0x40e34c
40e35d:	53                   	push   %ebx
40e35e:	83 fe 01             	cmp    $0x1,%esi
40e361:	74 05                	je     0x40e368
40e363:	83 fe 02             	cmp    $0x2,%esi
40e366:	75 20                	jne    0x40e388
40e368:	8b de                	mov    %esi,%ebx
40e36a:	c1 e3 06             	shl    $0x6,%ebx
40e36d:	03 1d 20 2a 42 00    	add    0x422a20,%ebx
40e373:	74 13                	je     0x40e388
40e375:	8d 46 ff             	lea    -0x1(%esi),%eax
40e378:	f7 d8                	neg    %eax
40e37a:	1b c0                	sbb    %eax,%eax
40e37c:	83 c0 f5             	add    $0xfffffff5,%eax
40e37f:	50                   	push   %eax
40e380:	ff 15 ac 90 41 00    	call   *0x4190ac
40e386:	89 03                	mov    %eax,(%ebx)
40e388:	8b c6                	mov    %esi,%eax
40e38a:	c1 f8 05             	sar    $0x5,%eax
40e38d:	8b ce                	mov    %esi,%ecx
40e38f:	8b 14 85 20 2a 42 00 	mov    0x422a20(,%eax,4),%edx
40e396:	83 e1 1f             	and    $0x1f,%ecx