409e65:	c3                   	ret
409e66:	8b ff                	mov    %edi,%edi
409e68:	55                   	push   %ebp
409e69:	8b ec                	mov    %esp,%ebp
409e6b:	83 ec 34             	sub    $0x34,%esp
409e6e:	53                   	push   %ebx
409e6f:	33 db                	xor    %ebx,%ebx
409e71:	f6 45 10 80          	testb  $0x80,0x10(%ebp)
409e75:	56                   	push   %esi
409e76:	8b f0                	mov    %eax,%esi
409e78:	89 5d dc             	mov    %ebx,-0x24(%ebp)
409e7b:	88 5d fe             	mov    %bl,-0x2(%ebp)
409e7e:	89 5d f8             	mov    %ebx,-0x8(%ebp)
409e81:	c7 45 cc 0c 00 00 00 	movl   $0xc,-0x34(%ebp)
409e88:	89 5d d0             	mov    %ebx,-0x30(%ebp)
409e8b:	74 09                	je     0x409e96
409e8d:	89 5d d4             	mov    %ebx,-0x2c(%ebp)
409e90:	c6 45 ff 10          	movb   $0x10,-0x1(%ebp)
409e94:	eb 0a                	jmp    0x409ea0
409e96:	c7 45 d4 01 00 00 00 	movl   $0x1,-0x2c(%ebp)
409e9d:	88 5d ff             	mov    %bl,-0x1(%ebp)
409ea0:	8d 45 dc             	lea    -0x24(%ebp),%eax
409ea3:	50                   	push   %eax
409ea4:	e8 ea 43 00 00       	call   0x40e293
409ea9:	59                   	pop    %ecx
409eaa:	85 c0                	test   %eax,%eax
409eac:	0f 85 de 06 00 00    	jne    0x40a590
409eb2:	b8 00 80 00 00       	mov    $0x8000,%eax
409eb7:	85 45 10             	test   %eax,0x10(%ebp)
409eba:	75 12                	jne    0x409ece
409ebc:	f7 45 10 00 40 07 00 	testl  $0x74000,0x10(%ebp)
409ec3:	75 05                	jne    0x409eca
409ec5:	39 45 dc             	cmp    %eax,-0x24(%ebp)
409ec8:	74 04                	je     0x409ece
409eca:	80 4d ff 80          	orb    $0x80,-0x1(%ebp)
409ece:	8b 45 10             	mov    0x10(%ebp),%eax
409ed1:	83 e0 03             	and    $0x3,%eax
409ed4:	2b c3                	sub    %ebx,%eax
409ed6:	b9 00 00 00 c0       	mov    $0xc0000000,%ecx
409edb:	ba 00 00 00 80       	mov    $0x80000000,%edx
409ee0:	74 43                	je     0x409f25
409ee2:	48                   	dec    %eax
409ee3:	74 28                	je     0x409f0d
409ee5:	48                   	dec    %eax
409ee6:	74 20                	je     0x409f08
409ee8:	e8 4d a2 ff ff       	call   0x40413a
409eed:	89 18                	mov    %ebx,(%eax)
409eef:	83 0e ff             	orl    $0xffffffff,(%esi)
409ef2:	e8 30 a2 ff ff       	call   0x404127
409ef7:	6a 16                	push   $0x16
409ef9:	5e                   	pop    %esi
409efa:	89 30                	mov    %esi,(%eax)
409efc:	e8 86 8d ff ff       	call   0x402c87
409f01:	8b c6                	mov    %esi,%eax
409f03:	e9 de 00 00 00       	jmp    0x409fe6
409f08:	89 4d f4             	mov    %ecx,-0xc(%ebp)
409f0b:	eb 1b                	jmp    0x409f28
409f0d:	f6 45 10 08          	testb  $0x8,0x10(%ebp)
409f11:	74 09                	je     0x409f1c
409f13:	f7 45 10 00 00 07 00 	testl  $0x70000,0x10(%ebp)
409f1a:	75 ec                	jne    0x409f08
409f1c:	c7 45 f4 00 00 00 40 	movl   $0x40000000,-0xc(%ebp)
409f23:	eb 03                	jmp    0x409f28
409f25:	89 55 f4             	mov    %edx,-0xc(%ebp)
409f28:	8b 45 14             	mov    0x14(%ebp),%eax
409f2b:	6a 10                	push   $0x10
409f2d:	59                   	pop    %ecx
409f2e:	2b c1                	sub    %ecx,%eax
409f30:	74 37                	je     0x409f69
409f32:	2b c1                	sub    %ecx,%eax
409f34:	74 2a                	je     0x409f60
409f36:	2b c1                	sub    %ecx,%eax
409f38:	74 1d                	je     0x409f57
409f3a:	2b c1                	sub    %ecx,%eax
409f3c:	74 10                	je     0x409f4e
409f3e:	83 e8 40             	sub    $0x40,%eax
409f41:	75 a5                	jne    0x409ee8
409f43:	39 55 f4             	cmp    %edx,-0xc(%ebp)
409f46:	0f 94 c0             	sete   %al
409f49:	89 45 ec             	mov    %eax,-0x14(%ebp)
409f4c:	eb 1e                	jmp    0x409f6c
409f4e:	c7 45 ec 03 00 00 00 	movl   $0x3,-0x14(%ebp)
409f55:	eb 15                	jmp    0x409f6c
409f57:	c7 45 ec 02 00 00 00 	movl   $0x2,-0x14(%ebp)
409f5e:	eb 0c                	jmp    0x409f6c
409f60:	c7 45 ec 01 00 00 00 	movl   $0x1,-0x14(%ebp)
409f67:	eb 03                	jmp    0x409f6c
409f69:	89 5d ec             	mov    %ebx,-0x14(%ebp)
409f6c:	8b 45 10             	mov    0x10(%ebp),%eax
409f6f:	ba 00 07 00 00       	mov    $0x700,%edx
409f74:	23 c2                	and    %edx,%eax
409f76:	b9 00 04 00 00       	mov    $0x400,%ecx
409f7b:	57                   	push   %edi
409f7c:	bf 00 01 00 00       	mov    $0x100,%edi
409f81:	3b c1                	cmp    %ecx,%eax
409f83:	7f 33                	jg     0x409fb8
409f85:	74 28                	je     0x409faf
409f87:	3b c3                	cmp    %ebx,%eax
409f89:	74 24                	je     0x409faf
409f8b:	3b c7                	cmp    %edi,%eax
409f8d:	74 17                	je     0x409fa6
409f8f:	3d 00 02 00 00       	cmp    $0x200,%eax
409f94:	74 54                	je     0x409fea
409f96:	3d 00 03 00 00       	cmp    $0x300,%eax
409f9b:	75 2d                	jne    0x409fca
409f9d:	c7 45 e8 02 00 00 00 	movl   $0x2,-0x18(%ebp)
409fa4:	eb 54                	jmp    0x409ffa
409fa6:	c7 45 e8 04 00 00 00 	movl   $0x4,-0x18(%ebp)
409fad:	eb 4b                	jmp    0x409ffa
409faf:	c7 45 e8 03 00 00 00 	movl   $0x3,-0x18(%ebp)
409fb6:	eb 42                	jmp    0x409ffa
409fb8:	3d 00 05 00 00       	cmp    $0x500,%eax
409fbd:	74 34                	je     0x409ff3
409fbf:	3d 00 06 00 00       	cmp    $0x600,%eax
409fc4:	74 24                	je     0x409fea
409fc6:	3b c2                	cmp    %edx,%eax
409fc8:	74 29                	je     0x409ff3
409fca:	e8 6b a1 ff ff       	call   0x40413a
409fcf:	89 18                	mov    %ebx,(%eax)
409fd1:	83 0e ff             	orl    $0xffffffff,(%esi)
409fd4:	e8 4e a1 ff ff       	call   0x404127
409fd9:	6a 16                	push   $0x16
409fdb:	5e                   	pop    %esi
409fdc:	89 30                	mov    %esi,(%eax)
409fde:	e8 a4 8c ff ff       	call   0x402c87
409fe3:	8b c6                	mov    %esi,%eax
409fe5:	5f                   	pop    %edi
409fe6:	5e                   	pop    %esi
409fe7:	5b                   	pop    %ebx
409fe8:	c9                   	leave
409fe9:	c3                   	ret
409fea:	c7 45 e8 05 00 00 00 	movl   $0x5,-0x18(%ebp)
409ff1:	eb 07                	jmp    0x409ffa
409ff3:	c7 45 e8 01 00 00 00 	movl   $0x1,-0x18(%ebp)
409ffa:	8b 45 10             	mov    0x10(%ebp),%eax
409ffd:	c7 45 f0 80 00 00 00 	movl   $0x80,-0x10(%ebp)
40a004:	85 c7                	test   %eax,%edi
40a006:	74 16                	je     0x40a01e
40a008:	8b 0d 58 32 41 00    	mov    0x413258,%ecx
40a00e:	f7 d1                	not    %ecx
40a010:	23 4d 18             	and    0x18(%ebp),%ecx
40a013:	84 c9                	test   %cl,%cl
40a015:	78 07                	js     0x40a01e
40a017:	c7 45 f0 01 00 00 00 	movl   $0x1,-0x10(%ebp)
40a01e:	a8 40                	test   $0x40,%al
40a020:	74 12                	je     0x40a034
40a022:	81 4d f0 00 00 00 04 	orl    $0x4000000,-0x10(%ebp)
40a029:	81 4d f4 00 00 01 00 	orl    $0x10000,-0xc(%ebp)
40a030:	83 4d ec 04          	orl    $0x4,-0x14(%ebp)
40a034:	a9 00 10 00 00       	test   $0x1000,%eax
40a039:	74 03                	je     0x40a03e
40a03b:	09 7d f0             	or     %edi,-0x10(%ebp)
40a03e:	a8 20                	test   $0x20,%al
40a040:	74 09                	je     0x40a04b
40a042:	81 4d f0 00 00 00 08 	orl    $0x8000000,-0x10(%ebp)
40a049:	eb 0b                	jmp    0x40a056
40a04b:	a8 10                	test   $0x10,%al
40a04d:	74 07                	je     0x40a056
40a04f:	81 4d f0 00 00 00 10 	orl    $0x10000000,-0x10(%ebp)
40a056:	e8 49 91 ff ff       	call   0x4031a4
40a05b:	83 cb ff             	or     $0xffffffff,%ebx
40a05e:	89 06                	mov    %eax,(%esi)
40a060:	3b c3                	cmp    %ebx,%eax
40a062:	75 21                	jne    0x40a085
40a064:	e8 d1 a0 ff ff       	call   0x40413a
40a069:	83 20 00             	andl   $0x0,(%eax)
40a06c:	89 1e                	mov    %ebx,(%esi)
40a06e:	e8 b4 a0 ff ff       	call   0x404127
40a073:	c7 00 18 00 00 00    	movl   $0x18,(%eax)
40a079:	e8 a9 a0 ff ff       	call   0x404127
40a07e:	8b 00                	mov    (%eax),%eax
40a080:	e9 60 ff ff ff       	jmp    0x409fe5
40a085:	8b 45 08             	mov    0x8(%ebp),%eax
40a088:	8b 3d 24 f1 40 00    	mov    0x40f124,%edi
40a08e:	6a 00                	push   $0x0
40a090:	ff 75 f0             	push   -0x10(%ebp)
40a093:	c7 00 01 00 00 00    	movl   $0x1,(%eax)
40a099:	ff 75 e8             	push   -0x18(%ebp)
40a09c:	8d 45 cc             	lea    -0x34(%ebp),%eax
40a09f:	50                   	push   %eax
40a0a0:	ff 75 ec             	push   -0x14(%ebp)
40a0a3:	ff 75 f4             	push   -0xc(%ebp)
40a0a6:	ff 75 0c             	push   0xc(%ebp)
40a0a9:	ff d7                	call   *%edi
40a0ab:	89 45 e0             	mov    %eax,-0x20(%ebp)
40a0ae:	3b c3                	cmp    %ebx,%eax
40a0b0:	75 70                	jne    0x40a122
40a0b2:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40a0b5:	b8 00 00 00 c0       	mov    $0xc0000000,%eax
40a0ba:	23 c8                	and    %eax,%ecx
40a0bc:	3b c8                	cmp    %eax,%ecx
40a0be:	75 2b                	jne    0x40a0eb
40a0c0:	f6 45 10 01          	testb  $0x1,0x10(%ebp)
40a0c4:	74 25                	je     0x40a0eb
40a0c6:	81 65 f4 ff ff ff 7f 	andl   $0x7fffffff,-0xc(%ebp)
40a0cd:	6a 00                	push   $0x0
40a0cf:	ff 75 f0             	push   -0x10(%ebp)
40a0d2:	8d 45 cc             	lea    -0x34(%ebp),%eax
40a0d5:	ff 75 e8             	push   -0x18(%ebp)
40a0d8:	50                   	push   %eax
40a0d9:	ff 75 ec             	push   -0x14(%ebp)
40a0dc:	ff 75 f4             	push   -0xc(%ebp)
40a0df:	ff 75 0c             	push   0xc(%ebp)
40a0e2:	ff d7                	call   *%edi
40a0e4:	89 45 e0             	mov    %eax,-0x20(%ebp)
40a0e7:	3b c3                	cmp    %ebx,%eax
40a0e9:	75 37                	jne    0x40a122
40a0eb:	8b 36                	mov    (%esi),%esi
40a0ed:	8b c6                	mov    %esi,%eax
40a0ef:	c1 f8 05             	sar    $0x5,%eax
40a0f2:	8b 04 85 20 46 41 00 	mov    0x414620(,%eax,4),%eax
40a0f9:	83 e6 1f             	and    $0x1f,%esi
40a0fc:	c1 e6 06             	shl    $0x6,%esi
40a0ff:	8d 44 30 04          	lea    0x4(%eax,%esi,1),%eax
40a103:	80 20 fe             	andb   $0xfe,(%eax)
40a106:	ff 15 44 f0 40 00    	call   *0x40f044
40a10c:	50                   	push   %eax
40a10d:	e8 3b a0 ff ff       	call   0x40414d
40a112:	59                   	pop    %ecx
40a113:	e8 0f a0 ff ff       	call   0x404127
40a118:	8b 00                	mov    (%eax),%eax
40a11a:	89 45 f8             	mov    %eax,-0x8(%ebp)
40a11d:	e9 66 04 00 00       	jmp    0x40a588
40a122:	ff 75 e0             	push   -0x20(%ebp)
40a125:	ff 15 4c f0 40 00    	call   *0x40f04c
40a12b:	85 c0                	test   %eax,%eax
40a12d:	75 44                	jne    0x40a173
40a12f:	8b 36                	mov    (%esi),%esi
40a131:	8b c6                	mov    %esi,%eax
40a133:	c1 f8 05             	sar    $0x5,%eax
40a136:	8b 04 85 20 46 41 00 	mov    0x414620(,%eax,4),%eax
40a13d:	83 e6 1f             	and    $0x1f,%esi
40a140:	c1 e6 06             	shl    $0x6,%esi
40a143:	8d 44 30 04          	lea    0x4(%eax,%esi,1),%eax
40a147:	80 20 fe             	andb   $0xfe,(%eax)
40a14a:	ff 15 44 f0 40 00    	call   *0x40f044
40a150:	8b f0                	mov    %eax,%esi
40a152:	56                   	push   %esi
40a153:	e8 f5 9f ff ff       	call   0x40414d
40a158:	59                   	pop    %ecx
40a159:	ff 75 e0             	push   -0x20(%ebp)
40a15c:	ff 15 58 f0 40 00    	call   *0x40f058
40a162:	85 f6                	test   %esi,%esi
40a164:	75 ad                	jne    0x40a113
40a166:	e8 bc 9f ff ff       	call   0x404127
40a16b:	c7 00 0d 00 00 00    	movl   $0xd,(%eax)
40a171:	eb a0                	jmp    0x40a113
40a173:	83 f8 02             	cmp    $0x2,%eax
40a176:	75 06                	jne    0x40a17e
40a178:	80 4d ff 40          	orb    $0x40,-0x1(%ebp)
40a17c:	eb 09                	jmp    0x40a187
40a17e:	83 f8 03             	cmp    $0x3,%eax
40a181:	75 04                	jne    0x40a187
40a183:	80 4d ff 08          	orb    $0x8,-0x1(%ebp)
40a187:	ff 75 e0             	push   -0x20(%ebp)
40a18a:	ff 36                	push   (%esi)
40a18c:	e8 dd 8d ff ff       	call   0x402f6e
40a191:	8b 06                	mov    (%esi),%eax
40a193:	8b d0                	mov    %eax,%edx
40a195:	83 e0 1f             	and    $0x1f,%eax
40a198:	c1 fa 05             	sar    $0x5,%edx
40a19b:	8b 14 95 20 46 41 00 	mov    0x414620(,%edx,4),%edx
40a1a2:	59                   	pop    %ecx
40a1a3:	c1 e0 06             	shl    $0x6,%eax
40a1a6:	59                   	pop    %ecx
40a1a7:	8a 4d ff             	mov    -0x1(%ebp),%cl
40a1aa:	80 c9 01             	or     $0x1,%cl
40a1ad:	88 4c 02 04          	mov    %cl,0x4(%edx,%eax,1)
40a1b1:	8b 06                	mov    (%esi),%eax
40a1b3:	8b d0                	mov    %eax,%edx
40a1b5:	83 e0 1f             	and    $0x1f,%eax
40a1b8:	c1 fa 05             	sar    $0x5,%edx
40a1bb:	8b 14 95 20 46 41 00 	mov    0x414620(,%edx,4),%edx
40a1c2:	c1 e0 06             	shl    $0x6,%eax
40a1c5:	8d 44 02 24          	lea    0x24(%edx,%eax,1),%eax
40a1c9:	80 20 80             	andb   $0x80,(%eax)
40a1cc:	88 4d fd             	mov    %cl,-0x3(%ebp)
40a1cf:	80 65 fd 48          	andb   $0x48,-0x3(%ebp)
40a1d3:	88 4d ff             	mov    %cl,-0x1(%ebp)
40a1d6:	75 7f                	jne    0x40a257
40a1d8:	f6 c1 80             	test   $0x80,%cl
40a1db:	0f 84 a8 02 00 00    	je     0x40a489
40a1e1:	f6 45 10 02          	testb  $0x2,0x10(%ebp)
40a1e5:	74 70                	je     0x40a257
40a1e7:	6a 02                	push   $0x2
40a1e9:	53                   	push   %ebx
40a1ea:	ff 36                	push   (%esi)
40a1ec:	e8 db e4 ff ff       	call   0x4086cc
40a1f1:	8b f8                	mov    %eax,%edi
40a1f3:	83 c4 0c             	add    $0xc,%esp
40a1f6:	3b fb                	cmp    %ebx,%edi
40a1f8:	75 19                	jne    0x40a213
40a1fa:	e8 3b 9f ff ff       	call   0x40413a
40a1ff:	81 38 83 00 00 00    	cmpl   $0x83,(%eax)
40a205:	74 50                	je     0x40a257
40a207:	ff 36                	push   (%esi)
40a209:	e8 f1 96 ff ff       	call   0x4038ff
40a20e:	e9 ff fe ff ff       	jmp    0x40a112
40a213:	83 65 d8 00          	andl   $0x0,-0x28(%ebp)
40a217:	6a 01                	push   $0x1
40a219:	8d 45 d8             	lea    -0x28(%ebp),%eax
40a21c:	50                   	push   %eax
40a21d:	ff 36                	push   (%esi)
40a21f:	e8 8e d0 ff ff       	call   0x4072b2
40a224:	83 c4 0c             	add    $0xc,%esp
40a227:	85 c0                	test   %eax,%eax
40a229:	75 1a                	jne    0x40a245
40a22b:	66 83 7d d8 1a       	cmpw   $0x1a,-0x28(%ebp)
40a230:	75 13                	jne    0x40a245
40a232:	8b c7                	mov    %edi,%eax
40a234:	99                   	cltd
40a235:	52                   	push   %edx
40a236:	50                   	push   %eax
40a237:	ff 36                	push   (%esi)
40a239:	e8 e4 3d 00 00       	call   0x40e022
40a23e:	83 c4 0c             	add    $0xc,%esp
40a241:	3b c3                	cmp    %ebx,%eax
40a243:	74 c2                	je     0x40a207
40a245:	6a 00                	push   $0x0
40a247:	6a 00                	push   $0x0
40a249:	ff 36                	push   (%esi)
40a24b:	e8 7c e4 ff ff       	call   0x4086cc
40a250:	83 c4 0c             	add    $0xc,%esp
40a253:	3b c3                	cmp    %ebx,%eax
40a255:	74 b0                	je     0x40a207
40a257:	f6 45 ff 80          	testb  $0x80,-0x1(%ebp)
40a25b:	0f 84 28 02 00 00    	je     0x40a489
40a261:	bf 00 40 07 00       	mov    $0x74000,%edi
40a266:	b9 00 40 00 00       	mov    $0x4000,%ecx
40a26b:	85 7d 10             	test   %edi,0x10(%ebp)
40a26e:	75 0f                	jne    0x40a27f
40a270:	8b 45 dc             	mov    -0x24(%ebp),%eax
40a273:	23 c7                	and    %edi,%eax
40a275:	75 05                	jne    0x40a27c
40a277:	09 4d 10             	or     %ecx,0x10(%ebp)
40a27a:	eb 03                	jmp    0x40a27f
40a27c:	09 45 10             	or     %eax,0x10(%ebp)
40a27f:	8b 45 10             	mov    0x10(%ebp),%eax
40a282:	23 c7                	and    %edi,%eax
40a284:	3b c1                	cmp    %ecx,%eax
40a286:	74 44                	je     0x40a2cc
40a288:	3d 00 00 01 00       	cmp    $0x10000,%eax
40a28d:	74 29                	je     0x40a2b8
40a28f:	3d 00 40 01 00       	cmp    $0x14000,%eax
40a294:	74 22                	je     0x40a2b8
40a296:	3d 00 00 02 00       	cmp    $0x20000,%eax
40a29b:	74 29                	je     0x40a2c6
40a29d:	3d 00 40 02 00       	cmp    $0x24000,%eax
40a2a2:	74 22                	je     0x40a2c6
40a2a4:	3d 00 00 04 00       	cmp    $0x40000,%eax