43580c:	5b                   	pop    %ebx
43580d:	c9                   	leave
43580e:	c3                   	ret
43580f:	8b ff                	mov    %edi,%edi
435811:	55                   	push   %ebp
435812:	8b ec                	mov    %esp,%ebp
435814:	53                   	push   %ebx
435815:	56                   	push   %esi
435816:	8b 75 08             	mov    0x8(%ebp),%esi
435819:	33 db                	xor    %ebx,%ebx
43581b:	57                   	push   %edi
43581c:	6a 02                	push   $0x2
43581e:	5a                   	pop    %edx
43581f:	8b 0e                	mov    (%esi),%ecx
435821:	8d 79 02             	lea    0x2(%ecx),%edi
435824:	66 8b 01             	mov    (%ecx),%ax
435827:	03 ca                	add    %edx,%ecx
435829:	66 3b c3             	cmp    %bx,%ax
43582c:	75 f6                	jne    0x435824
43582e:	2b cf                	sub    %edi,%ecx
435830:	33 c0                	xor    %eax,%eax
435832:	d1 f9                	sar    $1,%ecx
435834:	83 f9 03             	cmp    $0x3,%ecx
435837:	0f 94 c0             	sete   %al
43583a:	89 46 10             	mov    %eax,0x10(%esi)
43583d:	74 0a                	je     0x435849
43583f:	ff 36                	push   (%esi)
435841:	e8 22 00 00 00       	call   0x435868
435846:	59                   	pop    %ecx
435847:	8b d0                	mov    %eax,%edx
435849:	53                   	push   %ebx
43584a:	53                   	push   %ebx
43584b:	6a 03                	push   $0x3
43584d:	68 90 5b 43 00       	push   $0x435b90
435852:	89 56 0c             	mov    %edx,0xc(%esi)
435855:	e8 6c 96 ff ff       	call   0x42eec6
43585a:	f6 46 08 04          	testb  $0x4,0x8(%esi)
43585e:	75 03                	jne    0x435863
435860:	89 5e 08             	mov    %ebx,0x8(%esi)
435863:	5f                   	pop    %edi
435864:	5e                   	pop    %esi
435865:	5b                   	pop    %ebx
435866:	5d                   	pop    %ebp
435867:	c3                   	ret
435868:	8b ff                	mov    %edi,%edi
43586a:	55                   	push   %ebp
43586b:	8b ec                	mov    %esp,%ebp
43586d:	8b 4d 08             	mov    0x8(%ebp),%ecx
435870:	33 d2                	xor    %edx,%edx
435872:	85 c9                	test   %ecx,%ecx
435874:	75 04                	jne    0x43587a
435876:	33 c0                	xor    %eax,%eax
435878:	5d                   	pop    %ebp
435879:	c3                   	ret
43587a:	0f b7 01             	movzwl (%ecx),%eax
43587d:	83 c1 02             	add    $0x2,%ecx
435880:	66 83 f8 41          	cmp    $0x41,%ax
435884:	72 06                	jb     0x43588c
435886:	66 83 f8 5a          	cmp    $0x5a,%ax
43588a:	76 09                	jbe    0x435895
43588c:	83 c0 9f             	add    $0xffffff9f,%eax
43588f:	66 83 f8 19          	cmp    $0x19,%ax
435893:	77 03                	ja     0x435898
435895:	42                   	inc    %edx
435896:	eb e2                	jmp    0x43587a
435898:	8b c2                	mov    %edx,%eax
43589a:	5d                   	pop    %ebp
43589b:	c3                   	ret
43589c:	cc                   	int3
43589d:	cc                   	int3
43589e:	cc                   	int3
43589f:	cc                   	int3
4358a0:	8b ff                	mov    %edi,%edi
4358a2:	55                   	push   %ebp
4358a3:	8b ec                	mov    %esp,%ebp
4358a5:	81 ec 88 00 00 00    	sub    $0x88,%esp
4358ab:	a1 14 40 45 00       	mov    0x454014,%eax
4358b0:	33 c5                	xor    %ebp,%eax
4358b2:	89 45 fc             	mov    %eax,-0x4(%ebp)
4358b5:	56                   	push   %esi
4358b6:	57                   	push   %edi
4358b7:	8b 7d 08             	mov    0x8(%ebp),%edi
4358ba:	e8 6a 68 ff ff       	call   0x42c129
4358bf:	8b f0                	mov    %eax,%esi
4358c1:	8d 85 7c ff ff ff    	lea    -0x84(%ebp),%eax
4358c7:	6a 40                	push   $0x40
4358c9:	50                   	push   %eax
4358ca:	8b 4e 64             	mov    0x64(%esi),%ecx
4358cd:	f7 d9                	neg    %ecx
4358cf:	1b c9                	sbb    %ecx,%ecx
4358d1:	81 e1 05 f0 ff ff    	and    $0xfffff005,%ecx
4358d7:	81 c1 02 10 00 00    	add    $0x1002,%ecx
4358dd:	51                   	push   %ecx
4358de:	57                   	push   %edi
4358df:	e8 8c 97 ff ff       	call   0x42f070
4358e4:	85 c0                	test   %eax,%eax
4358e6:	75 09                	jne    0x4358f1
4358e8:	21 46 58             	and    %eax,0x58(%esi)
4358eb:	40                   	inc    %eax
4358ec:	e9 47 02 00 00       	jmp    0x435b38
4358f1:	53                   	push   %ebx
4358f2:	8d 85 7c ff ff ff    	lea    -0x84(%ebp),%eax
4358f8:	50                   	push   %eax
4358f9:	ff 76 54             	push   0x54(%esi)
4358fc:	e8 7f 26 ff ff       	call   0x427f80
435901:	33 db                	xor    %ebx,%ebx
435903:	89 9d 78 ff ff ff    	mov    %ebx,-0x88(%ebp)
435909:	59                   	pop    %ecx
43590a:	59                   	pop    %ecx
43590b:	85 c0                	test   %eax,%eax
43590d:	0f 85 e0 00 00 00    	jne    0x4359f3
435913:	6a 40                	push   $0x40
435915:	8d 85 7c ff ff ff    	lea    -0x84(%ebp),%eax
43591b:	50                   	push   %eax
43591c:	8b 46 60             	mov    0x60(%esi),%eax
43591f:	f7 d8                	neg    %eax
435921:	1b c0                	sbb    %eax,%eax
435923:	25 02 f0 ff ff       	and    $0xfffff002,%eax
435928:	05 01 10 00 00       	add    $0x1001,%eax
43592d:	50                   	push   %eax
43592e:	57                   	push   %edi
43592f:	e8 3c 97 ff ff       	call   0x42f070
435934:	85 c0                	test   %eax,%eax
435936:	75 08                	jne    0x435940
435938:	21 5e 58             	and    %ebx,0x58(%esi)
43593b:	e9 ef 00 00 00       	jmp    0x435a2f
435940:	8d 85 7c ff ff ff    	lea    -0x84(%ebp),%eax
435946:	50                   	push   %eax
435947:	ff 76 50             	push   0x50(%esi)
43594a:	e8 31 26 ff ff       	call   0x427f80
43594f:	59                   	pop    %ecx
435950:	59                   	pop    %ecx
435951:	8b 4e 58             	mov    0x58(%esi),%ecx
435954:	85 c0                	test   %eax,%eax
435956:	75 1b                	jne    0x435973
435958:	81 c9 04 03 00 00    	or     $0x304,%ecx
43595e:	89 4e 58             	mov    %ecx,0x58(%esi)
435961:	8b cf                	mov    %edi,%ecx
435963:	8d 51 02             	lea    0x2(%ecx),%edx
435966:	66 8b 01             	mov    (%ecx),%ax
435969:	83 c1 02             	add    $0x2,%ecx
43596c:	66 3b c3             	cmp    %bx,%ax
43596f:	75 f5                	jne    0x435966
435971:	eb 5e                	jmp    0x4359d1
435973:	f6 c1 02             	test   $0x2,%cl
435976:	75 7b                	jne    0x4359f3
435978:	39 5e 5c             	cmp    %ebx,0x5c(%esi)
43597b:	74 2f                	je     0x4359ac
43597d:	ff 76 5c             	push   0x5c(%esi)
435980:	8d 85 7c ff ff ff    	lea    -0x84(%ebp),%eax
435986:	50                   	push   %eax
435987:	ff 76 50             	push   0x50(%esi)
43598a:	e8 41 27 ff ff       	call   0x4280d0
43598f:	83 c4 0c             	add    $0xc,%esp
435992:	85 c0                	test   %eax,%eax
435994:	75 16                	jne    0x4359ac
435996:	83 4e 58 02          	orl    $0x2,0x58(%esi)
43599a:	8b cf                	mov    %edi,%ecx
43599c:	8d 51 02             	lea    0x2(%ecx),%edx
43599f:	66 8b 01             	mov    (%ecx),%ax
4359a2:	83 c1 02             	add    $0x2,%ecx
4359a5:	66 3b c3             	cmp    %bx,%ax
4359a8:	75 f5                	jne    0x43599f
4359aa:	eb 25                	jmp    0x4359d1
4359ac:	f6 46 58 01          	testb  $0x1,0x58(%esi)
4359b0:	75 41                	jne    0x4359f3
4359b2:	57                   	push   %edi
4359b3:	e8 87 03 00 00       	call   0x435d3f
4359b8:	59                   	pop    %ecx
4359b9:	85 c0                	test   %eax,%eax
4359bb:	74 36                	je     0x4359f3
4359bd:	83 4e 58 01          	orl    $0x1,0x58(%esi)
4359c1:	8b cf                	mov    %edi,%ecx
4359c3:	8d 51 02             	lea    0x2(%ecx),%edx
4359c6:	66 8b 01             	mov    (%ecx),%ax
4359c9:	83 c1 02             	add    $0x2,%ecx
4359cc:	66 3b c3             	cmp    %bx,%ax
4359cf:	75 f5                	jne    0x4359c6
4359d1:	2b ca                	sub    %edx,%ecx
4359d3:	d1 f9                	sar    $1,%ecx
4359d5:	8d 41 01             	lea    0x1(%ecx),%eax
4359d8:	50                   	push   %eax
4359d9:	57                   	push   %edi
4359da:	8d 86 a0 02 00 00    	lea    0x2a0(%esi),%eax
4359e0:	6a 55                	push   $0x55
4359e2:	50                   	push   %eax
4359e3:	e8 c0 23 ff ff       	call   0x427da8
4359e8:	83 c4 10             	add    $0x10,%esp
4359eb:	85 c0                	test   %eax,%eax
4359ed:	0f 85 83 01 00 00    	jne    0x435b76
4359f3:	8b 46 58             	mov    0x58(%esi),%eax
4359f6:	b9 00 03 00 00       	mov    $0x300,%ecx
4359fb:	23 c1                	and    %ecx,%eax
4359fd:	3b c1                	cmp    %ecx,%eax
4359ff:	0f 84 27 01 00 00    	je     0x435b2c
435a05:	8b 4e 60             	mov    0x60(%esi),%ecx
435a08:	8d 85 7c ff ff ff    	lea    -0x84(%ebp),%eax
435a0e:	f7 d9                	neg    %ecx
435a10:	6a 40                	push   $0x40
435a12:	1b c9                	sbb    %ecx,%ecx
435a14:	81 e1 02 f0 ff ff    	and    $0xfffff002,%ecx
435a1a:	50                   	push   %eax
435a1b:	81 c1 01 10 00 00    	add    $0x1001,%ecx
435a21:	51                   	push   %ecx
435a22:	57                   	push   %edi
435a23:	e8 48 96 ff ff       	call   0x42f070
435a28:	85 c0                	test   %eax,%eax
435a2a:	75 0b                	jne    0x435a37
435a2c:	89 5e 58             	mov    %ebx,0x58(%esi)
435a2f:	33 c0                	xor    %eax,%eax
435a31:	40                   	inc    %eax
435a32:	e9 00 01 00 00       	jmp    0x435b37
435a37:	8d 85 7c ff ff ff    	lea    -0x84(%ebp),%eax
435a3d:	50                   	push   %eax
435a3e:	ff 76 50             	push   0x50(%esi)
435a41:	e8 3a 25 ff ff       	call   0x427f80
435a46:	59                   	pop    %ecx
435a47:	59                   	pop    %ecx
435a48:	85 c0                	test   %eax,%eax
435a4a:	0f 85 dc 00 00 00    	jne    0x435b2c
435a50:	8b 4e 58             	mov    0x58(%esi),%ecx
435a53:	81 c9 00 02 00 00    	or     $0x200,%ecx
435a59:	89 4e 58             	mov    %ecx,0x58(%esi)
435a5c:	39 5e 60             	cmp    %ebx,0x60(%esi)
435a5f:	74 31                	je     0x435a92
435a61:	81 c9 00 01 00 00    	or     $0x100,%ecx
435a67:	8d 96 a0 02 00 00    	lea    0x2a0(%esi),%edx
435a6d:	89 4e 58             	mov    %ecx,0x58(%esi)
435a70:	66 39 1a             	cmp    %bx,(%edx)
435a73:	0f 85 b3 00 00 00    	jne    0x435b2c
435a79:	8b cf                	mov    %edi,%ecx
435a7b:	8d 59 02             	lea    0x2(%ecx),%ebx
435a7e:	66 8b 01             	mov    (%ecx),%ax
435a81:	83 c1 02             	add    $0x2,%ecx
435a84:	66 3b 85 78 ff ff ff 	cmp    -0x88(%ebp),%ax
435a8b:	75 f1                	jne    0x435a7e
435a8d:	e9 82 00 00 00       	jmp    0x435b14
435a92:	39 5e 5c             	cmp    %ebx,0x5c(%esi)
435a95:	0f 84 af 00 00 00    	je     0x435b4a
435a9b:	8b 56 50             	mov    0x50(%esi),%edx
435a9e:	8d 5a 02             	lea    0x2(%edx),%ebx
435aa1:	66 8b 02             	mov    (%edx),%ax
435aa4:	83 c2 02             	add    $0x2,%edx
435aa7:	66 3b 85 78 ff ff ff 	cmp    -0x88(%ebp),%ax
435aae:	75 f1                	jne    0x435aa1
435ab0:	2b d3                	sub    %ebx,%edx
435ab2:	d1 fa                	sar    $1,%edx
435ab4:	3b 56 5c             	cmp    0x5c(%esi),%edx
435ab7:	0f 85 8b 00 00 00    	jne    0x435b48
435abd:	57                   	push   %edi
435abe:	e8 7c 02 00 00       	call   0x435d3f
435ac3:	59                   	pop    %ecx
435ac4:	85 c0                	test   %eax,%eax
435ac6:	75 24                	jne    0x435aec
435ac8:	8b 5e 50             	mov    0x50(%esi),%ebx
435acb:	33 d2                	xor    %edx,%edx
435acd:	8d 4b 02             	lea    0x2(%ebx),%ecx
435ad0:	66 8b 03             	mov    (%ebx),%ax
435ad3:	83 c3 02             	add    $0x2,%ebx
435ad6:	66 3b c2             	cmp    %dx,%ax
435ad9:	75 f5                	jne    0x435ad0
435adb:	ff 76 50             	push   0x50(%esi)
435ade:	2b d9                	sub    %ecx,%ebx
435ae0:	d1 fb                	sar    $1,%ebx
435ae2:	e8 81 fd ff ff       	call   0x435868
435ae7:	59                   	pop    %ecx
435ae8:	3b c3                	cmp    %ebx,%eax
435aea:	74 40                	je     0x435b2c
435aec:	81 4e 58 00 01 00 00 	orl    $0x100,0x58(%esi)
435af3:	8d 96 a0 02 00 00    	lea    0x2a0(%esi),%edx
435af9:	33 c0                	xor    %eax,%eax
435afb:	66 39 02             	cmp    %ax,(%edx)
435afe:	75 2c                	jne    0x435b2c
435b00:	8b cf                	mov    %edi,%ecx
435b02:	8d 59 02             	lea    0x2(%ecx),%ebx
435b05:	66 8b 01             	mov    (%ecx),%ax
435b08:	83 c1 02             	add    $0x2,%ecx
435b0b:	66 3b 85 78 ff ff ff 	cmp    -0x88(%ebp),%ax
435b12:	75 f1                	jne    0x435b05
435b14:	2b cb                	sub    %ebx,%ecx
435b16:	d1 f9                	sar    $1,%ecx
435b18:	8d 41 01             	lea    0x1(%ecx),%eax
435b1b:	50                   	push   %eax
435b1c:	57                   	push   %edi
435b1d:	6a 55                	push   $0x55
435b1f:	52                   	push   %edx
435b20:	e8 83 22 ff ff       	call   0x427da8
435b25:	83 c4 10             	add    $0x10,%esp
435b28:	85 c0                	test   %eax,%eax
435b2a:	75 48                	jne    0x435b74
435b2c:	8b 46 58             	mov    0x58(%esi),%eax
435b2f:	c1 e8 02             	shr    $0x2,%eax
435b32:	f7 d0                	not    %eax
435b34:	83 e0 01             	and    $0x1,%eax
435b37:	5b                   	pop    %ebx
435b38:	8b 4d fc             	mov    -0x4(%ebp),%ecx
435b3b:	5f                   	pop    %edi
435b3c:	33 cd                	xor    %ebp,%ecx
435b3e:	5e                   	pop    %esi
435b3f:	e8 8c 5d fe ff       	call   0x41b8d0
435b44:	c9                   	leave
435b45:	c2 0c 00             	ret    $0xc
435b48:	33 db                	xor    %ebx,%ebx
435b4a:	81 c9 00 01 00 00    	or     $0x100,%ecx
435b50:	8d 96 a0 02 00 00    	lea    0x2a0(%esi),%edx
435b56:	89 4e 58             	mov    %ecx,0x58(%esi)
435b59:	66 39 1a             	cmp    %bx,(%edx)
435b5c:	75 ce                	jne    0x435b2c
435b5e:	8b cf                	mov    %edi,%ecx
435b60:	8d 59 02             	lea    0x2(%ecx),%ebx
435b63:	66 8b 01             	mov    (%ecx),%ax
435b66:	83 c1 02             	add    $0x2,%ecx
435b69:	66 3b 85 78 ff ff ff 	cmp    -0x88(%ebp),%ax
435b70:	75 f1                	jne    0x435b63
435b72:	eb a0                	jmp    0x435b14
435b74:	33 db                	xor    %ebx,%ebx
435b76:	53                   	push   %ebx
435b77:	53                   	push   %ebx
435b78:	53                   	push   %ebx
435b79:	53                   	push   %ebx
435b7a:	53                   	push   %ebx
435b7b:	e8 1c af fe ff       	call   0x420a9c
435b80:	cc                   	int3
435b81:	cc                   	int3
435b82:	cc                   	int3
435b83:	cc                   	int3
435b84:	cc                   	int3
435b85:	cc                   	int3
435b86:	cc                   	int3
435b87:	cc                   	int3
435b88:	cc                   	int3
435b89:	cc                   	int3
435b8a:	cc                   	int3
435b8b:	cc                   	int3
435b8c:	cc                   	int3
435b8d:	cc                   	int3
435b8e:	cc                   	int3
435b8f:	cc                   	int3
435b90:	8b ff                	mov    %edi,%edi
435b92:	55                   	push   %ebp
435b93:	8b ec                	mov    %esp,%ebp
435b95:	81 ec f4 00 00 00    	sub    $0xf4,%esp
435b9b:	a1 14 40 45 00       	mov    0x454014,%eax
435ba0:	33 c5                	xor    %ebp,%eax
435ba2:	89 45 fc             	mov    %eax,-0x4(%ebp)
435ba5:	56                   	push   %esi
435ba6:	57                   	push   %edi
435ba7:	8b 7d 08             	mov    0x8(%ebp),%edi
435baa:	e8 7a 65 ff ff       	call   0x42c129
435baf:	8b f0                	mov    %eax,%esi