40bd9b:	5d                   	pop    %ebp
40bd9c:	c3                   	ret
40bd9d:	8b ff                	mov    %edi,%edi
40bd9f:	55                   	push   %ebp
40bda0:	8b ec                	mov    %esp,%ebp
40bda2:	51                   	push   %ecx
40bda3:	53                   	push   %ebx
40bda4:	56                   	push   %esi
40bda5:	8b 35 90 f0 40 00    	mov    0x40f090,%esi
40bdab:	57                   	push   %edi
40bdac:	ff 35 28 47 41 00    	push   0x414728
40bdb2:	ff d6                	call   *%esi
40bdb4:	ff 35 24 47 41 00    	push   0x414724
40bdba:	8b d8                	mov    %eax,%ebx
40bdbc:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40bdbf:	ff d6                	call   *%esi
40bdc1:	8b f0                	mov    %eax,%esi
40bdc3:	3b f3                	cmp    %ebx,%esi
40bdc5:	0f 82 81 00 00 00    	jb     0x40be4c
40bdcb:	8b fe                	mov    %esi,%edi
40bdcd:	2b fb                	sub    %ebx,%edi
40bdcf:	8d 47 04             	lea    0x4(%edi),%eax
40bdd2:	83 f8 04             	cmp    $0x4,%eax
40bdd5:	72 75                	jb     0x40be4c
40bdd7:	53                   	push   %ebx
40bdd8:	e8 96 27 00 00       	call   0x40e573
40bddd:	8b d8                	mov    %eax,%ebx
40bddf:	8d 47 04             	lea    0x4(%edi),%eax
40bde2:	59                   	pop    %ecx
40bde3:	3b d8                	cmp    %eax,%ebx
40bde5:	73 48                	jae    0x40be2f
40bde7:	b8 00 08 00 00       	mov    $0x800,%eax
40bdec:	3b d8                	cmp    %eax,%ebx
40bdee:	73 02                	jae    0x40bdf2
40bdf0:	8b c3                	mov    %ebx,%eax
40bdf2:	03 c3                	add    %ebx,%eax
40bdf4:	3b c3                	cmp    %ebx,%eax
40bdf6:	72 0f                	jb     0x40be07
40bdf8:	50                   	push   %eax
40bdf9:	ff 75 fc             	push   -0x4(%ebp)
40bdfc:	e8 4f ab ff ff       	call   0x406950
40be01:	59                   	pop    %ecx
40be02:	59                   	pop    %ecx
40be03:	85 c0                	test   %eax,%eax
40be05:	75 16                	jne    0x40be1d
40be07:	8d 43 10             	lea    0x10(%ebx),%eax
40be0a:	3b c3                	cmp    %ebx,%eax
40be0c:	72 3e                	jb     0x40be4c
40be0e:	50                   	push   %eax
40be0f:	ff 75 fc             	push   -0x4(%ebp)
40be12:	e8 39 ab ff ff       	call   0x406950
40be17:	59                   	pop    %ecx
40be18:	59                   	pop    %ecx
40be19:	85 c0                	test   %eax,%eax
40be1b:	74 2f                	je     0x40be4c
40be1d:	c1 ff 02             	sar    $0x2,%edi
40be20:	50                   	push   %eax
40be21:	8d 34 b8             	lea    (%eax,%edi,4),%esi
40be24:	ff 15 8c f0 40 00    	call   *0x40f08c
40be2a:	a3 28 47 41 00       	mov    %eax,0x414728
40be2f:	ff 75 08             	push   0x8(%ebp)
40be32:	8b 3d 8c f0 40 00    	mov    0x40f08c,%edi
40be38:	ff d7                	call   *%edi
40be3a:	89 06                	mov    %eax,(%esi)
40be3c:	83 c6 04             	add    $0x4,%esi
40be3f:	56                   	push   %esi
40be40:	ff d7                	call   *%edi
40be42:	a3 24 47 41 00       	mov    %eax,0x414724
40be47:	8b 45 08             	mov    0x8(%ebp),%eax
40be4a:	eb 02                	jmp    0x40be4e
40be4c:	33 c0                	xor    %eax,%eax
40be4e:	5f                   	pop    %edi
40be4f:	5e                   	pop    %esi
40be50:	5b                   	pop    %ebx
40be51:	c9                   	leave
40be52:	c3                   	ret
40be53:	8b ff                	mov    %edi,%edi
40be55:	56                   	push   %esi
40be56:	6a 04                	push   $0x4
40be58:	6a 20                	push   $0x20
40be5a:	e8 a5 aa ff ff       	call   0x406904
40be5f:	59                   	pop    %ecx
40be60:	59                   	pop    %ecx
40be61:	8b f0                	mov    %eax,%esi
40be63:	56                   	push   %esi
40be64:	ff 15 8c f0 40 00    	call   *0x40f08c
40be6a:	a3 28 47 41 00       	mov    %eax,0x414728
40be6f:	a3 24 47 41 00       	mov    %eax,0x414724
40be74:	85 f6                	test   %esi,%esi
40be76:	75 05                	jne    0x40be7d
40be78:	6a 18                	push   $0x18
40be7a:	58                   	pop    %eax
40be7b:	5e                   	pop    %esi
40be7c:	c3                   	ret
40be7d:	83 26 00             	andl   $0x0,(%esi)
40be80:	33 c0                	xor    %eax,%eax
40be82:	5e                   	pop    %esi
40be83:	c3                   	ret
40be84:	6a 0c                	push   $0xc
40be86:	68 f0 13 41 00       	push   $0x4113f0
40be8b:	e8 e0 82 ff ff       	call   0x404170
40be90:	e8 f8 a2 ff ff       	call   0x40618d
40be95:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40be99:	ff 75 08             	push   0x8(%ebp)
40be9c:	e8 fc fe ff ff       	call   0x40bd9d
40bea1:	59                   	pop    %ecx
40bea2:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40bea5:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40beac:	e8 09 00 00 00       	call   0x40beba
40beb1:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40beb4:	e8 fc 82 ff ff       	call   0x4041b5
40beb9:	c3                   	ret
40beba:	e8 d7 a2 ff ff       	call   0x406196
40bebf:	c3                   	ret
40bec0:	8b ff                	mov    %edi,%edi
40bec2:	55                   	push   %ebp
40bec3:	8b ec                	mov    %esp,%ebp
40bec5:	ff 75 08             	push   0x8(%ebp)
40bec8:	e8 b7 ff ff ff       	call   0x40be84
40becd:	f7 d8                	neg    %eax
40becf:	1b c0                	sbb    %eax,%eax
40bed1:	f7 d8                	neg    %eax
40bed3:	59                   	pop    %ecx
40bed4:	48                   	dec    %eax
40bed5:	5d                   	pop    %ebp
40bed6:	c3                   	ret
40bed7:	cc                   	int3
40bed8:	cc                   	int3
40bed9:	8b ff                	mov    %edi,%edi
40bedb:	55                   	push   %ebp
40bedc:	8b ec                	mov    %esp,%ebp
40bede:	83 ec 24             	sub    $0x24,%esp
40bee1:	a1 84 22 41 00       	mov    0x412284,%eax
40bee6:	33 c5                	xor    %ebp,%eax
40bee8:	89 45 fc             	mov    %eax,-0x4(%ebp)
40beeb:	8b 45 08             	mov    0x8(%ebp),%eax
40beee:	53                   	push   %ebx
40beef:	89 45 e0             	mov    %eax,-0x20(%ebp)
40bef2:	8b 45 0c             	mov    0xc(%ebp),%eax
40bef5:	56                   	push   %esi
40bef6:	57                   	push   %edi
40bef7:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40befa:	e8 37 9d ff ff       	call   0x405c36
40beff:	83 65 ec 00          	andl   $0x0,-0x14(%ebp)
40bf03:	83 3d 50 3b 41 00 00 	cmpl   $0x0,0x413b50
40bf0a:	89 45 e8             	mov    %eax,-0x18(%ebp)
40bf0d:	75 7d                	jne    0x40bf8c
40bf0f:	68 b4 09 41 00       	push   $0x4109b4
40bf14:	ff 15 28 f1 40 00    	call   *0x40f128
40bf1a:	8b d8                	mov    %eax,%ebx
40bf1c:	85 db                	test   %ebx,%ebx
40bf1e:	0f 84 10 01 00 00    	je     0x40c034
40bf24:	8b 3d e4 f0 40 00    	mov    0x40f0e4,%edi
40bf2a:	68 a8 09 41 00       	push   $0x4109a8
40bf2f:	53                   	push   %ebx
40bf30:	ff d7                	call   *%edi
40bf32:	85 c0                	test   %eax,%eax
40bf34:	0f 84 fa 00 00 00    	je     0x40c034
40bf3a:	8b 35 8c f0 40 00    	mov    0x40f08c,%esi
40bf40:	50                   	push   %eax
40bf41:	ff d6                	call   *%esi
40bf43:	68 98 09 41 00       	push   $0x410998
40bf48:	53                   	push   %ebx
40bf49:	a3 50 3b 41 00       	mov    %eax,0x413b50
40bf4e:	ff d7                	call   *%edi
40bf50:	50                   	push   %eax
40bf51:	ff d6                	call   *%esi
40bf53:	68 84 09 41 00       	push   $0x410984
40bf58:	53                   	push   %ebx
40bf59:	a3 54 3b 41 00       	mov    %eax,0x413b54
40bf5e:	ff d7                	call   *%edi
40bf60:	50                   	push   %eax
40bf61:	ff d6                	call   *%esi
40bf63:	68 68 09 41 00       	push   $0x410968
40bf68:	53                   	push   %ebx
40bf69:	a3 58 3b 41 00       	mov    %eax,0x413b58
40bf6e:	ff d7                	call   *%edi
40bf70:	50                   	push   %eax
40bf71:	ff d6                	call   *%esi
40bf73:	a3 60 3b 41 00       	mov    %eax,0x413b60
40bf78:	85 c0                	test   %eax,%eax
40bf7a:	74 10                	je     0x40bf8c
40bf7c:	68 50 09 41 00       	push   $0x410950
40bf81:	53                   	push   %ebx
40bf82:	ff d7                	call   *%edi
40bf84:	50                   	push   %eax
40bf85:	ff d6                	call   *%esi
40bf87:	a3 5c 3b 41 00       	mov    %eax,0x413b5c
40bf8c:	a1 5c 3b 41 00       	mov    0x413b5c,%eax
40bf91:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40bf94:	8b 35 90 f0 40 00    	mov    0x40f090,%esi
40bf9a:	3b c1                	cmp    %ecx,%eax
40bf9c:	74 47                	je     0x40bfe5
40bf9e:	39 0d 60 3b 41 00    	cmp    %ecx,0x413b60
40bfa4:	74 3f                	je     0x40bfe5
40bfa6:	50                   	push   %eax
40bfa7:	ff d6                	call   *%esi
40bfa9:	ff 35 60 3b 41 00    	push   0x413b60
40bfaf:	8b f8                	mov    %eax,%edi
40bfb1:	ff d6                	call   *%esi
40bfb3:	8b d8                	mov    %eax,%ebx
40bfb5:	85 ff                	test   %edi,%edi
40bfb7:	74 2c                	je     0x40bfe5
40bfb9:	85 db                	test   %ebx,%ebx
40bfbb:	74 28                	je     0x40bfe5
40bfbd:	ff d7                	call   *%edi
40bfbf:	85 c0                	test   %eax,%eax
40bfc1:	74 19                	je     0x40bfdc
40bfc3:	8d 4d dc             	lea    -0x24(%ebp),%ecx
40bfc6:	51                   	push   %ecx
40bfc7:	6a 0c                	push   $0xc
40bfc9:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40bfcc:	51                   	push   %ecx
40bfcd:	6a 01                	push   $0x1
40bfcf:	50                   	push   %eax
40bfd0:	ff d3                	call   *%ebx
40bfd2:	85 c0                	test   %eax,%eax
40bfd4:	74 06                	je     0x40bfdc
40bfd6:	f6 45 f8 01          	testb  $0x1,-0x8(%ebp)
40bfda:	75 09                	jne    0x40bfe5
40bfdc:	81 4d 10 00 00 20 00 	orl    $0x200000,0x10(%ebp)
40bfe3:	eb 33                	jmp    0x40c018
40bfe5:	a1 54 3b 41 00       	mov    0x413b54,%eax
40bfea:	3b 45 e8             	cmp    -0x18(%ebp),%eax
40bfed:	74 29                	je     0x40c018
40bfef:	50                   	push   %eax
40bff0:	ff d6                	call   *%esi
40bff2:	85 c0                	test   %eax,%eax
40bff4:	74 22                	je     0x40c018
40bff6:	ff d0                	call   *%eax
40bff8:	89 45 ec             	mov    %eax,-0x14(%ebp)
40bffb:	85 c0                	test   %eax,%eax
40bffd:	74 19                	je     0x40c018
40bfff:	a1 58 3b 41 00       	mov    0x413b58,%eax
40c004:	3b 45 e8             	cmp    -0x18(%ebp),%eax
40c007:	74 0f                	je     0x40c018
40c009:	50                   	push   %eax
40c00a:	ff d6                	call   *%esi
40c00c:	85 c0                	test   %eax,%eax
40c00e:	74 08                	je     0x40c018
40c010:	ff 75 ec             	push   -0x14(%ebp)
40c013:	ff d0                	call   *%eax
40c015:	89 45 ec             	mov    %eax,-0x14(%ebp)
40c018:	ff 35 50 3b 41 00    	push   0x413b50
40c01e:	ff d6                	call   *%esi
40c020:	85 c0                	test   %eax,%eax
40c022:	74 10                	je     0x40c034
40c024:	ff 75 10             	push   0x10(%ebp)
40c027:	ff 75 e4             	push   -0x1c(%ebp)
40c02a:	ff 75 e0             	push   -0x20(%ebp)
40c02d:	ff 75 ec             	push   -0x14(%ebp)
40c030:	ff d0                	call   *%eax
40c032:	eb 02                	jmp    0x40c036
40c034:	33 c0                	xor    %eax,%eax
40c036:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40c039:	5f                   	pop    %edi
40c03a:	5e                   	pop    %esi
40c03b:	33 cd                	xor    %ebp,%ecx
40c03d:	5b                   	pop    %ebx
40c03e:	e8 61 5d ff ff       	call   0x401da4
40c043:	c9                   	leave
40c044:	c3                   	ret
40c045:	8b ff                	mov    %edi,%edi
40c047:	55                   	push   %ebp
40c048:	8b ec                	mov    %esp,%ebp
40c04a:	56                   	push   %esi
40c04b:	8b 75 08             	mov    0x8(%ebp),%esi
40c04e:	57                   	push   %edi
40c04f:	85 f6                	test   %esi,%esi
40c051:	74 07                	je     0x40c05a
40c053:	8b 7d 0c             	mov    0xc(%ebp),%edi
40c056:	85 ff                	test   %edi,%edi
40c058:	75 15                	jne    0x40c06f
40c05a:	e8 c8 80 ff ff       	call   0x404127
40c05f:	6a 16                	push   $0x16
40c061:	5e                   	pop    %esi
40c062:	89 30                	mov    %esi,(%eax)
40c064:	e8 1e 6c ff ff       	call   0x402c87
40c069:	8b c6                	mov    %esi,%eax
40c06b:	5f                   	pop    %edi
40c06c:	5e                   	pop    %esi
40c06d:	5d                   	pop    %ebp
40c06e:	c3                   	ret
40c06f:	8b 4d 10             	mov    0x10(%ebp),%ecx
40c072:	85 c9                	test   %ecx,%ecx
40c074:	75 07                	jne    0x40c07d
40c076:	33 c0                	xor    %eax,%eax
40c078:	66 89 06             	mov    %ax,(%esi)
40c07b:	eb dd                	jmp    0x40c05a
40c07d:	8b d6                	mov    %esi,%edx
40c07f:	66 83 3a 00          	cmpw   $0x0,(%edx)
40c083:	74 06                	je     0x40c08b
40c085:	83 c2 02             	add    $0x2,%edx
40c088:	4f                   	dec    %edi
40c089:	75 f4                	jne    0x40c07f
40c08b:	85 ff                	test   %edi,%edi
40c08d:	74 e7                	je     0x40c076
40c08f:	2b d1                	sub    %ecx,%edx
40c091:	0f b7 01             	movzwl (%ecx),%eax
40c094:	66 89 04 0a          	mov    %ax,(%edx,%ecx,1)
40c098:	83 c1 02             	add    $0x2,%ecx
40c09b:	66 85 c0             	test   %ax,%ax
40c09e:	74 03                	je     0x40c0a3
40c0a0:	4f                   	dec    %edi
40c0a1:	75 ee                	jne    0x40c091
40c0a3:	33 c0                	xor    %eax,%eax
40c0a5:	85 ff                	test   %edi,%edi
40c0a7:	75 c2                	jne    0x40c06b
40c0a9:	66 89 06             	mov    %ax,(%esi)
40c0ac:	e8 76 80 ff ff       	call   0x404127
40c0b1:	6a 22                	push   $0x22
40c0b3:	59                   	pop    %ecx
40c0b4:	89 08                	mov    %ecx,(%eax)
40c0b6:	8b f1                	mov    %ecx,%esi
40c0b8:	eb aa                	jmp    0x40c064
40c0ba:	8b ff                	mov    %edi,%edi
40c0bc:	55                   	push   %ebp
40c0bd:	8b ec                	mov    %esp,%ebp
40c0bf:	8b 55 08             	mov    0x8(%ebp),%edx
40c0c2:	53                   	push   %ebx
40c0c3:	8b 5d 14             	mov    0x14(%ebp),%ebx
40c0c6:	56                   	push   %esi
40c0c7:	57                   	push   %edi
40c0c8:	85 db                	test   %ebx,%ebx
40c0ca:	75 10                	jne    0x40c0dc
40c0cc:	85 d2                	test   %edx,%edx
40c0ce:	75 10                	jne    0x40c0e0
40c0d0:	39 55 0c             	cmp    %edx,0xc(%ebp)
40c0d3:	75 12                	jne    0x40c0e7
40c0d5:	33 c0                	xor    %eax,%eax
40c0d7:	5f                   	pop    %edi
40c0d8:	5e                   	pop    %esi
40c0d9:	5b                   	pop    %ebx
40c0da:	5d                   	pop    %ebp
40c0db:	c3                   	ret
40c0dc:	85 d2                	test   %edx,%edx
40c0de:	74 07                	je     0x40c0e7
40c0e0:	8b 7d 0c             	mov    0xc(%ebp),%edi
40c0e3:	85 ff                	test   %edi,%edi
40c0e5:	75 13                	jne    0x40c0fa
40c0e7:	e8 3b 80 ff ff       	call   0x404127
40c0ec:	6a 16                	push   $0x16
40c0ee:	5e                   	pop    %esi
40c0ef:	89 30                	mov    %esi,(%eax)
40c0f1:	e8 91 6b ff ff       	call   0x402c87
40c0f6:	8b c6                	mov    %esi,%eax
40c0f8:	eb dd                	jmp    0x40c0d7
40c0fa:	85 db                	test   %ebx,%ebx
40c0fc:	75 07                	jne    0x40c105
40c0fe:	33 c0                	xor    %eax,%eax