402d05:	85 f6                	test   %esi,%esi
402d07:	78 30                	js     0x402d39
402d09:	57                   	push   %edi
402d0a:	8d 4d 14             	lea    0x14(%ebp),%ecx
402d0d:	33 f6                	xor    %esi,%esi
402d0f:	51                   	push   %ecx
402d10:	ff 75 10             	push   0x10(%ebp)
402d13:	8d 78 ff             	lea    -0x1(%eax),%edi
402d16:	57                   	push   %edi
402d17:	50                   	push   %eax
402d18:	53                   	push   %ebx
402d19:	e8 ad 7c 00 00       	call   0x40a9cb
402d1e:	83 c4 14             	add    $0x14,%esp
402d21:	85 c0                	test   %eax,%eax
402d23:	78 08                	js     0x402d2d
402d25:	3b c7                	cmp    %edi,%eax
402d27:	77 04                	ja     0x402d2d
402d29:	75 0b                	jne    0x402d36
402d2b:	eb 05                	jmp    0x402d32
402d2d:	be 7a 00 07 80       	mov    $0x8007007a,%esi
402d32:	c6 04 1f 00          	movb   $0x0,(%edi,%ebx,1)
402d36:	5f                   	pop    %edi
402d37:	eb 07                	jmp    0x402d40
402d39:	85 c0                	test   %eax,%eax
402d3b:	74 03                	je     0x402d40
402d3d:	c6 03 00             	movb   $0x0,(%ebx)
402d40:	8b c6                	mov    %esi,%eax
402d42:	5e                   	pop    %esi
402d43:	5b                   	pop    %ebx
402d44:	5d                   	pop    %ebp
402d45:	c3                   	ret
402d46:	85 c9                	test   %ecx,%ecx
402d48:	75 04                	jne    0x402d4e
402d4a:	33 c0                	xor    %eax,%eax
402d4c:	40                   	inc    %eax
402d4d:	c3                   	ret
402d4e:	8d 51 01             	lea    0x1(%ecx),%edx
402d51:	8a 01                	mov    (%ecx),%al
402d53:	41                   	inc    %ecx
402d54:	84 c0                	test   %al,%al
402d56:	75 f9                	jne    0x402d51
402d58:	2b ca                	sub    %edx,%ecx
402d5a:	8d 41 01             	lea    0x1(%ecx),%eax
402d5d:	c3                   	ret
402d5e:	85 c9                	test   %ecx,%ecx
402d60:	75 04                	jne    0x402d66
402d62:	6a 02                	push   $0x2
402d64:	58                   	pop    %eax
402d65:	c3                   	ret
402d66:	8d 51 02             	lea    0x2(%ecx),%edx
402d69:	66 8b 01             	mov    (%ecx),%ax
402d6c:	83 c1 02             	add    $0x2,%ecx
402d6f:	66 85 c0             	test   %ax,%ax
402d72:	75 f5                	jne    0x402d69
402d74:	2b ca                	sub    %edx,%ecx
402d76:	d1 f9                	sar    $1,%ecx
402d78:	8d 04 4d 02 00 00 00 	lea    0x2(,%ecx,2),%eax
402d7f:	c3                   	ret
402d80:	8b ff                	mov    %edi,%edi
402d82:	55                   	push   %ebp
402d83:	8b ec                	mov    %esp,%ebp
402d85:	51                   	push   %ecx
402d86:	53                   	push   %ebx
402d87:	8b 5d 08             	mov    0x8(%ebp),%ebx
402d8a:	8b c1                	mov    %ecx,%eax
402d8c:	56                   	push   %esi
402d8d:	57                   	push   %edi
402d8e:	6a 14                	push   $0x14
402d90:	59                   	pop    %ecx
402d91:	8b f8                	mov    %eax,%edi
402d93:	89 45 fc             	mov    %eax,-0x4(%ebp)
402d96:	8b f3                	mov    %ebx,%esi
402d98:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
402d9a:	8b 4b 40             	mov    0x40(%ebx),%ecx
402d9d:	e8 bc ff ff ff       	call   0x402d5e
402da2:	8b 4b 34             	mov    0x34(%ebx),%ecx
402da5:	8b f8                	mov    %eax,%edi
402da7:	e8 b2 ff ff ff       	call   0x402d5e
402dac:	8b 4b 0c             	mov    0xc(%ebx),%ecx
402daf:	03 f8                	add    %eax,%edi
402db1:	e8 a8 ff ff ff       	call   0x402d5e
402db6:	8b 4b 3c             	mov    0x3c(%ebx),%ecx
402db9:	03 f8                	add    %eax,%edi
402dbb:	e8 86 ff ff ff       	call   0x402d46
402dc0:	8b 4b 30             	mov    0x30(%ebx),%ecx
402dc3:	03 f8                	add    %eax,%edi
402dc5:	e8 7c ff ff ff       	call   0x402d46
402dca:	8b 4b 28             	mov    0x28(%ebx),%ecx
402dcd:	03 f8                	add    %eax,%edi
402dcf:	e8 72 ff ff ff       	call   0x402d46
402dd4:	8b 4b 1c             	mov    0x1c(%ebx),%ecx
402dd7:	03 f8                	add    %eax,%edi
402dd9:	e8 68 ff ff ff       	call   0x402d46
402dde:	8b 4b 18             	mov    0x18(%ebx),%ecx
402de1:	03 f8                	add    %eax,%edi
402de3:	e8 5e ff ff ff       	call   0x402d46
402de8:	8b 4b 14             	mov    0x14(%ebx),%ecx
402deb:	03 f8                	add    %eax,%edi
402ded:	e8 54 ff ff ff       	call   0x402d46
402df2:	8b 4b 44             	mov    0x44(%ebx),%ecx
402df5:	03 f8                	add    %eax,%edi
402df7:	e8 4a ff ff ff       	call   0x402d46
402dfc:	8b 55 fc             	mov    -0x4(%ebp),%edx
402dff:	03 f8                	add    %eax,%edi
402e01:	8d 42 50             	lea    0x50(%edx),%eax
402e04:	8b 30                	mov    (%eax),%esi
402e06:	85 f6                	test   %esi,%esi
402e08:	74 0a                	je     0x402e14
402e0a:	83 3e 01             	cmpl   $0x1,(%esi)
402e0d:	75 05                	jne    0x402e14
402e0f:	39 7a 54             	cmp    %edi,0x54(%edx)
402e12:	73 1d                	jae    0x402e31
402e14:	8b c8                	mov    %eax,%ecx
402e16:	e8 01 fc ff ff       	call   0x402a1c
402e1b:	8b 4d fc             	mov    -0x4(%ebp),%ecx
402e1e:	57                   	push   %edi
402e1f:	6a 00                	push   $0x0
402e21:	8d 49 50             	lea    0x50(%ecx),%ecx
402e24:	e8 24 fc ff ff       	call   0x402a4d
402e29:	8b 55 fc             	mov    -0x4(%ebp),%edx
402e2c:	8d 42 50             	lea    0x50(%edx),%eax
402e2f:	8b 30                	mov    (%eax),%esi
402e31:	8b 48 04             	mov    0x4(%eax),%ecx
402e34:	8d 46 04             	lea    0x4(%esi),%eax
402e37:	f7 de                	neg    %esi
402e39:	1b f6                	sbb    %esi,%esi
402e3b:	23 f0                	and    %eax,%esi
402e3d:	8b fe                	mov    %esi,%edi
402e3f:	f7 df                	neg    %edi
402e41:	1b ff                	sbb    %edi,%edi
402e43:	8d 04 0e             	lea    (%esi,%ecx,1),%eax
402e46:	23 f8                	and    %eax,%edi
402e48:	85 f6                	test   %esi,%esi
402e4a:	0f 84 b1 00 00 00    	je     0x402f01
402e50:	8d 42 0c             	lea    0xc(%edx),%eax
402e53:	8b ce                	mov    %esi,%ecx
402e55:	50                   	push   %eax
402e56:	ff 73 0c             	push   0xc(%ebx)
402e59:	8b d7                	mov    %edi,%edx
402e5b:	e8 82 1a 00 00       	call   0x4048e2
402e60:	8b 75 fc             	mov    -0x4(%ebp),%esi
402e63:	8b d7                	mov    %edi,%edx
402e65:	8d 4e 14             	lea    0x14(%esi),%ecx
402e68:	51                   	push   %ecx
402e69:	ff 73 14             	push   0x14(%ebx)
402e6c:	8b c8                	mov    %eax,%ecx
402e6e:	e8 d9 1a 00 00       	call   0x40494c
402e73:	8d 4e 18             	lea    0x18(%esi),%ecx
402e76:	8b d7                	mov    %edi,%edx
402e78:	51                   	push   %ecx
402e79:	ff 73 18             	push   0x18(%ebx)
402e7c:	8b c8                	mov    %eax,%ecx
402e7e:	e8 c9 1a 00 00       	call   0x40494c
402e83:	8d 4e 1c             	lea    0x1c(%esi),%ecx
402e86:	8b d7                	mov    %edi,%edx
402e88:	51                   	push   %ecx
402e89:	ff 73 1c             	push   0x1c(%ebx)
402e8c:	8b c8                	mov    %eax,%ecx
402e8e:	e8 b9 1a 00 00       	call   0x40494c
402e93:	8d 4e 28             	lea    0x28(%esi),%ecx
402e96:	8b d7                	mov    %edi,%edx
402e98:	51                   	push   %ecx
402e99:	ff 73 28             	push   0x28(%ebx)
402e9c:	8b c8                	mov    %eax,%ecx
402e9e:	e8 a9 1a 00 00       	call   0x40494c
402ea3:	8d 4e 44             	lea    0x44(%esi),%ecx
402ea6:	8b d7                	mov    %edi,%edx
402ea8:	51                   	push   %ecx
402ea9:	ff 73 44             	push   0x44(%ebx)
402eac:	8b c8                	mov    %eax,%ecx
402eae:	e8 99 1a 00 00       	call   0x40494c
402eb3:	8d 4e 3c             	lea    0x3c(%esi),%ecx
402eb6:	8b d7                	mov    %edi,%edx
402eb8:	51                   	push   %ecx
402eb9:	ff 73 3c             	push   0x3c(%ebx)
402ebc:	8b c8                	mov    %eax,%ecx
402ebe:	e8 89 1a 00 00       	call   0x40494c
402ec3:	8d 4e 40             	lea    0x40(%esi),%ecx
402ec6:	8b d7                	mov    %edi,%edx
402ec8:	51                   	push   %ecx
402ec9:	ff 73 40             	push   0x40(%ebx)
402ecc:	8b c8                	mov    %eax,%ecx
402ece:	e8 0f 1a 00 00       	call   0x4048e2
402ed3:	8d 4e 30             	lea    0x30(%esi),%ecx
402ed6:	8b d7                	mov    %edi,%edx
402ed8:	51                   	push   %ecx
402ed9:	ff 73 30             	push   0x30(%ebx)
402edc:	8b c8                	mov    %eax,%ecx
402ede:	e8 69 1a 00 00       	call   0x40494c
402ee3:	8d 4e 34             	lea    0x34(%esi),%ecx
402ee6:	8b d7                	mov    %edi,%edx
402ee8:	51                   	push   %ecx
402ee9:	ff 73 34             	push   0x34(%ebx)
402eec:	8b c8                	mov    %eax,%ecx
402eee:	e8 ef 19 00 00       	call   0x4048e2
402ef3:	2b f8                	sub    %eax,%edi
402ef5:	57                   	push   %edi
402ef6:	6a 00                	push   $0x0
402ef8:	50                   	push   %eax
402ef9:	e8 ad 79 00 00       	call   0x40a8ab
402efe:	83 c4 0c             	add    $0xc,%esp
402f01:	5f                   	pop    %edi
402f02:	5e                   	pop    %esi
402f03:	5b                   	pop    %ebx
402f04:	c9                   	leave
402f05:	c2 04 00             	ret    $0x4
402f08:	8b ff                	mov    %edi,%edi
402f0a:	55                   	push   %ebp
402f0b:	8b ec                	mov    %esp,%ebp
402f0d:	56                   	push   %esi
402f0e:	8b f1                	mov    %ecx,%esi
402f10:	57                   	push   %edi
402f11:	ff 75 08             	push   0x8(%ebp)
402f14:	33 ff                	xor    %edi,%edi
402f16:	89 7e 04             	mov    %edi,0x4(%esi)
402f19:	8d 4e 0c             	lea    0xc(%esi),%ecx
402f1c:	89 7e 08             	mov    %edi,0x8(%esi)
402f1f:	c7 06 34 10 40 00    	movl   $0x401034,(%esi)
402f25:	89 79 50             	mov    %edi,0x50(%ecx)
402f28:	89 79 54             	mov    %edi,0x54(%ecx)
402f2b:	e8 50 fe ff ff       	call   0x402d80
402f30:	89 7e 64             	mov    %edi,0x64(%esi)
402f33:	8b c6                	mov    %esi,%eax
402f35:	89 7e 68             	mov    %edi,0x68(%esi)
402f38:	5f                   	pop    %edi
402f39:	5e                   	pop    %esi
402f3a:	5d                   	pop    %ebp
402f3b:	c2 04 00             	ret    $0x4
402f3e:	cc                   	int3
402f3f:	cc                   	int3
402f40:	8b ff                	mov    %edi,%edi
402f42:	55                   	push   %ebp
402f43:	8b ec                	mov    %esp,%ebp
402f45:	b8 04 14 00 00       	mov    $0x1404,%eax
402f4a:	e8 41 7d 00 00       	call   0x40ac90
402f4f:	a1 50 d1 40 00       	mov    0x40d150,%eax
402f54:	33 c5                	xor    %ebp,%eax
402f56:	89 45 fc             	mov    %eax,-0x4(%ebp)
402f59:	56                   	push   %esi
402f5a:	8d 71 64             	lea    0x64(%ecx),%esi
402f5d:	8b 06                	mov    (%esi),%eax
402f5f:	85 c0                	test   %eax,%eax
402f61:	75 5a                	jne    0x402fbd
402f63:	8d 41 0c             	lea    0xc(%ecx),%eax
402f66:	ba 00 08 00 00       	mov    $0x800,%edx
402f6b:	50                   	push   %eax
402f6c:	8d 8d fc eb ff ff    	lea    -0x1404(%ebp),%ecx
402f72:	e8 2e f8 ff ff       	call   0x4027a5
402f77:	8d 85 fc eb ff ff    	lea    -0x1404(%ebp),%eax
402f7d:	50                   	push   %eax
402f7e:	68 b0 16 40 00       	push   $0x4016b0
402f83:	8d 85 fc fb ff ff    	lea    -0x404(%ebp),%eax
402f89:	68 00 04 00 00       	push   $0x400
402f8e:	50                   	push   %eax
402f8f:	e8 52 fd ff ff       	call   0x402ce6
402f94:	8d 8d fc fb ff ff    	lea    -0x404(%ebp),%ecx
402f9a:	83 c4 10             	add    $0x10,%esp
402f9d:	8d 51 01             	lea    0x1(%ecx),%edx
402fa0:	8a 01                	mov    (%ecx),%al
402fa2:	41                   	inc    %ecx
402fa3:	84 c0                	test   %al,%al
402fa5:	75 f9                	jne    0x402fa0
402fa7:	2b ca                	sub    %edx,%ecx
402fa9:	8d 41 01             	lea    0x1(%ecx),%eax
402fac:	8b ce                	mov    %esi,%ecx
402fae:	50                   	push   %eax
402faf:	8d 85 fc fb ff ff    	lea    -0x404(%ebp),%eax
402fb5:	50                   	push   %eax
402fb6:	e8 92 fa ff ff       	call   0x402a4d
402fbb:	8b 06                	mov    (%esi),%eax
402fbd:	8d 48 04             	lea    0x4(%eax),%ecx
402fc0:	f7 d8                	neg    %eax
402fc2:	5e                   	pop    %esi
402fc3:	1b c0                	sbb    %eax,%eax
402fc5:	23 c1                	and    %ecx,%eax
402fc7:	8b 4d fc             	mov    -0x4(%ebp),%ecx
402fca:	33 cd                	xor    %ebp,%ecx
402fcc:	e8 8f 6e 00 00       	call   0x409e60
402fd1:	c9                   	leave
402fd2:	c3                   	ret
402fd3:	cc                   	int3
402fd4:	cc                   	int3
402fd5:	cc                   	int3
402fd6:	cc                   	int3
402fd7:	cc                   	int3
402fd8:	cc                   	int3
402fd9:	cc                   	int3
402fda:	cc                   	int3
402fdb:	cc                   	int3
402fdc:	cc                   	int3
402fdd:	cc                   	int3
402fde:	cc                   	int3
402fdf:	cc                   	int3
402fe0:	8b ff                	mov    %edi,%edi
402fe2:	55                   	push   %ebp
402fe3:	8b ec                	mov    %esp,%ebp
402fe5:	56                   	push   %esi
402fe6:	8b f1                	mov    %ecx,%esi
402fe8:	e8 23 00 00 00       	call   0x403010
402fed:	f6 45 08 01          	testb  $0x1,0x8(%ebp)
402ff1:	74 0a                	je     0x402ffd
402ff3:	6a 6c                	push   $0x6c
402ff5:	56                   	push   %esi
402ff6:	e8 44 72 00 00       	call   0x40a23f
402ffb:	59                   	pop    %ecx
402ffc:	59                   	pop    %ecx
402ffd:	8b c6                	mov    %esi,%eax
402fff:	5e                   	pop    %esi
403000:	5d                   	pop    %ebp
403001:	c2 04 00             	ret    $0x4
403004:	cc                   	int3
403005:	cc                   	int3
403006:	cc                   	int3
403007:	cc                   	int3
403008:	cc                   	int3
403009:	cc                   	int3
40300a:	cc                   	int3
40300b:	cc                   	int3
40300c:	cc                   	int3
40300d:	cc                   	int3
40300e:	cc                   	int3
40300f:	cc                   	int3
403010:	8b ff                	mov    %edi,%edi
403012:	56                   	push   %esi
403013:	8b f1                	mov    %ecx,%esi
403015:	8d 4e 64             	lea    0x64(%esi),%ecx
403018:	e8 ff f9 ff ff       	call   0x402a1c
40301d:	8d 4e 5c             	lea    0x5c(%esi),%ecx
403020:	e8 f7 f9 ff ff       	call   0x402a1c
403025:	8d 46 04             	lea    0x4(%esi),%eax
403028:	c7 06 14 10 40 00    	movl   $0x401014,(%esi)
40302e:	50                   	push   %eax
40302f:	e8 e1 77 00 00       	call   0x40a815
403034:	59                   	pop    %ecx
403035:	5e                   	pop    %esi
403036:	c3                   	ret
403037:	8b ff                	mov    %edi,%edi
403039:	56                   	push   %esi
40303a:	8b 35 38 d5 40 00    	mov    0x40d538,%esi
403040:	85 f6                	test   %esi,%esi
403042:	74 0b                	je     0x40304f
403044:	51                   	push   %ecx
403045:	8b ce                	mov    %esi,%ecx
403047:	ff 15 f0 e1 40 00    	call   *0x40e1f0
40304d:	ff d6                	call   *%esi
40304f:	5e                   	pop    %esi
403050:	c3                   	ret
403051:	cc                   	int3
403052:	cc                   	int3
403053:	cc                   	int3