4537ef:	85 c9                	test   %ecx,%ecx
4537f1:	74 0e                	je     0x453801
4537f3:	53                   	push   %ebx
4537f4:	51                   	push   %ecx
4537f5:	8b 0f                	mov    (%edi),%ecx
4537f7:	8b 49 04             	mov    0x4(%ecx),%ecx
4537fa:	03 cf                	add    %edi,%ecx
4537fc:	e8 36 7e fc ff       	call   0x41b637
453801:	8d 4d c8             	lea    -0x38(%ebp),%ecx
453804:	e8 35 10 fd ff       	call   0x42483e
453809:	8b c7                	mov    %edi,%eax
45380b:	e8 91 cc 03 00       	call   0x4904a1
453810:	c2 04 00             	ret    $0x4
453813:	6a 18                	push   $0x18
453815:	b8 e8 3e 49 00       	mov    $0x493ee8,%eax
45381a:	e8 1d cd 03 00       	call   0x49053c
45381f:	8b f9                	mov    %ecx,%edi
453821:	8b 55 10             	mov    0x10(%ebp),%edx
453824:	8b 4f 04             	mov    0x4(%edi),%ecx
453827:	8b 02                	mov    (%edx),%eax
453829:	89 45 dc             	mov    %eax,-0x24(%ebp)
45382c:	8b 42 04             	mov    0x4(%edx),%eax
45382f:	89 45 e0             	mov    %eax,-0x20(%ebp)
453832:	85 c9                	test   %ecx,%ecx
453834:	75 08                	jne    0x45383e
453836:	33 f6                	xor    %esi,%esi
453838:	8b d6                	mov    %esi,%edx
45383a:	8b de                	mov    %esi,%ebx
45383c:	eb 12                	jmp    0x453850
45383e:	8b 57 0c             	mov    0xc(%edi),%edx
453841:	8b 5f 08             	mov    0x8(%edi),%ebx
453844:	2b d1                	sub    %ecx,%edx
453846:	2b d9                	sub    %ecx,%ebx
453848:	c1 fa 03             	sar    $0x3,%edx
45384b:	c1 fb 03             	sar    $0x3,%ebx
45384e:	33 f6                	xor    %esi,%esi
453850:	b8 ff ff ff 1f       	mov    $0x1fffffff,%eax
453855:	2b c3                	sub    %ebx,%eax
453857:	83 f8 01             	cmp    $0x1,%eax
45385a:	0f 82 7a 01 00 00    	jb     0x4539da
453860:	85 c9                	test   %ecx,%ecx
453862:	75 04                	jne    0x453868
453864:	8b c6                	mov    %esi,%eax
453866:	eb 08                	jmp    0x453870
453868:	8b 47 08             	mov    0x8(%edi),%eax
45386b:	2b c1                	sub    %ecx,%eax
45386d:	c1 f8 03             	sar    $0x3,%eax
453870:	40                   	inc    %eax
453871:	3b d0                	cmp    %eax,%edx
453873:	0f 83 c5 00 00 00    	jae    0x45393e
453879:	8b c2                	mov    %edx,%eax
45387b:	bb ff ff ff 1f       	mov    $0x1fffffff,%ebx
453880:	d1 e8                	shr    $1,%eax
453882:	2b d8                	sub    %eax,%ebx
453884:	03 c2                	add    %edx,%eax
453886:	3b da                	cmp    %edx,%ebx
453888:	1b d2                	sbb    %edx,%edx
45388a:	f7 d2                	not    %edx
45388c:	23 d0                	and    %eax,%edx
45388e:	89 55 ec             	mov    %edx,-0x14(%ebp)
453891:	85 c9                	test   %ecx,%ecx
453893:	75 04                	jne    0x453899
453895:	8b c6                	mov    %esi,%eax
453897:	eb 08                	jmp    0x4538a1
453899:	8b 47 08             	mov    0x8(%edi),%eax
45389c:	2b c1                	sub    %ecx,%eax
45389e:	c1 f8 03             	sar    $0x3,%eax
4538a1:	40                   	inc    %eax
4538a2:	3b d0                	cmp    %eax,%edx
4538a4:	73 16                	jae    0x4538bc
4538a6:	85 c9                	test   %ecx,%ecx
4538a8:	75 04                	jne    0x4538ae
4538aa:	8b c6                	mov    %esi,%eax
4538ac:	eb 08                	jmp    0x4538b6
4538ae:	8b 47 08             	mov    0x8(%edi),%eax
4538b1:	2b c1                	sub    %ecx,%eax
4538b3:	c1 f8 03             	sar    $0x3,%eax
4538b6:	8d 50 01             	lea    0x1(%eax),%edx
4538b9:	89 55 ec             	mov    %edx,-0x14(%ebp)
4538bc:	52                   	push   %edx
4538bd:	e8 a8 a0 fc ff       	call   0x41d96a
4538c2:	8b d8                	mov    %eax,%ebx
4538c4:	89 75 fc             	mov    %esi,-0x4(%ebp)
4538c7:	8b 55 08             	mov    0x8(%ebp),%edx
4538ca:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
4538cd:	ff 75 e4             	push   -0x1c(%ebp)
4538d0:	ff 75 e4             	push   -0x1c(%ebp)
4538d3:	51                   	push   %ecx
4538d4:	8b 4f 04             	mov    0x4(%edi),%ecx
4538d7:	53                   	push   %ebx
4538d8:	e8 1b 11 00 00       	call   0x4549f8
4538dd:	ff 75 e4             	push   -0x1c(%ebp)
4538e0:	33 d2                	xor    %edx,%edx
4538e2:	ff 75 e4             	push   -0x1c(%ebp)
4538e5:	8d 48 08             	lea    0x8(%eax),%ecx
4538e8:	42                   	inc    %edx
4538e9:	51                   	push   %ecx
4538ea:	89 4d e8             	mov    %ecx,-0x18(%ebp)
4538ed:	8d 4d dc             	lea    -0x24(%ebp),%ecx
4538f0:	51                   	push   %ecx
4538f1:	8b c8                	mov    %eax,%ecx
4538f3:	e8 5d 10 00 00       	call   0x454955
4538f8:	ff 75 e4             	push   -0x1c(%ebp)
4538fb:	8b 57 08             	mov    0x8(%edi),%edx
4538fe:	ff 75 e4             	push   -0x1c(%ebp)
453901:	51                   	push   %ecx
453902:	ff 75 e8             	push   -0x18(%ebp)
453905:	8b 4d 08             	mov    0x8(%ebp),%ecx
453908:	e8 eb 10 00 00       	call   0x4549f8
45390d:	8b 47 04             	mov    0x4(%edi),%eax
453910:	85 c0                	test   %eax,%eax
453912:	74 10                	je     0x453924
453914:	8b 77 08             	mov    0x8(%edi),%esi
453917:	2b f0                	sub    %eax,%esi
453919:	50                   	push   %eax
45391a:	c1 fe 03             	sar    $0x3,%esi
45391d:	ff 15 10 74 4a 00    	call   *0x4a7410
453923:	59                   	pop    %ecx
453924:	8b 45 ec             	mov    -0x14(%ebp),%eax
453927:	89 5f 04             	mov    %ebx,0x4(%edi)
45392a:	8d 04 c3             	lea    (%ebx,%eax,8),%eax
45392d:	89 47 0c             	mov    %eax,0xc(%edi)
453930:	8d 46 01             	lea    0x1(%esi),%eax
453933:	8d 04 c3             	lea    (%ebx,%eax,8),%eax
453936:	89 47 08             	mov    %eax,0x8(%edi)
453939:	e9 94 00 00 00       	jmp    0x4539d2
45393e:	8b 5f 08             	mov    0x8(%edi),%ebx
453941:	33 f6                	xor    %esi,%esi
453943:	8b 4d 08             	mov    0x8(%ebp),%ecx
453946:	8b c3                	mov    %ebx,%eax
453948:	ff 75 e4             	push   -0x1c(%ebp)
45394b:	2b c1                	sub    %ecx,%eax
45394d:	46                   	inc    %esi
45394e:	ff 75 e4             	push   -0x1c(%ebp)
453951:	c1 f8 03             	sar    $0x3,%eax
453954:	8b d3                	mov    %ebx,%edx
453956:	51                   	push   %ecx
453957:	3b c6                	cmp    %esi,%eax
453959:	73 3d                	jae    0x453998
45395b:	8d 41 08             	lea    0x8(%ecx),%eax
45395e:	50                   	push   %eax
45395f:	e8 94 10 00 00       	call   0x4549f8
453964:	c7 45 fc 02 00 00 00 	movl   $0x2,-0x4(%ebp)
45396b:	8b 4f 08             	mov    0x8(%edi),%ecx
45396e:	8b c1                	mov    %ecx,%eax
453970:	ff 75 e4             	push   -0x1c(%ebp)
453973:	2b 45 08             	sub    0x8(%ebp),%eax
453976:	ff 75 e4             	push   -0x1c(%ebp)
453979:	c1 f8 03             	sar    $0x3,%eax
45397c:	2b f0                	sub    %eax,%esi
45397e:	8d 45 dc             	lea    -0x24(%ebp),%eax
453981:	51                   	push   %ecx
453982:	50                   	push   %eax
453983:	8b d6                	mov    %esi,%edx
453985:	e8 cb 0f 00 00       	call   0x454955
45398a:	8b 57 08             	mov    0x8(%edi),%edx
45398d:	8b 4d 08             	mov    0x8(%ebp),%ecx
453990:	8d 42 08             	lea    0x8(%edx),%eax
453993:	89 47 08             	mov    %eax,0x8(%edi)
453996:	eb 30                	jmp    0x4539c8
453998:	8d 73 f8             	lea    -0x8(%ebx),%esi
45399b:	53                   	push   %ebx
45399c:	8b ce                	mov    %esi,%ecx
45399e:	e8 55 10 00 00       	call   0x4549f8
4539a3:	8b 4d 08             	mov    0x8(%ebp),%ecx
4539a6:	89 47 08             	mov    %eax,0x8(%edi)
4539a9:	3b f1                	cmp    %ecx,%esi
4539ab:	74 18                	je     0x4539c5
4539ad:	2b de                	sub    %esi,%ebx
4539af:	83 ee 08             	sub    $0x8,%esi
4539b2:	8b 06                	mov    (%esi),%eax
4539b4:	89 04 33             	mov    %eax,(%ebx,%esi,1)
4539b7:	8b 46 04             	mov    0x4(%esi),%eax
4539ba:	89 44 33 04          	mov    %eax,0x4(%ebx,%esi,1)
4539be:	3b f1                	cmp    %ecx,%esi
4539c0:	75 ed                	jne    0x4539af
4539c2:	8b 4d 08             	mov    0x8(%ebp),%ecx
4539c5:	8d 51 08             	lea    0x8(%ecx),%edx
4539c8:	8d 45 dc             	lea    -0x24(%ebp),%eax
4539cb:	50                   	push   %eax
4539cc:	e8 40 0e 00 00       	call   0x454811
4539d1:	59                   	pop    %ecx
4539d2:	e8 ca ca 03 00       	call   0x4904a1
4539d7:	c2 0c 00             	ret    $0xc
4539da:	e8 53 9f fc ff       	call   0x41d932
4539df:	51                   	push   %ecx
4539e0:	ff 75 e4             	push   -0x1c(%ebp)
4539e3:	e8 c7 9f fc ff       	call   0x41d9af
4539e8:	33 f6                	xor    %esi,%esi
4539ea:	56                   	push   %esi
4539eb:	56                   	push   %esi
4539ec:	e8 aa ca 03 00       	call   0x49049b
4539f1:	cc                   	int3
4539f2:	6a 18                	push   $0x18
4539f4:	b8 0c 3f 49 00       	mov    $0x493f0c,%eax
4539f9:	e8 3e cb 03 00       	call   0x49053c
4539fe:	8b f9                	mov    %ecx,%edi
453a00:	89 7d dc             	mov    %edi,-0x24(%ebp)
453a03:	ff 75 10             	push   0x10(%ebp)
453a06:	8d 4d ec             	lea    -0x14(%ebp),%ecx
453a09:	ff 15 18 74 4a 00    	call   *0x4a7418
453a0f:	33 f6                	xor    %esi,%esi
453a11:	89 75 fc             	mov    %esi,-0x4(%ebp)
453a14:	8b 4f 04             	mov    0x4(%edi),%ecx
453a17:	85 c9                	test   %ecx,%ecx
453a19:	75 06                	jne    0x453a21
453a1b:	8b d6                	mov    %esi,%edx
453a1d:	8b de                	mov    %esi,%ebx
453a1f:	eb 10                	jmp    0x453a31
453a21:	8b 57 0c             	mov    0xc(%edi),%edx
453a24:	8b 5f 08             	mov    0x8(%edi),%ebx
453a27:	2b d1                	sub    %ecx,%edx
453a29:	2b d9                	sub    %ecx,%ebx
453a2b:	c1 fa 02             	sar    $0x2,%edx
453a2e:	c1 fb 02             	sar    $0x2,%ebx
453a31:	b8 ff ff ff 3f       	mov    $0x3fffffff,%eax
453a36:	89 45 e8             	mov    %eax,-0x18(%ebp)
453a39:	2b c3                	sub    %ebx,%eax
453a3b:	33 db                	xor    %ebx,%ebx
453a3d:	43                   	inc    %ebx
453a3e:	3b c3                	cmp    %ebx,%eax
453a40:	0f 82 dd 01 00 00    	jb     0x453c23
453a46:	85 c9                	test   %ecx,%ecx
453a48:	75 04                	jne    0x453a4e
453a4a:	8b c6                	mov    %esi,%eax
453a4c:	eb 08                	jmp    0x453a56
453a4e:	8b 47 08             	mov    0x8(%edi),%eax
453a51:	2b c1                	sub    %ecx,%eax
453a53:	c1 f8 02             	sar    $0x2,%eax
453a56:	40                   	inc    %eax
453a57:	3b d0                	cmp    %eax,%edx
453a59:	0f 83 e8 00 00 00    	jae    0x453b47
453a5f:	8b c2                	mov    %edx,%eax
453a61:	d1 e8                	shr    $1,%eax
453a63:	29 45 e8             	sub    %eax,-0x18(%ebp)
453a66:	03 c2                	add    %edx,%eax
453a68:	39 55 e8             	cmp    %edx,-0x18(%ebp)
453a6b:	1b d2                	sbb    %edx,%edx
453a6d:	f7 d2                	not    %edx
453a6f:	23 d0                	and    %eax,%edx
453a71:	89 55 e0             	mov    %edx,-0x20(%ebp)
453a74:	85 c9                	test   %ecx,%ecx
453a76:	75 04                	jne    0x453a7c
453a78:	8b c6                	mov    %esi,%eax
453a7a:	eb 08                	jmp    0x453a84
453a7c:	8b 47 08             	mov    0x8(%edi),%eax
453a7f:	2b c1                	sub    %ecx,%eax
453a81:	c1 f8 02             	sar    $0x2,%eax
453a84:	40                   	inc    %eax
453a85:	3b d0                	cmp    %eax,%edx
453a87:	73 16                	jae    0x453a9f
453a89:	85 c9                	test   %ecx,%ecx
453a8b:	75 04                	jne    0x453a91
453a8d:	8b c6                	mov    %esi,%eax
453a8f:	eb 08                	jmp    0x453a99
453a91:	8b 47 08             	mov    0x8(%edi),%eax
453a94:	2b c1                	sub    %ecx,%eax
453a96:	c1 f8 02             	sar    $0x2,%eax
453a99:	8d 50 01             	lea    0x1(%eax),%edx
453a9c:	89 55 e0             	mov    %edx,-0x20(%ebp)
453a9f:	52                   	push   %edx
453aa0:	e8 57 a5 fc ff       	call   0x41dffc
453aa5:	88 5d fc             	mov    %bl,-0x4(%ebp)
453aa8:	ff 75 dc             	push   -0x24(%ebp)
453aab:	8b 55 08             	mov    0x8(%ebp),%edx
453aae:	ff 75 dc             	push   -0x24(%ebp)
453ab1:	89 45 e4             	mov    %eax,-0x1c(%ebp)
453ab4:	51                   	push   %ecx
453ab5:	8b 4f 04             	mov    0x4(%edi),%ecx
453ab8:	50                   	push   %eax
453ab9:	89 45 e8             	mov    %eax,-0x18(%ebp)
453abc:	e8 77 0f 00 00       	call   0x454a38
453ac1:	8b d3                	mov    %ebx,%edx
453ac3:	89 45 e8             	mov    %eax,-0x18(%ebp)
453ac6:	8d 48 04             	lea    0x4(%eax),%ecx
453ac9:	89 4d dc             	mov    %ecx,-0x24(%ebp)
453acc:	ff 75 dc             	push   -0x24(%ebp)
453acf:	ff 75 dc             	push   -0x24(%ebp)
453ad2:	51                   	push   %ecx
453ad3:	8d 4d ec             	lea    -0x14(%ebp),%ecx
453ad6:	51                   	push   %ecx
453ad7:	8b c8                	mov    %eax,%ecx
453ad9:	e8 9b 0e 00 00       	call   0x454979
453ade:	ff 75 dc             	push   -0x24(%ebp)
453ae1:	8b 45 dc             	mov    -0x24(%ebp),%eax
453ae4:	ff 75 dc             	push   -0x24(%ebp)
453ae7:	8b 57 08             	mov    0x8(%edi),%edx
453aea:	51                   	push   %ecx
453aeb:	8b 4d 08             	mov    0x8(%ebp),%ecx
453aee:	50                   	push   %eax
453aef:	89 45 e8             	mov    %eax,-0x18(%ebp)
453af2:	e8 41 0f 00 00       	call   0x454a38
453af7:	8b 5f 04             	mov    0x4(%edi),%ebx
453afa:	85 db                	test   %ebx,%ebx
453afc:	74 2c                	je     0x453b2a
453afe:	8b 47 08             	mov    0x8(%edi),%eax
453b01:	8b f0                	mov    %eax,%esi
453b03:	2b f3                	sub    %ebx,%esi
453b05:	89 45 dc             	mov    %eax,-0x24(%ebp)
453b08:	c1 fe 02             	sar    $0x2,%esi
453b0b:	3b d8                	cmp    %eax,%ebx
453b0d:	74 13                	je     0x453b22
453b0f:	8b cb                	mov    %ebx,%ecx
453b11:	ff 15 1c 74 4a 00    	call   *0x4a741c
453b17:	83 c3 04             	add    $0x4,%ebx
453b1a:	3b 5d dc             	cmp    -0x24(%ebp),%ebx
453b1d:	75 f0                	jne    0x453b0f
453b1f:	8b 5f 04             	mov    0x4(%edi),%ebx
453b22:	53                   	push   %ebx
453b23:	ff 15 10 74 4a 00    	call   *0x4a7410
453b29:	59                   	pop    %ecx
453b2a:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
453b2d:	8b 45 e0             	mov    -0x20(%ebp),%eax
453b30:	89 4f 04             	mov    %ecx,0x4(%edi)
453b33:	8d 04 81             	lea    (%ecx,%eax,4),%eax
453b36:	89 47 0c             	mov    %eax,0xc(%edi)
453b39:	8d 41 04             	lea    0x4(%ecx),%eax
453b3c:	8d 04 b0             	lea    (%eax,%esi,4),%eax
453b3f:	89 47 08             	mov    %eax,0x8(%edi)
453b42:	e9 cb 00 00 00       	jmp    0x453c12
453b47:	8b 57 08             	mov    0x8(%edi),%edx
453b4a:	8b c2                	mov    %edx,%eax
453b4c:	8b 4d 08             	mov    0x8(%ebp),%ecx
453b4f:	2b c1                	sub    %ecx,%eax
453b51:	ff 75 dc             	push   -0x24(%ebp)
453b54:	c1 f8 02             	sar    $0x2,%eax
453b57:	89 55 e0             	mov    %edx,-0x20(%ebp)
453b5a:	ff 75 dc             	push   -0x24(%ebp)
453b5d:	51                   	push   %ecx
453b5e:	3b c3                	cmp    %ebx,%eax
453b60:	73 6a                	jae    0x453bcc
453b62:	8d 41 04             	lea    0x4(%ecx),%eax
453b65:	50                   	push   %eax
453b66:	e8 cd 0e 00 00       	call   0x454a38
453b6b:	c6 45 fc 03          	movb   $0x3,-0x4(%ebp)
453b6f:	8b 4f 08             	mov    0x8(%edi),%ecx
453b72:	8b c1                	mov    %ecx,%eax
453b74:	ff 75 dc             	push   -0x24(%ebp)
453b77:	2b 45 08             	sub    0x8(%ebp),%eax
453b7a:	ff 75 dc             	push   -0x24(%ebp)
453b7d:	c1 f8 02             	sar    $0x2,%eax
453b80:	2b d8                	sub    %eax,%ebx
453b82:	8d 45 ec             	lea    -0x14(%ebp),%eax
453b85:	51                   	push   %ecx
453b86:	50                   	push   %eax
453b87:	8b d3                	mov    %ebx,%edx
453b89:	e8 eb 0d 00 00       	call   0x454979
453b8e:	89 75 fc             	mov    %esi,-0x4(%ebp)
453b91:	8b 5f 08             	mov    0x8(%edi),%ebx
453b94:	8b 75 08             	mov    0x8(%ebp),%esi