4057f2:	e8 51 fe ff ff       	call   0x405648
4057f7:	52                   	push   %edx
4057f8:	50                   	push   %eax
4057f9:	8b c7                	mov    %edi,%eax
4057fb:	99                   	cltd
4057fc:	03 04 24             	add    (%esp),%eax
4057ff:	13 54 24 04          	adc    0x4(%esp),%edx
405803:	83 c4 08             	add    $0x8,%esp
405806:	89 44 24 08          	mov    %eax,0x8(%esp)
40580a:	89 54 24 0c          	mov    %edx,0xc(%esp)
40580e:	45                   	inc    %ebp
40580f:	33 db                	xor    %ebx,%ebx
405811:	eb 96                	jmp    0x4057a9
405813:	80 7c 24 10 00       	cmpb   $0x0,0x10(%esp)
405818:	74 17                	je     0x405831
40581a:	8b 44 24 08          	mov    0x8(%esp),%eax
40581e:	8b 54 24 0c          	mov    0xc(%esp),%edx
405822:	f7 d8                	neg    %eax
405824:	83 d2 00             	adc    $0x0,%edx
405827:	f7 da                	neg    %edx
405829:	89 44 24 08          	mov    %eax,0x8(%esp)
40582d:	89 54 24 0c          	mov    %edx,0xc(%esp)
405831:	83 7c 24 0c 00       	cmpl   $0x0,0xc(%esp)
405836:	75 05                	jne    0x40583d
405838:	83 7c 24 08 00       	cmpl   $0x0,0x8(%esp)
40583d:	74 1b                	je     0x40585a
40583f:	83 7c 24 0c 00       	cmpl   $0x0,0xc(%esp)
405844:	75 0a                	jne    0x405850
405846:	83 7c 24 08 00       	cmpl   $0x0,0x8(%esp)
40584b:	0f 92 c0             	setb   %al
40584e:	eb 03                	jmp    0x405853
405850:	0f 9c c0             	setl   %al
405853:	3a 44 24 10          	cmp    0x10(%esp),%al
405857:	74 01                	je     0x40585a
405859:	4d                   	dec    %ebp
40585a:	80 7c 2e ff 00       	cmpb   $0x0,-0x1(%esi,%ebp,1)
40585f:	0f 95 c0             	setne  %al
405862:	0a d8                	or     %al,%bl
405864:	74 07                	je     0x40586d
405866:	8b 04 24             	mov    (%esp),%eax
405869:	89 28                	mov    %ebp,(%eax)
40586b:	eb 07                	jmp    0x405874
40586d:	8b 04 24             	mov    (%esp),%eax
405870:	33 d2                	xor    %edx,%edx
405872:	89 10                	mov    %edx,(%eax)
405874:	8b 44 24 08          	mov    0x8(%esp),%eax
405878:	8b 54 24 0c          	mov    0xc(%esp),%edx
40587c:	83 c4 14             	add    $0x14,%esp
40587f:	5d                   	pop    %ebp
405880:	5f                   	pop    %edi
405881:	5e                   	pop    %esi
405882:	5b                   	pop    %ebx
405883:	c3                   	ret
405884:	85 c0                	test   %eax,%eax
405886:	74 03                	je     0x40588b
405888:	8b 40 fc             	mov    -0x4(%eax),%eax
40588b:	c3                   	ret
40588c:	e8 f3 ff ff ff       	call   0x405884
405891:	48                   	dec    %eax
405892:	c3                   	ret
405893:	90                   	nop
405894:	55                   	push   %ebp
405895:	8b ec                	mov    %esp,%ebp
405897:	ff 75 08             	push   0x8(%ebp)
40589a:	e8 39 fc ff ff       	call   0x4054d8
40589f:	5d                   	pop    %ebp
4058a0:	c2 04 00             	ret    $0x4
4058a3:	90                   	nop
4058a4:	e9 03 fa ff ff       	jmp    0x4052ac
4058a9:	c3                   	ret
4058aa:	8b c0                	mov    %eax,%eax
4058ac:	e8 9b 01 00 00       	call   0x405a4c
4058b1:	c3                   	ret
4058b2:	8b c0                	mov    %eax,%eax
4058b4:	55                   	push   %ebp
4058b5:	8b ec                	mov    %esp,%ebp
4058b7:	83 c4 e0             	add    $0xffffffe0,%esp
4058ba:	53                   	push   %ebx
4058bb:	56                   	push   %esi
4058bc:	57                   	push   %edi
4058bd:	89 4d f8             	mov    %ecx,-0x8(%ebp)
4058c0:	8b f2                	mov    %edx,%esi
4058c2:	89 45 fc             	mov    %eax,-0x4(%ebp)
4058c5:	8b 5d fc             	mov    -0x4(%ebp),%ebx
4058c8:	8b 1b                	mov    (%ebx),%ebx
4058ca:	8b 45 08             	mov    0x8(%ebp),%eax
4058cd:	8b 38                	mov    (%eax),%edi
4058cf:	85 ff                	test   %edi,%edi
4058d1:	7f 1a                	jg     0x4058ed
4058d3:	85 ff                	test   %edi,%edi
4058d5:	7d 07                	jge    0x4058de
4058d7:	b0 04                	mov    $0x4,%al
4058d9:	e8 5e d5 ff ff       	call   0x402e3c
4058de:	8b 45 fc             	mov    -0x4(%ebp),%eax
4058e1:	8b d6                	mov    %esi,%edx
4058e3:	e8 c4 ff ff ff       	call   0x4058ac
4058e8:	e9 49 01 00 00       	jmp    0x405a36
4058ed:	33 c0                	xor    %eax,%eax
4058ef:	89 45 f0             	mov    %eax,-0x10(%ebp)
4058f2:	85 db                	test   %ebx,%ebx
4058f4:	74 0b                	je     0x405901
4058f6:	83 eb 04             	sub    $0x4,%ebx
4058f9:	8b 03                	mov    (%ebx),%eax
4058fb:	89 45 f0             	mov    %eax,-0x10(%ebp)
4058fe:	83 eb 04             	sub    $0x4,%ebx
405901:	0f b6 46 01          	movzbl 0x1(%esi),%eax
405905:	01 c6                	add    %eax,%esi
405907:	8b c6                	mov    %esi,%eax
405909:	8b 50 02             	mov    0x2(%eax),%edx
40590c:	89 55 e8             	mov    %edx,-0x18(%ebp)
40590f:	8b 50 06             	mov    0x6(%eax),%edx
405912:	85 d2                	test   %edx,%edx
405914:	74 04                	je     0x40591a
405916:	8b 32                	mov    (%edx),%esi
405918:	eb 02                	jmp    0x40591c
40591a:	33 f6                	xor    %esi,%esi
40591c:	8b c7                	mov    %edi,%eax
40591e:	f7 6d e8             	imull  -0x18(%ebp)
405921:	89 45 e4             	mov    %eax,-0x1c(%ebp)
405924:	8b 45 e4             	mov    -0x1c(%ebp),%eax
405927:	99                   	cltd
405928:	f7 ff                	idiv   %edi
40592a:	3b 45 e8             	cmp    -0x18(%ebp),%eax
40592d:	74 07                	je     0x405936
40592f:	b0 04                	mov    $0x4,%al
405931:	e8 06 d5 ff ff       	call   0x402e3c
405936:	83 45 e4 08          	addl   $0x8,-0x1c(%ebp)
40593a:	85 db                	test   %ebx,%ebx
40593c:	74 05                	je     0x405943
40593e:	83 3b 01             	cmpl   $0x1,(%ebx)
405941:	75 35                	jne    0x405978
405943:	89 5d e0             	mov    %ebx,-0x20(%ebp)
405946:	3b 7d f0             	cmp    -0x10(%ebp),%edi
405949:	7d 1d                	jge    0x405968
40594b:	85 f6                	test   %esi,%esi
40594d:	74 19                	je     0x405968
40594f:	8b c3                	mov    %ebx,%eax
405951:	83 c0 08             	add    $0x8,%eax
405954:	8b d7                	mov    %edi,%edx
405956:	0f af 55 e8          	imul   -0x18(%ebp),%edx
40595a:	03 c2                	add    %edx,%eax
40595c:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40595f:	2b cf                	sub    %edi,%ecx
405961:	8b d6                	mov    %esi,%edx
405963:	e8 3c ff ff ff       	call   0x4058a4
405968:	8d 45 e0             	lea    -0x20(%ebp),%eax
40596b:	8b 55 e4             	mov    -0x1c(%ebp),%edx
40596e:	e8 ad d3 ff ff       	call   0x402d20
405973:	8b 5d e0             	mov    -0x20(%ebp),%ebx
405976:	eb 5e                	jmp    0x4059d6
405978:	ff 0b                	decl   (%ebx)
40597a:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40597d:	e8 6a d3 ff ff       	call   0x402cec
405982:	8b d8                	mov    %eax,%ebx
405984:	8b 45 f0             	mov    -0x10(%ebp),%eax
405987:	89 45 ec             	mov    %eax,-0x14(%ebp)
40598a:	3b 7d ec             	cmp    -0x14(%ebp),%edi
40598d:	7d 03                	jge    0x405992
40598f:	89 7d ec             	mov    %edi,-0x14(%ebp)
405992:	85 f6                	test   %esi,%esi
405994:	74 2a                	je     0x4059c0
405996:	8b 55 ec             	mov    -0x14(%ebp),%edx
405999:	0f af 55 e8          	imul   -0x18(%ebp),%edx
40599d:	8b c3                	mov    %ebx,%eax
40599f:	83 c0 08             	add    $0x8,%eax
4059a2:	33 c9                	xor    %ecx,%ecx
4059a4:	e8 87 d8 ff ff       	call   0x403230
4059a9:	8b 45 ec             	mov    -0x14(%ebp),%eax
4059ac:	50                   	push   %eax
4059ad:	8b 55 fc             	mov    -0x4(%ebp),%edx
4059b0:	8b 12                	mov    (%edx),%edx
4059b2:	8b c3                	mov    %ebx,%eax
4059b4:	83 c0 08             	add    $0x8,%eax
4059b7:	8b ce                	mov    %esi,%ecx
4059b9:	e8 d6 fe ff ff       	call   0x405894
4059be:	eb 16                	jmp    0x4059d6
4059c0:	8b 4d ec             	mov    -0x14(%ebp),%ecx
4059c3:	0f af 4d e8          	imul   -0x18(%ebp),%ecx
4059c7:	8b d3                	mov    %ebx,%edx
4059c9:	83 c2 08             	add    $0x8,%edx
4059cc:	8b 45 fc             	mov    -0x4(%ebp),%eax
4059cf:	8b 00                	mov    (%eax),%eax
4059d1:	e8 06 d5 ff ff       	call   0x402edc
4059d6:	c7 03 01 00 00 00    	movl   $0x1,(%ebx)
4059dc:	83 c3 04             	add    $0x4,%ebx
4059df:	89 3b                	mov    %edi,(%ebx)
4059e1:	83 c3 04             	add    $0x4,%ebx
4059e4:	8b d7                	mov    %edi,%edx
4059e6:	2b 55 f0             	sub    -0x10(%ebp),%edx
4059e9:	0f af 55 e8          	imul   -0x18(%ebp),%edx
4059ed:	8b 45 e8             	mov    -0x18(%ebp),%eax
4059f0:	0f af 45 f0          	imul   -0x10(%ebp),%eax
4059f4:	03 c3                	add    %ebx,%eax
4059f6:	33 c9                	xor    %ecx,%ecx
4059f8:	e8 33 d8 ff ff       	call   0x403230
4059fd:	83 7d f8 01          	cmpl   $0x1,-0x8(%ebp)
405a01:	7e 2e                	jle    0x405a31
405a03:	83 45 08 04          	addl   $0x4,0x8(%ebp)
405a07:	ff 4d f8             	decl   -0x8(%ebp)
405a0a:	4f                   	dec    %edi
405a0b:	85 ff                	test   %edi,%edi
405a0d:	7c 22                	jl     0x405a31
405a0f:	47                   	inc    %edi
405a10:	c7 45 f4 00 00 00 00 	movl   $0x0,-0xc(%ebp)
405a17:	8b 45 08             	mov    0x8(%ebp),%eax
405a1a:	50                   	push   %eax
405a1b:	8b 45 f4             	mov    -0xc(%ebp),%eax
405a1e:	8d 04 83             	lea    (%ebx,%eax,4),%eax
405a21:	8b 4d f8             	mov    -0x8(%ebp),%ecx
405a24:	8b d6                	mov    %esi,%edx
405a26:	e8 89 fe ff ff       	call   0x4058b4
405a2b:	ff 45 f4             	incl   -0xc(%ebp)
405a2e:	4f                   	dec    %edi
405a2f:	75 e6                	jne    0x405a17
405a31:	8b 45 fc             	mov    -0x4(%ebp),%eax
405a34:	89 18                	mov    %ebx,(%eax)
405a36:	5f                   	pop    %edi
405a37:	5e                   	pop    %esi
405a38:	5b                   	pop    %ebx
405a39:	8b e5                	mov    %ebp,%esp
405a3b:	5d                   	pop    %ebp
405a3c:	c2 04 00             	ret    $0x4
405a3f:	90                   	nop
405a40:	54                   	push   %esp
405a41:	83 04 24 04          	addl   $0x4,(%esp)
405a45:	e8 6a fe ff ff       	call   0x4058b4
405a4a:	c3                   	ret
405a4b:	90                   	nop
405a4c:	8b 08                	mov    (%eax),%ecx
405a4e:	85 c9                	test   %ecx,%ecx
405a50:	74 33                	je     0x405a85
405a52:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
405a58:	f0 ff 49 f8          	lock decl -0x8(%ecx)
405a5c:	75 27                	jne    0x405a85
405a5e:	50                   	push   %eax
405a5f:	89 c8                	mov    %ecx,%eax
405a61:	31 c9                	xor    %ecx,%ecx
405a63:	8a 4a 01             	mov    0x1(%edx),%cl
405a66:	8b 54 11 06          	mov    0x6(%ecx,%edx,1),%edx
405a6a:	85 d2                	test   %edx,%edx
405a6c:	74 0e                	je     0x405a7c
405a6e:	8b 48 fc             	mov    -0x4(%eax),%ecx
405a71:	85 c9                	test   %ecx,%ecx
405a73:	74 07                	je     0x405a7c
405a75:	8b 12                	mov    (%edx),%edx
405a77:	e8 30 f8 ff ff       	call   0x4052ac
405a7c:	83 e8 08             	sub    $0x8,%eax
405a7f:	e8 84 d2 ff ff       	call   0x402d08
405a84:	58                   	pop    %eax
405a85:	c3                   	ret
405a86:	8b c0                	mov    %eax,%eax
405a88:	53                   	push   %ebx
405a89:	8b 18                	mov    (%eax),%ebx
405a8b:	85 d2                	test   %edx,%edx
405a8d:	74 04                	je     0x405a93
405a8f:	f0 ff 42 f8          	lock incl -0x8(%edx)
405a93:	85 db                	test   %ebx,%ebx
405a95:	74 14                	je     0x405aab
405a97:	f0 ff 4b f8          	lock decl -0x8(%ebx)
405a9b:	75 0e                	jne    0x405aab
405a9d:	50                   	push   %eax
405a9e:	52                   	push   %edx
405a9f:	89 ca                	mov    %ecx,%edx
405aa1:	ff 43 f8             	incl   -0x8(%ebx)
405aa4:	e8 a3 ff ff ff       	call   0x405a4c
405aa9:	5a                   	pop    %edx
405aaa:	58                   	pop    %eax
405aab:	89 10                	mov    %edx,(%eax)
405aad:	5b                   	pop    %ebx
405aae:	c3                   	ret
405aaf:	90                   	nop
405ab0:	83 c4 e4             	add    $0xffffffe4,%esp
405ab3:	6a 1c                	push   $0x1c
405ab5:	8d 54 24 04          	lea    0x4(%esp),%edx
405ab9:	52                   	push   %edx
405aba:	50                   	push   %eax
405abb:	e8 64 b8 ff ff       	call   0x401324
405ac0:	81 7c 24 10 00 10 00 	cmpl   $0x1000,0x10(%esp)
405ac7:	00
405ac8:	75 06                	jne    0x405ad0
405aca:	8b 44 24 04          	mov    0x4(%esp),%eax
405ace:	eb 02                	jmp    0x405ad2
405ad0:	33 c0                	xor    %eax,%eax
405ad2:	83 c4 1c             	add    $0x1c,%esp
405ad5:	c3                   	ret
405ad6:	8b c0                	mov    %eax,%eax
405ad8:	e8 d3 ff ff ff       	call   0x405ab0
405add:	c3                   	ret
405ade:	8b c0                	mov    %eax,%eax
405ae0:	53                   	push   %ebx
405ae1:	56                   	push   %esi
405ae2:	81 c4 f8 fe ff ff    	add    $0xfffffef8,%esp
405ae8:	8b d8                	mov    %eax,%ebx
405aea:	83 7b 10 00          	cmpl   $0x0,0x10(%ebx)
405aee:	75 2b                	jne    0x405b1b
405af0:	68 05 01 00 00       	push   $0x105
405af5:	8d 44 24 04          	lea    0x4(%esp),%eax
405af9:	50                   	push   %eax
405afa:	8b 43 04             	mov    0x4(%ebx),%eax
405afd:	50                   	push   %eax
405afe:	e8 b1 b7 ff ff       	call   0x4012b4
405b03:	8b c4                	mov    %esp,%eax
405b05:	b2 01                	mov    $0x1,%dl
405b07:	e8 38 02 00 00       	call   0x405d44
405b0c:	8b f0                	mov    %eax,%esi
405b0e:	89 73 10             	mov    %esi,0x10(%ebx)
405b11:	85 f6                	test   %esi,%esi
405b13:	75 06                	jne    0x405b1b
405b15:	8b 43 04             	mov    0x4(%ebx),%eax
405b18:	89 43 10             	mov    %eax,0x10(%ebx)
405b1b:	8b 43 10             	mov    0x10(%ebx),%eax
405b1e:	81 c4 08 01 00 00    	add    $0x108,%esp
405b24:	5e                   	pop    %esi
405b25:	5b                   	pop    %ebx
405b26:	c3                   	ret
405b27:	90                   	nop
405b28:	53                   	push   %ebx
405b29:	56                   	push   %esi
405b2a:	57                   	push   %edi
405b2b:	8b f0                	mov    %eax,%esi
405b2d:	8b 1d 34 00 46 00    	mov    0x460034,%ebx
405b33:	85 db                	test   %ebx,%ebx
405b35:	74 20                	je     0x405b57
405b37:	3b 73 04             	cmp    0x4(%ebx),%esi
405b3a:	74 0a                	je     0x405b46
405b3c:	3b 73 08             	cmp    0x8(%ebx),%esi
405b3f:	74 05                	je     0x405b46
405b41:	3b 73 0c             	cmp    0xc(%ebx),%esi
405b44:	75 0b                	jne    0x405b51
405b46:	8b c3                	mov    %ebx,%eax
405b48:	e8 93 ff ff ff       	call   0x405ae0
405b4d:	8b f8                	mov    %eax,%edi
405b4f:	eb 08                	jmp    0x405b59
405b51:	8b 1b                	mov    (%ebx),%ebx
405b53:	85 db                	test   %ebx,%ebx
405b55:	75 e0                	jne    0x405b37
405b57:	8b fe                	mov    %esi,%edi
405b59:	8b c7                	mov    %edi,%eax
405b5b:	5f                   	pop    %edi
405b5c:	5e                   	pop    %esi
405b5d:	5b                   	pop    %ebx
405b5e:	c3                   	ret
405b5f:	90                   	nop
405b60:	53                   	push   %ebx
405b61:	56                   	push   %esi
405b62:	8b f0                	mov    %eax,%esi
405b64:	eb 08                	jmp    0x405b6e
405b66:	56                   	push   %esi
405b67:	e8 00 b7 ff ff       	call   0x40126c
405b6c:	8b f0                	mov    %eax,%esi