403ec6:	ff 52 10             	call   *0x10(%edx)
403ec9:	85 c0                	test   %eax,%eax
403ecb:	7c 7a                	jl     0x403f47
403ecd:	83 f8 01             	cmp    $0x1,%eax
403ed0:	7e 38                	jle    0x403f0a
403ed2:	83 f8 03             	cmp    $0x3,%eax
403ed5:	75 70                	jne    0x403f47
403ed7:	83 7d e8 02          	cmpl   $0x2,-0x18(%ebp)
403edb:	72 58                	jb     0x403f35
403edd:	8d 45 b4             	lea    -0x4c(%ebp),%eax
403ee0:	50                   	push   %eax
403ee1:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
403ee4:	e8 f3 fd ff ff       	call   0x403cdc
403ee9:	6a 02                	push   $0x2
403eeb:	8b c8                	mov    %eax,%ecx
403eed:	e8 a9 f7 ff ff       	call   0x40369b
403ef2:	50                   	push   %eax
403ef3:	8d 45 d0             	lea    -0x30(%ebp),%eax
403ef6:	6a 02                	push   $0x2
403ef8:	50                   	push   %eax
403ef9:	e8 36 1b 00 00       	call   0x405a34
403efe:	0f b7 45 d0          	movzwl -0x30(%ebp),%eax
403f02:	83 c4 10             	add    $0x10,%esp
403f05:	66 8b f0             	mov    %ax,%si
403f08:	eb 42                	jmp    0x403f4c
403f0a:	8d 45 d0             	lea    -0x30(%ebp),%eax
403f0d:	39 45 c4             	cmp    %eax,-0x3c(%ebp)
403f10:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
403f13:	75 4b                	jne    0x403f60
403f15:	8d 45 a4             	lea    -0x5c(%ebp),%eax
403f18:	50                   	push   %eax
403f19:	e8 be fd ff ff       	call   0x403cdc
403f1e:	8b c8                	mov    %eax,%ecx
403f20:	e8 76 f7 ff ff       	call   0x40369b
403f25:	8b 4d cc             	mov    -0x34(%ebp),%ecx
403f28:	2b c8                	sub    %eax,%ecx
403f2a:	51                   	push   %ecx
403f2b:	6a 00                	push   $0x0
403f2d:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
403f30:	e8 fb de ff ff       	call   0x401e30
403f35:	ff 76 4c             	push   0x4c(%esi)
403f38:	e8 41 42 00 00       	call   0x40817e
403f3d:	83 f8 ff             	cmp    $0xffffffff,%eax
403f40:	59                   	pop    %ecx
403f41:	0f 85 27 ff ff ff    	jne    0x403e6e
403f47:	66 81 ce ff ff       	or     $0xffff,%si
403f4c:	6a 00                	push   $0x0
403f4e:	6a 01                	push   $0x1
403f50:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
403f53:	e8 88 de ff ff       	call   0x401de0
403f58:	66 8b c6             	mov    %si,%ax
403f5b:	e9 c3 fe ff ff       	jmp    0x403e23
403f60:	8d 45 ac             	lea    -0x54(%ebp),%eax
403f63:	50                   	push   %eax
403f64:	e8 73 fd ff ff       	call   0x403cdc
403f69:	8b c8                	mov    %eax,%ecx
403f6b:	e8 2b f7 ff ff       	call   0x40369b
403f70:	8b 7d e8             	mov    -0x18(%ebp),%edi
403f73:	2b 7d cc             	sub    -0x34(%ebp),%edi
403f76:	03 f8                	add    %eax,%edi
403f78:	eb 13                	jmp    0x403f8d
403f7a:	8b 45 cc             	mov    -0x34(%ebp),%eax
403f7d:	ff 76 4c             	push   0x4c(%esi)
403f80:	4f                   	dec    %edi
403f81:	0f be 04 07          	movsbl (%edi,%eax,1),%eax
403f85:	50                   	push   %eax
403f86:	e8 81 41 00 00       	call   0x40810c
403f8b:	59                   	pop    %ecx
403f8c:	59                   	pop    %ecx
403f8d:	85 ff                	test   %edi,%edi
403f8f:	7f e9                	jg     0x403f7a
403f91:	0f b7 75 d0          	movzwl -0x30(%ebp),%esi
403f95:	eb b5                	jmp    0x403f4c
403f97:	56                   	push   %esi
403f98:	8b f1                	mov    %ecx,%esi
403f9a:	6a 00                	push   $0x0
403f9c:	c7 46 18 0f 00 00 00 	movl   $0xf,0x18(%esi)
403fa3:	e8 d8 dc ff ff       	call   0x401c80
403fa8:	ff 74 24 0c          	push   0xc(%esp)
403fac:	8b ce                	mov    %esi,%ecx
403fae:	ff 74 24 0c          	push   0xc(%esp)
403fb2:	e8 f3 fd ff ff       	call   0x403daa
403fb7:	8b c6                	mov    %esi,%eax
403fb9:	5e                   	pop    %esi
403fba:	c2 08 00             	ret    $0x8
403fbd:	6a 48                	push   $0x48
403fbf:	b8 b9 5c 41 00       	mov    $0x415cb9,%eax
403fc4:	e8 8b 28 00 00       	call   0x406854
403fc9:	8b f1                	mov    %ecx,%esi
403fcb:	33 db                	xor    %ebx,%ebx
403fcd:	39 5e 3c             	cmp    %ebx,0x3c(%esi)
403fd0:	0f 84 f9 00 00 00    	je     0x4040cf
403fd6:	38 5e 42             	cmp    %bl,0x42(%esi)
403fd9:	0f 84 f0 00 00 00    	je     0x4040cf
403fdf:	8b 06                	mov    (%esi),%eax
403fe1:	bf ff ff 00 00       	mov    $0xffff,%edi
403fe6:	57                   	push   %edi
403fe7:	ff 50 04             	call   *0x4(%eax)
403fea:	0f b7 c0             	movzwl %ax,%eax
403fed:	66 3b c7             	cmp    %di,%ax
403ff0:	75 07                	jne    0x403ff9
403ff2:	32 c0                	xor    %al,%al
403ff4:	e9 d8 00 00 00       	jmp    0x4040d1
403ff9:	53                   	push   %ebx
403ffa:	6a 08                	push   $0x8
403ffc:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
403fff:	e8 93 ff ff ff       	call   0x403f97
404004:	89 5d fc             	mov    %ebx,-0x4(%ebp)
404007:	8d 45 ac             	lea    -0x54(%ebp),%eax
40400a:	50                   	push   %eax
40400b:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
40400e:	e8 c9 fc ff ff       	call   0x403cdc
404013:	8b c8                	mov    %eax,%ecx
404015:	e8 81 f6 ff ff       	call   0x40369b
40401a:	8b 7d e8             	mov    -0x18(%ebp),%edi
40401d:	8b d8                	mov    %eax,%ebx
40401f:	8d 45 c4             	lea    -0x3c(%ebp),%eax
404022:	50                   	push   %eax
404023:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
404026:	e8 b1 fc ff ff       	call   0x403cdc
40402b:	8b c8                	mov    %eax,%ecx
40402d:	e8 69 f6 ff ff       	call   0x40369b
404032:	8b 4e 3c             	mov    0x3c(%esi),%ecx
404035:	8b 11                	mov    (%ecx),%edx
404037:	89 45 cc             	mov    %eax,-0x34(%ebp)
40403a:	8d 45 d0             	lea    -0x30(%ebp),%eax
40403d:	50                   	push   %eax
40403e:	03 fb                	add    %ebx,%edi
404040:	57                   	push   %edi
404041:	ff 75 cc             	push   -0x34(%ebp)
404044:	8d 46 44             	lea    0x44(%esi),%eax
404047:	50                   	push   %eax
404048:	ff 52 18             	call   *0x18(%edx)
40404b:	83 e8 00             	sub    $0x0,%eax
40404e:	74 19                	je     0x404069
404050:	48                   	dec    %eax
404051:	74 1a                	je     0x40406d
404053:	48                   	dec    %eax
404054:	48                   	dec    %eax
404055:	74 74                	je     0x4040cb
404057:	32 db                	xor    %bl,%bl
404059:	6a 00                	push   $0x0
40405b:	6a 01                	push   $0x1
40405d:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
404060:	e8 7b dd ff ff       	call   0x401de0
404065:	8a c3                	mov    %bl,%al
404067:	eb 68                	jmp    0x4040d1
404069:	c6 46 42 00          	movb   $0x0,0x42(%esi)
40406d:	8d 45 b4             	lea    -0x4c(%ebp),%eax
404070:	50                   	push   %eax
404071:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
404074:	e8 63 fc ff ff       	call   0x403cdc
404079:	8b c8                	mov    %eax,%ecx
40407b:	e8 1b f6 ff ff       	call   0x40369b
404080:	8b 7d d0             	mov    -0x30(%ebp),%edi
404083:	2b f8                	sub    %eax,%edi
404085:	74 26                	je     0x4040ad
404087:	8d 45 bc             	lea    -0x44(%ebp),%eax
40408a:	50                   	push   %eax
40408b:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
40408e:	e8 49 fc ff ff       	call   0x403cdc
404093:	8b c8                	mov    %eax,%ecx
404095:	e8 01 f6 ff ff       	call   0x40369b
40409a:	ff 76 4c             	push   0x4c(%esi)
40409d:	57                   	push   %edi
40409e:	6a 01                	push   $0x1
4040a0:	50                   	push   %eax
4040a1:	e8 29 43 00 00       	call   0x4083cf
4040a6:	83 c4 10             	add    $0x10,%esp
4040a9:	3b f8                	cmp    %eax,%edi
4040ab:	75 aa                	jne    0x404057
4040ad:	80 7e 42 00          	cmpb   $0x0,0x42(%esi)
4040b1:	74 18                	je     0x4040cb
4040b3:	85 ff                	test   %edi,%edi
4040b5:	0f 85 4c ff ff ff    	jne    0x404007
4040bb:	57                   	push   %edi
4040bc:	6a 08                	push   $0x8
4040be:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
4040c1:	e8 96 fc ff ff       	call   0x403d5c
4040c6:	e9 3c ff ff ff       	jmp    0x404007
4040cb:	b3 01                	mov    $0x1,%bl
4040cd:	eb 8a                	jmp    0x404059
4040cf:	b0 01                	mov    $0x1,%al
4040d1:	e8 c8 27 00 00       	call   0x40689e
4040d6:	c3                   	ret
4040d7:	6a 54                	push   $0x54
4040d9:	b8 e6 5c 41 00       	mov    $0x415ce6,%eax
4040de:	e8 71 27 00 00       	call   0x406854
4040e3:	8b 7d 08             	mov    0x8(%ebp),%edi
4040e6:	66 81 ff ff ff       	cmp    $0xffff,%di
4040eb:	8b f1                	mov    %ecx,%esi
4040ed:	75 0b                	jne    0x4040fa
4040ef:	66 33 c0             	xor    %ax,%ax
4040f2:	e8 a7 27 00 00       	call   0x40689e
4040f7:	c2 04 00             	ret    $0x4
4040fa:	8b 46 24             	mov    0x24(%esi),%eax
4040fd:	8b 08                	mov    (%eax),%ecx
4040ff:	33 db                	xor    %ebx,%ebx
404101:	3b cb                	cmp    %ebx,%ecx
404103:	74 20                	je     0x404125
404105:	8b 46 34             	mov    0x34(%esi),%eax
404108:	8b 10                	mov    (%eax),%edx
40410a:	8d 14 51             	lea    (%ecx,%edx,2),%edx
40410d:	3b ca                	cmp    %edx,%ecx
40410f:	73 14                	jae    0x404125
404111:	ff 08                	decl   (%eax)
404113:	8b 76 24             	mov    0x24(%esi),%esi
404116:	8b 06                	mov    (%esi),%eax
404118:	8d 48 02             	lea    0x2(%eax),%ecx
40411b:	89 0e                	mov    %ecx,(%esi)
40411d:	66 89 38             	mov    %di,(%eax)
404120:	66 8b c7             	mov    %di,%ax
404123:	eb cd                	jmp    0x4040f2
404125:	8b 46 4c             	mov    0x4c(%esi),%eax
404128:	3b c3                	cmp    %ebx,%eax
40412a:	75 06                	jne    0x404132
40412c:	66 0d ff ff          	or     $0xffff,%ax
404130:	eb c0                	jmp    0x4040f2
404132:	39 5e 3c             	cmp    %ebx,0x3c(%esi)
404135:	75 17                	jne    0x40414e
404137:	50                   	push   %eax
404138:	57                   	push   %edi
404139:	e8 e0 f9 ff ff       	call   0x403b1e
40413e:	59                   	pop    %ecx
40413f:	84 c0                	test   %al,%al
404141:	59                   	pop    %ecx
404142:	0f b7 c7             	movzwl %di,%eax
404145:	75 ab                	jne    0x4040f2
404147:	b8 ff ff 00 00       	mov    $0xffff,%eax
40414c:	eb a4                	jmp    0x4040f2
40414e:	0f b7 c7             	movzwl %di,%eax
404151:	53                   	push   %ebx
404152:	6a 08                	push   $0x8
404154:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
404157:	89 45 d0             	mov    %eax,-0x30(%ebp)
40415a:	e8 38 fe ff ff       	call   0x403f97
40415f:	8d 45 b8             	lea    -0x48(%ebp),%eax
404162:	50                   	push   %eax
404163:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
404166:	89 5d fc             	mov    %ebx,-0x4(%ebp)
404169:	e8 6e fb ff ff       	call   0x403cdc
40416e:	8b c8                	mov    %eax,%ecx
404170:	e8 26 f5 ff ff       	call   0x40369b
404175:	8b 7d e8             	mov    -0x18(%ebp),%edi
404178:	8b d8                	mov    %eax,%ebx
40417a:	8d 45 b0             	lea    -0x50(%ebp),%eax
40417d:	50                   	push   %eax
40417e:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
404181:	e8 56 fb ff ff       	call   0x403cdc
404186:	8b c8                	mov    %eax,%ecx
404188:	e8 0e f5 ff ff       	call   0x40369b
40418d:	8d 55 c8             	lea    -0x38(%ebp),%edx
404190:	03 fb                	add    %ebx,%edi
404192:	52                   	push   %edx
404193:	8d 5e 44             	lea    0x44(%esi),%ebx
404196:	e9 a4 00 00 00       	jmp    0x40423f
40419b:	83 f8 01             	cmp    $0x1,%eax
40419e:	0f 8f d6 00 00 00    	jg     0x40427a
4041a4:	8d 45 a8             	lea    -0x58(%ebp),%eax
4041a7:	50                   	push   %eax
4041a8:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
4041ab:	e8 2c fb ff ff       	call   0x403cdc
4041b0:	8b c8                	mov    %eax,%ecx
4041b2:	e8 e4 f4 ff ff       	call   0x40369b
4041b7:	8b 7d c8             	mov    -0x38(%ebp),%edi
4041ba:	2b f8                	sub    %eax,%edi
4041bc:	74 26                	je     0x4041e4
4041be:	8d 45 a0             	lea    -0x60(%ebp),%eax
4041c1:	50                   	push   %eax
4041c2:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
4041c5:	e8 12 fb ff ff       	call   0x403cdc
4041ca:	8b c8                	mov    %eax,%ecx
4041cc:	e8 ca f4 ff ff       	call   0x40369b
4041d1:	ff 76 4c             	push   0x4c(%esi)
4041d4:	57                   	push   %edi
4041d5:	6a 01                	push   $0x1
4041d7:	50                   	push   %eax
4041d8:	e8 f2 41 00 00       	call   0x4083cf
4041dd:	83 c4 10             	add    $0x10,%esp
4041e0:	3b f8                	cmp    %eax,%edi
4041e2:	75 7d                	jne    0x404261
4041e4:	8d 45 d0             	lea    -0x30(%ebp),%eax
4041e7:	39 45 c4             	cmp    %eax,-0x3c(%ebp)
4041ea:	c6 46 42 01          	movb   $0x1,0x42(%esi)
4041ee:	0f 85 a7 00 00 00    	jne    0x40429b
4041f4:	85 ff                	test   %edi,%edi
4041f6:	77 12                	ja     0x40420a
4041f8:	83 7d e8 20          	cmpl   $0x20,-0x18(%ebp)
4041fc:	73 63                	jae    0x404261
4041fe:	6a 00                	push   $0x0
404200:	6a 08                	push   $0x8
404202:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
404205:	e8 52 fb ff ff       	call   0x403d5c
40420a:	8d 45 b8             	lea    -0x48(%ebp),%eax
40420d:	50                   	push   %eax
40420e:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
404211:	e8 c6 fa ff ff       	call   0x403cdc
404216:	8b c8                	mov    %eax,%ecx
404218:	e8 7e f4 ff ff       	call   0x40369b
40421d:	8b 7d e8             	mov    -0x18(%ebp),%edi
404220:	89 45 c0             	mov    %eax,-0x40(%ebp)
404223:	8d 45 b0             	lea    -0x50(%ebp),%eax
404226:	50                   	push   %eax
404227:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
40422a:	e8 ad fa ff ff       	call   0x403cdc
40422f:	8b c8                	mov    %eax,%ecx
404231:	e8 65 f4 ff ff       	call   0x40369b
404236:	8d 55 c8             	lea    -0x38(%ebp),%edx
404239:	52                   	push   %edx
40423a:	8b 55 c0             	mov    -0x40(%ebp),%edx
40423d:	03 fa                	add    %edx,%edi
40423f:	8b 4e 3c             	mov    0x3c(%esi),%ecx
404242:	57                   	push   %edi
404243:	50                   	push   %eax
404244:	8d 55 c4             	lea    -0x3c(%ebp),%edx
404247:	52                   	push   %edx
404248:	8d 55 d2             	lea    -0x2e(%ebp),%edx
40424b:	52                   	push   %edx
40424c:	8d 55 d0             	lea    -0x30(%ebp),%edx
40424f:	52                   	push   %edx
404250:	89 45 cc             	mov    %eax,-0x34(%ebp)
404253:	8b 01                	mov    (%ecx),%eax
404255:	53                   	push   %ebx
404256:	ff 50 14             	call   *0x14(%eax)
404259:	85 c0                	test   %eax,%eax
40425b:	0f 8d 3a ff ff ff    	jge    0x40419b
404261:	66 81 ce ff ff       	or     $0xffff,%si
404266:	6a 00                	push   $0x0
404268:	6a 01                	push   $0x1
40426a:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
40426d:	e8 6e db ff ff       	call   0x401de0
404272:	66 8b c6             	mov    %si,%ax
404275:	e9 78 fe ff ff       	jmp    0x4040f2
40427a:	83 f8 03             	cmp    $0x3,%eax
40427d:	75 e2                	jne    0x404261
40427f:	ff 76 4c             	push   0x4c(%esi)
404282:	ff 75 d0             	push   -0x30(%ebp)
404285:	e8 94 f8 ff ff       	call   0x403b1e
40428a:	84 c0                	test   %al,%al
40428c:	0f b7 75 08          	movzwl 0x8(%ebp),%esi
404290:	59                   	pop    %ecx
404291:	59                   	pop    %ecx
404292:	75 d2                	jne    0x404266
404294:	be ff ff 00 00       	mov    $0xffff,%esi
404299:	eb cb                	jmp    0x404266
40429b:	66 8b 75 08          	mov    0x8(%ebp),%si
40429f:	eb c5                	jmp    0x404266
4042a1:	55                   	push   %ebp
4042a2:	8b ec                	mov    %esp,%ebp
4042a4:	51                   	push   %ecx