401d4f:	03 8d d0 f8 ff ff    	add    -0x730(%ebp),%ecx
401d55:	6a 02                	push   $0x2
401d57:	8d 74 31 08          	lea    0x8(%ecx,%esi,1),%esi
401d5b:	56                   	push   %esi
401d5c:	e8 44 02 00 00       	call   0x401fa5
401d61:	8b d8                	mov    %eax,%ebx
401d63:	33 c0                	xor    %eax,%eax
401d65:	85 db                	test   %ebx,%ebx
401d67:	0f 95 c0             	setne  %al
401d6a:	68 3c 0f 41 00       	push   $0x410f3c
401d6f:	50                   	push   %eax
401d70:	e8 f5 f2 ff ff       	call   0x40106a
401d75:	ff b5 d4 f8 ff ff    	push   -0x72c(%ebp)
401d7b:	ff b5 dc f8 ff ff    	push   -0x724(%ebp)
401d81:	ff b5 d8 f8 ff ff    	push   -0x728(%ebp)
401d87:	57                   	push   %edi
401d88:	68 70 0f 41 00       	push   $0x410f70
401d8d:	56                   	push   %esi
401d8e:	56                   	push   %esi
401d8f:	53                   	push   %ebx
401d90:	e8 32 09 00 00       	call   0x4026c7
401d95:	83 c4 30             	add    $0x30,%esp
401d98:	53                   	push   %ebx
401d99:	e8 79 f8 ff ff       	call   0x401617
401d9e:	cc                   	int3
401d9f:	e9 aa fc ff ff       	jmp    0x401a4e
401da4:	3b 0d 84 22 41 00    	cmp    0x412284,%ecx
401daa:	75 02                	jne    0x401dae
401dac:	f3 c3                	repz ret
401dae:	e9 40 1e 00 00       	jmp    0x403bf3
401db3:	6a 0c                	push   $0xc
401db5:	68 50 10 41 00       	push   $0x411050
401dba:	e8 b1 23 00 00       	call   0x404170
401dbf:	33 ff                	xor    %edi,%edi
401dc1:	89 7d e4             	mov    %edi,-0x1c(%ebp)
401dc4:	33 c0                	xor    %eax,%eax
401dc6:	8b 5d 08             	mov    0x8(%ebp),%ebx
401dc9:	3b df                	cmp    %edi,%ebx
401dcb:	0f 95 c0             	setne  %al
401dce:	3b c7                	cmp    %edi,%eax
401dd0:	75 14                	jne    0x401de6
401dd2:	e8 50 23 00 00       	call   0x404127
401dd7:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
401ddd:	e8 a5 0e 00 00       	call   0x402c87
401de2:	33 c0                	xor    %eax,%eax
401de4:	eb 7b                	jmp    0x401e61
401de6:	33 c0                	xor    %eax,%eax
401de8:	8b 75 0c             	mov    0xc(%ebp),%esi
401deb:	3b f7                	cmp    %edi,%esi
401ded:	0f 95 c0             	setne  %al
401df0:	3b c7                	cmp    %edi,%eax
401df2:	74 de                	je     0x401dd2
401df4:	33 c0                	xor    %eax,%eax
401df6:	66 39 3e             	cmp    %di,(%esi)
401df9:	0f 95 c0             	setne  %al
401dfc:	3b c7                	cmp    %edi,%eax
401dfe:	74 d2                	je     0x401dd2
401e00:	e8 ad 21 00 00       	call   0x403fb2
401e05:	89 45 08             	mov    %eax,0x8(%ebp)
401e08:	3b c7                	cmp    %edi,%eax
401e0a:	75 0d                	jne    0x401e19
401e0c:	e8 16 23 00 00       	call   0x404127
401e11:	c7 00 18 00 00 00    	movl   $0x18,(%eax)
401e17:	eb c9                	jmp    0x401de2
401e19:	89 7d fc             	mov    %edi,-0x4(%ebp)
401e1c:	66 39 3b             	cmp    %di,(%ebx)
401e1f:	75 20                	jne    0x401e41
401e21:	e8 01 23 00 00       	call   0x404127
401e26:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
401e2c:	6a fe                	push   $0xfffffffe
401e2e:	8d 45 f0             	lea    -0x10(%ebp),%eax
401e31:	50                   	push   %eax
401e32:	68 84 22 41 00       	push   $0x412284
401e37:	e8 24 25 00 00       	call   0x404360
401e3c:	83 c4 0c             	add    $0xc,%esp
401e3f:	eb a1                	jmp    0x401de2
401e41:	50                   	push   %eax
401e42:	ff 75 10             	push   0x10(%ebp)
401e45:	56                   	push   %esi
401e46:	53                   	push   %ebx
401e47:	e8 ad 1e 00 00       	call   0x403cf9
401e4c:	83 c4 10             	add    $0x10,%esp
401e4f:	89 45 e4             	mov    %eax,-0x1c(%ebp)
401e52:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
401e59:	e8 09 00 00 00       	call   0x401e67
401e5e:	8b 45 e4             	mov    -0x1c(%ebp),%eax
401e61:	e8 4f 23 00 00       	call   0x4041b5
401e66:	c3                   	ret
401e67:	ff 75 08             	push   0x8(%ebp)
401e6a:	e8 5e 05 00 00       	call   0x4023cd
401e6f:	59                   	pop    %ecx
401e70:	c3                   	ret
401e71:	8b ff                	mov    %edi,%edi
401e73:	55                   	push   %ebp
401e74:	8b ec                	mov    %esp,%ebp
401e76:	56                   	push   %esi
401e77:	8b 75 08             	mov    0x8(%ebp),%esi
401e7a:	85 f6                	test   %esi,%esi
401e7c:	75 13                	jne    0x401e91
401e7e:	e8 a4 22 00 00       	call   0x404127
401e83:	6a 16                	push   $0x16
401e85:	5e                   	pop    %esi
401e86:	89 30                	mov    %esi,(%eax)
401e88:	e8 fa 0d 00 00       	call   0x402c87
401e8d:	8b c6                	mov    %esi,%eax
401e8f:	eb 24                	jmp    0x401eb5
401e91:	68 80 00 00 00       	push   $0x80
401e96:	ff 75 10             	push   0x10(%ebp)
401e99:	ff 75 0c             	push   0xc(%ebp)
401e9c:	e8 12 ff ff ff       	call   0x401db3
401ea1:	83 c4 0c             	add    $0xc,%esp
401ea4:	89 06                	mov    %eax,(%esi)
401ea6:	85 c0                	test   %eax,%eax
401ea8:	74 04                	je     0x401eae
401eaa:	33 c0                	xor    %eax,%eax
401eac:	eb 07                	jmp    0x401eb5
401eae:	e8 74 22 00 00       	call   0x404127
401eb3:	8b 00                	mov    (%eax),%eax
401eb5:	5e                   	pop    %esi
401eb6:	5d                   	pop    %ebp
401eb7:	c3                   	ret
401eb8:	8b ff                	mov    %edi,%edi
401eba:	55                   	push   %ebp
401ebb:	8b ec                	mov    %esp,%ebp
401ebd:	8b 45 08             	mov    0x8(%ebp),%eax
401ec0:	66 8b 55 0c          	mov    0xc(%ebp),%dx
401ec4:	eb 08                	jmp    0x401ece
401ec6:	66 3b ca             	cmp    %dx,%cx
401ec9:	74 12                	je     0x401edd
401ecb:	83 c0 02             	add    $0x2,%eax
401ece:	0f b7 08             	movzwl (%eax),%ecx
401ed1:	66 85 c9             	test   %cx,%cx
401ed4:	75 f0                	jne    0x401ec6
401ed6:	66 39 10             	cmp    %dx,(%eax)
401ed9:	74 02                	je     0x401edd
401edb:	33 c0                	xor    %eax,%eax
401edd:	5d                   	pop    %ebp
401ede:	c3                   	ret
401edf:	6a 0c                	push   $0xc
401ee1:	68 70 10 41 00       	push   $0x411070
401ee6:	e8 85 22 00 00       	call   0x404170
401eeb:	33 c0                	xor    %eax,%eax
401eed:	8b 75 08             	mov    0x8(%ebp),%esi
401ef0:	33 ff                	xor    %edi,%edi
401ef2:	3b f7                	cmp    %edi,%esi
401ef4:	0f 95 c0             	setne  %al
401ef7:	3b c7                	cmp    %edi,%eax
401ef9:	75 15                	jne    0x401f10
401efb:	e8 27 22 00 00       	call   0x404127
401f00:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
401f06:	e8 7c 0d 00 00       	call   0x402c87
401f0b:	83 c8 ff             	or     $0xffffffff,%eax
401f0e:	eb 4b                	jmp    0x401f5b
401f10:	33 c0                	xor    %eax,%eax
401f12:	39 7d 0c             	cmp    %edi,0xc(%ebp)
401f15:	0f 95 c0             	setne  %al
401f18:	3b c7                	cmp    %edi,%eax
401f1a:	74 df                	je     0x401efb
401f1c:	89 75 08             	mov    %esi,0x8(%ebp)
401f1f:	56                   	push   %esi
401f20:	e8 35 04 00 00       	call   0x40235a
401f25:	59                   	pop    %ecx
401f26:	89 7d fc             	mov    %edi,-0x4(%ebp)
401f29:	56                   	push   %esi
401f2a:	e8 83 25 00 00       	call   0x4044b2
401f2f:	8b d8                	mov    %eax,%ebx
401f31:	8d 45 10             	lea    0x10(%ebp),%eax
401f34:	50                   	push   %eax
401f35:	57                   	push   %edi
401f36:	ff 75 0c             	push   0xc(%ebp)
401f39:	56                   	push   %esi
401f3a:	e8 72 26 00 00       	call   0x4045b1
401f3f:	89 45 e4             	mov    %eax,-0x1c(%ebp)
401f42:	56                   	push   %esi
401f43:	53                   	push   %ebx
401f44:	e8 05 26 00 00       	call   0x40454e
401f49:	83 c4 1c             	add    $0x1c,%esp
401f4c:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
401f53:	e8 09 00 00 00       	call   0x401f61
401f58:	8b 45 e4             	mov    -0x1c(%ebp),%eax
401f5b:	e8 55 22 00 00       	call   0x4041b5
401f60:	c3                   	ret
401f61:	ff 75 08             	push   0x8(%ebp)
401f64:	e8 64 04 00 00       	call   0x4023cd
401f69:	59                   	pop    %ecx
401f6a:	c3                   	ret
401f6b:	8b ff                	mov    %edi,%edi
401f6d:	55                   	push   %ebp
401f6e:	8b ec                	mov    %esp,%ebp
401f70:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
401f74:	74 2d                	je     0x401fa3
401f76:	ff 75 08             	push   0x8(%ebp)
401f79:	6a 00                	push   $0x0
401f7b:	ff 35 24 32 41 00    	push   0x413224
401f81:	ff 15 6c f0 40 00    	call   *0x40f06c
401f87:	85 c0                	test   %eax,%eax
401f89:	75 18                	jne    0x401fa3
401f8b:	56                   	push   %esi
401f8c:	e8 96 21 00 00       	call   0x404127
401f91:	8b f0                	mov    %eax,%esi
401f93:	ff 15 44 f0 40 00    	call   *0x40f044
401f99:	50                   	push   %eax
401f9a:	e8 46 21 00 00       	call   0x4040e5
401f9f:	59                   	pop    %ecx
401fa0:	89 06                	mov    %eax,(%esi)
401fa2:	5e                   	pop    %esi
401fa3:	5d                   	pop    %ebp
401fa4:	c3                   	ret
401fa5:	8b ff                	mov    %edi,%edi
401fa7:	55                   	push   %ebp
401fa8:	8b ec                	mov    %esp,%ebp
401faa:	51                   	push   %ecx
401fab:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
401faf:	56                   	push   %esi
401fb0:	8d 45 fc             	lea    -0x4(%ebp),%eax
401fb3:	50                   	push   %eax
401fb4:	ff 75 0c             	push   0xc(%ebp)
401fb7:	ff 75 08             	push   0x8(%ebp)
401fba:	e8 d8 31 00 00       	call   0x405197
401fbf:	8b f0                	mov    %eax,%esi
401fc1:	83 c4 0c             	add    $0xc,%esp
401fc4:	85 f6                	test   %esi,%esi
401fc6:	75 18                	jne    0x401fe0
401fc8:	39 45 fc             	cmp    %eax,-0x4(%ebp)
401fcb:	74 13                	je     0x401fe0
401fcd:	e8 55 21 00 00       	call   0x404127
401fd2:	85 c0                	test   %eax,%eax
401fd4:	74 0a                	je     0x401fe0
401fd6:	e8 4c 21 00 00       	call   0x404127
401fdb:	8b 4d fc             	mov    -0x4(%ebp),%ecx
401fde:	89 08                	mov    %ecx,(%eax)
401fe0:	8b c6                	mov    %esi,%eax
401fe2:	5e                   	pop    %esi
401fe3:	c9                   	leave
401fe4:	c3                   	ret
401fe5:	8b ff                	mov    %edi,%edi
401fe7:	55                   	push   %ebp
401fe8:	8b ec                	mov    %esp,%ebp
401fea:	8b 45 08             	mov    0x8(%ebp),%eax
401fed:	56                   	push   %esi
401fee:	8b f1                	mov    %ecx,%esi
401ff0:	c6 46 0c 00          	movb   $0x0,0xc(%esi)
401ff4:	85 c0                	test   %eax,%eax
401ff6:	75 63                	jne    0x40205b
401ff8:	e8 e9 3d 00 00       	call   0x405de6
401ffd:	89 46 08             	mov    %eax,0x8(%esi)
402000:	8b 48 6c             	mov    0x6c(%eax),%ecx
402003:	89 0e                	mov    %ecx,(%esi)
402005:	8b 48 68             	mov    0x68(%eax),%ecx
402008:	89 4e 04             	mov    %ecx,0x4(%esi)
40200b:	8b 0e                	mov    (%esi),%ecx
40200d:	3b 0d 68 2b 41 00    	cmp    0x412b68,%ecx
402013:	74 12                	je     0x402027
402015:	8b 0d 20 29 41 00    	mov    0x412920,%ecx
40201b:	85 48 70             	test   %ecx,0x70(%eax)
40201e:	75 07                	jne    0x402027
402020:	e8 98 3b 00 00       	call   0x405bbd
402025:	89 06                	mov    %eax,(%esi)
402027:	8b 46 04             	mov    0x4(%esi),%eax
40202a:	3b 05 28 28 41 00    	cmp    0x412828,%eax
402030:	74 16                	je     0x402048
402032:	8b 46 08             	mov    0x8(%esi),%eax
402035:	8b 0d 20 29 41 00    	mov    0x412920,%ecx
40203b:	85 48 70             	test   %ecx,0x70(%eax)
40203e:	75 08                	jne    0x402048
402040:	e8 f7 33 00 00       	call   0x40543c
402045:	89 46 04             	mov    %eax,0x4(%esi)
402048:	8b 46 08             	mov    0x8(%esi),%eax
40204b:	f6 40 70 02          	testb  $0x2,0x70(%eax)
40204f:	75 14                	jne    0x402065
402051:	83 48 70 02          	orl    $0x2,0x70(%eax)
402055:	c6 46 0c 01          	movb   $0x1,0xc(%esi)
402059:	eb 0a                	jmp    0x402065
40205b:	8b 08                	mov    (%eax),%ecx
40205d:	89 0e                	mov    %ecx,(%esi)
40205f:	8b 40 04             	mov    0x4(%eax),%eax
402062:	89 46 04             	mov    %eax,0x4(%esi)
402065:	8b c6                	mov    %esi,%eax
402067:	5e                   	pop    %esi
402068:	5d                   	pop    %ebp
402069:	c2 04 00             	ret    $0x4
40206c:	8b ff                	mov    %edi,%edi
40206e:	55                   	push   %ebp
40206f:	8b ec                	mov    %esp,%ebp
402071:	83 ec 10             	sub    $0x10,%esp
402074:	33 c0                	xor    %eax,%eax
402076:	53                   	push   %ebx
402077:	57                   	push   %edi
402078:	39 45 10             	cmp    %eax,0x10(%ebp)
40207b:	0f 84 cc 00 00 00    	je     0x40214d
402081:	8b 5d 08             	mov    0x8(%ebp),%ebx
402084:	85 db                	test   %ebx,%ebx
402086:	75 1a                	jne    0x4020a2
402088:	e8 9a 20 00 00       	call   0x404127
40208d:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
402093:	e8 ef 0b 00 00       	call   0x402c87
402098:	b8 ff ff ff 7f       	mov    $0x7fffffff,%eax
40209d:	e9 ab 00 00 00       	jmp    0x40214d
4020a2:	8b 7d 0c             	mov    0xc(%ebp),%edi
4020a5:	85 ff                	test   %edi,%edi
4020a7:	74 df                	je     0x402088
4020a9:	56                   	push   %esi
4020aa:	ff 75 14             	push   0x14(%ebp)
4020ad:	8d 4d f0             	lea    -0x10(%ebp),%ecx
4020b0:	e8 30 ff ff ff       	call   0x401fe5
4020b5:	8b 45 f0             	mov    -0x10(%ebp),%eax
4020b8:	83 78 14 00          	cmpl   $0x0,0x14(%eax)
4020bc:	75 41                	jne    0x4020ff
4020be:	2b df                	sub    %edi,%ebx
4020c0:	0f b7 04 3b          	movzwl (%ebx,%edi,1),%eax
4020c4:	83 f8 41             	cmp    $0x41,%eax
4020c7:	72 0d                	jb     0x4020d6
4020c9:	83 f8 5a             	cmp    $0x5a,%eax
4020cc:	77 08                	ja     0x4020d6
4020ce:	83 c0 20             	add    $0x20,%eax
4020d1:	0f b7 f0             	movzwl %ax,%esi
4020d4:	eb 02                	jmp    0x4020d8
4020d6:	8b f0                	mov    %eax,%esi
4020d8:	0f b7 07             	movzwl (%edi),%eax
4020db:	83 f8 41             	cmp    $0x41,%eax
4020de:	72 0b                	jb     0x4020eb
4020e0:	83 f8 5a             	cmp    $0x5a,%eax
4020e3:	77 06                	ja     0x4020eb
4020e5:	83 c0 20             	add    $0x20,%eax
4020e8:	0f b7 c0             	movzwl %ax,%eax
4020eb:	83 c7 02             	add    $0x2,%edi
4020ee:	ff 4d 10             	decl   0x10(%ebp)
4020f1:	74 44                	je     0x402137
4020f3:	66 85 f6             	test   %si,%si
4020f6:	74 3f                	je     0x402137
4020f8:	66 3b f0             	cmp    %ax,%si
4020fb:	74 c3                	je     0x4020c0
4020fd:	eb 38                	jmp    0x402137
4020ff:	8d 45 f0             	lea    -0x10(%ebp),%eax
402102:	50                   	push   %eax
402103:	0f b7 03             	movzwl (%ebx),%eax
402106:	50                   	push   %eax
402107:	e8 9e 3f 00 00       	call   0x4060aa
40210c:	0f b7 f0             	movzwl %ax,%esi
40210f:	8d 45 f0             	lea    -0x10(%ebp),%eax
402112:	50                   	push   %eax
402113:	0f b7 07             	movzwl (%edi),%eax
402116:	50                   	push   %eax
402117:	e8 8e 3f 00 00       	call   0x4060aa
40211c:	83 c4 10             	add    $0x10,%esp
40211f:	83 c3 02             	add    $0x2,%ebx
402122:	83 c7 02             	add    $0x2,%edi
402125:	ff 4d 10             	decl   0x10(%ebp)
402128:	0f b7 c0             	movzwl %ax,%eax
40212b:	74 0a                	je     0x402137