1404ab807:	74 1c                	je     0x1404ab825
1404ab809:	8b 46 10             	mov    0x10(%rsi),%eax
1404ab80c:	ff c0                	inc    %eax
1404ab80e:	89 46 10             	mov    %eax,0x10(%rsi)
1404ab811:	83 f8 01             	cmp    $0x1,%eax
1404ab814:	0f 8e 89 01 00 00    	jle    0x1404ab9a3
1404ab81a:	3d ff ff ff 7f       	cmp    $0x7fffffff,%eax
1404ab81f:	0f 84 73 01 00 00    	je     0x1404ab998
1404ab825:	4c 8d 45 58          	lea    0x58(%rbp),%r8
1404ab829:	41 8b d6             	mov    %r14d,%edx
1404ab82c:	49 8b cf             	mov    %r15,%rcx
1404ab82f:	e8 cc 9b 28 00       	call   0x140735400
1404ab834:	83 e7 fb             	and    $0xfffffffb,%edi
1404ab837:	89 7d 50             	mov    %edi,0x50(%rbp)
1404ab83a:	48 85 f6             	test   %rsi,%rsi
1404ab83d:	74 27                	je     0x1404ab866
1404ab83f:	8b 46 10             	mov    0x10(%rsi),%eax
1404ab842:	ff c8                	dec    %eax
1404ab844:	89 46 10             	mov    %eax,0x10(%rsi)
1404ab847:	85 c0                	test   %eax,%eax
1404ab849:	7f 1b                	jg     0x1404ab866
1404ab84b:	0f 88 e2 00 00 00    	js     0x1404ab933
1404ab851:	48 8b 06             	mov    (%rsi),%rax
1404ab854:	ba 01 00 00 00       	mov    $0x1,%edx
1404ab859:	48 8b ce             	mov    %rsi,%rcx
1404ab85c:	48 8b 00             	mov    (%rax),%rax
1404ab85f:	ff 15 bb 81 ad 00    	call   *0xad81bb(%rip)        # 0x140f83a20
1404ab865:	90                   	nop
1404ab866:	41 ff c6             	inc    %r14d
1404ab869:	49 8b 45 10          	mov    0x10(%r13),%rax
1404ab86d:	48 8b 10             	mov    (%rax),%rdx
1404ab870:	45 8b c6             	mov    %r14d,%r8d
1404ab873:	48 8b 48 08          	mov    0x8(%rax),%rcx
1404ab877:	48 2b ca             	sub    %rdx,%rcx
1404ab87a:	48 d1 f9             	sar    $1,%rcx
1404ab87d:	4c 3b c1             	cmp    %rcx,%r8
1404ab880:	0f 82 8a fe ff ff    	jb     0x1404ab710
1404ab886:	48 8d 45 50          	lea    0x50(%rbp),%rax
1404ab88a:	48 89 45 e0          	mov    %rax,-0x20(%rbp)
1404ab88e:	48 c7 45 d8 00 00 00 	movq   $0x0,-0x28(%rbp)
1404ab895:	00
1404ab896:	4c 89 7d 50          	mov    %r15,0x50(%rbp)
1404ab89a:	41 0f b7 5d 04       	movzwl 0x4(%r13),%ebx
1404ab89f:	41 0f b7 7d 02       	movzwl 0x2(%r13),%edi
1404ab8a4:	41 0f b7 75 00       	movzwl 0x0(%r13),%esi
1404ab8a9:	48 8b 55 48          	mov    0x48(%rbp),%rdx
1404ab8ad:	48 8d 4d d0          	lea    -0x30(%rbp),%rcx
1404ab8b1:	e8 0a ac ff ff       	call   0x1404a64c0
1404ab8b6:	48 8b 08             	mov    (%rax),%rcx
1404ab8b9:	48 c7 00 00 00 00 00 	movq   $0x0,(%rax)
1404ab8c0:	48 89 4d 58          	mov    %rcx,0x58(%rbp)
1404ab8c4:	48 8b 08             	mov    (%rax),%rcx
1404ab8c7:	48 85 c9             	test   %rcx,%rcx
1404ab8ca:	74 20                	je     0x1404ab8ec
1404ab8cc:	8b 41 10             	mov    0x10(%rcx),%eax
1404ab8cf:	ff c8                	dec    %eax
1404ab8d1:	89 41 10             	mov    %eax,0x10(%rcx)
1404ab8d4:	85 c0                	test   %eax,%eax
1404ab8d6:	7f 14                	jg     0x1404ab8ec
1404ab8d8:	78 77                	js     0x1404ab951
1404ab8da:	48 8b 01             	mov    (%rcx),%rax
1404ab8dd:	ba 01 00 00 00       	mov    $0x1,%edx
1404ab8e2:	48 8b 00             	mov    (%rax),%rax
1404ab8e5:	ff 15 35 81 ad 00    	call   *0xad8135(%rip)        # 0x140f83a20
1404ab8eb:	90                   	nop
1404ab8ec:	49 8b 44 24 20       	mov    0x20(%r12),%rax
1404ab8f1:	48 8b 48 20          	mov    0x20(%rax),%rcx
1404ab8f5:	48 8d 45 50          	lea    0x50(%rbp),%rax
1404ab8f9:	48 89 44 24 30       	mov    %rax,0x30(%rsp)
1404ab8fe:	48 89 5c 24 28       	mov    %rbx,0x28(%rsp)
1404ab903:	48 89 7c 24 20       	mov    %rdi,0x20(%rsp)
1404ab908:	4c 8b ce             	mov    %rsi,%r9
1404ab90b:	4c 8d 45 58          	lea    0x58(%rbp),%r8
1404ab90f:	48 8b 51 28          	mov    0x28(%rcx),%rdx
1404ab913:	e8 c8 33 00 00       	call   0x1404aece0
1404ab918:	90                   	nop
1404ab919:	b0 01                	mov    $0x1,%al
1404ab91b:	48 8b 9c 24 b0 00 00 	mov    0xb0(%rsp),%rbx
1404ab922:	00
1404ab923:	48 83 c4 70          	add    $0x70,%rsp
1404ab927:	41 5f                	pop    %r15
1404ab929:	41 5e                	pop    %r14
1404ab92b:	41 5d                	pop    %r13
1404ab92d:	41 5c                	pop    %r12
1404ab92f:	5f                   	pop    %rdi
1404ab930:	5e                   	pop    %rsi
1404ab931:	5d                   	pop    %rbp
1404ab932:	c3                   	ret
1404ab933:	b9 02 00 00 00       	mov    $0x2,%ecx
1404ab938:	e8 c3 ed 2d 00       	call   0x14078a700
1404ab93d:	90                   	nop
1404ab93e:	33 c9                	xor    %ecx,%ecx
1404ab940:	e8 bb ed 2d 00       	call   0x14078a700
1404ab945:	cc                   	int3
1404ab946:	b9 01 00 00 00       	mov    $0x1,%ecx
1404ab94b:	e8 b0 ed 2d 00       	call   0x14078a700
1404ab950:	90                   	nop
1404ab951:	b9 02 00 00 00       	mov    $0x2,%ecx
1404ab956:	e8 a5 ed 2d 00       	call   0x14078a700
1404ab95b:	90                   	nop
1404ab95c:	b9 01 00 00 00       	mov    $0x1,%ecx
1404ab961:	e8 9a ed 2d 00       	call   0x14078a700
1404ab966:	cc                   	int3
1404ab967:	33 c9                	xor    %ecx,%ecx
1404ab969:	e8 92 ed 2d 00       	call   0x14078a700
1404ab96e:	90                   	nop
1404ab96f:	b9 01 00 00 00       	mov    $0x1,%ecx
1404ab974:	e8 87 ed 2d 00       	call   0x14078a700
1404ab979:	cc                   	int3
1404ab97a:	33 c9                	xor    %ecx,%ecx
1404ab97c:	e8 7f ed 2d 00       	call   0x14078a700
1404ab981:	90                   	nop
1404ab982:	b9 02 00 00 00       	mov    $0x2,%ecx
1404ab987:	e8 74 ed 2d 00       	call   0x14078a700
1404ab98c:	90                   	nop
1404ab98d:	b9 02 00 00 00       	mov    $0x2,%ecx
1404ab992:	e8 69 ed 2d 00       	call   0x14078a700
1404ab997:	90                   	nop
1404ab998:	b9 01 00 00 00       	mov    $0x1,%ecx
1404ab99d:	e8 5e ed 2d 00       	call   0x14078a700
1404ab9a2:	cc                   	int3
1404ab9a3:	33 c9                	xor    %ecx,%ecx
1404ab9a5:	e8 56 ed 2d 00       	call   0x14078a700
1404ab9aa:	cc                   	int3
1404ab9ab:	cc                   	int3
1404ab9ac:	cc                   	int3
1404ab9ad:	cc                   	int3
1404ab9ae:	cc                   	int3
1404ab9af:	cc                   	int3
1404ab9b0:	48 89 5c 24 08       	mov    %rbx,0x8(%rsp)
1404ab9b5:	48 89 54 24 10       	mov    %rdx,0x10(%rsp)
1404ab9ba:	55                   	push   %rbp
1404ab9bb:	56                   	push   %rsi
1404ab9bc:	57                   	push   %rdi
1404ab9bd:	41 54                	push   %r12
1404ab9bf:	41 55                	push   %r13
1404ab9c1:	41 56                	push   %r14
1404ab9c3:	41 57                	push   %r15
1404ab9c5:	48 8b ec             	mov    %rsp,%rbp
1404ab9c8:	48 83 ec 60          	sub    $0x60,%rsp
1404ab9cc:	4d 8b e8             	mov    %r8,%r13
1404ab9cf:	4c 8b e1             	mov    %rcx,%r12
1404ab9d2:	c7 45 50 00 00 00 00 	movl   $0x0,0x50(%rbp)
1404ab9d9:	41 f6 00 01          	testb  $0x1,(%r8)
1404ab9dd:	74 59                	je     0x1404aba38
1404ab9df:	48 8b 41 20          	mov    0x20(%rcx),%rax
1404ab9e3:	48 8b 70 20          	mov    0x20(%rax),%rsi
1404ab9e7:	48 8b 06             	mov    (%rsi),%rax
1404ab9ea:	48 8b b8 80 00 00 00 	mov    0x80(%rax),%rdi
1404ab9f1:	48 8d 45 e8          	lea    -0x18(%rbp),%rax
1404ab9f5:	48 89 45 50          	mov    %rax,0x50(%rbp)
1404ab9f9:	48 8d 4d e8          	lea    -0x18(%rbp),%rcx
1404ab9fd:	e8 8e b7 2a 00       	call   0x140757190
1404aba02:	48 8b d8             	mov    %rax,%rbx
1404aba05:	41 0f b6 55 00       	movzbl 0x0(%r13),%edx
1404aba0a:	48 8d 0d 8f 34 b5 00 	lea    0xb5348f(%rip),%rcx        # 0x140ffeea0
1404aba11:	e8 fa be 3b 00       	call   0x140867910
1404aba16:	90                   	nop
1404aba17:	48 89 5c 24 20       	mov    %rbx,0x20(%rsp)
1404aba1c:	45 33 c9             	xor    %r9d,%r9d
1404aba1f:	45 33 c0             	xor    %r8d,%r8d
1404aba22:	48 8b d0             	mov    %rax,%rdx
1404aba25:	48 8b ce             	mov    %rsi,%rcx
1404aba28:	48 8b c7             	mov    %rdi,%rax
1404aba2b:	ff 15 ef 7f ad 00    	call   *0xad7fef(%rip)        # 0x140f83a20
1404aba31:	32 c0                	xor    %al,%al
1404aba33:	e9 92 02 00 00       	jmp    0x1404abcca
1404aba38:	48 8b 0d c9 df f7 00 	mov    0xf7dfc9(%rip),%rcx        # 0x141429a08
1404aba3f:	48 85 c9             	test   %rcx,%rcx
1404aba42:	0f 84 80 02 00 00    	je     0x1404abcc8
1404aba48:	e8 e3 9a 36 00       	call   0x140815530
1404aba4d:	84 c0                	test   %al,%al
1404aba4f:	0f 84 73 02 00 00    	je     0x1404abcc8
1404aba55:	b9 50 00 00 00       	mov    $0x50,%ecx
1404aba5a:	e8 a9 f6 96 00       	call   0x140e1b108
1404aba5f:	4c 8b c0             	mov    %rax,%r8
1404aba62:	48 89 45 58          	mov    %rax,0x58(%rbp)
1404aba66:	48 85 c0             	test   %rax,%rax
1404aba69:	74 3d                	je     0x1404abaa8
1404aba6b:	48 8b 0d 9e 59 f8 00 	mov    0xf8599e(%rip),%rcx        # 0x141431410
1404aba72:	48 89 4d 50          	mov    %rcx,0x50(%rbp)
1404aba76:	48 85 c9             	test   %rcx,%rcx
1404aba79:	74 1c                	je     0x1404aba97
1404aba7b:	8b 41 10             	mov    0x10(%rcx),%eax
1404aba7e:	ff c0                	inc    %eax
1404aba80:	89 41 10             	mov    %eax,0x10(%rcx)
1404aba83:	83 f8 01             	cmp    $0x1,%eax
1404aba86:	0f 8e 61 02 00 00    	jle    0x1404abced
1404aba8c:	3d ff ff ff 7f       	cmp    $0x7fffffff,%eax
1404aba91:	0f 84 5e 02 00 00    	je     0x1404abcf5
1404aba97:	48 8d 55 50          	lea    0x50(%rbp),%rdx
1404aba9b:	49 8b c8             	mov    %r8,%rcx
1404aba9e:	e8 8d 6d 28 00       	call   0x140732830
1404abaa3:	4c 8b f8             	mov    %rax,%r15
1404abaa6:	eb 03                	jmp    0x1404abaab
1404abaa8:	45 33 ff             	xor    %r15d,%r15d
1404abaab:	4c 89 7d d8          	mov    %r15,-0x28(%rbp)
1404abaaf:	bf 08 00 00 00       	mov    $0x8,%edi
1404abab4:	89 7d 50             	mov    %edi,0x50(%rbp)
1404abab7:	45 33 f6             	xor    %r14d,%r14d
1404ababa:	49 8b 45 08          	mov    0x8(%r13),%rax
1404ababe:	48 8b 10             	mov    (%rax),%rdx
1404abac1:	48 8b 48 08          	mov    0x8(%rax),%rcx
1404abac5:	48 2b ca             	sub    %rdx,%rcx
1404abac8:	48 d1 f9             	sar    $1,%rcx
1404abacb:	0f 84 85 01 00 00    	je     0x1404abc56
1404abad1:	45 33 c0             	xor    %r8d,%r8d
1404abad4:	48 8b 5d 50          	mov    0x50(%rbp),%rbx
1404abad8:	0f 1f 84 00 00 00 00 	nopl   0x0(%rax,%rax,1)
1404abadf:	00
1404abae0:	42 0f b7 04 42       	movzwl (%rdx,%r8,2),%eax
1404abae5:	48 8b 0d 8c 73 f8 00 	mov    0xf8738c(%rip),%rcx        # 0x141432e78
1404abaec:	48 83 f8 01          	cmp    $0x1,%rax
1404abaf0:	72 13                	jb     0x1404abb05
1404abaf2:	8b d0                	mov    %eax,%edx
1404abaf4:	48 8d 4d d0          	lea    -0x30(%rbp),%rcx
1404abaf8:	e8 d3 30 29 00       	call   0x14073ebd0
1404abafd:	83 cf 01             	or     $0x1,%edi
1404abb00:	48 8b 30             	mov    (%rax),%rsi
1404abb03:	eb 2c                	jmp    0x1404abb31
1404abb05:	48 8b 5c c1 40       	mov    0x40(%rcx,%rax,8),%rbx
1404abb0a:	48 85 db             	test   %rbx,%rbx
1404abb0d:	74 1c                	je     0x1404abb2b
1404abb0f:	8b 43 10             	mov    0x10(%rbx),%eax
1404abb12:	ff c0                	inc    %eax
1404abb14:	89 43 10             	mov    %eax,0x10(%rbx)
1404abb17:	83 f8 01             	cmp    $0x1,%eax
1404abb1a:	0f 8e f6 01 00 00    	jle    0x1404abd16
1404abb20:	3d ff ff ff 7f       	cmp    $0x7fffffff,%eax
1404abb25:	0f 84 e0 01 00 00    	je     0x1404abd0b
1404abb2b:	83 cf 02             	or     $0x2,%edi
1404abb2e:	48 8b f3             	mov    %rbx,%rsi
1404abb31:	89 7d 50             	mov    %edi,0x50(%rbp)
1404abb34:	48 89 75 e0          	mov    %rsi,-0x20(%rbp)
1404abb38:	48 85 f6             	test   %rsi,%rsi
1404abb3b:	74 1c                	je     0x1404abb59
1404abb3d:	8b 46 10             	mov    0x10(%rsi),%eax
1404abb40:	ff c0                	inc    %eax
1404abb42:	89 46 10             	mov    %eax,0x10(%rsi)
1404abb45:	83 f8 01             	cmp    $0x1,%eax
1404abb48:	0f 8e db 01 00 00    	jle    0x1404abd29
1404abb4e:	3d ff ff ff 7f       	cmp    $0x7fffffff,%eax
1404abb53:	0f 84 c5 01 00 00    	je     0x1404abd1e
1404abb59:	83 cf 04             	or     $0x4,%edi
1404abb5c:	89 7d 50             	mov    %edi,0x50(%rbp)
1404abb5f:	40 f6 c7 02          	test   $0x2,%dil
1404abb63:	74 32                	je     0x1404abb97
1404abb65:	83 e7 fd             	and    $0xfffffffd,%edi
1404abb68:	89 7d 50             	mov    %edi,0x50(%rbp)
1404abb6b:	48 85 db             	test   %rbx,%rbx
1404abb6e:	74 27                	je     0x1404abb97
1404abb70:	8b 43 10             	mov    0x10(%rbx),%eax
1404abb73:	ff c8                	dec    %eax
1404abb75:	89 43 10             	mov    %eax,0x10(%rbx)
1404abb78:	85 c0                	test   %eax,%eax
1404abb7a:	7f 1b                	jg     0x1404abb97
1404abb7c:	0f 88 af 01 00 00    	js     0x1404abd31
1404abb82:	48 8b 03             	mov    (%rbx),%rax
1404abb85:	ba 01 00 00 00       	mov    $0x1,%edx
1404abb8a:	48 8b cb             	mov    %rbx,%rcx
1404abb8d:	48 8b 00             	mov    (%rax),%rax
1404abb90:	ff 15 8a 7e ad 00    	call   *0xad7e8a(%rip)        # 0x140f83a20
1404abb96:	90                   	nop
1404abb97:	40 f6 c7 01          	test   $0x1,%dil
1404abb9b:	74 33                	je     0x1404abbd0
1404abb9d:	83 e7 fe             	and    $0xfffffffe,%edi
1404abba0:	89 7d 50             	mov    %edi,0x50(%rbp)
1404abba3:	48 8b 4d d0          	mov    -0x30(%rbp),%rcx
1404abba7:	48 85 c9             	test   %rcx,%rcx
1404abbaa:	74 24                	je     0x1404abbd0
1404abbac:	8b 41 10             	mov    0x10(%rcx),%eax
1404abbaf:	ff c8                	dec    %eax
1404abbb1:	89 41 10             	mov    %eax,0x10(%rcx)
1404abbb4:	85 c0                	test   %eax,%eax
1404abbb6:	7f 18                	jg     0x1404abbd0
1404abbb8:	0f 88 7e 01 00 00    	js     0x1404abd3c
1404abbbe:	48 8b 01             	mov    (%rcx),%rax
1404abbc1:	ba 01 00 00 00       	mov    $0x1,%edx
1404abbc6:	48 8b 00             	mov    (%rax),%rax
1404abbc9:	ff 15 51 7e ad 00    	call   *0xad7e51(%rip)        # 0x140f83a20
1404abbcf:	90                   	nop
1404abbd0:	48 89 75 58          	mov    %rsi,0x58(%rbp)
1404abbd4:	48 85 f6             	test   %rsi,%rsi
1404abbd7:	74 1c                	je     0x1404abbf5
1404abbd9:	8b 46 10             	mov    0x10(%rsi),%eax
1404abbdc:	ff c0                	inc    %eax
1404abbde:	89 46 10             	mov    %eax,0x10(%rsi)
1404abbe1:	83 f8 01             	cmp    $0x1,%eax
1404abbe4:	0f 8e 68 01 00 00    	jle    0x1404abd52
1404abbea:	3d ff ff ff 7f       	cmp    $0x7fffffff,%eax
1404abbef:	0f 84 52 01 00 00    	je     0x1404abd47
1404abbf5:	4c 8d 45 58          	lea    0x58(%rbp),%r8
1404abbf9:	41 8b d6             	mov    %r14d,%edx
1404abbfc:	49 8b cf             	mov    %r15,%rcx
1404abbff:	e8 fc 97 28 00       	call   0x140735400
1404abc04:	83 e7 fb             	and    $0xfffffffb,%edi
1404abc07:	89 7d 50             	mov    %edi,0x50(%rbp)
1404abc0a:	48 85 f6             	test   %rsi,%rsi
1404abc0d:	74 27                	je     0x1404abc36
1404abc0f:	8b 46 10             	mov    0x10(%rsi),%eax
1404abc12:	ff c8                	dec    %eax
1404abc14:	89 46 10             	mov    %eax,0x10(%rsi)
1404abc17:	85 c0                	test   %eax,%eax
1404abc19:	7f 1b                	jg     0x1404abc36
1404abc1b:	0f 88 c1 00 00 00    	js     0x1404abce2
1404abc21:	48 8b 06             	mov    (%rsi),%rax
1404abc24:	ba 01 00 00 00       	mov    $0x1,%edx
1404abc29:	48 8b ce             	mov    %rsi,%rcx
1404abc2c:	48 8b 00             	mov    (%rax),%rax
1404abc2f:	ff 15 eb 7d ad 00    	call   *0xad7deb(%rip)        # 0x140f83a20
1404abc35:	90                   	nop
1404abc36:	41 ff c6             	inc    %r14d
1404abc39:	49 8b 45 08          	mov    0x8(%r13),%rax
1404abc3d:	48 8b 10             	mov    (%rax),%rdx
1404abc40:	45 8b c6             	mov    %r14d,%r8d
1404abc43:	48 8b 48 08          	mov    0x8(%rax),%rcx
1404abc47:	48 2b ca             	sub    %rdx,%rcx
1404abc4a:	48 d1 f9             	sar    $1,%rcx
1404abc4d:	4c 3b c1             	cmp    %rcx,%r8
1404abc50:	0f 82 8a fe ff ff    	jb     0x1404abae0
1404abc56:	48 8d 45 50          	lea    0x50(%rbp),%rax
1404abc5a:	48 89 45 e0          	mov    %rax,-0x20(%rbp)
1404abc5e:	48 c7 45 d8 00 00 00 	movq   $0x0,-0x28(%rbp)
1404abc65:	00
1404abc66:	4c 89 7d 50          	mov    %r15,0x50(%rbp)
1404abc6a:	48 8b 55 48          	mov    0x48(%rbp),%rdx
1404abc6e:	48 8d 4d d0          	lea    -0x30(%rbp),%rcx
1404abc72:	e8 49 a8 ff ff       	call   0x1404a64c0
1404abc77:	48 8b 08             	mov    (%rax),%rcx
1404abc7a:	48 c7 00 00 00 00 00 	movq   $0x0,(%rax)
1404abc81:	48 89 4d 58          	mov    %rcx,0x58(%rbp)
1404abc85:	48 8b 08             	mov    (%rax),%rcx
1404abc88:	48 85 c9             	test   %rcx,%rcx
1404abc8b:	74 20                	je     0x1404abcad
1404abc8d:	8b 41 10             	mov    0x10(%rcx),%eax
1404abc90:	ff c8                	dec    %eax
1404abc92:	89 41 10             	mov    %eax,0x10(%rcx)
1404abc95:	85 c0                	test   %eax,%eax
1404abc97:	7f 14                	jg     0x1404abcad
1404abc99:	78 65                	js     0x1404abd00
1404abc9b:	48 8b 01             	mov    (%rcx),%rax
1404abc9e:	ba 01 00 00 00       	mov    $0x1,%edx
1404abca3:	48 8b 00             	mov    (%rax),%rax
1404abca6:	ff 15 74 7d ad 00    	call   *0xad7d74(%rip)        # 0x140f83a20
1404abcac:	90                   	nop
1404abcad:	49 8b 44 24 20       	mov    0x20(%r12),%rax
1404abcb2:	48 8b 48 20          	mov    0x20(%rax),%rcx
1404abcb6:	4c 8d 4d 50          	lea    0x50(%rbp),%r9
1404abcba:	4c 8d 45 58          	lea    0x58(%rbp),%r8
1404abcbe:	48 8b 51 28          	mov    0x28(%rcx),%rdx