405750:	89 bd d8 de ff ff    	mov    %edi,-0x2128(%ebp)
405756:	e8 39 fe ff ff       	call   0x405594
40575b:	85 c0                	test   %eax,%eax
40575d:	0f 88 f8 03 00 00    	js     0x405b5b
405763:	33 db                	xor    %ebx,%ebx
405765:	8b f3                	mov    %ebx,%esi
405767:	ff 34 f5 98 16 40 00 	push   0x401698(,%esi,8)
40576e:	8d 85 ec df ff ff    	lea    -0x2014(%ebp),%eax
405774:	50                   	push   %eax
405775:	ff 15 d4 60 41 00    	call   *0x4160d4
40577b:	85 c0                	test   %eax,%eax
40577d:	74 10                	je     0x40578f
40577f:	46                   	inc    %esi
405780:	83 fe 04             	cmp    $0x4,%esi
405783:	72 e2                	jb     0x405767
405785:	b8 09 00 02 80       	mov    $0x80020009,%eax
40578a:	e9 cc 03 00 00       	jmp    0x405b5b
40578f:	0f b7 34 f5 9c 16 40 	movzwl 0x40169c(,%esi,8),%esi
405796:	00
405797:	8b cf                	mov    %edi,%ecx
405799:	e8 c9 fd ff ff       	call   0x405567
40579e:	8d 85 ec df ff ff    	lea    -0x2014(%ebp),%eax
4057a4:	8b cf                	mov    %edi,%ecx
4057a6:	50                   	push   %eax
4057a7:	e8 e8 fd ff ff       	call   0x405594
4057ac:	85 c0                	test   %eax,%eax
4057ae:	0f 88 a7 03 00 00    	js     0x405b5b
4057b4:	8b c6                	mov    %esi,%eax
4057b6:	6a 02                	push   $0x2
4057b8:	5f                   	pop    %edi
4057b9:	83 e8 08             	sub    $0x8,%eax
4057bc:	0f 84 36 03 00 00    	je     0x405af8
4057c2:	83 e8 09             	sub    $0x9,%eax
4057c5:	0f 84 b3 01 00 00    	je     0x40597e
4057cb:	2b c7                	sub    %edi,%eax
4057cd:	0f 84 33 01 00 00    	je     0x405906
4057d3:	2d f5 3f 00 00       	sub    $0x3ff5,%eax
4057d8:	0f 85 66 03 00 00    	jne    0x405b44
4057de:	8d 8d ec df ff ff    	lea    -0x2014(%ebp),%ecx
4057e4:	8d 51 02             	lea    0x2(%ecx),%edx
4057e7:	66 8b 01             	mov    (%ecx),%ax
4057ea:	03 cf                	add    %edi,%ecx
4057ec:	66 3b c3             	cmp    %bx,%ax
4057ef:	75 f6                	jne    0x4057e7
4057f1:	2b ca                	sub    %edx,%ecx
4057f3:	89 9d e8 de ff ff    	mov    %ebx,-0x2118(%ebp)
4057f9:	d1 f9                	sar    $1,%ecx
4057fb:	8d 41 02             	lea    0x2(%ecx),%eax
4057fe:	f7 e7                	mul    %edi
405800:	89 5d fc             	mov    %ebx,-0x4(%ebp)
405803:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
405807:	3b d3                	cmp    %ebx,%edx
405809:	0f 87 68 03 00 00    	ja     0x405b77
40580f:	72 09                	jb     0x40581a
405811:	83 f8 ff             	cmp    $0xffffffff,%eax
405814:	0f 87 5d 03 00 00    	ja     0x405b77
40581a:	3d 00 01 00 00       	cmp    $0x100,%eax
40581f:	76 14                	jbe    0x405835
405821:	50                   	push   %eax
405822:	8d 8d e8 de ff ff    	lea    -0x2118(%ebp),%ecx
405828:	e8 dd 31 00 00       	call   0x408a0a
40582d:	8b b5 e8 de ff ff    	mov    -0x2118(%ebp),%esi
405833:	eb 0c                	jmp    0x405841
405835:	8d b5 ec de ff ff    	lea    -0x2114(%ebp),%esi
40583b:	89 b5 e8 de ff ff    	mov    %esi,-0x2118(%ebp)
405841:	89 5d fc             	mov    %ebx,-0x4(%ebp)
405844:	eb 20                	jmp    0x405866
405846:	b8 4c 58 40 00       	mov    $0x40584c,%eax
40584b:	c3                   	ret
40584c:	33 db                	xor    %ebx,%ebx
40584e:	89 5d fc             	mov    %ebx,-0x4(%ebp)
405851:	8b 85 d8 de ff ff    	mov    -0x2128(%ebp),%eax
405857:	8b b5 e8 de ff ff    	mov    -0x2118(%ebp),%esi
40585d:	6a 02                	push   $0x2
40585f:	5f                   	pop    %edi
405860:	89 85 d0 de ff ff    	mov    %eax,-0x2130(%ebp)
405866:	85 f6                	test   %esi,%esi
405868:	74 7b                	je     0x4058e5
40586a:	66 83 bd ec df ff ff 	cmpw   $0x0,-0x2014(%ebp)
405871:	00
405872:	8d 85 ec df ff ff    	lea    -0x2014(%ebp),%eax
405878:	89 85 e4 de ff ff    	mov    %eax,-0x211c(%ebp)
40587e:	74 40                	je     0x4058c0
405880:	50                   	push   %eax
405881:	ff 15 f0 61 41 00    	call   *0x4161f0
405887:	8b c8                	mov    %eax,%ecx
405889:	8b 85 e4 de ff ff    	mov    -0x211c(%ebp),%eax
40588f:	0f b7 10             	movzwl (%eax),%edx
405892:	83 fa 5c             	cmp    $0x5c,%edx
405895:	75 1c                	jne    0x4058b3
405897:	6a 30                	push   $0x30
405899:	58                   	pop    %eax
40589a:	66 39 01             	cmp    %ax,(%ecx)
40589d:	8b 85 e4 de ff ff    	mov    -0x211c(%ebp),%eax
4058a3:	75 0e                	jne    0x4058b3
4058a5:	33 c0                	xor    %eax,%eax
4058a7:	51                   	push   %ecx
4058a8:	66 89 06             	mov    %ax,(%esi)
4058ab:	ff 15 f0 61 41 00    	call   *0x4161f0
4058b1:	eb 05                	jmp    0x4058b8
4058b3:	66 89 16             	mov    %dx,(%esi)
4058b6:	03 c7                	add    %edi,%eax
4058b8:	83 c6 02             	add    $0x2,%esi
4058bb:	66 39 18             	cmp    %bx,(%eax)
4058be:	eb b8                	jmp    0x405878
4058c0:	8b 8d dc de ff ff    	mov    -0x2124(%ebp),%ecx
4058c6:	33 c0                	xor    %eax,%eax
4058c8:	89 06                	mov    %eax,(%esi)
4058ca:	ff b5 e8 de ff ff    	push   -0x2118(%ebp)
4058d0:	ff b5 e0 de ff ff    	push   -0x2120(%ebp)
4058d6:	e8 e7 f4 ff ff       	call   0x404dc2
4058db:	8b b5 e8 de ff ff    	mov    -0x2118(%ebp),%esi
4058e1:	8b f8                	mov    %eax,%edi
4058e3:	eb 03                	jmp    0x4058e8
4058e5:	6a 0e                	push   $0xe
4058e7:	5f                   	pop    %edi
4058e8:	8d 85 ec de ff ff    	lea    -0x2114(%ebp),%eax
4058ee:	3b f0                	cmp    %eax,%esi
4058f0:	0f 84 41 02 00 00    	je     0x405b37
4058f6:	8d 8d e8 de ff ff    	lea    -0x2118(%ebp),%ecx
4058fc:	e8 2e 26 00 00       	call   0x407f2f
405901:	e9 31 02 00 00       	jmp    0x405b37
405906:	8d 85 e4 de ff ff    	lea    -0x211c(%ebp),%eax
40590c:	89 9d e4 de ff ff    	mov    %ebx,-0x211c(%ebp)
405912:	50                   	push   %eax
405913:	53                   	push   %ebx
405914:	53                   	push   %ebx
405915:	8d 85 ec df ff ff    	lea    -0x2014(%ebp),%eax
40591b:	89 9d d8 de ff ff    	mov    %ebx,-0x2128(%ebp)
405921:	50                   	push   %eax
405922:	ff 15 bc 61 41 00    	call   *0x4161bc
405928:	8b f0                	mov    %eax,%esi
40592a:	85 f6                	test   %esi,%esi
40592c:	79 12                	jns    0x405940
40592e:	8d 8d d8 de ff ff    	lea    -0x2128(%ebp),%ecx
405934:	e8 84 1e 00 00       	call   0x4077bd
405939:	8b c6                	mov    %esi,%eax
40593b:	e9 1b 02 00 00       	jmp    0x405b5b
405940:	8b 85 e4 de ff ff    	mov    -0x211c(%ebp),%eax
405946:	6a 04                	push   $0x4
405948:	89 85 d4 de ff ff    	mov    %eax,-0x212c(%ebp)
40594e:	8d 85 d4 de ff ff    	lea    -0x212c(%ebp),%eax
405954:	50                   	push   %eax
405955:	8b 85 dc de ff ff    	mov    -0x2124(%ebp),%eax
40595b:	6a 04                	push   $0x4
40595d:	53                   	push   %ebx
40595e:	ff b5 e0 de ff ff    	push   -0x2120(%ebp)
405964:	ff 30                	push   (%eax)
405966:	ff 15 08 60 41 00    	call   *0x416008
40596c:	8d 8d d8 de ff ff    	lea    -0x2128(%ebp),%ecx
405972:	8b f8                	mov    %eax,%edi
405974:	e8 44 1e 00 00       	call   0x4077bd
405979:	e9 b9 01 00 00       	jmp    0x405b37
40597e:	8d 8d ec df ff ff    	lea    -0x2014(%ebp),%ecx
405984:	8d 51 02             	lea    0x2(%ecx),%edx
405987:	66 8b 01             	mov    (%ecx),%ax
40598a:	03 cf                	add    %edi,%ecx
40598c:	66 3b c3             	cmp    %bx,%ax
40598f:	75 f6                	jne    0x405987
405991:	2b ca                	sub    %edx,%ecx
405993:	d1 f9                	sar    $1,%ecx
405995:	89 8d e4 de ff ff    	mov    %ecx,-0x211c(%ebp)
40599b:	89 8d cc de ff ff    	mov    %ecx,-0x2134(%ebp)
4059a1:	f6 c1 01             	test   $0x1,%cl
4059a4:	0f 85 85 00 00 00    	jne    0x405a2f
4059aa:	8b c1                	mov    %ecx,%eax
4059ac:	89 9d e8 de ff ff    	mov    %ebx,-0x2118(%ebp)
4059b2:	99                   	cltd
4059b3:	2b c2                	sub    %edx,%eax
4059b5:	8b f8                	mov    %eax,%edi
4059b7:	d1 ff                	sar    $1,%edi
4059b9:	89 bd d4 de ff ff    	mov    %edi,-0x212c(%ebp)
4059bf:	c7 45 fc 03 00 00 00 	movl   $0x3,-0x4(%ebp)
4059c6:	c6 45 fc 04          	movb   $0x4,-0x4(%ebp)
4059ca:	81 ff 00 01 00 00    	cmp    $0x100,%edi
4059d0:	76 3c                	jbe    0x405a0e
4059d2:	57                   	push   %edi
4059d3:	8d 8d e8 de ff ff    	lea    -0x2118(%ebp),%ecx
4059d9:	e8 2c 30 00 00       	call   0x408a0a
4059de:	8b 85 e8 de ff ff    	mov    -0x2118(%ebp),%eax
4059e4:	eb 34                	jmp    0x405a1a
4059e6:	b8 ec 59 40 00       	mov    $0x4059ec,%eax
4059eb:	c3                   	ret
4059ec:	8b 8d d8 de ff ff    	mov    -0x2128(%ebp),%ecx
4059f2:	33 db                	xor    %ebx,%ebx
4059f4:	8b b5 cc de ff ff    	mov    -0x2134(%ebp),%esi
4059fa:	8b bd d4 de ff ff    	mov    -0x212c(%ebp),%edi
405a00:	8b 85 e8 de ff ff    	mov    -0x2118(%ebp),%eax
405a06:	89 8d d0 de ff ff    	mov    %ecx,-0x2130(%ebp)
405a0c:	eb 12                	jmp    0x405a20
405a0e:	8d 85 ec de ff ff    	lea    -0x2114(%ebp),%eax
405a14:	89 85 e8 de ff ff    	mov    %eax,-0x2118(%ebp)
405a1a:	8b b5 e4 de ff ff    	mov    -0x211c(%ebp),%esi
405a20:	85 c0                	test   %eax,%eax
405a22:	75 15                	jne    0x405a39
405a24:	8d 8d e8 de ff ff    	lea    -0x2118(%ebp),%ecx
405a2a:	e8 00 25 00 00       	call   0x407f2f
405a2f:	b8 05 40 00 80       	mov    $0x80004005,%eax
405a34:	e9 22 01 00 00       	jmp    0x405b5b
405a39:	57                   	push   %edi
405a3a:	53                   	push   %ebx
405a3b:	50                   	push   %eax
405a3c:	e8 b0 d0 00 00       	call   0x412af1
405a41:	83 c4 0c             	add    $0xc,%esp
405a44:	85 f6                	test   %esi,%esi
405a46:	7e 75                	jle    0x405abd
405a48:	8b fb                	mov    %ebx,%edi
405a4a:	0f b7 8c 7d ec df ff 	movzwl -0x2014(%ebp,%edi,2),%ecx
405a51:	ff
405a52:	8b c7                	mov    %edi,%eax
405a54:	99                   	cltd
405a55:	2b c2                	sub    %edx,%eax
405a57:	8b d1                	mov    %ecx,%edx
405a59:	d1 f8                	sar    $1,%eax
405a5b:	03 85 e8 de ff ff    	add    -0x2118(%ebp),%eax
405a61:	89 85 cc de ff ff    	mov    %eax,-0x2134(%ebp)
405a67:	8b c1                	mov    %ecx,%eax
405a69:	6a 30                	push   $0x30
405a6b:	59                   	pop    %ecx
405a6c:	66 3b c1             	cmp    %cx,%ax
405a6f:	72 28                	jb     0x405a99
405a71:	83 f8 39             	cmp    $0x39,%eax
405a74:	76 1e                	jbe    0x405a94
405a76:	83 f8 40             	cmp    $0x40,%eax
405a79:	76 1e                	jbe    0x405a99
405a7b:	83 f8 46             	cmp    $0x46,%eax
405a7e:	76 0f                	jbe    0x405a8f
405a80:	83 f8 60             	cmp    $0x60,%eax
405a83:	76 14                	jbe    0x405a99
405a85:	83 fa 66             	cmp    $0x66,%edx
405a88:	77 0f                	ja     0x405a99
405a8a:	80 ea 57             	sub    $0x57,%dl
405a8d:	eb 0c                	jmp    0x405a9b
405a8f:	80 ea 37             	sub    $0x37,%dl
405a92:	eb 07                	jmp    0x405a9b
405a94:	80 ea 30             	sub    $0x30,%dl
405a97:	eb 02                	jmp    0x405a9b
405a99:	8a d3                	mov    %bl,%dl
405a9b:	8b c7                	mov    %edi,%eax
405a9d:	83 e0 01             	and    $0x1,%eax
405aa0:	c1 e0 02             	shl    $0x2,%eax
405aa3:	6a 04                	push   $0x4
405aa5:	59                   	pop    %ecx
405aa6:	2b c8                	sub    %eax,%ecx
405aa8:	8b 85 cc de ff ff    	mov    -0x2134(%ebp),%eax
405aae:	d2 e2                	shl    %cl,%dl
405ab0:	08 10                	or     %dl,(%eax)
405ab2:	47                   	inc    %edi
405ab3:	3b fe                	cmp    %esi,%edi
405ab5:	7c 93                	jl     0x405a4a
405ab7:	8b bd d4 de ff ff    	mov    -0x212c(%ebp),%edi
405abd:	8b 85 dc de ff ff    	mov    -0x2124(%ebp),%eax
405ac3:	57                   	push   %edi
405ac4:	ff b5 e8 de ff ff    	push   -0x2118(%ebp)
405aca:	6a 03                	push   $0x3
405acc:	53                   	push   %ebx
405acd:	ff b5 e0 de ff ff    	push   -0x2120(%ebp)
405ad3:	ff 30                	push   (%eax)
405ad5:	ff 15 08 60 41 00    	call   *0x416008
405adb:	8b f8                	mov    %eax,%edi
405add:	8d 85 ec de ff ff    	lea    -0x2114(%ebp),%eax
405ae3:	39 85 e8 de ff ff    	cmp    %eax,-0x2118(%ebp)
405ae9:	74 4c                	je     0x405b37
405aeb:	8d 8d e8 de ff ff    	lea    -0x2118(%ebp),%ecx
405af1:	e8 39 24 00 00       	call   0x407f2f
405af6:	eb 3f                	jmp    0x405b37
405af8:	8d 8d ec df ff ff    	lea    -0x2014(%ebp),%ecx
405afe:	8d 51 02             	lea    0x2(%ecx),%edx
405b01:	66 8b 01             	mov    (%ecx),%ax
405b04:	03 cf                	add    %edi,%ecx
405b06:	66 3b c3             	cmp    %bx,%ax
405b09:	75 f6                	jne    0x405b01
405b0b:	2b ca                	sub    %edx,%ecx
405b0d:	d1 f9                	sar    $1,%ecx
405b0f:	8d 04 4d 02 00 00 00 	lea    0x2(,%ecx,2),%eax
405b16:	50                   	push   %eax
405b17:	8d 85 ec df ff ff    	lea    -0x2014(%ebp),%eax
405b1d:	50                   	push   %eax
405b1e:	8b 85 dc de ff ff    	mov    -0x2124(%ebp),%eax
405b24:	6a 01                	push   $0x1
405b26:	53                   	push   %ebx
405b27:	ff b5 e0 de ff ff    	push   -0x2120(%ebp)
405b2d:	ff 30                	push   (%eax)
405b2f:	ff 15 08 60 41 00    	call   *0x416008
405b35:	8b f8                	mov    %eax,%edi
405b37:	85 ff                	test   %edi,%edi
405b39:	74 09                	je     0x405b44
405b3b:	8b cf                	mov    %edi,%ecx
405b3d:	e8 61 f1 ff ff       	call   0x404ca3
405b42:	eb 17                	jmp    0x405b5b
405b44:	ff b5 c8 de ff ff    	push   -0x2138(%ebp)
405b4a:	8b 8d d0 de ff ff    	mov    -0x2130(%ebp),%ecx
405b50:	e8 3f fa ff ff       	call   0x405594
405b55:	85 c0                	test   %eax,%eax
405b57:	78 02                	js     0x405b5b
405b59:	33 c0                	xor    %eax,%eax
405b5b:	8b 4d f4             	mov    -0xc(%ebp),%ecx
405b5e:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
405b65:	59                   	pop    %ecx
405b66:	5f                   	pop    %edi
405b67:	5e                   	pop    %esi
405b68:	5b                   	pop    %ebx
405b69:	8b 4d ec             	mov    -0x14(%ebp),%ecx
405b6c:	33 cd                	xor    %ebp,%ecx
405b6e:	e8 7d c4 00 00       	call   0x411ff0
405b73:	c9                   	leave
405b74:	c2 0c 00             	ret    $0xc
405b77:	b9 57 00 07 80       	mov    $0x80070057,%ecx
405b7c:	e8 6e f0 ff ff       	call   0x404bef
405b81:	cc                   	int3
405b82:	8b ff                	mov    %edi,%edi
405b84:	55                   	push   %ebp
405b85:	8b ec                	mov    %esp,%ebp
405b87:	56                   	push   %esi
405b88:	be f4 17 40 00       	mov    $0x4017f4,%esi
405b8d:	ff 36                	push   (%esi)
405b8f:	ff 75 08             	push   0x8(%ebp)
405b92:	ff 15 d4 60 41 00    	call   *0x4160d4
405b98:	85 c0                	test   %eax,%eax
405b9a:	74 10                	je     0x405bac
405b9c:	83 c6 04             	add    $0x4,%esi
405b9f:	81 fe 24 18 40 00    	cmp    $0x401824,%esi
405ba5:	7c e6                	jl     0x405b8d
405ba7:	33 c0                	xor    %eax,%eax
405ba9:	40                   	inc    %eax
405baa:	eb 02                	jmp    0x405bae
405bac:	33 c0                	xor    %eax,%eax
405bae:	5e                   	pop    %esi
405baf:	5d                   	pop    %ebp
405bb0:	c2 04 00             	ret    $0x4
405bb3:	8b ff                	mov    %edi,%edi
405bb5:	55                   	push   %ebp
405bb6:	8b ec                	mov    %esp,%ebp
405bb8:	51                   	push   %ecx
405bb9:	33 c9                	xor    %ecx,%ecx
405bbb:	8d 45 fc             	lea    -0x4(%ebp),%eax
405bbe:	51                   	push   %ecx
405bbf:	51                   	push   %ecx
405bc0:	51                   	push   %ecx
405bc1:	51                   	push   %ecx
405bc2:	51                   	push   %ecx
405bc3:	51                   	push   %ecx
405bc4:	51                   	push   %ecx
405bc5:	50                   	push   %eax
405bc6:	51                   	push   %ecx
405bc7:	51                   	push   %ecx
405bc8:	51                   	push   %ecx
405bc9:	ff 75 08             	push   0x8(%ebp)
405bcc:	89 4d fc             	mov    %ecx,-0x4(%ebp)
405bcf:	ff 15 14 60 41 00    	call   *0x416014