4078fa:	5e                   	pop    %esi
4078fb:	5b                   	pop    %ebx
4078fc:	5d                   	pop    %ebp
4078fd:	c2 0c 00             	ret    $0xc
407900:	48                   	dec    %eax
407901:	89 01                	mov    %eax,(%ecx)
407903:	8b cf                	mov    %edi,%ecx
407905:	e8 7f 08 00 00       	call   0x408189
40790a:	8d 46 01             	lea    0x1(%esi),%eax
40790d:	50                   	push   %eax
40790e:	e8 5d 08 00 00       	call   0x408170
407913:	33 c9                	xor    %ecx,%ecx
407915:	89 47 08             	mov    %eax,0x8(%edi)
407918:	6a 02                	push   $0x2
40791a:	5a                   	pop    %edx
40791b:	f7 e2                	mul    %edx
40791d:	0f 90 c1             	seto   %cl
407920:	f7 d9                	neg    %ecx
407922:	0b c8                	or     %eax,%ecx
407924:	51                   	push   %ecx
407925:	e8 cc 96 01 00       	call   0x420ff6
40792a:	59                   	pop    %ecx
40792b:	89 07                	mov    %eax,(%edi)
40792d:	eb ab                	jmp    0x4078da
40792f:	6a ff                	push   $0xffffffff
407931:	6a 00                	push   $0x0
407933:	e8 54 05 00 00       	call   0x407e8c
407938:	eb bf                	jmp    0x4078f9
40793a:	55                   	push   %ebp
40793b:	8b ec                	mov    %esp,%ebp
40793d:	53                   	push   %ebx
40793e:	8b 5d 08             	mov    0x8(%ebp),%ebx
407941:	33 c0                	xor    %eax,%eax
407943:	57                   	push   %edi
407944:	50                   	push   %eax
407945:	50                   	push   %eax
407946:	8b 7b 04             	mov    0x4(%ebx),%edi
407949:	47                   	inc    %edi
40794a:	57                   	push   %edi
40794b:	ff 33                	push   (%ebx)
40794d:	6a 01                	push   $0x1
40794f:	50                   	push   %eax
407950:	ff 15 84 f1 48 00    	call   *0x48f184
407956:	89 45 08             	mov    %eax,0x8(%ebp)
407959:	85 c0                	test   %eax,%eax
40795b:	74 44                	je     0x4079a1
40795d:	56                   	push   %esi
40795e:	33 c9                	xor    %ecx,%ecx
407960:	6a 02                	push   $0x2
407962:	5a                   	pop    %edx
407963:	f7 e2                	mul    %edx
407965:	0f 90 c1             	seto   %cl
407968:	f7 d9                	neg    %ecx
40796a:	0b c8                	or     %eax,%ecx
40796c:	51                   	push   %ecx
40796d:	e8 84 96 01 00       	call   0x420ff6
407972:	59                   	pop    %ecx
407973:	ff 75 08             	push   0x8(%ebp)
407976:	8b f0                	mov    %eax,%esi
407978:	56                   	push   %esi
407979:	57                   	push   %edi
40797a:	ff 33                	push   (%ebx)
40797c:	6a 01                	push   $0x1
40797e:	6a 00                	push   $0x0
407980:	ff 15 84 f1 48 00    	call   *0x48f184
407986:	8b 4d 0c             	mov    0xc(%ebp),%ecx
407989:	48                   	dec    %eax
40798a:	50                   	push   %eax
40798b:	6a 00                	push   $0x0
40798d:	56                   	push   %esi
40798e:	e8 1a ff ff ff       	call   0x4078ad
407993:	56                   	push   %esi
407994:	e8 d3 96 01 00       	call   0x42106c
407999:	59                   	pop    %ecx
40799a:	5e                   	pop    %esi
40799b:	5f                   	pop    %edi
40799c:	5b                   	pop    %ebx
40799d:	5d                   	pop    %ebp
40799e:	c2 08 00             	ret    $0x8
4079a1:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4079a4:	e8 43 05 00 00       	call   0x407eec
4079a9:	eb f0                	jmp    0x40799b
4079ab:	55                   	push   %ebp
4079ac:	8b ec                	mov    %esp,%ebp
4079ae:	53                   	push   %ebx
4079af:	56                   	push   %esi
4079b0:	8b 75 10             	mov    0x10(%ebp),%esi
4079b3:	57                   	push   %edi
4079b4:	8b f9                	mov    %ecx,%edi
4079b6:	85 f6                	test   %esi,%esi
4079b8:	74 5d                	je     0x407a17
4079ba:	8b 4d 08             	mov    0x8(%ebp),%ecx
4079bd:	8b 5d 0c             	mov    0xc(%ebp),%ebx
4079c0:	3b 59 04             	cmp    0x4(%ecx),%ebx
4079c3:	73 52                	jae    0x407a17
4079c5:	83 fe ff             	cmp    $0xffffffff,%esi
4079c8:	74 46                	je     0x407a10
4079ca:	8d 04 33             	lea    (%ebx,%esi,1),%eax
4079cd:	3b 41 04             	cmp    0x4(%ecx),%eax
4079d0:	77 3e                	ja     0x407a10
4079d2:	8b 4f 0c             	mov    0xc(%edi),%ecx
4079d5:	8b 01                	mov    (%ecx),%eax
4079d7:	83 f8 01             	cmp    $0x1,%eax
4079da:	0f 8f 52 75 03 00    	jg     0x43ef32
4079e0:	56                   	push   %esi
4079e1:	8b cf                	mov    %edi,%ecx
4079e3:	e8 9f 06 00 00       	call   0x408087
4079e8:	8b 45 08             	mov    0x8(%ebp),%eax
4079eb:	89 77 04             	mov    %esi,0x4(%edi)
4079ee:	03 f6                	add    %esi,%esi
4079f0:	56                   	push   %esi
4079f1:	8b 00                	mov    (%eax),%eax
4079f3:	8d 04 58             	lea    (%eax,%ebx,2),%eax
4079f6:	50                   	push   %eax
4079f7:	ff 37                	push   (%edi)
4079f9:	e8 82 96 01 00       	call   0x421080
4079fe:	8b 07                	mov    (%edi),%eax
407a00:	83 c4 0c             	add    $0xc,%esp
407a03:	33 c9                	xor    %ecx,%ecx
407a05:	66 89 0c 06          	mov    %cx,(%esi,%eax,1)
407a09:	5f                   	pop    %edi
407a0a:	5e                   	pop    %esi
407a0b:	5b                   	pop    %ebx
407a0c:	5d                   	pop    %ebp
407a0d:	c2 0c 00             	ret    $0xc
407a10:	8b 71 04             	mov    0x4(%ecx),%esi
407a13:	2b f3                	sub    %ebx,%esi
407a15:	eb bb                	jmp    0x4079d2
407a17:	6a ff                	push   $0xffffffff
407a19:	6a 00                	push   $0x0
407a1b:	8b cf                	mov    %edi,%ecx
407a1d:	e8 6a 04 00 00       	call   0x407e8c
407a22:	eb e5                	jmp    0x407a09
407a24:	55                   	push   %ebp
407a25:	8b ec                	mov    %esp,%ebp
407a27:	83 7d 18 02          	cmpl   $0x2,0x18(%ebp)
407a2b:	57                   	push   %edi
407a2c:	0f 84 32 75 03 00    	je     0x43ef64
407a32:	83 7d 18 00          	cmpl   $0x0,0x18(%ebp)
407a36:	ff 75 14             	push   0x14(%ebp)
407a39:	ff 75 10             	push   0x10(%ebp)
407a3c:	ff 75 0c             	push   0xc(%ebp)
407a3f:	ff 75 08             	push   0x8(%ebp)
407a42:	6a 01                	push   $0x1
407a44:	75 17                	jne    0x407a5d
407a46:	68 00 04 00 00       	push   $0x400
407a4b:	ff 15 5c f2 48 00    	call   *0x48f25c
407a51:	85 c0                	test   %eax,%eax
407a53:	74 0f                	je     0x407a64
407a55:	83 c0 fe             	add    $0xfffffffe,%eax
407a58:	5f                   	pop    %edi
407a59:	5d                   	pop    %ebp
407a5a:	c2 14 00             	ret    $0x14
407a5d:	68 09 04 00 00       	push   $0x409
407a62:	eb e7                	jmp    0x407a4b
407a64:	33 c0                	xor    %eax,%eax
407a66:	eb f0                	jmp    0x407a58
407a68:	55                   	push   %ebp
407a69:	8b ec                	mov    %esp,%ebp
407a6b:	8b 45 08             	mov    0x8(%ebp),%eax
407a6e:	ff 75 0c             	push   0xc(%ebp)
407a71:	ff 70 04             	push   0x4(%eax)
407a74:	ff 30                	push   (%eax)
407a76:	ff 71 04             	push   0x4(%ecx)
407a79:	ff 31                	push   (%ecx)
407a7b:	e8 a4 ff ff ff       	call   0x407a24
407a80:	5d                   	pop    %ebp
407a81:	c2 08 00             	ret    $0x8
407a84:	55                   	push   %ebp
407a85:	8b ec                	mov    %esp,%ebp
407a87:	51                   	push   %ecx
407a88:	51                   	push   %ecx
407a89:	56                   	push   %esi
407a8a:	57                   	push   %edi
407a8b:	8b f9                	mov    %ecx,%edi
407a8d:	8b 4f 0c             	mov    0xc(%edi),%ecx
407a90:	8b 01                	mov    (%ecx),%eax
407a92:	83 f8 01             	cmp    $0x1,%eax
407a95:	0f 8f 32 75 03 00    	jg     0x43efcd
407a9b:	8b 47 04             	mov    0x4(%edi),%eax
407a9e:	6a 02                	push   $0x2
407aa0:	5e                   	pop    %esi
407aa1:	03 c6                	add    %esi,%eax
407aa3:	39 47 08             	cmp    %eax,0x8(%edi)
407aa6:	72 25                	jb     0x407acd
407aa8:	8b 57 04             	mov    0x4(%edi),%edx
407aab:	8b 0f                	mov    (%edi),%ecx
407aad:	66 8b 45 08          	mov    0x8(%ebp),%ax
407ab1:	66 89 04 51          	mov    %ax,(%ecx,%edx,2)
407ab5:	ff 47 04             	incl   0x4(%edi)
407ab8:	33 d2                	xor    %edx,%edx
407aba:	8b 07                	mov    (%edi),%eax
407abc:	8b 4f 04             	mov    0x4(%edi),%ecx
407abf:	66 89 14 48          	mov    %dx,(%eax,%ecx,2)
407ac3:	8b c7                	mov    %edi,%eax
407ac5:	5f                   	pop    %edi
407ac6:	5e                   	pop    %esi
407ac7:	8b e5                	mov    %ebp,%esp
407ac9:	5d                   	pop    %ebp
407aca:	c2 04 00             	ret    $0x4
407acd:	3d c2 41 00 00       	cmp    $0x41c2,%eax
407ad2:	0f 83 3b 75 03 00    	jae    0x43f013
407ad8:	03 c0                	add    %eax,%eax
407ada:	50                   	push   %eax
407adb:	89 47 08             	mov    %eax,0x8(%edi)
407ade:	e8 8d 06 00 00       	call   0x408170
407ae3:	33 c9                	xor    %ecx,%ecx
407ae5:	89 47 08             	mov    %eax,0x8(%edi)
407ae8:	f7 e6                	mul    %esi
407aea:	0f 90 c1             	seto   %cl
407aed:	f7 d9                	neg    %ecx
407aef:	0b c8                	or     %eax,%ecx
407af1:	51                   	push   %ecx
407af2:	e8 ae 94 01 00       	call   0x420fa5
407af7:	83 3f 00             	cmpl   $0x0,(%edi)
407afa:	8b f0                	mov    %eax,%esi
407afc:	59                   	pop    %ecx
407afd:	74 1d                	je     0x407b1c
407aff:	8b 4f 04             	mov    0x4(%edi),%ecx
407b02:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
407b09:	51                   	push   %ecx
407b0a:	ff 37                	push   (%edi)
407b0c:	56                   	push   %esi
407b0d:	e8 6e 95 01 00       	call   0x421080
407b12:	ff 37                	push   (%edi)
407b14:	e8 97 b5 01 00       	call   0x4230b0
407b19:	83 c4 10             	add    $0x10,%esp
407b1c:	89 37                	mov    %esi,(%edi)
407b1e:	eb 88                	jmp    0x407aa8
407b20:	55                   	push   %ebp
407b21:	8b ec                	mov    %esp,%ebp
407b23:	8b 51 04             	mov    0x4(%ecx),%edx
407b26:	8b 01                	mov    (%ecx),%eax
407b28:	56                   	push   %esi
407b29:	8b 75 08             	mov    0x8(%ebp),%esi
407b2c:	3b f2                	cmp    %edx,%esi
407b2e:	73 08                	jae    0x407b38
407b30:	8d 04 70             	lea    (%eax,%esi,2),%eax
407b33:	5e                   	pop    %esi
407b34:	5d                   	pop    %ebp
407b35:	c2 04 00             	ret    $0x4
407b38:	8d 04 50             	lea    (%eax,%edx,2),%eax
407b3b:	eb f6                	jmp    0x407b33
407b3d:	56                   	push   %esi
407b3e:	8b f1                	mov    %ecx,%esi
407b40:	e8 1f df ff ff       	call   0x405a64
407b45:	56                   	push   %esi
407b46:	e8 21 95 01 00       	call   0x42106c
407b4b:	59                   	pop    %ecx
407b4c:	8b c6                	mov    %esi,%eax
407b4e:	5e                   	pop    %esi
407b4f:	c2 04 00             	ret    $0x4
407b52:	55                   	push   %ebp
407b53:	8b ec                	mov    %esp,%ebp
407b55:	56                   	push   %esi
407b56:	8b f1                	mov    %ecx,%esi
407b58:	e8 52 04 00 00       	call   0x407faf
407b5d:	8b 4e 04             	mov    0x4(%esi),%ecx
407b60:	8b 55 08             	mov    0x8(%ebp),%edx
407b63:	8b 06                	mov    (%esi),%eax
407b65:	3b d1                	cmp    %ecx,%edx
407b67:	73 08                	jae    0x407b71
407b69:	8d 04 50             	lea    (%eax,%edx,2),%eax
407b6c:	5e                   	pop    %esi
407b6d:	5d                   	pop    %ebp
407b6e:	c2 04 00             	ret    $0x4
407b71:	8d 04 48             	lea    (%eax,%ecx,2),%eax
407b74:	eb f6                	jmp    0x407b6c
407b76:	55                   	push   %ebp
407b77:	8b ec                	mov    %esp,%ebp
407b79:	8b 45 08             	mov    0x8(%ebp),%eax
407b7c:	56                   	push   %esi
407b7d:	8b f1                	mov    %ecx,%esi
407b7f:	33 c9                	xor    %ecx,%ecx
407b81:	6a 02                	push   $0x2
407b83:	5a                   	pop    %edx
407b84:	83 66 04 00          	andl   $0x0,0x4(%esi)
407b88:	40                   	inc    %eax
407b89:	89 46 08             	mov    %eax,0x8(%esi)
407b8c:	f7 e2                	mul    %edx
407b8e:	0f 90 c1             	seto   %cl
407b91:	f7 d9                	neg    %ecx
407b93:	0b c8                	or     %eax,%ecx
407b95:	51                   	push   %ecx
407b96:	e8 5b 94 01 00       	call   0x420ff6
407b9b:	59                   	pop    %ecx
407b9c:	33 c9                	xor    %ecx,%ecx
407b9e:	89 06                	mov    %eax,(%esi)
407ba0:	66 89 08             	mov    %cx,(%eax)
407ba3:	8b ce                	mov    %esi,%ecx
407ba5:	e8 df 05 00 00       	call   0x408189
407baa:	8b c6                	mov    %esi,%eax
407bac:	5e                   	pop    %esi
407bad:	5d                   	pop    %ebp
407bae:	c2 04 00             	ret    $0x4
407bb1:	55                   	push   %ebp
407bb2:	8b ec                	mov    %esp,%ebp
407bb4:	53                   	push   %ebx
407bb5:	8b 5d 10             	mov    0x10(%ebp),%ebx
407bb8:	57                   	push   %edi
407bb9:	8b f9                	mov    %ecx,%edi
407bbb:	85 db                	test   %ebx,%ebx
407bbd:	74 63                	je     0x407c22
407bbf:	8b 55 08             	mov    0x8(%ebp),%edx
407bc2:	8b 4d 0c             	mov    0xc(%ebp),%ecx
407bc5:	3b 4a 04             	cmp    0x4(%edx),%ecx
407bc8:	73 58                	jae    0x407c22
407bca:	83 fb ff             	cmp    $0xffffffff,%ebx
407bcd:	0f 85 b0 74 03 00    	jne    0x43f083
407bd3:	8b 5a 04             	mov    0x4(%edx),%ebx
407bd6:	2b d9                	sub    %ecx,%ebx
407bd8:	8b 4f 0c             	mov    0xc(%edi),%ecx
407bdb:	56                   	push   %esi
407bdc:	33 f6                	xor    %esi,%esi
407bde:	46                   	inc    %esi
407bdf:	8b 01                	mov    (%ecx),%eax
407be1:	3b c6                	cmp    %esi,%eax
407be3:	7f 45                	jg     0x407c2a
407be5:	8b 47 04             	mov    0x4(%edi),%eax
407be8:	8b cf                	mov    %edi,%ecx
407bea:	03 c3                	add    %ebx,%eax
407bec:	50                   	push   %eax
407bed:	e8 c1 00 00 00       	call   0x407cb3
407bf2:	8b 4d 0c             	mov    0xc(%ebp),%ecx
407bf5:	8d 04 1b             	lea    (%ebx,%ebx,1),%eax
407bf8:	50                   	push   %eax
407bf9:	8b 45 08             	mov    0x8(%ebp),%eax
407bfc:	8b 00                	mov    (%eax),%eax
407bfe:	8d 04 48             	lea    (%eax,%ecx,2),%eax
407c01:	8b 4f 04             	mov    0x4(%edi),%ecx
407c04:	50                   	push   %eax
407c05:	8b 07                	mov    (%edi),%eax
407c07:	8d 04 48             	lea    (%eax,%ecx,2),%eax
407c0a:	50                   	push   %eax
407c0b:	e8 70 94 01 00       	call   0x421080
407c10:	01 5f 04             	add    %ebx,0x4(%edi)
407c13:	83 c4 0c             	add    $0xc,%esp
407c16:	8b 4f 04             	mov    0x4(%edi),%ecx
407c19:	33 d2                	xor    %edx,%edx
407c1b:	8b 07                	mov    (%edi),%eax
407c1d:	5e                   	pop    %esi
407c1e:	66 89 14 48          	mov    %dx,(%eax,%ecx,2)
407c22:	8b c7                	mov    %edi,%eax
407c24:	5f                   	pop    %edi
407c25:	5b                   	pop    %ebx
407c26:	5d                   	pop    %ebp
407c27:	c2 0c 00             	ret    $0xc
407c2a:	48                   	dec    %eax
407c2b:	6a 04                	push   $0x4
407c2d:	89 01                	mov    %eax,(%ecx)