40ddf5:	f7 c1 00 20 00 00    	test   $0x2000,%ecx
40ddfb:	75 03                	jne    0x40de00
40ddfd:	8d 7d f4             	lea    -0xc(%ebp),%edi
40de00:	8b 55 d0             	mov    -0x30(%ebp),%edx
40de03:	f7 c1 00 40 00 00    	test   $0x4000,%ecx
40de09:	8b 4d cc             	mov    -0x34(%ebp),%ecx
40de0c:	0f 85 82 00 00 00    	jne    0x40de94
40de12:	e8 60 b0 ff ff       	call   0x408e77
40de17:	51                   	push   %ecx
40de18:	51                   	push   %ecx
40de19:	dd 1c 24             	fstpl  (%esp)
40de1c:	57                   	push   %edi
40de1d:	8b cb                	mov    %ebx,%ecx
40de1f:	e8 d6 cf ff ff       	call   0x40adfa
40de24:	d1 e8                	shr    $1,%eax
40de26:	48                   	dec    %eax
40de27:	50                   	push   %eax
40de28:	53                   	push   %ebx
40de29:	e8 f6 b5 ff ff       	call   0x409424
40de2e:	83 c4 14             	add    $0x14,%esp
40de31:	e9 45 ff ff ff       	jmp    0x40dd7b
40de36:	8d be 08 02 00 00    	lea    0x208(%esi),%edi
40de3c:	f7 c1 00 20 00 00    	test   $0x2000,%ecx
40de42:	75 03                	jne    0x40de47
40de44:	8d 7d ec             	lea    -0x14(%ebp),%edi
40de47:	8b 55 d0             	mov    -0x30(%ebp),%edx
40de4a:	f7 c1 00 40 00 00    	test   $0x4000,%ecx
40de50:	8b 4d cc             	mov    -0x34(%ebp),%ecx
40de53:	75 3f                	jne    0x40de94
40de55:	e8 f7 af ff ff       	call   0x408e51
40de5a:	50                   	push   %eax
40de5b:	57                   	push   %edi
40de5c:	8b cb                	mov    %ebx,%ecx
40de5e:	e8 97 cf ff ff       	call   0x40adfa
40de63:	d1 e8                	shr    $1,%eax
40de65:	48                   	dec    %eax
40de66:	50                   	push   %eax
40de67:	53                   	push   %ebx
40de68:	e8 b7 b5 ff ff       	call   0x409424
40de6d:	83 c4 10             	add    $0x10,%esp
40de70:	e9 06 ff ff ff       	jmp    0x40dd7b
40de75:	8d be 08 02 00 00    	lea    0x208(%esi),%edi
40de7b:	f7 c1 00 20 00 00    	test   $0x2000,%ecx
40de81:	75 03                	jne    0x40de86
40de83:	8d 7d e4             	lea    -0x1c(%ebp),%edi
40de86:	8b 55 d0             	mov    -0x30(%ebp),%edx
40de89:	f7 c1 00 40 00 00    	test   $0x4000,%ecx
40de8f:	8b 4d cc             	mov    -0x34(%ebp),%ecx
40de92:	74 23                	je     0x40deb7
40de94:	e8 52 af ff ff       	call   0x408deb
40de99:	85 c0                	test   %eax,%eax
40de9b:	0f 84 0e ff ff ff    	je     0x40ddaf
40dea1:	ff 75 c8             	push   -0x38(%ebp)
40dea4:	8b 96 00 02 00 00    	mov    0x200(%esi),%edx
40deaa:	8b c8                	mov    %eax,%ecx
40deac:	57                   	push   %edi
40dead:	e8 43 fc ff ff       	call   0x40daf5
40deb2:	e9 c4 fe ff ff       	jmp    0x40dd7b
40deb7:	e8 53 af ff ff       	call   0x408e0f
40debc:	85 c0                	test   %eax,%eax
40debe:	0f 84 eb fe ff ff    	je     0x40ddaf
40dec4:	eb 94                	jmp    0x40de5a
40dec6:	8b ff                	mov    %edi,%edi
40dec8:	55                   	push   %ebp
40dec9:	8b ec                	mov    %esp,%ebp
40decb:	83 ec 18             	sub    $0x18,%esp
40dece:	56                   	push   %esi
40decf:	8b f2                	mov    %edx,%esi
40ded1:	8b c1                	mov    %ecx,%eax
40ded3:	89 45 e8             	mov    %eax,-0x18(%ebp)
40ded6:	85 f6                	test   %esi,%esi
40ded8:	0f 84 78 01 00 00    	je     0x40e056
40dede:	53                   	push   %ebx
40dedf:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40dee2:	85 db                	test   %ebx,%ebx
40dee4:	0f 84 6b 01 00 00    	je     0x40e055
40deea:	85 c0                	test   %eax,%eax
40deec:	0f 84 63 01 00 00    	je     0x40e055
40def2:	8b ce                	mov    %esi,%ecx
40def4:	e8 c4 c0 ff ff       	call   0x409fbd
40def9:	89 45 f8             	mov    %eax,-0x8(%ebp)
40defc:	3b c3                	cmp    %ebx,%eax
40defe:	73 05                	jae    0x40df05
40df00:	8b c3                	mov    %ebx,%eax
40df02:	89 5d f8             	mov    %ebx,-0x8(%ebp)
40df05:	6a 01                	push   $0x1
40df07:	83 c0 05             	add    $0x5,%eax
40df0a:	33 d2                	xor    %edx,%edx
40df0c:	50                   	push   %eax
40df0d:	6a 15                	push   $0x15
40df0f:	59                   	pop    %ecx
40df10:	e8 8e b6 ff ff       	call   0x4095a3
40df15:	89 45 f4             	mov    %eax,-0xc(%ebp)
40df18:	85 c0                	test   %eax,%eax
40df1a:	75 32                	jne    0x40df4e
40df1c:	ff 15 48 20 41 00    	call   *0x412048
40df22:	85 c0                	test   %eax,%eax
40df24:	75 08                	jne    0x40df2e
40df26:	6a 08                	push   $0x8
40df28:	ff 15 74 20 41 00    	call   *0x412074
40df2e:	e8 c1 b8 ff ff       	call   0x4097f4
40df33:	8b ce                	mov    %esi,%ecx
40df35:	e8 c0 ce ff ff       	call   0x40adfa
40df3a:	d1 e8                	shr    $1,%eax
40df3c:	ba 30 12 40 00       	mov    $0x401230,%edx
40df41:	50                   	push   %eax
40df42:	8b ce                	mov    %esi,%ecx
40df44:	e8 ad c4 ff ff       	call   0x40a3f6
40df49:	e9 07 01 00 00       	jmp    0x40e055
40df4e:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40df52:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
40df56:	74 0b                	je     0x40df63
40df58:	8b 4d 08             	mov    0x8(%ebp),%ecx
40df5b:	e8 5d c0 ff ff       	call   0x409fbd
40df60:	89 45 fc             	mov    %eax,-0x4(%ebp)
40df63:	57                   	push   %edi
40df64:	33 ff                	xor    %edi,%edi
40df66:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
40df6a:	0f 84 a9 00 00 00    	je     0x40e019
40df70:	8b 55 08             	mov    0x8(%ebp),%edx
40df73:	8b ce                	mov    %esi,%ecx
40df75:	57                   	push   %edi
40df76:	6a 01                	push   $0x1
40df78:	e8 c3 bf ff ff       	call   0x409f40
40df7d:	83 f8 ff             	cmp    $0xffffffff,%eax
40df80:	0f 84 93 00 00 00    	je     0x40e019
40df86:	8d 04 46             	lea    (%esi,%eax,2),%eax
40df89:	89 45 f0             	mov    %eax,-0x10(%ebp)
40df8c:	85 c0                	test   %eax,%eax
40df8e:	0f 84 85 00 00 00    	je     0x40e019
40df94:	8b ce                	mov    %esi,%ecx
40df96:	e8 22 c0 ff ff       	call   0x409fbd
40df9b:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40df9e:	89 45 ec             	mov    %eax,-0x14(%ebp)
40dfa1:	e8 17 c0 ff ff       	call   0x409fbd
40dfa6:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40dfa9:	2b c8                	sub    %eax,%ecx
40dfab:	03 4d fc             	add    -0x4(%ebp),%ecx
40dfae:	3b cb                	cmp    %ebx,%ecx
40dfb0:	73 04                	jae    0x40dfb6
40dfb2:	8b f9                	mov    %ecx,%edi
40dfb4:	eb b0                	jmp    0x40df66
40dfb6:	85 ff                	test   %edi,%edi
40dfb8:	74 04                	je     0x40dfbe
40dfba:	3b cb                	cmp    %ebx,%ecx
40dfbc:	75 02                	jne    0x40dfc0
40dfbe:	8b fb                	mov    %ebx,%edi
40dfc0:	8b 45 f8             	mov    -0x8(%ebp),%eax
40dfc3:	8d 4f 01             	lea    0x1(%edi),%ecx
40dfc6:	3b c1                	cmp    %ecx,%eax
40dfc8:	77 02                	ja     0x40dfcc
40dfca:	8b c8                	mov    %eax,%ecx
40dfcc:	51                   	push   %ecx
40dfcd:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40dfd0:	8b d6                	mov    %esi,%edx
40dfd2:	e8 1f c4 ff ff       	call   0x40a3f6
40dfd7:	8b d3                	mov    %ebx,%edx
40dfd9:	8b 5d f4             	mov    -0xc(%ebp),%ebx
40dfdc:	6a 00                	push   $0x0
40dfde:	8b cb                	mov    %ebx,%ecx
40dfe0:	e8 fa c0 ff ff       	call   0x40a0df
40dfe5:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40dfe8:	8b d3                	mov    %ebx,%edx
40dfea:	e8 fe c4 ff ff       	call   0x40a4ed
40dfef:	8b cb                	mov    %ebx,%ecx
40dff1:	e8 04 ce ff ff       	call   0x40adfa
40dff6:	d1 e8                	shr    $1,%eax
40dff8:	8b d6                	mov    %esi,%edx
40dffa:	50                   	push   %eax
40dffb:	8b cb                	mov    %ebx,%ecx
40dffd:	e8 f4 c3 ff ff       	call   0x40a3f6
40e002:	8b ce                	mov    %esi,%ecx
40e004:	e8 b4 bf ff ff       	call   0x409fbd
40e009:	8b ce                	mov    %esi,%ecx
40e00b:	3b c7                	cmp    %edi,%eax
40e00d:	7e 31                	jle    0x40e040
40e00f:	e8 e6 cd ff ff       	call   0x40adfa
40e014:	8d 14 7b             	lea    (%ebx,%edi,2),%edx
40e017:	eb 31                	jmp    0x40e04a
40e019:	85 ff                	test   %edi,%edi
40e01b:	74 a1                	je     0x40dfbe
40e01d:	8b ce                	mov    %esi,%ecx
40e01f:	e8 99 bf ff ff       	call   0x409fbd
40e024:	2b c7                	sub    %edi,%eax
40e026:	3b c3                	cmp    %ebx,%eax
40e028:	77 94                	ja     0x40dfbe
40e02a:	8b ce                	mov    %esi,%ecx
40e02c:	e8 8c bf ff ff       	call   0x409fbd
40e031:	3b c3                	cmp    %ebx,%eax
40e033:	7f 8b                	jg     0x40dfc0
40e035:	8b ce                	mov    %esi,%ecx
40e037:	e8 81 bf ff ff       	call   0x409fbd
40e03c:	8b f8                	mov    %eax,%edi
40e03e:	eb 80                	jmp    0x40dfc0
40e040:	e8 b5 cd ff ff       	call   0x40adfa
40e045:	ba 98 16 40 00       	mov    $0x401698,%edx
40e04a:	d1 e8                	shr    $1,%eax
40e04c:	8b ce                	mov    %esi,%ecx
40e04e:	50                   	push   %eax
40e04f:	e8 a2 c3 ff ff       	call   0x40a3f6
40e054:	5f                   	pop    %edi
40e055:	5b                   	pop    %ebx
40e056:	5e                   	pop    %esi
40e057:	c9                   	leave
40e058:	c2 08 00             	ret    $0x8
40e05b:	8b ff                	mov    %edi,%edi
40e05d:	55                   	push   %ebp
40e05e:	8b ec                	mov    %esp,%ebp
40e060:	83 e4 f8             	and    $0xfffffff8,%esp
40e063:	83 ec 24             	sub    $0x24,%esp
40e066:	53                   	push   %ebx
40e067:	56                   	push   %esi
40e068:	8b f1                	mov    %ecx,%esi
40e06a:	57                   	push   %edi
40e06b:	85 f6                	test   %esi,%esi
40e06d:	0f 84 b5 04 00 00    	je     0x40e528
40e073:	8b 7d 08             	mov    0x8(%ebp),%edi
40e076:	85 ff                	test   %edi,%edi
40e078:	0f 84 aa 04 00 00    	je     0x40e528
40e07e:	6a 01                	push   $0x1
40e080:	68 00 10 00 00       	push   $0x1000
40e085:	6a 16                	push   $0x16
40e087:	33 d2                	xor    %edx,%edx
40e089:	59                   	pop    %ecx
40e08a:	e8 14 b5 ff ff       	call   0x4095a3
40e08f:	8b d8                	mov    %eax,%ebx
40e091:	e8 e4 a9 ff ff       	call   0x408a7a
40e096:	89 44 24 0c          	mov    %eax,0xc(%esp)
40e09a:	85 c0                	test   %eax,%eax
40e09c:	0f 84 78 04 00 00    	je     0x40e51a
40e0a2:	85 db                	test   %ebx,%ebx
40e0a4:	0f 84 70 04 00 00    	je     0x40e51a
40e0aa:	f7 45 0c 00 10 00 00 	testl  $0x1000,0xc(%ebp)
40e0b1:	0f 85 0e 01 00 00    	jne    0x40e1c5
40e0b7:	6a 0d                	push   $0xd
40e0b9:	33 d2                	xor    %edx,%edx
40e0bb:	81 c7 00 02 00 00    	add    $0x200,%edi
40e0c1:	59                   	pop    %ecx
40e0c2:	89 7c 24 24          	mov    %edi,0x24(%esp)
40e0c6:	89 4c 24 18          	mov    %ecx,0x18(%esp)
40e0ca:	8b 47 04             	mov    0x4(%edi),%eax
40e0cd:	a9 00 10 00 00       	test   $0x1000,%eax
40e0d2:	75 6d                	jne    0x40e141
40e0d4:	83 64 24 10 00       	andl   $0x0,0x10(%esp)
40e0d9:	a9 00 00 01 00       	test   $0x10000,%eax
40e0de:	75 14                	jne    0x40e0f4
40e0e0:	25 f0 0f 00 00       	and    $0xff0,%eax
40e0e5:	83 f8 20             	cmp    $0x20,%eax
40e0e8:	74 0a                	je     0x40e0f4
40e0ea:	83 f8 30             	cmp    $0x30,%eax
40e0ed:	74 05                	je     0x40e0f4
40e0ef:	83 f8 40             	cmp    $0x40,%eax
40e0f2:	75 08                	jne    0x40e0fc
40e0f4:	c7 44 24 10 01 00 00 	movl   $0x1,0x10(%esp)
40e0fb:	00
40e0fc:	83 fa 01             	cmp    $0x1,%edx
40e0ff:	75 0c                	jne    0x40e10d
40e101:	ba 68 18 40 00       	mov    $0x401868,%edx
40e106:	8b ce                	mov    %esi,%ecx
40e108:	e8 e0 c3 ff ff       	call   0x40a4ed
40e10d:	8b cb                	mov    %ebx,%ecx
40e10f:	e8 e6 cc ff ff       	call   0x40adfa
40e114:	d1 e8                	shr    $1,%eax
40e116:	8d 97 00 fe ff ff    	lea    -0x200(%edi),%edx
40e11c:	50                   	push   %eax
40e11d:	8b cb                	mov    %ebx,%ecx
40e11f:	e8 d2 c2 ff ff       	call   0x40a3f6
40e124:	ff 74 24 10          	push   0x10(%esp)
40e128:	8b 17                	mov    (%edi),%edx
40e12a:	8b cb                	mov    %ebx,%ecx
40e12c:	e8 ae bf ff ff       	call   0x40a0df
40e131:	8b d3                	mov    %ebx,%edx
40e133:	8b ce                	mov    %esi,%ecx
40e135:	e8 b3 c3 ff ff       	call   0x40a4ed
40e13a:	8b 4c 24 18          	mov    0x18(%esp),%ecx
40e13e:	33 d2                	xor    %edx,%edx
40e140:	42                   	inc    %edx
40e141:	81 c7 94 02 00 00    	add    $0x294,%edi
40e147:	83 e9 01             	sub    $0x1,%ecx
40e14a:	89 4c 24 18          	mov    %ecx,0x18(%esp)
40e14e:	0f 85 76 ff ff ff    	jne    0x40e0ca
40e154:	ba 7c 14 40 00       	mov    $0x40147c,%edx
40e159:	8b ce                	mov    %esi,%ecx
40e15b:	e8 8d c3 ff ff       	call   0x40a4ed
40e160:	8b 7c 24 24          	mov    0x24(%esp),%edi
40e164:	33 c9                	xor    %ecx,%ecx
40e166:	6a 0d                	push   $0xd
40e168:	58                   	pop    %eax
40e169:	89 44 24 18          	mov    %eax,0x18(%esp)
40e16d:	f7 47 04 00 10 00 00 	testl  $0x1000,0x4(%edi)
40e174:	75 34                	jne    0x40e1aa
40e176:	83 f9 01             	cmp    $0x1,%ecx
40e179:	75 0c                	jne    0x40e187
40e17b:	ba 68 18 40 00       	mov    $0x401868,%edx
40e180:	8b ce                	mov    %esi,%ecx
40e182:	e8 66 c3 ff ff       	call   0x40a4ed
40e187:	8b 0f                	mov    (%edi),%ecx
40e189:	ba 08 1a 40 00       	mov    $0x401a08,%edx
40e18e:	8d 41 01             	lea    0x1(%ecx),%eax
40e191:	50                   	push   %eax
40e192:	51                   	push   %ecx
40e193:	8b cb                	mov    %ebx,%ecx
40e195:	e8 d8 c0 ff ff       	call   0x40a272
40e19a:	8b d3                	mov    %ebx,%edx
40e19c:	8b ce                	mov    %esi,%ecx
40e19e:	e8 4a c3 ff ff       	call   0x40a4ed
40e1a3:	8b 44 24 18          	mov    0x18(%esp),%eax
40e1a7:	33 c9                	xor    %ecx,%ecx
40e1a9:	41                   	inc    %ecx
40e1aa:	81 c7 94 02 00 00    	add    $0x294,%edi
40e1b0:	83 e8 01             	sub    $0x1,%eax
40e1b3:	89 44 24 18          	mov    %eax,0x18(%esp)
40e1b7:	75 b4                	jne    0x40e16d
40e1b9:	ba 7c 14 40 00       	mov    $0x40147c,%edx
40e1be:	8b ce                	mov    %esi,%ecx
40e1c0:	e8 28 c3 ff ff       	call   0x40a4ed
40e1c5:	8b 4d 10             	mov    0x10(%ebp),%ecx
40e1c8:	e8 eb ab ff ff       	call   0x408db8
40e1cd:	33 ff                	xor    %edi,%edi
40e1cf:	89 44 24 2c          	mov    %eax,0x2c(%esp)
40e1d3:	89 7c 24 18          	mov    %edi,0x18(%esp)
40e1d7:	85 c0                	test   %eax,%eax
40e1d9:	0f 84 30 03 00 00    	je     0x40e50f
40e1df:	8b cb                	mov    %ebx,%ecx
40e1e1:	e8 14 cc ff ff       	call   0x40adfa
40e1e6:	d1 e8                	shr    $1,%eax
40e1e8:	ba 30 12 40 00       	mov    $0x401230,%edx
40e1ed:	50                   	push   %eax
40e1ee:	8b cb                	mov    %ebx,%ecx
40e1f0:	e8 01 c2 ff ff       	call   0x40a3f6
40e1f5:	8b 4d 10             	mov    0x10(%ebp),%ecx
40e1f8:	8b d7                	mov    %edi,%edx
40e1fa:	e8 ec ab ff ff       	call   0x408deb
40e1ff:	89 44 24 24          	mov    %eax,0x24(%esp)
40e203:	85 c0                	test   %eax,%eax
40e205:	0f 84 f5 02 00 00    	je     0x40e500
40e20b:	8b 7d 08             	mov    0x8(%ebp),%edi
40e20e:	33 c0                	xor    %eax,%eax
40e210:	83 64 24 20 00       	andl   $0x0,0x20(%esp)
40e215:	81 c7 00 02 00 00    	add    $0x200,%edi
40e21b:	89 44 24 10          	mov    %eax,0x10(%esp)
40e21f:	83 64 24 1c 00       	andl   $0x0,0x1c(%esp)
40e224:	83 64 24 14 00       	andl   $0x0,0x14(%esp)
40e229:	f7 47 04 00 10 00 00 	testl  $0x1000,0x4(%edi)
40e230:	0f 85 16 01 00 00    	jne    0x40e34c
40e236:	f7 47 04 00 80 08 00 	testl  $0x88000,0x4(%edi)
40e23d:	74 1d                	je     0x40e25c
40e23f:	8b 07                	mov    (%edi),%eax
40e241:	8b cb                	mov    %ebx,%ecx
40e243:	c7 44 24 14 01 00 00 	movl   $0x1,0x14(%esp)