456c78:	72 02                	jb     0x456c7c
456c7a:	8b c1                	mov    %ecx,%eax
456c7c:	57                   	push   %edi
456c7d:	33 c9                	xor    %ecx,%ecx
456c7f:	89 46 0c             	mov    %eax,0xc(%esi)
456c82:	6a 04                	push   $0x4
456c84:	5a                   	pop    %edx
456c85:	f7 e2                	mul    %edx
456c87:	0f 90 c1             	seto   %cl
456c8a:	f7 d9                	neg    %ecx
456c8c:	0b c8                	or     %eax,%ecx
456c8e:	51                   	push   %ecx
456c8f:	e8 62 a3 fc ff       	call   0x420ff6
456c94:	83 7e 04 00          	cmpl   $0x0,0x4(%esi)
456c98:	8b f8                	mov    %eax,%edi
456c9a:	59                   	pop    %ecx
456c9b:	74 1f                	je     0x456cbc
456c9d:	8b 46 08             	mov    0x8(%esi),%eax
456ca0:	85 c0                	test   %eax,%eax
456ca2:	74 18                	je     0x456cbc
456ca4:	c1 e0 02             	shl    $0x2,%eax
456ca7:	50                   	push   %eax
456ca8:	ff 76 04             	push   0x4(%esi)
456cab:	57                   	push   %edi
456cac:	e8 cf a3 fc ff       	call   0x421080
456cb1:	ff 76 04             	push   0x4(%esi)
456cb4:	e8 b3 a3 fc ff       	call   0x42106c
456cb9:	83 c4 10             	add    $0x10,%esp
456cbc:	89 7e 04             	mov    %edi,0x4(%esi)
456cbf:	5f                   	pop    %edi
456cc0:	6a 01                	push   $0x1
456cc2:	e8 2f a3 fc ff       	call   0x420ff6
456cc7:	8b d0                	mov    %eax,%edx
456cc9:	59                   	pop    %ecx
456cca:	85 d2                	test   %edx,%edx
456ccc:	74 09                	je     0x456cd7
456cce:	8b 4d 08             	mov    0x8(%ebp),%ecx
456cd1:	8a 09                	mov    (%ecx),%cl
456cd3:	88 0a                	mov    %cl,(%edx)
456cd5:	eb 02                	jmp    0x456cd9
456cd7:	33 d2                	xor    %edx,%edx
456cd9:	8b 4e 08             	mov    0x8(%esi),%ecx
456cdc:	8b 46 04             	mov    0x4(%esi),%eax
456cdf:	89 14 88             	mov    %edx,(%eax,%ecx,4)
456ce2:	ff 46 08             	incl   0x8(%esi)
456ce5:	5e                   	pop    %esi
456ce6:	5d                   	pop    %ebp
456ce7:	c2 04 00             	ret    $0x4
456cea:	55                   	push   %ebp
456ceb:	8b ec                	mov    %esp,%ebp
456ced:	8b 01                	mov    (%ecx),%eax
456cef:	85 c0                	test   %eax,%eax
456cf1:	74 05                	je     0x456cf8
456cf3:	8b 40 04             	mov    0x4(%eax),%eax
456cf6:	89 01                	mov    %eax,(%ecx)
456cf8:	8b 45 08             	mov    0x8(%ebp),%eax
456cfb:	8b 09                	mov    (%ecx),%ecx
456cfd:	89 08                	mov    %ecx,(%eax)
456cff:	5d                   	pop    %ebp
456d00:	c2 04 00             	ret    $0x4
456d03:	55                   	push   %ebp
456d04:	8b ec                	mov    %esp,%ebp
456d06:	56                   	push   %esi
456d07:	8b f1                	mov    %ecx,%esi
456d09:	57                   	push   %edi
456d0a:	8b 16                	mov    (%esi),%edx
456d0c:	8b 8a 0c 01 00 00    	mov    0x10c(%edx),%ecx
456d12:	85 c9                	test   %ecx,%ecx
456d14:	0f 84 d1 00 00 00    	je     0x456deb
456d1a:	8b 7d 08             	mov    0x8(%ebp),%edi
456d1d:	8b 07                	mov    (%edi),%eax
456d1f:	3b 88 0c 01 00 00    	cmp    0x10c(%eax),%ecx
456d25:	0f 85 c0 00 00 00    	jne    0x456deb
456d2b:	53                   	push   %ebx
456d2c:	33 db                	xor    %ebx,%ebx
456d2e:	85 c9                	test   %ecx,%ecx
456d30:	7e 1d                	jle    0x456d4f
456d32:	b9 10 01 00 00       	mov    $0x110,%ecx
456d37:	83 24 11 00          	andl   $0x0,(%ecx,%edx,1)
456d3b:	8b 07                	mov    (%edi),%eax
456d3d:	83 24 01 00          	andl   $0x0,(%ecx,%eax,1)
456d41:	43                   	inc    %ebx
456d42:	8b 16                	mov    (%esi),%edx
456d44:	8d 49 04             	lea    0x4(%ecx),%ecx
456d47:	3b 9a 0c 01 00 00    	cmp    0x10c(%edx),%ebx
456d4d:	7c e8                	jl     0x456d37
456d4f:	8b cf                	mov    %edi,%ecx
456d51:	e8 48 f7 ff ff       	call   0x45649e
456d56:	85 c0                	test   %eax,%eax
456d58:	78 25                	js     0x456d7f
456d5a:	8b 0f                	mov    (%edi),%ecx
456d5c:	8b 49 04             	mov    0x4(%ecx),%ecx
456d5f:	8b 1c 81             	mov    (%ecx,%eax,4),%ebx
456d62:	85 db                	test   %ebx,%ebx
456d64:	74 19                	je     0x456d7f
456d66:	6a 00                	push   $0x0
456d68:	6a 02                	push   $0x2
456d6a:	56                   	push   %esi
456d6b:	e8 30 21 fb ff       	call   0x408ea0
456d70:	83 c4 0c             	add    $0xc,%esp
456d73:	85 c0                	test   %eax,%eax
456d75:	74 08                	je     0x456d7f
456d77:	53                   	push   %ebx
456d78:	8b c8                	mov    %eax,%ecx
456d7a:	e8 1d 31 fb ff       	call   0x409e9c
456d7f:	8b 06                	mov    (%esi),%eax
456d81:	33 c9                	xor    %ecx,%ecx
456d83:	89 4d 08             	mov    %ecx,0x8(%ebp)
456d86:	39 88 0c 01 00 00    	cmp    %ecx,0x10c(%eax)
456d8c:	7e 4a                	jle    0x456dd8
456d8e:	bb 10 01 00 00       	mov    $0x110,%ebx
456d93:	8b 06                	mov    (%esi),%eax
456d95:	8b ce                	mov    %esi,%ecx
456d97:	ff 04 03             	incl   (%ebx,%eax,1)
456d9a:	8b 07                	mov    (%edi),%eax
456d9c:	ff 04 03             	incl   (%ebx,%eax,1)
456d9f:	e8 bd f6 ff ff       	call   0x456461
456da4:	84 c0                	test   %al,%al
456da6:	74 0b                	je     0x456db3
456da8:	8b cf                	mov    %edi,%ecx
456daa:	e8 b2 f6 ff ff       	call   0x456461
456daf:	84 c0                	test   %al,%al
456db1:	75 22                	jne    0x456dd5
456db3:	8b 06                	mov    (%esi),%eax
456db5:	8b 4d 08             	mov    0x8(%ebp),%ecx
456db8:	83 24 03 00          	andl   $0x0,(%ebx,%eax,1)
456dbc:	8b 07                	mov    (%edi),%eax
456dbe:	83 24 03 00          	andl   $0x0,(%ebx,%eax,1)
456dc2:	41                   	inc    %ecx
456dc3:	8b 06                	mov    (%esi),%eax
456dc5:	83 c3 04             	add    $0x4,%ebx
456dc8:	89 4d 08             	mov    %ecx,0x8(%ebp)
456dcb:	3b 88 0c 01 00 00    	cmp    0x10c(%eax),%ecx
456dd1:	7c c0                	jl     0x456d93
456dd3:	eb 03                	jmp    0x456dd8
456dd5:	8b 4d 08             	mov    0x8(%ebp),%ecx
456dd8:	8b 06                	mov    (%esi),%eax
456dda:	3b 88 0c 01 00 00    	cmp    0x10c(%eax),%ecx
456de0:	0f 8c 69 ff ff ff    	jl     0x456d4f
456de6:	b0 01                	mov    $0x1,%al
456de8:	5b                   	pop    %ebx
456de9:	eb 02                	jmp    0x456ded
456deb:	32 c0                	xor    %al,%al
456ded:	5f                   	pop    %edi
456dee:	5e                   	pop    %esi
456def:	5d                   	pop    %ebp
456df0:	c2 04 00             	ret    $0x4
456df3:	55                   	push   %ebp
456df4:	8b ec                	mov    %esp,%ebp
456df6:	83 ec 30             	sub    $0x30,%esp
456df9:	53                   	push   %ebx
456dfa:	56                   	push   %esi
456dfb:	57                   	push   %edi
456dfc:	8b f1                	mov    %ecx,%esi
456dfe:	33 db                	xor    %ebx,%ebx
456e00:	56                   	push   %esi
456e01:	89 5d f8             	mov    %ebx,-0x8(%ebp)
456e04:	ff 15 7c f4 48 00    	call   *0x48f47c
456e0a:	8b 7d 08             	mov    0x8(%ebp),%edi
456e0d:	89 5e 08             	mov    %ebx,0x8(%esi)
456e10:	89 5e 0c             	mov    %ebx,0xc(%esi)
456e13:	8b 47 0c             	mov    0xc(%edi),%eax
456e16:	8d 48 ff             	lea    -0x1(%eax),%ecx
456e19:	83 f9 0e             	cmp    $0xe,%ecx
456e1c:	0f 87 fb 01 00 00    	ja     0x45701d
456e22:	ff 24 8d 2b 70 45 00 	jmp    *0x45702b(,%ecx,4)
456e29:	6a 0b                	push   $0xb
456e2b:	58                   	pop    %eax
456e2c:	8b cf                	mov    %edi,%ecx
456e2e:	66 89 06             	mov    %ax,(%esi)
456e31:	e8 1d 2e fb ff       	call   0x409c53
456e36:	84 c0                	test   %al,%al
456e38:	74 05                	je     0x456e3f
456e3a:	83 c8 ff             	or     $0xffffffff,%eax
456e3d:	eb 02                	jmp    0x456e41
456e3f:	33 c0                	xor    %eax,%eax
456e41:	66 89 46 08          	mov    %ax,0x8(%esi)
456e45:	e9 d3 01 00 00       	jmp    0x45701d
456e4a:	6a 03                	push   $0x3
456e4c:	58                   	pop    %eax
456e4d:	8b cf                	mov    %edi,%ecx
456e4f:	66 89 06             	mov    %ax,(%esi)
456e52:	e8 45 2e fb ff       	call   0x409c9c
456e57:	e9 fb 00 00 00       	jmp    0x456f57
456e5c:	6a 05                	push   $0x5
456e5e:	58                   	pop    %eax
456e5f:	8b cf                	mov    %edi,%ecx
456e61:	66 89 06             	mov    %ax,(%esi)
456e64:	e8 8f 2e fb ff       	call   0x409cf8
456e69:	dd 5e 08             	fstpl  0x8(%esi)
456e6c:	e9 ac 01 00 00       	jmp    0x45701d
456e71:	6a 14                	push   $0x14
456e73:	58                   	pop    %eax
456e74:	8b cf                	mov    %edi,%ecx
456e76:	66 89 06             	mov    %ax,(%esi)
456e79:	e8 c8 2e fb ff       	call   0x409d46
456e7e:	89 46 08             	mov    %eax,0x8(%esi)
456e81:	89 56 0c             	mov    %edx,0xc(%esi)
456e84:	e9 94 01 00 00       	jmp    0x45701d
456e89:	6a 13                	push   $0x13
456e8b:	58                   	pop    %eax
456e8c:	8b cf                	mov    %edi,%ecx
456e8e:	66 89 06             	mov    %ax,(%esi)
456e91:	e8 25 1b 01 00       	call   0x4689bb
456e96:	e9 bc 00 00 00       	jmp    0x456f57
456e9b:	6a 08                	push   $0x8
456e9d:	58                   	pop    %eax
456e9e:	8b cf                	mov    %edi,%ecx
456ea0:	66 89 06             	mov    %ax,(%esi)
456ea3:	e8 ef 2a fb ff       	call   0x409997
456ea8:	8b 47 08             	mov    0x8(%edi),%eax
456eab:	ff 30                	push   (%eax)
456ead:	ff 15 78 f4 48 00    	call   *0x48f478
456eb3:	e9 9f 00 00 00       	jmp    0x456f57
456eb8:	b8 0c 20 00 00       	mov    $0x200c,%eax
456ebd:	57                   	push   %edi
456ebe:	66 89 06             	mov    %ax,(%esi)
456ec1:	e8 48 02 00 00       	call   0x45710e
456ec6:	e9 8c 00 00 00       	jmp    0x456f57
456ecb:	83 f8 08             	cmp    $0x8,%eax
456ece:	75 02                	jne    0x456ed2
456ed0:	8b 1f                	mov    (%edi),%ebx
456ed2:	85 db                	test   %ebx,%ebx
456ed4:	0f 84 43 01 00 00    	je     0x45701d
456eda:	53                   	push   %ebx
456edb:	56                   	push   %esi
456edc:	ff 15 58 f4 48 00    	call   *0x48f458
456ee2:	e9 36 01 00 00       	jmp    0x45701d
456ee7:	83 f8 06             	cmp    $0x6,%eax
456eea:	75 02                	jne    0x456eee
456eec:	8b 1f                	mov    (%edi),%ebx
456eee:	53                   	push   %ebx
456eef:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
456ef2:	e8 fc fe ff ff       	call   0x456df3
456ef7:	50                   	push   %eax
456ef8:	8b ce                	mov    %esi,%ecx
456efa:	e8 c1 01 00 00       	call   0x4570c0
456eff:	8d 45 e4             	lea    -0x1c(%ebp),%eax
456f02:	50                   	push   %eax
456f03:	ff 15 5c f4 48 00    	call   *0x48f45c
456f09:	e9 0f 01 00 00       	jmp    0x45701d
456f0e:	6a 29                	push   $0x29
456f10:	8b cf                	mov    %edi,%ecx
456f12:	e8 97 2e fb ff       	call   0x409dae
456f17:	84 c0                	test   %al,%al
456f19:	74 12                	je     0x456f2d
456f1b:	6a 0a                	push   $0xa
456f1d:	58                   	pop    %eax
456f1e:	66 89 06             	mov    %ax,(%esi)
456f21:	c7 46 08 04 00 02 80 	movl   $0x80020004,0x8(%esi)
456f28:	e9 f0 00 00 00       	jmp    0x45701d
456f2d:	6a 2a                	push   $0x2a
456f2f:	8b cf                	mov    %edi,%ecx
456f31:	e8 78 2e fb ff       	call   0x409dae
456f36:	84 c0                	test   %al,%al
456f38:	0f 84 df 00 00 00    	je     0x45701d
456f3e:	33 c0                	xor    %eax,%eax
456f40:	40                   	inc    %eax
456f41:	66 89 06             	mov    %ax,(%esi)
456f44:	e9 d4 00 00 00       	jmp    0x45701d
456f49:	b8 11 20 00 00       	mov    $0x2011,%eax
456f4e:	57                   	push   %edi
456f4f:	66 89 06             	mov    %ax,(%esi)
456f52:	e8 29 03 00 00       	call   0x457280
456f57:	89 46 08             	mov    %eax,0x8(%esi)
456f5a:	e9 be 00 00 00       	jmp    0x45701d
456f5f:	6a 24                	push   $0x24
456f61:	58                   	pop    %eax
456f62:	6a 28                	push   $0x28
456f64:	66 89 06             	mov    %ax,(%esi)
456f67:	89 5e 08             	mov    %ebx,0x8(%esi)
456f6a:	e8 87 a0 fc ff       	call   0x420ff6
456f6f:	59                   	pop    %ecx
456f70:	85 c0                	test   %eax,%eax
456f72:	74 61                	je     0x456fd5
456f74:	83 7f 0c 0c          	cmpl   $0xc,0xc(%edi)
456f78:	75 02                	jne    0x456f7c
456f7a:	8b 1f                	mov    (%edi),%ebx
456f7c:	53                   	push   %ebx
456f7d:	8b c8                	mov    %eax,%ecx
456f7f:	e8 d6 03 00 00       	call   0x45735a
456f84:	eb 4d                	jmp    0x456fd3
456f86:	6a 24                	push   $0x24
456f88:	58                   	pop    %eax
456f89:	6a 28                	push   $0x28
456f8b:	66 89 06             	mov    %ax,(%esi)
456f8e:	89 5e 08             	mov    %ebx,0x8(%esi)
456f91:	e8 60 a0 fc ff       	call   0x420ff6
456f96:	59                   	pop    %ecx
456f97:	85 c0                	test   %eax,%eax
456f99:	74 3a                	je     0x456fd5
456f9b:	83 7f 0c 0f          	cmpl   $0xf,0xc(%edi)
456f9f:	75 02                	jne    0x456fa3
456fa1:	8b 1f                	mov    (%edi),%ebx
456fa3:	53                   	push   %ebx
456fa4:	8b c8                	mov    %eax,%ecx
456fa6:	e8 fa 03 00 00       	call   0x4573a5
456fab:	eb 26                	jmp    0x456fd3
456fad:	6a 24                	push   $0x24
456faf:	58                   	pop    %eax
456fb0:	6a 28                	push   $0x28
456fb2:	66 89 06             	mov    %ax,(%esi)
456fb5:	89 5e 08             	mov    %ebx,0x8(%esi)
456fb8:	e8 39 a0 fc ff       	call   0x420ff6
456fbd:	8b d0                	mov    %eax,%edx
456fbf:	59                   	pop    %ecx
456fc0:	85 d2                	test   %edx,%edx
456fc2:	74 11                	je     0x456fd5
456fc4:	8b cf                	mov    %edi,%ecx
456fc6:	e8 ca 0b 01 00       	call   0x467b95
456fcb:	50                   	push   %eax
456fcc:	8b ca                	mov    %edx,%ecx
456fce:	e8 50 03 00 00       	call   0x457323
456fd3:	8b d8                	mov    %eax,%ebx
456fd5:	89 5e 0c             	mov    %ebx,0xc(%esi)
456fd8:	eb 43                	jmp    0x45701d
456fda:	6a 24                	push   $0x24
456fdc:	58                   	pop    %eax
456fdd:	6a 28                	push   $0x28
456fdf:	66 89 06             	mov    %ax,(%esi)
456fe2:	89 5e 08             	mov    %ebx,0x8(%esi)
456fe5:	e8 0c a0 fc ff       	call   0x420ff6
456fea:	89 45 08             	mov    %eax,0x8(%ebp)
456fed:	59                   	pop    %ecx
456fee:	85 c0                	test   %eax,%eax
456ff0:	74 19                	je     0x45700b
456ff2:	8d 45 d4             	lea    -0x2c(%ebp),%eax
456ff5:	33 db                	xor    %ebx,%ebx
456ff7:	50                   	push   %eax
456ff8:	8b cf                	mov    %edi,%ecx
456ffa:	43                   	inc    %ebx
456ffb:	e8 a4 0b 01 00       	call   0x467ba4
457000:	8b 4d 08             	mov    0x8(%ebp),%ecx
457003:	50                   	push   %eax
457004:	e8 dc 02 00 00       	call   0x4572e5
457009:	eb 02                	jmp    0x45700d
45700b:	8b c3                	mov    %ebx,%eax
45700d:	89 46 0c             	mov    %eax,0xc(%esi)
457010:	f6 c3 01             	test   $0x1,%bl
457013:	74 08                	je     0x45701d
457015:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
457018:	e8 47 ea fa ff       	call   0x405a64
45701d:	5f                   	pop    %edi
45701e:	8b c6                	mov    %esi,%eax
457020:	5e                   	pop    %esi
457021:	5b                   	pop    %ebx
457022:	8b e5                	mov    %ebp,%esp
457024:	5d                   	pop    %ebp
457025:	c2 04 00             	ret    $0x4
457028:	8d 49 00             	lea    0x0(%ecx),%ecx