4057b2:	33 ff                	xor    %edi,%edi
4057b4:	89 7e 30             	mov    %edi,0x30(%esi)
4057b7:	8b 4e 28             	mov    0x28(%esi),%ecx
4057ba:	e8 6e 02 00 00       	call   0x405a2d
4057bf:	89 7e 28             	mov    %edi,0x28(%esi)
4057c2:	8b 4e 24             	mov    0x24(%esi),%ecx
4057c5:	e8 63 02 00 00       	call   0x405a2d
4057ca:	89 7e 24             	mov    %edi,0x24(%esi)
4057cd:	8b 4e 1c             	mov    0x1c(%esi),%ecx
4057d0:	e8 58 02 00 00       	call   0x405a2d
4057d5:	89 7e 1c             	mov    %edi,0x1c(%esi)
4057d8:	8b 4e 10             	mov    0x10(%esi),%ecx
4057db:	e8 4d 02 00 00       	call   0x405a2d
4057e0:	89 7e 10             	mov    %edi,0x10(%esi)
4057e3:	8d 4e 08             	lea    0x8(%esi),%ecx
4057e6:	5f                   	pop    %edi
4057e7:	5e                   	pop    %esi
4057e8:	e9 79 d6 ff ff       	jmp    0x402e66
4057ed:	8b 41 2c             	mov    0x2c(%ecx),%eax
4057f0:	c3                   	ret
4057f1:	8b 41 34             	mov    0x34(%ecx),%eax
4057f4:	c3                   	ret
4057f5:	55                   	push   %ebp
4057f6:	8b ec                	mov    %esp,%ebp
4057f8:	56                   	push   %esi
4057f9:	8b 75 08             	mov    0x8(%ebp),%esi
4057fc:	57                   	push   %edi
4057fd:	8d 79 10             	lea    0x10(%ecx),%edi
405800:	8b ce                	mov    %esi,%ecx
405802:	57                   	push   %edi
405803:	e8 52 dc ff ff       	call   0x40345a
405808:	8b 4f 04             	mov    0x4(%edi),%ecx
40580b:	8b c6                	mov    %esi,%eax
40580d:	5f                   	pop    %edi
40580e:	89 4e 04             	mov    %ecx,0x4(%esi)
405811:	5e                   	pop    %esi
405812:	5d                   	pop    %ebp
405813:	c2 04 00             	ret    $0x4
405816:	68 80 00 00 00       	push   $0x80
40581b:	6a 08                	push   $0x8
40581d:	ff 15 bc 21 41 00    	call   *0x4121bc
405823:	50                   	push   %eax
405824:	ff 15 c0 21 41 00    	call   *0x4121c0
40582a:	c3                   	ret
40582b:	53                   	push   %ebx
40582c:	68 10 28 41 00       	push   $0x412810
405831:	8a d9                	mov    %cl,%bl
405833:	ff 15 b8 21 41 00    	call   *0x4121b8
405839:	68 1c 28 41 00       	push   $0x41281c
40583e:	50                   	push   %eax
40583f:	ff 15 b4 21 41 00    	call   *0x4121b4
405845:	84 db                	test   %bl,%bl
405847:	5b                   	pop    %ebx
405848:	75 1f                	jne    0x405869
40584a:	85 c0                	test   %eax,%eax
40584c:	74 13                	je     0x405861
40584e:	68 10 20 00 00       	push   $0x2010
405853:	68 28 28 41 00       	push   $0x412828
405858:	68 30 28 41 00       	push   $0x412830
40585d:	6a 00                	push   $0x0
40585f:	ff d0                	call   *%eax
405861:	6a 01                	push   $0x1
405863:	ff 15 b0 21 41 00    	call   *0x4121b0
405869:	c3                   	ret
40586a:	55                   	push   %ebp
40586b:	8b ec                	mov    %esp,%ebp
40586d:	83 ec 44             	sub    $0x44,%esp
405870:	56                   	push   %esi
405871:	ff 15 a8 21 41 00    	call   *0x4121a8
405877:	8b c8                	mov    %eax,%ecx
405879:	8a 01                	mov    (%ecx),%al
40587b:	3c 22                	cmp    $0x22,%al
40587d:	75 28                	jne    0x4058a7
40587f:	41                   	inc    %ecx
405880:	8a 11                	mov    (%ecx),%dl
405882:	84 d2                	test   %dl,%dl
405884:	74 11                	je     0x405897
405886:	8a c2                	mov    %dl,%al
405888:	8a d0                	mov    %al,%dl
40588a:	3c 22                	cmp    $0x22,%al
40588c:	74 09                	je     0x405897
40588e:	41                   	inc    %ecx
40588f:	8a 11                	mov    (%ecx),%dl
405891:	8a c2                	mov    %dl,%al
405893:	84 d2                	test   %dl,%dl
405895:	75 f1                	jne    0x405888
405897:	8d 41 01             	lea    0x1(%ecx),%eax
40589a:	80 fa 22             	cmp    $0x22,%dl
40589d:	0f 45 c1             	cmovne %ecx,%eax
4058a0:	8b c8                	mov    %eax,%ecx
4058a2:	eb 0e                	jmp    0x4058b2
4058a4:	41                   	inc    %ecx
4058a5:	8a 01                	mov    (%ecx),%al
4058a7:	3c 20                	cmp    $0x20,%al
4058a9:	7f f9                	jg     0x4058a4
4058ab:	eb 07                	jmp    0x4058b4
4058ad:	3c 20                	cmp    $0x20,%al
4058af:	7f 07                	jg     0x4058b8
4058b1:	41                   	inc    %ecx
4058b2:	8a 01                	mov    (%ecx),%al
4058b4:	84 c0                	test   %al,%al
4058b6:	75 f5                	jne    0x4058ad
4058b8:	83 65 e8 00          	andl   $0x0,-0x18(%ebp)
4058bc:	8d 45 bc             	lea    -0x44(%ebp),%eax
4058bf:	50                   	push   %eax
4058c0:	ff 15 80 21 41 00    	call   *0x412180
4058c6:	e8 2d 00 00 00       	call   0x4058f8
4058cb:	ba 2c 60 41 00       	mov    $0x41602c,%edx
4058d0:	b9 00 60 41 00       	mov    $0x416000,%ecx
4058d5:	e8 4b 00 00 00       	call   0x405925
4058da:	6a 00                	push   $0x0
4058dc:	ff 15 ac 21 41 00    	call   *0x4121ac
4058e2:	51                   	push   %ecx
4058e3:	51                   	push   %ecx
4058e4:	e8 bd b8 00 00       	call   0x4111a6
4058e9:	8b f0                	mov    %eax,%esi
4058eb:	e8 1d 00 00 00       	call   0x40590d
4058f0:	56                   	push   %esi
4058f1:	ff 15 b0 21 41 00    	call   *0x4121b0
4058f7:	cc                   	int3
4058f8:	c7 05 1c 78 41 00 20 	movl   $0x20,0x41781c
4058ff:	00 00 00
405902:	e8 0f ff ff ff       	call   0x405816
405907:	a3 9c 6d 41 00       	mov    %eax,0x416d9c
40590c:	c3                   	ret
40590d:	a1 d4 7c 41 00       	mov    0x417cd4,%eax
405912:	85 c0                	test   %eax,%eax
405914:	74 0e                	je     0x405924
405916:	8b 0d 9c 6d 41 00    	mov    0x416d9c,%ecx
40591c:	8d 14 81             	lea    (%ecx,%eax,4),%edx
40591f:	e9 01 00 00 00       	jmp    0x405925
405924:	c3                   	ret
405925:	53                   	push   %ebx
405926:	56                   	push   %esi
405927:	57                   	push   %edi
405928:	8b f9                	mov    %ecx,%edi
40592a:	8b f2                	mov    %edx,%esi
40592c:	2b f7                	sub    %edi,%esi
40592e:	33 c0                	xor    %eax,%eax
405930:	83 c6 03             	add    $0x3,%esi
405933:	33 db                	xor    %ebx,%ebx
405935:	c1 ee 02             	shr    $0x2,%esi
405938:	3b fa                	cmp    %edx,%edi
40593a:	0f 47 f0             	cmova  %eax,%esi
40593d:	85 f6                	test   %esi,%esi
40593f:	74 10                	je     0x405951
405941:	8b 07                	mov    (%edi),%eax
405943:	85 c0                	test   %eax,%eax
405945:	74 02                	je     0x405949
405947:	ff d0                	call   *%eax
405949:	83 c7 04             	add    $0x4,%edi
40594c:	43                   	inc    %ebx
40594d:	3b de                	cmp    %esi,%ebx
40594f:	72 f0                	jb     0x405941
405951:	5f                   	pop    %edi
405952:	5e                   	pop    %esi
405953:	5b                   	pop    %ebx
405954:	c3                   	ret
405955:	8b 15 d4 7c 41 00    	mov    0x417cd4,%edx
40595b:	3b 15 1c 78 41 00    	cmp    0x41781c,%edx
405961:	73 12                	jae    0x405975
405963:	a1 9c 6d 41 00       	mov    0x416d9c,%eax
405968:	89 0c 90             	mov    %ecx,(%eax,%edx,4)
40596b:	42                   	inc    %edx
40596c:	89 15 d4 7c 41 00    	mov    %edx,0x417cd4
405972:	33 c0                	xor    %eax,%eax
405974:	c3                   	ret
405975:	83 c8 ff             	or     $0xffffffff,%eax
405978:	c3                   	ret
405979:	52                   	push   %edx
40597a:	6a 08                	push   $0x8
40597c:	ff 15 bc 21 41 00    	call   *0x4121bc
405982:	50                   	push   %eax
405983:	ff 15 c0 21 41 00    	call   *0x4121c0
405989:	c3                   	ret
40598a:	55                   	push   %ebp
40598b:	8b ec                	mov    %esp,%ebp
40598d:	83 ec 1c             	sub    $0x1c,%esp
405990:	85 c9                	test   %ecx,%ecx
405992:	75 04                	jne    0x405998
405994:	33 c0                	xor    %eax,%eax
405996:	c9                   	leave
405997:	c3                   	ret
405998:	6a 1c                	push   $0x1c
40599a:	8d 45 e4             	lea    -0x1c(%ebp),%eax
40599d:	50                   	push   %eax
40599e:	51                   	push   %ecx
40599f:	ff 15 30 21 41 00    	call   *0x412130
4059a5:	8b 45 f0             	mov    -0x10(%ebp),%eax
4059a8:	c9                   	leave
4059a9:	c3                   	ret
4059aa:	56                   	push   %esi
4059ab:	57                   	push   %edi
4059ac:	6a 04                	push   $0x4
4059ae:	68 00 30 00 00       	push   $0x3000
4059b3:	8b f9                	mov    %ecx,%edi
4059b5:	57                   	push   %edi
4059b6:	6a 00                	push   $0x0
4059b8:	ff 15 d8 21 41 00    	call   *0x4121d8
4059be:	8b f0                	mov    %eax,%esi
4059c0:	57                   	push   %edi
4059c1:	8b ce                	mov    %esi,%ecx
4059c3:	e8 f1 00 00 00       	call   0x405ab9
4059c8:	59                   	pop    %ecx
4059c9:	5f                   	pop    %edi
4059ca:	8b c6                	mov    %esi,%eax
4059cc:	5e                   	pop    %esi
4059cd:	c3                   	ret
4059ce:	55                   	push   %ebp
4059cf:	8b ec                	mov    %esp,%ebp
4059d1:	51                   	push   %ecx
4059d2:	53                   	push   %ebx
4059d3:	56                   	push   %esi
4059d4:	57                   	push   %edi
4059d5:	8b f1                	mov    %ecx,%esi
4059d7:	33 ff                	xor    %edi,%edi
4059d9:	8b c2                	mov    %edx,%eax
4059db:	8b df                	mov    %edi,%ebx
4059dd:	89 45 fc             	mov    %eax,-0x4(%ebp)
4059e0:	85 f6                	test   %esi,%esi
4059e2:	74 0a                	je     0x4059ee
4059e4:	e8 a1 ff ff ff       	call   0x40598a
4059e9:	8b d8                	mov    %eax,%ebx
4059eb:	8b 45 fc             	mov    -0x4(%ebp),%eax
4059ee:	85 c0                	test   %eax,%eax
4059f0:	74 29                	je     0x405a1b
4059f2:	8b c8                	mov    %eax,%ecx
4059f4:	e8 43 00 00 00       	call   0x405a3c
4059f9:	8b f8                	mov    %eax,%edi
4059fb:	85 f6                	test   %esi,%esi
4059fd:	74 27                	je     0x405a26
4059ff:	85 ff                	test   %edi,%edi
405a01:	74 18                	je     0x405a1b
405a03:	85 db                	test   %ebx,%ebx
405a05:	74 14                	je     0x405a1b
405a07:	39 5d fc             	cmp    %ebx,-0x4(%ebp)
405a0a:	8b d6                	mov    %esi,%edx
405a0c:	8b cf                	mov    %edi,%ecx
405a0e:	0f 42 5d fc          	cmovb  -0x4(%ebp),%ebx
405a12:	53                   	push   %ebx
405a13:	e8 80 00 00 00       	call   0x405a98
405a18:	83 c4 04             	add    $0x4,%esp
405a1b:	85 f6                	test   %esi,%esi
405a1d:	74 07                	je     0x405a26
405a1f:	8b ce                	mov    %esi,%ecx
405a21:	e8 07 00 00 00       	call   0x405a2d
405a26:	8b c7                	mov    %edi,%eax
405a28:	5f                   	pop    %edi
405a29:	5e                   	pop    %esi
405a2a:	5b                   	pop    %ebx
405a2b:	c9                   	leave
405a2c:	c3                   	ret
405a2d:	68 00 80 00 00       	push   $0x8000
405a32:	6a 00                	push   $0x0
405a34:	51                   	push   %ecx
405a35:	ff 15 08 22 41 00    	call   *0x412208
405a3b:	c3                   	ret
405a3c:	6a 04                	push   $0x4
405a3e:	68 00 30 00 00       	push   $0x3000
405a43:	51                   	push   %ecx
405a44:	6a 00                	push   $0x0
405a46:	ff 15 d8 21 41 00    	call   *0x4121d8
405a4c:	c3                   	ret
405a4d:	85 c9                	test   %ecx,%ecx
405a4f:	75 07                	jne    0x405a58
405a51:	8b ca                	mov    %edx,%ecx
405a53:	e9 2f 00 00 00       	jmp    0x405a87
405a58:	85 d2                	test   %edx,%edx
405a5a:	75 08                	jne    0x405a64
405a5c:	e8 15 00 00 00       	call   0x405a76
405a61:	33 c0                	xor    %eax,%eax
405a63:	c3                   	ret
405a64:	52                   	push   %edx
405a65:	51                   	push   %ecx
405a66:	6a 00                	push   $0x0
405a68:	ff 15 bc 21 41 00    	call   *0x4121bc
405a6e:	50                   	push   %eax
405a6f:	ff 15 d4 21 41 00    	call   *0x4121d4
405a75:	c3                   	ret
405a76:	51                   	push   %ecx
405a77:	6a 00                	push   $0x0
405a79:	ff 15 bc 21 41 00    	call   *0x4121bc
405a7f:	50                   	push   %eax
405a80:	ff 15 14 21 41 00    	call   *0x412114
405a86:	c3                   	ret
405a87:	51                   	push   %ecx
405a88:	6a 00                	push   $0x0
405a8a:	ff 15 bc 21 41 00    	call   *0x4121bc
405a90:	50                   	push   %eax
405a91:	ff 15 c0 21 41 00    	call   *0x4121c0
405a97:	c3                   	ret
405a98:	55                   	push   %ebp
405a99:	8b ec                	mov    %esp,%ebp
405a9b:	56                   	push   %esi
405a9c:	8b 75 08             	mov    0x8(%ebp),%esi
405a9f:	85 f6                	test   %esi,%esi
405aa1:	74 11                	je     0x405ab4
405aa3:	57                   	push   %edi
405aa4:	8b f9                	mov    %ecx,%edi
405aa6:	2b fa                	sub    %edx,%edi
405aa8:	8a 02                	mov    (%edx),%al
405aaa:	88 04 17             	mov    %al,(%edi,%edx,1)
405aad:	42                   	inc    %edx
405aae:	83 ee 01             	sub    $0x1,%esi
405ab1:	75 f5                	jne    0x405aa8
405ab3:	5f                   	pop    %edi
405ab4:	8b c1                	mov    %ecx,%eax
405ab6:	5e                   	pop    %esi
405ab7:	5d                   	pop    %ebp
405ab8:	c3                   	ret
405ab9:	55                   	push   %ebp
405aba:	8b ec                	mov    %esp,%ebp
405abc:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
405ac0:	56                   	push   %esi
405ac1:	8b f1                	mov    %ecx,%esi
405ac3:	74 0e                	je     0x405ad3
405ac5:	ff 75 08             	push   0x8(%ebp)
405ac8:	6a 00                	push   $0x0
405aca:	56                   	push   %esi
405acb:	e8 82 b5 ff ff       	call   0x401052
405ad0:	83 c4 0c             	add    $0xc,%esp
405ad3:	8b c6                	mov    %esi,%eax
405ad5:	5e                   	pop    %esi
405ad6:	5d                   	pop    %ebp
405ad7:	c3                   	ret
405ad8:	c3                   	ret
405ad9:	c3                   	ret
405ada:	c3                   	ret
405adb:	51                   	push   %ecx
405adc:	6a 00                	push   $0x0
405ade:	ff 15 bc 21 41 00    	call   *0x4121bc
405ae4:	50                   	push   %eax
405ae5:	ff 15 c0 21 41 00    	call   *0x4121c0
405aeb:	c3                   	ret
405aec:	e9 ea ff ff ff       	jmp    0x405adb
405af1:	c3                   	ret
405af2:	68 10 28 41 00       	push   $0x412810
405af7:	ff 15 b8 21 41 00    	call   *0x4121b8
405afd:	68 1c 28 41 00       	push   $0x41281c
405b02:	50                   	push   %eax
405b03:	ff 15 b4 21 41 00    	call   *0x4121b4
405b09:	85 c0                	test   %eax,%eax
405b0b:	74 13                	je     0x405b20
405b0d:	68 10 20 00 00       	push   $0x2010
405b12:	68 50 28 41 00       	push   $0x412850
405b17:	68 60 28 41 00       	push   $0x412860
405b1c:	6a 00                	push   $0x0
405b1e:	ff d0                	call   *%eax
405b20:	6a 01                	push   $0x1
405b22:	ff 15 b0 21 41 00    	call   *0x4121b0