403d58:	3b cd                	cmp    %ebp,%ecx
403d5a:	7c 3e                	jl     0x403d9a
403d5c:	83 f8 01             	cmp    $0x1,%eax
403d5f:	75 31                	jne    0x403d92
403d61:	55                   	push   %ebp
403d62:	ff 76 10             	push   0x10(%esi)
403d65:	e8 1f d6 ff ff       	call   0x401389
403d6a:	85 c0                	test   %eax,%eax
403d6c:	74 24                	je     0x403d92
403d6e:	6a 01                	push   $0x1
403d70:	55                   	push   %ebp
403d71:	68 0f 04 00 00       	push   $0x40f
403d76:	ff 35 d8 2e 42 00    	push   0x422ed8
403d7c:	ff 15 00 72 40 00    	call   *0x407200
403d82:	33 c0                	xor    %eax,%eax
403d84:	39 2d cc 2e 42 00    	cmp    %ebp,0x422ecc
403d8a:	0f 94 c0             	sete   %al
403d8d:	e9 a5 02 00 00       	jmp    0x404037
403d92:	39 2e                	cmp    %ebp,(%esi)
403d94:	0f 84 9b 02 00 00    	je     0x404035
403d9a:	68 0b 04 00 00       	push   $0x40b
403d9f:	e8 10 03 00 00       	call   0x4040b4
403da4:	a1 f0 fc 41 00       	mov    0x41fcf0,%eax
403da9:	01 05 dc 91 40 00    	add    %eax,0x4091dc
403daf:	c1 e0 06             	shl    $0x6,%eax
403db2:	03 f0                	add    %eax,%esi
403db4:	a1 dc 91 40 00       	mov    0x4091dc,%eax
403db9:	3b 05 44 37 42 00    	cmp    0x423744,%eax
403dbf:	75 07                	jne    0x403dc8
403dc1:	6a 01                	push   $0x1
403dc3:	e8 43 d6 ff ff       	call   0x40140b
403dc8:	39 2d cc 2e 42 00    	cmp    %ebp,0x422ecc
403dce:	0f 85 1f 02 00 00    	jne    0x403ff3
403dd4:	a1 44 37 42 00       	mov    0x423744,%eax
403dd9:	39 05 dc 91 40 00    	cmp    %eax,0x4091dc
403ddf:	0f 83 0e 02 00 00    	jae    0x403ff3
403de5:	ff 76 24             	push   0x24(%esi)
403de8:	8b 5e 14             	mov    0x14(%esi),%ebx
403deb:	68 00 b8 42 00       	push   $0x42b800
403df0:	e8 07 22 00 00       	call   0x405ffc
403df5:	ff 76 20             	push   0x20(%esi)
403df8:	68 19 fc ff ff       	push   $0xfffffc19
403dfd:	57                   	push   %edi
403dfe:	e8 65 02 00 00       	call   0x404068
403e03:	ff 76 1c             	push   0x1c(%esi)
403e06:	68 1b fc ff ff       	push   $0xfffffc1b
403e0b:	57                   	push   %edi
403e0c:	e8 57 02 00 00       	call   0x404068
403e11:	ff 76 28             	push   0x28(%esi)
403e14:	68 1a fc ff ff       	push   $0xfffffc1a
403e19:	57                   	push   %edi
403e1a:	e8 49 02 00 00       	call   0x404068
403e1f:	6a 03                	push   $0x3
403e21:	57                   	push   %edi
403e22:	ff 15 d0 71 40 00    	call   *0x4071d0
403e28:	39 2d ac 37 42 00    	cmp    %ebp,0x4237ac
403e2e:	89 44 24 2c          	mov    %eax,0x2c(%esp)
403e32:	74 08                	je     0x403e3c
403e34:	66 81 e3 fd fe       	and    $0xfefd,%bx
403e39:	83 cb 04             	or     $0x4,%ebx
403e3c:	8b cb                	mov    %ebx,%ecx
403e3e:	83 e1 08             	and    $0x8,%ecx
403e41:	51                   	push   %ecx
403e42:	50                   	push   %eax
403e43:	ff 15 48 72 40 00    	call   *0x407248
403e49:	8b c3                	mov    %ebx,%eax
403e4b:	25 00 01 00 00       	and    $0x100,%eax
403e50:	50                   	push   %eax
403e51:	ff 74 24 30          	push   0x30(%esp)
403e55:	ff 15 f8 71 40 00    	call   *0x4071f8
403e5b:	8b c3                	mov    %ebx,%eax
403e5d:	83 e0 02             	and    $0x2,%eax
403e60:	50                   	push   %eax
403e61:	e8 24 02 00 00       	call   0x40408a
403e66:	83 e3 04             	and    $0x4,%ebx
403e69:	53                   	push   %ebx
403e6a:	ff 35 d0 ec 41 00    	push   0x41ecd0
403e70:	ff 15 f8 71 40 00    	call   *0x4071f8
403e76:	3b dd                	cmp    %ebp,%ebx
403e78:	74 03                	je     0x403e7d
403e7a:	55                   	push   %ebp
403e7b:	eb 02                	jmp    0x403e7f
403e7d:	6a 01                	push   $0x1
403e7f:	68 60 f0 00 00       	push   $0xf060
403e84:	55                   	push   %ebp
403e85:	57                   	push   %edi
403e86:	ff 15 84 71 40 00    	call   *0x407184
403e8c:	50                   	push   %eax
403e8d:	ff 15 8c 71 40 00    	call   *0x40718c
403e93:	8b 1d 00 72 40 00    	mov    0x407200,%ebx
403e99:	6a 01                	push   $0x1
403e9b:	55                   	push   %ebp
403e9c:	68 f4 00 00 00       	push   $0xf4
403ea1:	ff 74 24 38          	push   0x38(%esp)
403ea5:	ff d3                	call   *%ebx
403ea7:	39 2d ac 37 42 00    	cmp    %ebp,0x4237ac
403ead:	74 13                	je     0x403ec2
403eaf:	55                   	push   %ebp
403eb0:	6a 02                	push   $0x2
403eb2:	68 01 04 00 00       	push   $0x401
403eb7:	57                   	push   %edi
403eb8:	ff d3                	call   *%ebx
403eba:	ff 35 d0 ec 41 00    	push   0x41ecd0
403ec0:	eb 06                	jmp    0x403ec8
403ec2:	ff 35 04 fd 41 00    	push   0x41fd04
403ec8:	e8 d0 01 00 00       	call   0x40409d
403ecd:	e8 a3 fc ff ff       	call   0x403b75
403ed2:	bb 08 fd 41 00       	mov    $0x41fd08,%ebx
403ed7:	50                   	push   %eax
403ed8:	53                   	push   %ebx
403ed9:	e8 fc 20 00 00       	call   0x405fda
403ede:	ff 76 18             	push   0x18(%esi)
403ee1:	53                   	push   %ebx
403ee2:	e8 09 21 00 00       	call   0x405ff0
403ee7:	03 c3                	add    %ebx,%eax
403ee9:	50                   	push   %eax
403eea:	e8 0d 21 00 00       	call   0x405ffc
403eef:	53                   	push   %ebx
403ef0:	57                   	push   %edi
403ef1:	ff 15 40 72 40 00    	call   *0x407240
403ef7:	55                   	push   %ebp
403ef8:	ff 76 08             	push   0x8(%esi)
403efb:	e8 89 d4 ff ff       	call   0x401389
403f00:	85 c0                	test   %eax,%eax
403f02:	0f 85 9c fe ff ff    	jne    0x403da4
403f08:	39 2e                	cmp    %ebp,(%esi)
403f0a:	0f 84 94 fe ff ff    	je     0x403da4
403f10:	83 7e 04 05          	cmpl   $0x5,0x4(%esi)
403f14:	75 1d                	jne    0x403f33
403f16:	39 2d ac 37 42 00    	cmp    %ebp,0x4237ac
403f1c:	0f 85 13 01 00 00    	jne    0x404035
403f22:	39 2d a0 37 42 00    	cmp    %ebp,0x4237a0
403f28:	0f 85 76 fe ff ff    	jne    0x403da4
403f2e:	e9 02 01 00 00       	jmp    0x404035
403f33:	ff 35 d8 2e 42 00    	push   0x422ed8
403f39:	ff 15 70 72 40 00    	call   *0x407270
403f3f:	89 35 e0 f4 41 00    	mov    %esi,0x41f4e0
403f45:	39 2e                	cmp    %ebp,(%esi)
403f47:	0f 8e c5 00 00 00    	jle    0x404012
403f4d:	8b 46 04             	mov    0x4(%esi),%eax
403f50:	56                   	push   %esi
403f51:	ff 34 85 e0 91 40 00 	push   0x4091e0(,%eax,4)
403f58:	66 8b 06             	mov    (%esi),%ax
403f5b:	66 03 05 e0 2e 42 00 	add    0x422ee0,%ax
403f62:	57                   	push   %edi
403f63:	0f b7 c0             	movzwl %ax,%eax
403f66:	50                   	push   %eax
403f67:	ff 35 00 37 42 00    	push   0x423700
403f6d:	ff 15 38 72 40 00    	call   *0x407238
403f73:	3b c5                	cmp    %ebp,%eax
403f75:	a3 d8 2e 42 00       	mov    %eax,0x422ed8
403f7a:	0f 84 92 00 00 00    	je     0x404012
403f80:	ff 76 2c             	push   0x2c(%esi)
403f83:	6a 06                	push   $0x6
403f85:	50                   	push   %eax
403f86:	e8 dd 00 00 00       	call   0x404068
403f8b:	8d 44 24 10          	lea    0x10(%esp),%eax
403f8f:	50                   	push   %eax
403f90:	68 fa 03 00 00       	push   $0x3fa
403f95:	57                   	push   %edi
403f96:	ff 15 d0 71 40 00    	call   *0x4071d0
403f9c:	50                   	push   %eax
403f9d:	ff 15 cc 71 40 00    	call   *0x4071cc
403fa3:	8d 44 24 10          	lea    0x10(%esp),%eax
403fa7:	50                   	push   %eax
403fa8:	57                   	push   %edi
403fa9:	ff 15 c8 71 40 00    	call   *0x4071c8
403faf:	6a 15                	push   $0x15
403fb1:	55                   	push   %ebp
403fb2:	55                   	push   %ebp
403fb3:	ff 74 24 20          	push   0x20(%esp)
403fb7:	ff 74 24 20          	push   0x20(%esp)
403fbb:	55                   	push   %ebp
403fbc:	ff 35 d8 2e 42 00    	push   0x422ed8
403fc2:	ff 15 94 71 40 00    	call   *0x407194
403fc8:	55                   	push   %ebp
403fc9:	ff 76 0c             	push   0xc(%esi)
403fcc:	e8 b8 d3 ff ff       	call   0x401389
403fd1:	39 2d cc 2e 42 00    	cmp    %ebp,0x422ecc
403fd7:	75 5c                	jne    0x404035
403fd9:	6a 08                	push   $0x8
403fdb:	ff 35 d8 2e 42 00    	push   0x422ed8
403fe1:	ff 15 48 72 40 00    	call   *0x407248
403fe7:	68 05 04 00 00       	push   $0x405
403fec:	e8 c3 00 00 00       	call   0x4040b4
403ff1:	eb 1f                	jmp    0x404012
403ff3:	ff 35 d8 2e 42 00    	push   0x422ed8
403ff9:	ff 15 70 72 40 00    	call   *0x407270
403fff:	ff 35 d8 f0 41 00    	push   0x41f0d8
404005:	89 2d 08 37 42 00    	mov    %ebp,0x423708
40400b:	57                   	push   %edi
40400c:	ff 15 14 72 40 00    	call   *0x407214
404012:	39 2d 08 0d 42 00    	cmp    %ebp,0x420d08
404018:	75 1b                	jne    0x404035
40401a:	39 2d d8 2e 42 00    	cmp    %ebp,0x422ed8
404020:	74 13                	je     0x404035
404022:	6a 0a                	push   $0xa
404024:	57                   	push   %edi
404025:	ff 15 48 72 40 00    	call   *0x407248
40402b:	c7 05 08 0d 42 00 01 	movl   $0x1,0x420d08
404032:	00 00 00
404035:	33 c0                	xor    %eax,%eax
404037:	5f                   	pop    %edi
404038:	5e                   	pop    %esi
404039:	5d                   	pop    %ebp
40403a:	5b                   	pop    %ebx
40403b:	83 c4 10             	add    $0x10,%esp
40403e:	c2 10 00             	ret    $0x10
404041:	83 7c 24 04 78       	cmpl   $0x78,0x4(%esp)
404046:	75 06                	jne    0x40404e
404048:	ff 05 cc 2e 42 00    	incl   0x422ecc
40404e:	6a 00                	push   $0x0
404050:	ff 74 24 08          	push   0x8(%esp)
404054:	68 08 04 00 00       	push   $0x408
404059:	ff 35 08 37 42 00    	push   0x423708
40405f:	ff 15 00 72 40 00    	call   *0x407200
404065:	c2 04 00             	ret    $0x4
404068:	ff 74 24 0c          	push   0xc(%esp)
40406c:	6a 00                	push   $0x0
40406e:	e8 89 1f 00 00       	call   0x405ffc
404073:	50                   	push   %eax
404074:	8b 44 24 0c          	mov    0xc(%esp),%eax
404078:	05 e8 03 00 00       	add    $0x3e8,%eax
40407d:	50                   	push   %eax
40407e:	ff 74 24 0c          	push   0xc(%esp)
404082:	e8 4d 16 00 00       	call   0x4056d4
404087:	c2 0c 00             	ret    $0xc
40408a:	ff 74 24 04          	push   0x4(%esp)
40408e:	ff 35 04 fd 41 00    	push   0x41fd04
404094:	ff 15 f8 71 40 00    	call   *0x4071f8
40409a:	c2 04 00             	ret    $0x4
40409d:	6a 01                	push   $0x1
40409f:	ff 74 24 08          	push   0x8(%esp)
4040a3:	6a 28                	push   $0x28
4040a5:	ff 35 08 37 42 00    	push   0x423708
4040ab:	ff 15 00 72 40 00    	call   *0x407200
4040b1:	c2 04 00             	ret    $0x4
4040b4:	a1 d8 2e 42 00       	mov    0x422ed8,%eax
4040b9:	85 c0                	test   %eax,%eax
4040bb:	74 0f                	je     0x4040cc
4040bd:	6a 00                	push   $0x0
4040bf:	6a 00                	push   $0x0
4040c1:	ff 74 24 0c          	push   0xc(%esp)
4040c5:	50                   	push   %eax
4040c6:	ff 15 00 72 40 00    	call   *0x407200
4040cc:	c2 04 00             	ret    $0x4
4040cf:	55                   	push   %ebp
4040d0:	8b ec                	mov    %esp,%ebp
4040d2:	83 ec 0c             	sub    $0xc,%esp
4040d5:	8b 45 08             	mov    0x8(%ebp),%eax
4040d8:	56                   	push   %esi
4040d9:	05 cd fe ff ff       	add    $0xfffffecd,%eax
4040de:	83 f8 05             	cmp    $0x5,%eax
4040e1:	0f 87 b0 00 00 00    	ja     0x404197
4040e7:	6a eb                	push   $0xffffffeb
4040e9:	ff 75 10             	push   0x10(%ebp)
4040ec:	ff 15 9c 71 40 00    	call   *0x40719c
4040f2:	8b f0                	mov    %eax,%esi
4040f4:	85 f6                	test   %esi,%esi
4040f6:	0f 84 9b 00 00 00    	je     0x404197
4040fc:	83 7e 08 01          	cmpl   $0x1,0x8(%esi)
404100:	0f 87 91 00 00 00    	ja     0x404197
404106:	83 7e 10 02          	cmpl   $0x2,0x10(%esi)
40410a:	0f 87 87 00 00 00    	ja     0x404197
404110:	8b 4e 14             	mov    0x14(%esi),%ecx
404113:	f7 c1 e0 ff ff ff    	test   $0xffffffe0,%ecx
404119:	75 7c                	jne    0x404197
40411b:	8b 06                	mov    (%esi),%eax
40411d:	57                   	push   %edi
40411e:	8b 3d 98 71 40 00    	mov    0x407198,%edi
404124:	f6 c1 02             	test   $0x2,%cl
404127:	74 03                	je     0x40412c
404129:	50                   	push   %eax
40412a:	ff d7                	call   *%edi
40412c:	f6 46 14 01          	testb  $0x1,0x14(%esi)
404130:	74 0a                	je     0x40413c
404132:	50                   	push   %eax
404133:	ff 75 0c             	push   0xc(%ebp)
404136:	ff 15 50 70 40 00    	call   *0x407050
40413c:	ff 76 10             	push   0x10(%esi)
40413f:	ff 75 0c             	push   0xc(%ebp)
404142:	ff 15 54 70 40 00    	call   *0x407054
404148:	8b 46 04             	mov    0x4(%esi),%eax
40414b:	f6 46 14 08          	testb  $0x8,0x14(%esi)
40414f:	89 45 f8             	mov    %eax,-0x8(%ebp)
404152:	74 06                	je     0x40415a
404154:	50                   	push   %eax
404155:	ff d7                	call   *%edi
404157:	89 45 f8             	mov    %eax,-0x8(%ebp)
40415a:	f6 46 14 04          	testb  $0x4,0x14(%esi)
40415e:	5f                   	pop    %edi
40415f:	74 0a                	je     0x40416b
404161:	50                   	push   %eax
404162:	ff 75 0c             	push   0xc(%ebp)
404165:	ff 15 68 70 40 00    	call   *0x407068
40416b:	f6 46 14 10          	testb  $0x10,0x14(%esi)
40416f:	74 21                	je     0x404192
404171:	8b 46 08             	mov    0x8(%esi),%eax
404174:	89 45 f4             	mov    %eax,-0xc(%ebp)
404177:	8b 46 0c             	mov    0xc(%esi),%eax
40417a:	85 c0                	test   %eax,%eax
40417c:	74 07                	je     0x404185
40417e:	50                   	push   %eax
40417f:	ff 15 60 70 40 00    	call   *0x407060
404185:	8d 45 f4             	lea    -0xc(%ebp),%eax
404188:	50                   	push   %eax
404189:	ff 15 5c 70 40 00    	call   *0x40705c
40418f:	89 46 0c             	mov    %eax,0xc(%esi)
404192:	8b 46 0c             	mov    0xc(%esi),%eax
404195:	eb 02                	jmp    0x404199
404197:	33 c0                	xor    %eax,%eax
404199:	5e                   	pop    %esi
40419a:	c9                   	leave
40419b:	c2 0c 00             	ret    $0xc
40419e:	55                   	push   %ebp
40419f:	8b ec                	mov    %esp,%ebp
4041a1:	8b 45 08             	mov    0x8(%ebp),%eax
4041a4:	8b 0d d4 ec 41 00    	mov    0x41ecd4,%ecx
4041aa:	ff 75 10             	push   0x10(%ebp)
4041ad:	03 c8                	add    %eax,%ecx
4041af:	51                   	push   %ecx
4041b0:	ff 75 0c             	push   0xc(%ebp)
4041b3:	ff 15 a4 70 40 00    	call   *0x4070a4
4041b9:	ff 75 0c             	push   0xc(%ebp)
4041bc:	ff 15 98 70 40 00    	call   *0x407098
4041c2:	8b 4d 14             	mov    0x14(%ebp),%ecx
4041c5:	89 01                	mov    %eax,(%ecx)
4041c7:	01 05 d4 ec 41 00    	add    %eax,0x41ecd4
4041cd:	33 c0                	xor    %eax,%eax
4041cf:	5d                   	pop    %ebp
4041d0:	c2 10 00             	ret    $0x10
4041d3:	55                   	push   %ebp
4041d4:	8b ec                	mov    %esp,%ebp
4041d6:	83 ec 0c             	sub    $0xc,%esp
4041d9:	81 7d 0c 10 01 00 00 	cmpl   $0x110,0xc(%ebp)
4041e0:	53                   	push   %ebx
4041e1:	56                   	push   %esi
4041e2:	57                   	push   %edi
4041e3:	0f 85 0c 01 00 00    	jne    0x4042f5
4041e9:	8b 5d 14             	mov    0x14(%ebp),%ebx
4041ec:	8b 7b 30             	mov    0x30(%ebx),%edi
4041ef:	85 ff                	test   %edi,%edi
4041f1:	7d 11                	jge    0x404204
4041f3:	8b 0d dc 2e 42 00    	mov    0x422edc,%ecx
4041f9:	8d 04 bd 04 00 00 00 	lea    0x4(,%edi,4),%eax
404200:	2b c8                	sub    %eax,%ecx
404202:	8b 39                	mov    (%ecx),%edi
404204:	a1 58 37 42 00       	mov    0x423758,%eax
404209:	ff 73 34             	push   0x34(%ebx)
40420c:	03 f8                	add    %eax,%edi