403988:	01 75 fc             	add    %esi,-0x4(%ebp)
40398b:	29 75 10             	sub    %esi,0x10(%ebp)
40398e:	8d 0c 36             	lea    (%esi,%esi,1),%ecx
403991:	83 c4 10             	add    $0x10,%esp
403994:	03 d9                	add    %ecx,%ebx
403996:	01 08                	add    %ecx,(%eax)
403998:	eb 1b                	jmp    0x4039b5
40399a:	8b 07                	mov    (%edi),%eax
40399c:	8b cf                	mov    %edi,%ecx
40399e:	ff 50 14             	call   *0x14(%eax)
4039a1:	0f b7 c0             	movzwl %ax,%eax
4039a4:	66 3d ff ff          	cmp    $0xffff,%ax
4039a8:	74 11                	je     0x4039bb
4039aa:	66 89 03             	mov    %ax,(%ebx)
4039ad:	43                   	inc    %ebx
4039ae:	43                   	inc    %ebx
4039af:	ff 45 fc             	incl   -0x4(%ebp)
4039b2:	ff 4d 10             	decl   0x10(%ebp)
4039b5:	83 7d 10 00          	cmpl   $0x0,0x10(%ebp)
4039b9:	7f 9c                	jg     0x403957
4039bb:	5e                   	pop    %esi
4039bc:	5b                   	pop    %ebx
4039bd:	8b 45 fc             	mov    -0x4(%ebp),%eax
4039c0:	5f                   	pop    %edi
4039c1:	c9                   	leave
4039c2:	c2 0c 00             	ret    $0xc
4039c5:	55                   	push   %ebp
4039c6:	8b ec                	mov    %esp,%ebp
4039c8:	51                   	push   %ecx
4039c9:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
4039cd:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
4039d1:	57                   	push   %edi
4039d2:	8b f9                	mov    %ecx,%edi
4039d4:	7e 69                	jle    0x403a3f
4039d6:	53                   	push   %ebx
4039d7:	8b 5d 08             	mov    0x8(%ebp),%ebx
4039da:	56                   	push   %esi
4039db:	8b 47 24             	mov    0x24(%edi),%eax
4039de:	83 38 00             	cmpl   $0x0,(%eax)
4039e1:	74 07                	je     0x4039ea
4039e3:	8b 4f 34             	mov    0x34(%edi),%ecx
4039e6:	8b 09                	mov    (%ecx),%ecx
4039e8:	eb 02                	jmp    0x4039ec
4039ea:	33 c9                	xor    %ecx,%ecx
4039ec:	85 c9                	test   %ecx,%ecx
4039ee:	7e 2e                	jle    0x403a1e
4039f0:	39 4d 0c             	cmp    %ecx,0xc(%ebp)
4039f3:	8b f1                	mov    %ecx,%esi
4039f5:	7d 03                	jge    0x4039fa
4039f7:	8b 75 0c             	mov    0xc(%ebp),%esi
4039fa:	56                   	push   %esi
4039fb:	53                   	push   %ebx
4039fc:	51                   	push   %ecx
4039fd:	ff 30                	push   (%eax)
4039ff:	e8 8a fd ff ff       	call   0x40378e
403a04:	8b 47 34             	mov    0x34(%edi),%eax
403a07:	29 30                	sub    %esi,(%eax)
403a09:	8b 47 24             	mov    0x24(%edi),%eax
403a0c:	01 75 fc             	add    %esi,-0x4(%ebp)
403a0f:	29 75 0c             	sub    %esi,0xc(%ebp)
403a12:	8d 0c 36             	lea    (%esi,%esi,1),%ecx
403a15:	83 c4 10             	add    $0x10,%esp
403a18:	03 d9                	add    %ecx,%ebx
403a1a:	01 08                	add    %ecx,(%eax)
403a1c:	eb 19                	jmp    0x403a37
403a1e:	0f b7 03             	movzwl (%ebx),%eax
403a21:	8b 17                	mov    (%edi),%edx
403a23:	50                   	push   %eax
403a24:	8b cf                	mov    %edi,%ecx
403a26:	ff 52 04             	call   *0x4(%edx)
403a29:	66 3d ff ff          	cmp    $0xffff,%ax
403a2d:	74 0e                	je     0x403a3d
403a2f:	43                   	inc    %ebx
403a30:	43                   	inc    %ebx
403a31:	ff 45 fc             	incl   -0x4(%ebp)
403a34:	ff 4d 0c             	decl   0xc(%ebp)
403a37:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
403a3b:	7f 9e                	jg     0x4039db
403a3d:	5e                   	pop    %esi
403a3e:	5b                   	pop    %ebx
403a3f:	8b 45 fc             	mov    -0x4(%ebp),%eax
403a42:	5f                   	pop    %edi
403a43:	c9                   	leave
403a44:	c2 08 00             	ret    $0x8
403a47:	6a 04                	push   $0x4
403a49:	b8 1a 5c 41 00       	mov    $0x415c1a,%eax
403a4e:	e8 98 2d 00 00       	call   0x4067eb
403a53:	8b f1                	mov    %ecx,%esi
403a55:	89 75 f0             	mov    %esi,-0x10(%ebp)
403a58:	8d 4e 04             	lea    0x4(%esi),%ecx
403a5b:	c7 06 04 75 41 00    	movl   $0x417504,(%esi)
403a61:	e8 42 f8 ff ff       	call   0x4032a8
403a66:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
403a6a:	6a 04                	push   $0x4
403a6c:	e8 67 25 00 00       	call   0x405fd8
403a71:	85 c0                	test   %eax,%eax
403a73:	59                   	pop    %ecx
403a74:	74 09                	je     0x403a7f
403a76:	8b c8                	mov    %eax,%ecx
403a78:	e8 04 fb ff ff       	call   0x403581
403a7d:	eb 02                	jmp    0x403a81
403a7f:	33 c0                	xor    %eax,%eax
403a81:	8b ce                	mov    %esi,%ecx
403a83:	89 46 38             	mov    %eax,0x38(%esi)
403a86:	e8 25 fe ff ff       	call   0x4038b0
403a8b:	8b c6                	mov    %esi,%eax
403a8d:	e8 f8 2d 00 00       	call   0x40688a
403a92:	c3                   	ret
403a93:	83 7c 24 08 01       	cmpl   $0x1,0x8(%esp)
403a98:	56                   	push   %esi
403a99:	8b f1                	mov    %ecx,%esi
403a9b:	0f 94 c0             	sete   %al
403a9e:	88 46 48             	mov    %al,0x48(%esi)
403aa1:	c6 46 42 00          	movb   $0x0,0x42(%esi)
403aa5:	e8 06 fe ff ff       	call   0x4038b0
403aaa:	8b 44 24 08          	mov    0x8(%esp),%eax
403aae:	89 46 4c             	mov    %eax,0x4c(%esi)
403ab1:	a1 24 d7 41 00       	mov    0x41d724,%eax
403ab6:	83 66 3c 00          	andl   $0x0,0x3c(%esi)
403aba:	89 46 44             	mov    %eax,0x44(%esi)
403abd:	5e                   	pop    %esi
403abe:	c2 08 00             	ret    $0x8
403ac1:	56                   	push   %esi
403ac2:	8b f1                	mov    %ecx,%esi
403ac4:	6a 00                	push   $0x0
403ac6:	c7 46 18 0f 00 00 00 	movl   $0xf,0x18(%esi)
403acd:	e8 ae e1 ff ff       	call   0x401c80
403ad2:	8b c6                	mov    %esi,%eax
403ad4:	5e                   	pop    %esi
403ad5:	c3                   	ret
403ad6:	56                   	push   %esi
403ad7:	8b f1                	mov    %ecx,%esi
403ad9:	e8 69 ff ff ff       	call   0x403a47
403ade:	6a 00                	push   $0x0
403ae0:	ff 74 24 0c          	push   0xc(%esp)
403ae4:	8b ce                	mov    %esi,%ecx
403ae6:	c7 06 40 75 41 00    	movl   $0x417540,(%esi)
403aec:	e8 a2 ff ff ff       	call   0x403a93
403af1:	8b c6                	mov    %esi,%eax
403af3:	5e                   	pop    %esi
403af4:	c2 04 00             	ret    $0x4
403af7:	c7 01 e4 74 41 00    	movl   $0x4174e4,(%ecx)
403afd:	c3                   	ret
403afe:	ff 74 24 08          	push   0x8(%esp)
403b02:	e8 24 3d 00 00       	call   0x40782b
403b07:	0f b7 c0             	movzwl %ax,%eax
403b0a:	66 3d ff ff          	cmp    $0xffff,%ax
403b0e:	59                   	pop    %ecx
403b0f:	75 03                	jne    0x403b14
403b11:	32 c0                	xor    %al,%al
403b13:	c3                   	ret
403b14:	8b 4c 24 04          	mov    0x4(%esp),%ecx
403b18:	66 89 01             	mov    %ax,(%ecx)
403b1b:	b0 01                	mov    $0x1,%al
403b1d:	c3                   	ret
403b1e:	ff 74 24 08          	push   0x8(%esp)
403b22:	ff 74 24 08          	push   0x8(%esp)
403b26:	e8 51 3f 00 00       	call   0x407a7c
403b2b:	59                   	pop    %ecx
403b2c:	59                   	pop    %ecx
403b2d:	33 c9                	xor    %ecx,%ecx
403b2f:	66 3d ff ff          	cmp    $0xffff,%ax
403b33:	0f 95 c1             	setne  %cl
403b36:	8a c1                	mov    %cl,%al
403b38:	c3                   	ret
403b39:	8b 44 24 04          	mov    0x4(%esp),%eax
403b3d:	0f b7 00             	movzwl (%eax),%eax
403b40:	ff 74 24 08          	push   0x8(%esp)
403b44:	50                   	push   %eax
403b45:	e8 55 41 00 00       	call   0x407c9f
403b4a:	59                   	pop    %ecx
403b4b:	59                   	pop    %ecx
403b4c:	33 c9                	xor    %ecx,%ecx
403b4e:	66 3d ff ff          	cmp    $0xffff,%ax
403b52:	0f 95 c1             	setne  %cl
403b55:	8a c1                	mov    %cl,%al
403b57:	c3                   	ret
403b58:	56                   	push   %esi
403b59:	8b f1                	mov    %ecx,%esi
403b5b:	83 7e 4c 00          	cmpl   $0x0,0x4c(%esi)
403b5f:	74 22                	je     0x403b83
403b61:	8b 06                	mov    (%esi),%eax
403b63:	68 ff ff 00 00       	push   $0xffff
403b68:	ff 50 04             	call   *0x4(%eax)
403b6b:	66 3d ff ff          	cmp    $0xffff,%ax
403b6f:	74 12                	je     0x403b83
403b71:	ff 76 4c             	push   0x4c(%esi)
403b74:	e8 1b 43 00 00       	call   0x407e94
403b79:	85 c0                	test   %eax,%eax
403b7b:	59                   	pop    %ecx
403b7c:	7d 05                	jge    0x403b83
403b7e:	83 c8 ff             	or     $0xffffffff,%eax
403b81:	5e                   	pop    %esi
403b82:	c3                   	ret
403b83:	33 c0                	xor    %eax,%eax
403b85:	5e                   	pop    %esi
403b86:	c3                   	ret
403b87:	55                   	push   %ebp
403b88:	8b ec                	mov    %esp,%ebp
403b8a:	56                   	push   %esi
403b8b:	8b f1                	mov    %ecx,%esi
403b8d:	8b 46 20             	mov    0x20(%esi),%eax
403b90:	8b 00                	mov    (%eax),%eax
403b92:	85 c0                	test   %eax,%eax
403b94:	57                   	push   %edi
403b95:	66 8b 7d 08          	mov    0x8(%ebp),%di
403b99:	74 2f                	je     0x403bca
403b9b:	8b 4e 10             	mov    0x10(%esi),%ecx
403b9e:	39 01                	cmp    %eax,(%ecx)
403ba0:	73 28                	jae    0x403bca
403ba2:	66 81 ff ff ff       	cmp    $0xffff,%di
403ba7:	74 06                	je     0x403baf
403ba9:	66 39 78 fe          	cmp    %di,-0x2(%eax)
403bad:	75 1b                	jne    0x403bca
403baf:	8b 46 30             	mov    0x30(%esi),%eax
403bb2:	ff 00                	incl   (%eax)
403bb4:	8b 76 20             	mov    0x20(%esi),%esi
403bb7:	83 06 fe             	addl   $0xfffffffe,(%esi)
403bba:	66 81 ff ff ff       	cmp    $0xffff,%di
403bbf:	74 05                	je     0x403bc6
403bc1:	0f b7 c7             	movzwl %di,%eax
403bc4:	eb 5e                	jmp    0x403c24
403bc6:	33 c0                	xor    %eax,%eax
403bc8:	eb 5a                	jmp    0x403c24
403bca:	8b 46 4c             	mov    0x4c(%esi),%eax
403bcd:	85 c0                	test   %eax,%eax
403bcf:	74 4f                	je     0x403c20
403bd1:	66 81 ff ff ff       	cmp    $0xffff,%di
403bd6:	74 48                	je     0x403c20
403bd8:	83 7e 3c 00          	cmpl   $0x0,0x3c(%esi)
403bdc:	75 1b                	jne    0x403bf9
403bde:	50                   	push   %eax
403bdf:	0f b7 cf             	movzwl %di,%ecx
403be2:	8d 45 08             	lea    0x8(%ebp),%eax
403be5:	50                   	push   %eax
403be6:	89 4d 08             	mov    %ecx,0x8(%ebp)
403be9:	e8 4b ff ff ff       	call   0x403b39
403bee:	84 c0                	test   %al,%al
403bf0:	59                   	pop    %ecx
403bf1:	59                   	pop    %ecx
403bf2:	74 05                	je     0x403bf9
403bf4:	66 8b c7             	mov    %di,%ax
403bf7:	eb 2b                	jmp    0x403c24
403bf9:	8b 4e 20             	mov    0x20(%esi),%ecx
403bfc:	8d 46 40             	lea    0x40(%esi),%eax
403bff:	39 01                	cmp    %eax,(%ecx)
403c01:	74 1d                	je     0x403c20
403c03:	8b 4e 10             	mov    0x10(%esi),%ecx
403c06:	66 89 38             	mov    %di,(%eax)
403c09:	89 01                	mov    %eax,(%ecx)
403c0b:	8b 4e 20             	mov    0x20(%esi),%ecx
403c0e:	89 01                	mov    %eax,(%ecx)
403c10:	8b ce                	mov    %esi,%ecx
403c12:	2b c8                	sub    %eax,%ecx
403c14:	8b 46 30             	mov    0x30(%esi),%eax
403c17:	83 c1 42             	add    $0x42,%ecx
403c1a:	d1 f9                	sar    $1,%ecx
403c1c:	89 08                	mov    %ecx,(%eax)
403c1e:	eb d4                	jmp    0x403bf4
403c20:	66 0d ff ff          	or     $0xffff,%ax
403c24:	5f                   	pop    %edi
403c25:	5e                   	pop    %esi
403c26:	5d                   	pop    %ebp
403c27:	c2 04 00             	ret    $0x4
403c2a:	56                   	push   %esi
403c2b:	8b f1                	mov    %ecx,%esi
403c2d:	8b 46 20             	mov    0x20(%esi),%eax
403c30:	8b 08                	mov    (%eax),%ecx
403c32:	85 c9                	test   %ecx,%ecx
403c34:	74 13                	je     0x403c49
403c36:	8b 56 30             	mov    0x30(%esi),%edx
403c39:	8b 00                	mov    (%eax),%eax
403c3b:	8b 12                	mov    (%edx),%edx
403c3d:	8d 14 50             	lea    (%eax,%edx,2),%edx
403c40:	3b c2                	cmp    %edx,%eax
403c42:	73 05                	jae    0x403c49
403c44:	66 8b 01             	mov    (%ecx),%ax
403c47:	5e                   	pop    %esi
403c48:	c3                   	ret
403c49:	8b 06                	mov    (%esi),%eax
403c4b:	57                   	push   %edi
403c4c:	8b ce                	mov    %esi,%ecx
403c4e:	ff 50 14             	call   *0x14(%eax)
403c51:	0f b7 f8             	movzwl %ax,%edi
403c54:	b8 ff ff 00 00       	mov    $0xffff,%eax
403c59:	66 3b f8             	cmp    %ax,%di
403c5c:	74 0b                	je     0x403c69
403c5e:	8b 06                	mov    (%esi),%eax
403c60:	57                   	push   %edi
403c61:	8b ce                	mov    %esi,%ecx
403c63:	ff 50 08             	call   *0x8(%eax)
403c66:	66 8b c7             	mov    %di,%ax
403c69:	5f                   	pop    %edi
403c6a:	5e                   	pop    %esi
403c6b:	c3                   	ret
403c6c:	56                   	push   %esi
403c6d:	57                   	push   %edi
403c6e:	8b 7c 24 0c          	mov    0xc(%esp),%edi
403c72:	8b 07                	mov    (%edi),%eax
403c74:	8b f1                	mov    %ecx,%esi
403c76:	8b cf                	mov    %edi,%ecx
403c78:	ff 50 04             	call   *0x4(%eax)
403c7b:	84 c0                	test   %al,%al
403c7d:	74 06                	je     0x403c85
403c7f:	83 66 3c 00          	andl   $0x0,0x3c(%esi)
403c83:	eb 0a                	jmp    0x403c8f
403c85:	8b ce                	mov    %esi,%ecx
403c87:	89 7e 3c             	mov    %edi,0x3c(%esi)
403c8a:	e8 21 fc ff ff       	call   0x4038b0
403c8f:	5f                   	pop    %edi
403c90:	5e                   	pop    %esi
403c91:	c2 04 00             	ret    $0x4
403c94:	56                   	push   %esi
403c95:	8b f1                	mov    %ecx,%esi
403c97:	8b 4e 4c             	mov    0x4c(%esi),%ecx
403c9a:	33 d2                	xor    %edx,%edx
403c9c:	3b ca                	cmp    %edx,%ecx
403c9e:	74 36                	je     0x403cd6
403ca0:	39 54 24 08          	cmp    %edx,0x8(%esp)
403ca4:	8b 44 24 0c          	mov    0xc(%esp),%eax
403ca8:	75 07                	jne    0x403cb1
403caa:	3b c2                	cmp    %edx,%eax
403cac:	75 03                	jne    0x403cb1
403cae:	6a 04                	push   $0x4
403cb0:	5a                   	pop    %edx
403cb1:	03 c0                	add    %eax,%eax
403cb3:	50                   	push   %eax
403cb4:	52                   	push   %edx
403cb5:	ff 74 24 10          	push   0x10(%esp)
403cb9:	51                   	push   %ecx
403cba:	e8 31 42 00 00       	call   0x407ef0
403cbf:	83 c4 10             	add    $0x10,%esp
403cc2:	85 c0                	test   %eax,%eax
403cc4:	75 10                	jne    0x403cd6
403cc6:	6a 01                	push   $0x1
403cc8:	ff 76 4c             	push   0x4c(%esi)
403ccb:	8b ce                	mov    %esi,%ecx
403ccd:	e8 c1 fd ff ff       	call   0x403a93
403cd2:	8b c6                	mov    %esi,%eax
403cd4:	eb 02                	jmp    0x403cd8
403cd6:	33 c0                	xor    %eax,%eax
403cd8:	5e                   	pop    %esi
403cd9:	c2 08 00             	ret    $0x8
403cdc:	83 79 18 10          	cmpl   $0x10,0x18(%ecx)
403ce0:	72 05                	jb     0x403ce7
403ce2:	8b 41 04             	mov    0x4(%ecx),%eax
403ce5:	eb 03                	jmp    0x403cea
403ce7:	8d 41 04             	lea    0x4(%ecx),%eax
403cea:	51                   	push   %ecx
403ceb:	8b 4c 24 08          	mov    0x8(%esp),%ecx