406df0:	f6 46 0c 01          	testb  $0x1,0xc(%esi)
406df4:	75 0c                	jne    0x406e02
406df6:	f6 46 0c 80          	testb  $0x80,0xc(%esi)
406dfa:	74 e6                	je     0x406de2
406dfc:	f6 46 0c 02          	testb  $0x2,0xc(%esi)
406e00:	75 e0                	jne    0x406de2
406e02:	83 7e 08 00          	cmpl   $0x0,0x8(%esi)
406e06:	75 07                	jne    0x406e0f
406e08:	56                   	push   %esi
406e09:	e8 fe 83 00 00       	call   0x40f20c
406e0e:	59                   	pop    %ecx
406e0f:	8b 06                	mov    (%esi),%eax
406e11:	3b 46 08             	cmp    0x8(%esi),%eax
406e14:	75 09                	jne    0x406e1f
406e16:	83 7e 04 00          	cmpl   $0x0,0x4(%esi)
406e1a:	75 c6                	jne    0x406de2
406e1c:	40                   	inc    %eax
406e1d:	89 06                	mov    %eax,(%esi)
406e1f:	ff 0e                	decl   (%esi)
406e21:	f6 46 0c 40          	testb  $0x40,0xc(%esi)
406e25:	8b 06                	mov    (%esi),%eax
406e27:	74 09                	je     0x406e32
406e29:	38 18                	cmp    %bl,(%eax)
406e2b:	74 07                	je     0x406e34
406e2d:	40                   	inc    %eax
406e2e:	89 06                	mov    %eax,(%esi)
406e30:	eb b0                	jmp    0x406de2
406e32:	88 18                	mov    %bl,(%eax)
406e34:	8b 46 0c             	mov    0xc(%esi),%eax
406e37:	ff 46 04             	incl   0x4(%esi)
406e3a:	83 e0 ef             	and    $0xffffffef,%eax
406e3d:	83 c8 01             	or     $0x1,%eax
406e40:	89 46 0c             	mov    %eax,0xc(%esi)
406e43:	0f b6 c3             	movzbl %bl,%eax
406e46:	eb 9c                	jmp    0x406de4
406e48:	6a 0c                	push   $0xc
406e4a:	68 10 e3 41 00       	push   $0x41e310
406e4f:	e8 5c 3f 00 00       	call   0x40adb0
406e54:	33 c0                	xor    %eax,%eax
406e56:	8b 75 0c             	mov    0xc(%ebp),%esi
406e59:	85 f6                	test   %esi,%esi
406e5b:	0f 95 c0             	setne  %al
406e5e:	85 c0                	test   %eax,%eax
406e60:	75 15                	jne    0x406e77
406e62:	e8 16 13 00 00       	call   0x40817d
406e67:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
406e6d:	e8 83 47 00 00       	call   0x40b5f5
406e72:	83 c8 ff             	or     $0xffffffff,%eax
406e75:	eb 32                	jmp    0x406ea9
406e77:	e8 76 67 00 00       	call   0x40d5f2
406e7c:	85 c0                	test   %eax,%eax
406e7e:	78 f2                	js     0x406e72
406e80:	56                   	push   %esi
406e81:	e8 95 f4 ff ff       	call   0x40631b
406e86:	59                   	pop    %ecx
406e87:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
406e8b:	56                   	push   %esi
406e8c:	ff 75 08             	push   0x8(%ebp)
406e8f:	e8 d4 fe ff ff       	call   0x406d68
406e94:	59                   	pop    %ecx
406e95:	59                   	pop    %ecx
406e96:	8b f8                	mov    %eax,%edi
406e98:	89 7d e4             	mov    %edi,-0x1c(%ebp)
406e9b:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
406ea2:	e8 0e 00 00 00       	call   0x406eb5
406ea7:	8b c7                	mov    %edi,%eax
406ea9:	e8 47 3f 00 00       	call   0x40adf5
406eae:	c3                   	ret
406eaf:	8b 75 0c             	mov    0xc(%ebp),%esi
406eb2:	8b 7d e4             	mov    -0x1c(%ebp),%edi
406eb5:	56                   	push   %esi
406eb6:	e8 cf f4 ff ff       	call   0x40638a
406ebb:	59                   	pop    %ecx
406ebc:	c3                   	ret
406ebd:	55                   	push   %ebp
406ebe:	8b ec                	mov    %esp,%ebp
406ec0:	56                   	push   %esi
406ec1:	8b 75 14             	mov    0x14(%ebp),%esi
406ec4:	85 f6                	test   %esi,%esi
406ec6:	75 04                	jne    0x406ecc
406ec8:	33 c0                	xor    %eax,%eax
406eca:	eb 6d                	jmp    0x406f39
406ecc:	8b 45 08             	mov    0x8(%ebp),%eax
406ecf:	85 c0                	test   %eax,%eax
406ed1:	75 13                	jne    0x406ee6
406ed3:	e8 a5 12 00 00       	call   0x40817d
406ed8:	6a 16                	push   $0x16
406eda:	5e                   	pop    %esi
406edb:	89 30                	mov    %esi,(%eax)
406edd:	e8 13 47 00 00       	call   0x40b5f5
406ee2:	8b c6                	mov    %esi,%eax
406ee4:	eb 53                	jmp    0x406f39
406ee6:	57                   	push   %edi
406ee7:	8b 7d 10             	mov    0x10(%ebp),%edi
406eea:	85 ff                	test   %edi,%edi
406eec:	74 14                	je     0x406f02
406eee:	39 75 0c             	cmp    %esi,0xc(%ebp)
406ef1:	72 0f                	jb     0x406f02
406ef3:	56                   	push   %esi
406ef4:	57                   	push   %edi
406ef5:	50                   	push   %eax
406ef6:	e8 a5 e7 ff ff       	call   0x4056a0
406efb:	83 c4 0c             	add    $0xc,%esp
406efe:	33 c0                	xor    %eax,%eax
406f00:	eb 36                	jmp    0x406f38
406f02:	ff 75 0c             	push   0xc(%ebp)
406f05:	6a 00                	push   $0x0
406f07:	50                   	push   %eax
406f08:	e8 33 00 00 00       	call   0x406f40
406f0d:	83 c4 0c             	add    $0xc,%esp
406f10:	85 ff                	test   %edi,%edi
406f12:	75 09                	jne    0x406f1d
406f14:	e8 64 12 00 00       	call   0x40817d
406f19:	6a 16                	push   $0x16
406f1b:	eb 0c                	jmp    0x406f29
406f1d:	39 75 0c             	cmp    %esi,0xc(%ebp)
406f20:	73 13                	jae    0x406f35
406f22:	e8 56 12 00 00       	call   0x40817d
406f27:	6a 22                	push   $0x22
406f29:	5e                   	pop    %esi
406f2a:	89 30                	mov    %esi,(%eax)
406f2c:	e8 c4 46 00 00       	call   0x40b5f5
406f31:	8b c6                	mov    %esi,%eax
406f33:	eb 03                	jmp    0x406f38
406f35:	6a 16                	push   $0x16
406f37:	58                   	pop    %eax
406f38:	5f                   	pop    %edi
406f39:	5e                   	pop    %esi
406f3a:	5d                   	pop    %ebp
406f3b:	c3                   	ret
406f3c:	cc                   	int3
406f3d:	cc                   	int3
406f3e:	cc                   	int3
406f3f:	cc                   	int3
406f40:	8b 54 24 0c          	mov    0xc(%esp),%edx
406f44:	8b 4c 24 04          	mov    0x4(%esp),%ecx
406f48:	85 d2                	test   %edx,%edx
406f4a:	74 7f                	je     0x406fcb
406f4c:	0f b6 44 24 08       	movzbl 0x8(%esp),%eax
406f51:	0f ba 25 d4 20 42 00 	btl    $0x1,0x4220d4
406f58:	01
406f59:	73 0d                	jae    0x406f68
406f5b:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
406f5f:	57                   	push   %edi
406f60:	8b 7c 24 08          	mov    0x8(%esp),%edi
406f64:	f3 aa                	rep stos %al,%es:(%edi)
406f66:	eb 5d                	jmp    0x406fc5
406f68:	8b 54 24 0c          	mov    0xc(%esp),%edx
406f6c:	81 fa 80 00 00 00    	cmp    $0x80,%edx
406f72:	7c 0e                	jl     0x406f82
406f74:	0f ba 25 a8 08 42 00 	btl    $0x1,0x4208a8
406f7b:	01
406f7c:	0f 82 d0 82 00 00    	jb     0x40f252
406f82:	57                   	push   %edi
406f83:	8b f9                	mov    %ecx,%edi
406f85:	83 fa 04             	cmp    $0x4,%edx
406f88:	72 31                	jb     0x406fbb
406f8a:	f7 d9                	neg    %ecx
406f8c:	83 e1 03             	and    $0x3,%ecx
406f8f:	74 0c                	je     0x406f9d
406f91:	2b d1                	sub    %ecx,%edx
406f93:	88 07                	mov    %al,(%edi)
406f95:	83 c7 01             	add    $0x1,%edi
406f98:	83 e9 01             	sub    $0x1,%ecx
406f9b:	75 f6                	jne    0x406f93
406f9d:	8b c8                	mov    %eax,%ecx
406f9f:	c1 e0 08             	shl    $0x8,%eax
406fa2:	03 c1                	add    %ecx,%eax
406fa4:	8b c8                	mov    %eax,%ecx
406fa6:	c1 e0 10             	shl    $0x10,%eax
406fa9:	03 c1                	add    %ecx,%eax
406fab:	8b ca                	mov    %edx,%ecx
406fad:	83 e2 03             	and    $0x3,%edx
406fb0:	c1 e9 02             	shr    $0x2,%ecx
406fb3:	74 06                	je     0x406fbb
406fb5:	f3 ab                	rep stos %eax,%es:(%edi)
406fb7:	85 d2                	test   %edx,%edx
406fb9:	74 0a                	je     0x406fc5
406fbb:	88 07                	mov    %al,(%edi)
406fbd:	83 c7 01             	add    $0x1,%edi
406fc0:	83 ea 01             	sub    $0x1,%edx
406fc3:	75 f6                	jne    0x406fbb
406fc5:	8b 44 24 08          	mov    0x8(%esp),%eax
406fc9:	5f                   	pop    %edi
406fca:	c3                   	ret
406fcb:	8b 44 24 04          	mov    0x4(%esp),%eax
406fcf:	c3                   	ret
406fd0:	6a 08                	push   $0x8
406fd2:	68 a0 e3 41 00       	push   $0x41e3a0
406fd7:	e8 d4 3d 00 00       	call   0x40adb0
406fdc:	8b 45 08             	mov    0x8(%ebp),%eax
406fdf:	85 c0                	test   %eax,%eax
406fe1:	74 72                	je     0x407055
406fe3:	81 38 63 73 6d e0    	cmpl   $0xe06d7363,(%eax)
406fe9:	75 6a                	jne    0x407055
406feb:	83 78 10 03          	cmpl   $0x3,0x10(%eax)
406fef:	75 64                	jne    0x407055
406ff1:	81 78 14 20 05 93 19 	cmpl   $0x19930520,0x14(%eax)
406ff8:	74 12                	je     0x40700c
406ffa:	81 78 14 21 05 93 19 	cmpl   $0x19930521,0x14(%eax)
407001:	74 09                	je     0x40700c
407003:	81 78 14 22 05 93 19 	cmpl   $0x19930522,0x14(%eax)
40700a:	75 49                	jne    0x407055
40700c:	8b 48 1c             	mov    0x1c(%eax),%ecx
40700f:	85 c9                	test   %ecx,%ecx
407011:	74 42                	je     0x407055
407013:	8b 51 04             	mov    0x4(%ecx),%edx
407016:	85 d2                	test   %edx,%edx
407018:	74 27                	je     0x407041
40701a:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40701e:	52                   	push   %edx
40701f:	ff 70 18             	push   0x18(%eax)
407022:	e8 9d ef ff ff       	call   0x405fc4
407027:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40702e:	eb 25                	jmp    0x407055
407030:	33 c0                	xor    %eax,%eax
407032:	38 45 0c             	cmp    %al,0xc(%ebp)
407035:	0f 95 c0             	setne  %al
407038:	c3                   	ret
407039:	8b 65 e8             	mov    -0x18(%ebp),%esp
40703c:	e8 03 6e 00 00       	call   0x40de44
407041:	f6 01 10             	testb  $0x10,(%ecx)
407044:	74 0f                	je     0x407055
407046:	8b 40 18             	mov    0x18(%eax),%eax
407049:	8b 08                	mov    (%eax),%ecx
40704b:	85 c9                	test   %ecx,%ecx
40704d:	74 06                	je     0x407055
40704f:	8b 01                	mov    (%ecx),%eax
407051:	51                   	push   %ecx
407052:	ff 50 08             	call   *0x8(%eax)
407055:	e8 9b 3d 00 00       	call   0x40adf5
40705a:	c3                   	ret
40705b:	55                   	push   %ebp
40705c:	8b ec                	mov    %esp,%ebp
40705e:	56                   	push   %esi
40705f:	ff 75 08             	push   0x8(%ebp)
407062:	8b f1                	mov    %ecx,%esi
407064:	e8 a5 df ff ff       	call   0x40500e
407069:	c7 06 24 a3 41 00    	movl   $0x41a324,(%esi)
40706f:	8b c6                	mov    %esi,%eax
407071:	5e                   	pop    %esi
407072:	5d                   	pop    %ebp
407073:	c2 04 00             	ret    $0x4
407076:	c7 01 24 a3 41 00    	movl   $0x41a324,(%ecx)
40707c:	e9 b0 df ff ff       	jmp    0x405031
407081:	55                   	push   %ebp
407082:	8b ec                	mov    %esp,%ebp
407084:	56                   	push   %esi
407085:	8b f1                	mov    %ecx,%esi
407087:	c7 06 24 a3 41 00    	movl   $0x41a324,(%esi)
40708d:	e8 9f df ff ff       	call   0x405031
407092:	f6 45 08 01          	testb  $0x1,0x8(%ebp)
407096:	74 07                	je     0x40709f
407098:	56                   	push   %esi
407099:	e8 5a de ff ff       	call   0x404ef8
40709e:	59                   	pop    %ecx
40709f:	8b c6                	mov    %esi,%eax
4070a1:	5e                   	pop    %esi
4070a2:	5d                   	pop    %ebp
4070a3:	c2 04 00             	ret    $0x4
4070a6:	6a 30                	push   $0x30
4070a8:	68 58 e3 41 00       	push   $0x41e358
4070ad:	e8 fe 3c 00 00       	call   0x40adb0
4070b2:	8b 45 18             	mov    0x18(%ebp),%eax
4070b5:	89 45 e4             	mov    %eax,-0x1c(%ebp)
4070b8:	33 db                	xor    %ebx,%ebx
4070ba:	89 5d c8             	mov    %ebx,-0x38(%ebp)
4070bd:	8b 7d 0c             	mov    0xc(%ebp),%edi
4070c0:	8b 47 fc             	mov    -0x4(%edi),%eax
4070c3:	89 45 d8             	mov    %eax,-0x28(%ebp)
4070c6:	8b 75 08             	mov    0x8(%ebp),%esi
4070c9:	ff 76 18             	push   0x18(%esi)
4070cc:	8d 45 c0             	lea    -0x40(%ebp),%eax
4070cf:	50                   	push   %eax
4070d0:	e8 cd f0 ff ff       	call   0x4061a2
4070d5:	59                   	pop    %ecx
4070d6:	59                   	pop    %ecx
4070d7:	89 45 d4             	mov    %eax,-0x2c(%ebp)
4070da:	e8 f7 52 00 00       	call   0x40c3d6
4070df:	8b 80 88 00 00 00    	mov    0x88(%eax),%eax
4070e5:	89 45 d0             	mov    %eax,-0x30(%ebp)
4070e8:	e8 e9 52 00 00       	call   0x40c3d6
4070ed:	8b 80 8c 00 00 00    	mov    0x8c(%eax),%eax
4070f3:	89 45 cc             	mov    %eax,-0x34(%ebp)
4070f6:	e8 db 52 00 00       	call   0x40c3d6
4070fb:	89 b0 88 00 00 00    	mov    %esi,0x88(%eax)
407101:	e8 d0 52 00 00       	call   0x40c3d6
407106:	8b 4d 10             	mov    0x10(%ebp),%ecx
407109:	89 88 8c 00 00 00    	mov    %ecx,0x8c(%eax)
40710f:	89 5d fc             	mov    %ebx,-0x4(%ebp)
407112:	33 c0                	xor    %eax,%eax
407114:	40                   	inc    %eax
407115:	89 45 10             	mov    %eax,0x10(%ebp)
407118:	89 45 fc             	mov    %eax,-0x4(%ebp)
40711b:	ff 75 20             	push   0x20(%ebp)
40711e:	ff 75 1c             	push   0x1c(%ebp)
407121:	ff 75 18             	push   0x18(%ebp)
407124:	ff 75 14             	push   0x14(%ebp)
407127:	57                   	push   %edi
407128:	e8 39 ee ff ff       	call   0x405f66
40712d:	83 c4 14             	add    $0x14,%esp
407130:	89 45 e4             	mov    %eax,-0x1c(%ebp)
407133:	89 5d fc             	mov    %ebx,-0x4(%ebp)
407136:	e9 99 00 00 00       	jmp    0x4071d4
40713b:	ff 75 ec             	push   -0x14(%ebp)
40713e:	e8 ec 01 00 00       	call   0x40732f
407143:	59                   	pop    %ecx
407144:	c3                   	ret
407145:	8b 65 e8             	mov    -0x18(%ebp),%esp
407148:	e8 89 52 00 00       	call   0x40c3d6
40714d:	33 db                	xor    %ebx,%ebx
40714f:	89 98 ac 03 00 00    	mov    %ebx,0x3ac(%eax)
407155:	8b 55 14             	mov    0x14(%ebp),%edx
407158:	8b 7d 0c             	mov    0xc(%ebp),%edi
40715b:	81 7a 04 80 00 00 00 	cmpl   $0x80,0x4(%edx)
407162:	7f 06                	jg     0x40716a
407164:	0f be 4f 08          	movsbl 0x8(%edi),%ecx
407168:	eb 03                	jmp    0x40716d
40716a:	8b 4f 08             	mov    0x8(%edi),%ecx
40716d:	89 4d e0             	mov    %ecx,-0x20(%ebp)
407170:	8b 42 10             	mov    0x10(%edx),%eax
407173:	89 45 18             	mov    %eax,0x18(%ebp)
407176:	8b c3                	mov    %ebx,%eax
407178:	89 45 dc             	mov    %eax,-0x24(%ebp)
40717b:	39 42 0c             	cmp    %eax,0xc(%edx)
40717e:	76 3f                	jbe    0x4071bf
407180:	8b f0                	mov    %eax,%esi
407182:	6b f6 14             	imul   $0x14,%esi,%esi
407185:	8b 7a 10             	mov    0x10(%edx),%edi
407188:	3b 4c 3e 04          	cmp    0x4(%esi,%edi,1),%ecx
40718c:	8b 7d 0c             	mov    0xc(%ebp),%edi
40718f:	7e 25                	jle    0x4071b6
407191:	8b 55 18             	mov    0x18(%ebp),%edx
407194:	3b 4c 16 08          	cmp    0x8(%esi,%edx,1),%ecx
407198:	8b 55 14             	mov    0x14(%ebp),%edx
40719b:	7f 19                	jg     0x4071b6
40719d:	6b c0 14             	imul   $0x14,%eax,%eax
4071a0:	8b 4a 10             	mov    0x10(%edx),%ecx
4071a3:	8b 44 08 04          	mov    0x4(%eax,%ecx,1),%eax
4071a7:	40                   	inc    %eax
4071a8:	89 45 e0             	mov    %eax,-0x20(%ebp)
4071ab:	8b 4a 08             	mov    0x8(%edx),%ecx
4071ae:	8b 0c c1             	mov    (%ecx,%eax,8),%ecx
4071b1:	89 4d e0             	mov    %ecx,-0x20(%ebp)
4071b4:	eb 09                	jmp    0x4071bf
4071b6:	40                   	inc    %eax
4071b7:	89 45 dc             	mov    %eax,-0x24(%ebp)
4071ba:	3b 42 0c             	cmp    0xc(%edx),%eax
4071bd:	72 c1                	jb     0x407180
4071bf:	51                   	push   %ecx