40589a:	ff 50 08             	call   *0x8(%eax)
40589d:	eb 21                	jmp    0x4058c0
40589f:	8b 75 08             	mov    0x8(%ebp),%esi
4058a2:	51                   	push   %ecx
4058a3:	51                   	push   %ecx
4058a4:	8b ce                	mov    %esi,%ecx
4058a6:	e8 30 0a 00 00       	call   0x4062db
4058ab:	8b 55 f4             	mov    -0xc(%ebp),%edx
4058ae:	8b 02                	mov    (%edx),%eax
4058b0:	8b 48 04             	mov    0x4(%eax),%ecx
4058b3:	8b 4c 11 38          	mov    0x38(%ecx,%edx,1),%ecx
4058b7:	85 c9                	test   %ecx,%ecx
4058b9:	74 05                	je     0x4058c0
4058bb:	8b 11                	mov    (%ecx),%edx
4058bd:	ff 52 08             	call   *0x8(%edx)
4058c0:	8b c6                	mov    %esi,%eax
4058c2:	5e                   	pop    %esi
4058c3:	c9                   	leave
4058c4:	c2 04 00             	ret    $0x4
4058c7:	55                   	push   %ebp
4058c8:	8b ec                	mov    %esp,%ebp
4058ca:	83 ec 24             	sub    $0x24,%esp
4058cd:	56                   	push   %esi
4058ce:	8b f1                	mov    %ecx,%esi
4058d0:	57                   	push   %edi
4058d1:	33 ff                	xor    %edi,%edi
4058d3:	57                   	push   %edi
4058d4:	8b 06                	mov    (%esi),%eax
4058d6:	8b 48 04             	mov    0x4(%eax),%ecx
4058d9:	03 ce                	add    %esi,%ecx
4058db:	8b 51 0c             	mov    0xc(%ecx),%edx
4058de:	83 e2 fe             	and    $0xfffffffe,%edx
4058e1:	8b c2                	mov    %edx,%eax
4058e3:	83 c8 04             	or     $0x4,%eax
4058e6:	39 79 38             	cmp    %edi,0x38(%ecx)
4058e9:	0f 44 d0             	cmove  %eax,%edx
4058ec:	52                   	push   %edx
4058ed:	e8 58 e8 ff ff       	call   0x40414a
4058f2:	51                   	push   %ecx
4058f3:	56                   	push   %esi
4058f4:	8d 4d f4             	lea    -0xc(%ebp),%ecx
4058f7:	e8 a3 04 00 00       	call   0x405d9f
4058fc:	8b 06                	mov    (%esi),%eax
4058fe:	8b 48 04             	mov    0x4(%eax),%ecx
405901:	f6 44 31 0c 06       	testb  $0x6,0xc(%ecx,%esi,1)
405906:	75 3f                	jne    0x405947
405908:	8b 4c 31 38          	mov    0x38(%ecx,%esi,1),%ecx
40590c:	8d 55 dc             	lea    -0x24(%ebp),%edx
40590f:	6a 01                	push   $0x1
405911:	ff 75 10             	push   0x10(%ebp)
405914:	8b 01                	mov    (%ecx),%eax
405916:	57                   	push   %edi
405917:	57                   	push   %edi
405918:	52                   	push   %edx
405919:	ff 50 28             	call   *0x28(%eax)
40591c:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40591f:	03 45 dc             	add    -0x24(%ebp),%eax
405922:	8b 4d e8             	mov    -0x18(%ebp),%ecx
405925:	13 4d e0             	adc    -0x20(%ebp),%ecx
405928:	3b 05 b0 84 43 00    	cmp    0x4384b0,%eax
40592e:	75 17                	jne    0x405947
405930:	3b 0d b4 84 43 00    	cmp    0x4384b4,%ecx
405936:	75 0f                	jne    0x405947
405938:	8b 06                	mov    (%esi),%eax
40593a:	51                   	push   %ecx
40593b:	6a 02                	push   $0x2
40593d:	8b 48 04             	mov    0x4(%eax),%ecx
405940:	03 ce                	add    %esi,%ecx
405942:	e8 6d 09 00 00       	call   0x4062b4
405947:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40594a:	8b 01                	mov    (%ecx),%eax
40594c:	8b 40 04             	mov    0x4(%eax),%eax
40594f:	8b 4c 08 38          	mov    0x38(%eax,%ecx,1),%ecx
405953:	85 c9                	test   %ecx,%ecx
405955:	74 05                	je     0x40595c
405957:	8b 01                	mov    (%ecx),%eax
405959:	ff 50 08             	call   *0x8(%eax)
40595c:	5f                   	pop    %edi
40595d:	8b c6                	mov    %esi,%eax
40595f:	5e                   	pop    %esi
405960:	c9                   	leave
405961:	c2 0c 00             	ret    $0xc
405964:	55                   	push   %ebp
405965:	8b ec                	mov    %esp,%ebp
405967:	83 ec 0c             	sub    $0xc,%esp
40596a:	56                   	push   %esi
40596b:	8b f1                	mov    %ecx,%esi
40596d:	57                   	push   %edi
40596e:	51                   	push   %ecx
40596f:	33 ff                	xor    %edi,%edi
405971:	8d 4d f4             	lea    -0xc(%ebp),%ecx
405974:	56                   	push   %esi
405975:	89 7e 08             	mov    %edi,0x8(%esi)
405978:	89 7e 0c             	mov    %edi,0xc(%esi)
40597b:	e8 1f 04 00 00       	call   0x405d9f
405980:	80 7d f8 00          	cmpb   $0x0,-0x8(%ebp)
405984:	74 36                	je     0x4059bc
405986:	39 7d 10             	cmp    %edi,0x10(%ebp)
405989:	7c 31                	jl     0x4059bc
40598b:	7f 05                	jg     0x405992
40598d:	39 7d 0c             	cmp    %edi,0xc(%ebp)
405990:	76 2a                	jbe    0x4059bc
405992:	8b 06                	mov    (%esi),%eax
405994:	ff 75 10             	push   0x10(%ebp)
405997:	ff 75 0c             	push   0xc(%ebp)
40599a:	8b 40 04             	mov    0x4(%eax),%eax
40599d:	ff 75 08             	push   0x8(%ebp)
4059a0:	8b 4c 30 38          	mov    0x38(%eax,%esi,1),%ecx
4059a4:	8b 01                	mov    (%ecx),%eax
4059a6:	ff 50 20             	call   *0x20(%eax)
4059a9:	01 46 08             	add    %eax,0x8(%esi)
4059ac:	11 56 0c             	adc    %edx,0xc(%esi)
4059af:	3b 45 0c             	cmp    0xc(%ebp),%eax
4059b2:	75 05                	jne    0x4059b9
4059b4:	3b 55 10             	cmp    0x10(%ebp),%edx
4059b7:	74 03                	je     0x4059bc
4059b9:	6a 03                	push   $0x3
4059bb:	5f                   	pop    %edi
4059bc:	8b 06                	mov    (%esi),%eax
4059be:	51                   	push   %ecx
4059bf:	57                   	push   %edi
4059c0:	8b 48 04             	mov    0x4(%eax),%ecx
4059c3:	03 ce                	add    %esi,%ecx
4059c5:	e8 ea 08 00 00       	call   0x4062b4
4059ca:	8b 4d f4             	mov    -0xc(%ebp),%ecx
4059cd:	8b 01                	mov    (%ecx),%eax
4059cf:	8b 40 04             	mov    0x4(%eax),%eax
4059d2:	8b 4c 08 38          	mov    0x38(%eax,%ecx,1),%ecx
4059d6:	85 c9                	test   %ecx,%ecx
4059d8:	74 05                	je     0x4059df
4059da:	8b 01                	mov    (%ecx),%eax
4059dc:	ff 50 08             	call   *0x8(%eax)
4059df:	5f                   	pop    %edi
4059e0:	8b c6                	mov    %esi,%eax
4059e2:	5e                   	pop    %esi
4059e3:	c9                   	leave
4059e4:	c2 0c 00             	ret    $0xc
4059e7:	c2 04 00             	ret    $0x4
4059ea:	33 c0                	xor    %eax,%eax
4059ec:	c3                   	ret
4059ed:	8b c1                	mov    %ecx,%eax
4059ef:	c2 0c 00             	ret    $0xc
4059f2:	51                   	push   %ecx
4059f3:	51                   	push   %ecx
4059f4:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
4059f8:	e8 de 08 00 00       	call   0x4062db
4059fd:	8b c1                	mov    %ecx,%eax
4059ff:	c2 20 00             	ret    $0x20
405a02:	51                   	push   %ecx
405a03:	51                   	push   %ecx
405a04:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
405a08:	e8 ce 08 00 00       	call   0x4062db
405a0d:	8b c1                	mov    %ecx,%eax
405a0f:	c2 14 00             	ret    $0x14
405a12:	55                   	push   %ebp
405a13:	8b ec                	mov    %esp,%ebp
405a15:	83 e4 f8             	and    $0xfffffff8,%esp
405a18:	83 ec 1c             	sub    $0x1c,%esp
405a1b:	53                   	push   %ebx
405a1c:	56                   	push   %esi
405a1d:	57                   	push   %edi
405a1e:	8b 7d 10             	mov    0x10(%ebp),%edi
405a21:	33 d2                	xor    %edx,%edx
405a23:	33 db                	xor    %ebx,%ebx
405a25:	89 4c 24 20          	mov    %ecx,0x20(%esp)
405a29:	89 54 24 14          	mov    %edx,0x14(%esp)
405a2d:	89 5c 24 18          	mov    %ebx,0x18(%esp)
405a31:	85 ff                	test   %edi,%edi
405a33:	0f 8c db 00 00 00    	jl     0x405b14
405a39:	8b 75 0c             	mov    0xc(%ebp),%esi
405a3c:	0f 8e c0 00 00 00    	jle    0x405b02
405a42:	8b 41 20             	mov    0x20(%ecx),%eax
405a45:	8d 51 30             	lea    0x30(%ecx),%edx
405a48:	8b 00                	mov    (%eax),%eax
405a4a:	89 44 24 24          	mov    %eax,0x24(%esp)
405a4e:	85 c0                	test   %eax,%eax
405a50:	74 0d                	je     0x405a5f
405a52:	8d 41 30             	lea    0x30(%ecx),%eax
405a55:	89 44 24 1c          	mov    %eax,0x1c(%esp)
405a59:	8b 00                	mov    (%eax),%eax
405a5b:	8b 00                	mov    (%eax),%eax
405a5d:	eb 06                	jmp    0x405a65
405a5f:	33 c0                	xor    %eax,%eax
405a61:	89 54 24 1c          	mov    %edx,0x1c(%esp)
405a65:	99                   	cltd
405a66:	8b d8                	mov    %eax,%ebx
405a68:	8b c2                	mov    %edx,%eax
405a6a:	89 44 24 10          	mov    %eax,0x10(%esp)
405a6e:	85 c0                	test   %eax,%eax
405a70:	7c 45                	jl     0x405ab7
405a72:	7f 04                	jg     0x405a78
405a74:	85 db                	test   %ebx,%ebx
405a76:	74 3f                	je     0x405ab7
405a78:	3b f8                	cmp    %eax,%edi
405a7a:	7f 0c                	jg     0x405a88
405a7c:	7c 04                	jl     0x405a82
405a7e:	3b f3                	cmp    %ebx,%esi
405a80:	73 06                	jae    0x405a88
405a82:	8b de                	mov    %esi,%ebx
405a84:	89 7c 24 10          	mov    %edi,0x10(%esp)
405a88:	8b 55 08             	mov    0x8(%ebp),%edx
405a8b:	8b 4c 24 24          	mov    0x24(%esp),%ecx
405a8f:	53                   	push   %ebx
405a90:	e8 23 e0 ff ff       	call   0x403ab8
405a95:	8b 44 24 20          	mov    0x20(%esp),%eax
405a99:	2b f3                	sub    %ebx,%esi
405a9b:	59                   	pop    %ecx
405a9c:	8b 4c 24 20          	mov    0x20(%esp),%ecx
405aa0:	1b 7c 24 10          	sbb    0x10(%esp),%edi
405aa4:	8b 00                	mov    (%eax),%eax
405aa6:	89 5c 24 1c          	mov    %ebx,0x1c(%esp)
405aaa:	29 18                	sub    %ebx,(%eax)
405aac:	8b 41 20             	mov    0x20(%ecx),%eax
405aaf:	01 18                	add    %ebx,(%eax)
405ab1:	8b 44 24 10          	mov    0x10(%esp),%eax
405ab5:	eb 26                	jmp    0x405add
405ab7:	8b 45 08             	mov    0x8(%ebp),%eax
405aba:	8b 11                	mov    (%ecx),%edx
405abc:	0f b6 00             	movzbl (%eax),%eax
405abf:	50                   	push   %eax
405ac0:	ff 52 0c             	call   *0xc(%edx)
405ac3:	83 f8 ff             	cmp    $0xffffffff,%eax
405ac6:	74 44                	je     0x405b0c
405ac8:	83 c6 ff             	add    $0xffffffff,%esi
405acb:	83 d7 ff             	adc    $0xffffffff,%edi
405ace:	33 c9                	xor    %ecx,%ecx
405ad0:	41                   	inc    %ecx
405ad1:	33 c0                	xor    %eax,%eax
405ad3:	8b d9                	mov    %ecx,%ebx
405ad5:	89 4c 24 1c          	mov    %ecx,0x1c(%esp)
405ad9:	8b 4c 24 20          	mov    0x20(%esp),%ecx
405add:	8b 54 24 14          	mov    0x14(%esp),%edx
405ae1:	03 d3                	add    %ebx,%edx
405ae3:	8b 5c 24 18          	mov    0x18(%esp),%ebx
405ae7:	89 54 24 14          	mov    %edx,0x14(%esp)
405aeb:	13 d8                	adc    %eax,%ebx
405aed:	8b 44 24 1c          	mov    0x1c(%esp),%eax
405af1:	01 45 08             	add    %eax,0x8(%ebp)
405af4:	89 5c 24 18          	mov    %ebx,0x18(%esp)
405af8:	85 ff                	test   %edi,%edi
405afa:	0f 8f 42 ff ff ff    	jg     0x405a42
405b00:	7c 12                	jl     0x405b14
405b02:	85 f6                	test   %esi,%esi
405b04:	0f 85 38 ff ff ff    	jne    0x405a42
405b0a:	eb 08                	jmp    0x405b14
405b0c:	8b 54 24 14          	mov    0x14(%esp),%edx
405b10:	8b 5c 24 18          	mov    0x18(%esp),%ebx
405b14:	5f                   	pop    %edi
405b15:	8b c2                	mov    %edx,%eax
405b17:	8b d3                	mov    %ebx,%edx
405b19:	5e                   	pop    %esi
405b1a:	5b                   	pop    %ebx
405b1b:	8b e5                	mov    %ebp,%esp
405b1d:	5d                   	pop    %ebp
405b1e:	c2 0c 00             	ret    $0xc
405b21:	55                   	push   %ebp
405b22:	8b ec                	mov    %esp,%ebp
405b24:	83 e4 f8             	and    $0xfffffff8,%esp
405b27:	83 ec 1c             	sub    $0x1c,%esp
405b2a:	53                   	push   %ebx
405b2b:	56                   	push   %esi
405b2c:	57                   	push   %edi
405b2d:	8b 7d 10             	mov    0x10(%ebp),%edi
405b30:	33 d2                	xor    %edx,%edx
405b32:	33 db                	xor    %ebx,%ebx
405b34:	89 4c 24 20          	mov    %ecx,0x20(%esp)
405b38:	89 54 24 14          	mov    %edx,0x14(%esp)
405b3c:	89 5c 24 18          	mov    %ebx,0x18(%esp)
405b40:	85 ff                	test   %edi,%edi
405b42:	0f 8c d9 00 00 00    	jl     0x405c21
405b48:	8b 75 0c             	mov    0xc(%ebp),%esi
405b4b:	0f 8e be 00 00 00    	jle    0x405c0f
405b51:	8b 41 1c             	mov    0x1c(%ecx),%eax
405b54:	8d 51 2c             	lea    0x2c(%ecx),%edx
405b57:	8b 00                	mov    (%eax),%eax
405b59:	89 44 24 24          	mov    %eax,0x24(%esp)
405b5d:	85 c0                	test   %eax,%eax
405b5f:	74 0d                	je     0x405b6e
405b61:	8d 41 2c             	lea    0x2c(%ecx),%eax
405b64:	89 44 24 1c          	mov    %eax,0x1c(%esp)
405b68:	8b 00                	mov    (%eax),%eax
405b6a:	8b 00                	mov    (%eax),%eax
405b6c:	eb 06                	jmp    0x405b74
405b6e:	33 c0                	xor    %eax,%eax
405b70:	89 54 24 1c          	mov    %edx,0x1c(%esp)
405b74:	99                   	cltd
405b75:	8b d8                	mov    %eax,%ebx
405b77:	8b c2                	mov    %edx,%eax
405b79:	89 44 24 10          	mov    %eax,0x10(%esp)
405b7d:	85 c0                	test   %eax,%eax
405b7f:	7c 45                	jl     0x405bc6
405b81:	7f 04                	jg     0x405b87
405b83:	85 db                	test   %ebx,%ebx
405b85:	74 3f                	je     0x405bc6
405b87:	3b f8                	cmp    %eax,%edi
405b89:	7f 0c                	jg     0x405b97
405b8b:	7c 04                	jl     0x405b91
405b8d:	3b f3                	cmp    %ebx,%esi
405b8f:	73 06                	jae    0x405b97
405b91:	8b de                	mov    %esi,%ebx
405b93:	89 7c 24 10          	mov    %edi,0x10(%esp)
405b97:	8b 54 24 24          	mov    0x24(%esp),%edx
405b9b:	8b 4d 08             	mov    0x8(%ebp),%ecx
405b9e:	53                   	push   %ebx
405b9f:	e8 14 df ff ff       	call   0x403ab8
405ba4:	8b 44 24 20          	mov    0x20(%esp),%eax
405ba8:	2b f3                	sub    %ebx,%esi
405baa:	59                   	pop    %ecx
405bab:	8b 4c 24 20          	mov    0x20(%esp),%ecx
405baf:	1b 7c 24 10          	sbb    0x10(%esp),%edi
405bb3:	8b 00                	mov    (%eax),%eax
405bb5:	89 5c 24 1c          	mov    %ebx,0x1c(%esp)
405bb9:	29 18                	sub    %ebx,(%eax)
405bbb:	8b 41 1c             	mov    0x1c(%ecx),%eax
405bbe:	01 18                	add    %ebx,(%eax)
405bc0:	8b 44 24 10          	mov    0x10(%esp),%eax
405bc4:	eb 24                	jmp    0x405bea
405bc6:	8b 01                	mov    (%ecx),%eax
405bc8:	ff 50 1c             	call   *0x1c(%eax)
405bcb:	83 f8 ff             	cmp    $0xffffffff,%eax
405bce:	74 49                	je     0x405c19
405bd0:	8b 4d 08             	mov    0x8(%ebp),%ecx
405bd3:	83 c6 ff             	add    $0xffffffff,%esi
405bd6:	83 d7 ff             	adc    $0xffffffff,%edi
405bd9:	88 01                	mov    %al,(%ecx)
405bdb:	33 c9                	xor    %ecx,%ecx
405bdd:	41                   	inc    %ecx
405bde:	33 c0                	xor    %eax,%eax
405be0:	8b d9                	mov    %ecx,%ebx
405be2:	89 4c 24 1c          	mov    %ecx,0x1c(%esp)
405be6:	8b 4c 24 20          	mov    0x20(%esp),%ecx
405bea:	8b 54 24 14          	mov    0x14(%esp),%edx
405bee:	03 d3                	add    %ebx,%edx
405bf0:	8b 5c 24 18          	mov    0x18(%esp),%ebx
405bf4:	89 54 24 14          	mov    %edx,0x14(%esp)
405bf8:	13 d8                	adc    %eax,%ebx
405bfa:	8b 44 24 1c          	mov    0x1c(%esp),%eax
405bfe:	01 45 08             	add    %eax,0x8(%ebp)
405c01:	89 5c 24 18          	mov    %ebx,0x18(%esp)
405c05:	85 ff                	test   %edi,%edi
405c07:	0f 8f 44 ff ff ff    	jg     0x405b51
405c0d:	7c 12                	jl     0x405c21
405c0f:	85 f6                	test   %esi,%esi
405c11:	0f 85 3a ff ff ff    	jne    0x405b51
405c17:	eb 08                	jmp    0x405c21
405c19:	8b 54 24 14          	mov    0x14(%esp),%edx
405c1d:	8b 5c 24 18          	mov    0x18(%esp),%ebx
405c21:	5f                   	pop    %edi
405c22:	8b c2                	mov    %edx,%eax
405c24:	8b d3                	mov    %ebx,%edx