	.section	__TEXT,__text,regular,pure_instructions
	.build_version macos, 13, 0	sdk_version 13, 3
	.section	__TEXT,__literal8,8byte_literals
	.p2align	3                               ## -- Begin function main
LCPI0_0:
	.quad	0x3feb333333333333              ## double 0.84999999999999998
LCPI0_1:
	.quad	0x41d0000000000000              ## double 1073741824
LCPI0_2:
	.quad	0x3fd0000000000000              ## double 0.25
LCPI0_3:
	.quad	0xc131cd8fadf234c7              ## double -1166735.6794770227
LCPI0_4:
	.quad	0x402755afca309a60              ## double 11.667356794770228
LCPI0_5:
	.quad	0x3fc3c467e37c0151              ## double 0.15443132979999999
	.section	__TEXT,__text,regular,pure_instructions
	.globl	_main
	.p2align	4, 0x90
_main:                                  ## @main
	.cfi_startproc
## %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register %rbp
	pushq	%r15
	pushq	%r14
	pushq	%r13
	pushq	%r12
	pushq	%rbx
	subq	$24, %rsp
	.cfi_offset %rbx, -56
	.cfi_offset %r12, -48
	.cfi_offset %r13, -40
	.cfi_offset %r14, -32
	.cfi_offset %r15, -24
	movq	%rsi, %r13
	movl	%edi, %r14d
	movq	_MAX_STRING_LENGTH@GOTPCREL(%rip), %rbx
	movl	(%rbx), %edi
	callq	_malloc
	movq	_vocab_file@GOTPCREL(%rip), %r12
	movl	%eax, (%r12)
	movl	(%rbx), %edi
	callq	_malloc
	movq	_file_head@GOTPCREL(%rip), %r15
	movl	%eax, (%r15)
	cmpl	$1, %r14d
	jne	LBB0_1
## %bb.27:
	leaq	L_str(%rip), %rdi
	callq	_puts
	leaq	L_str.34(%rip), %rdi
	callq	_puts
	leaq	L_str.35(%rip), %rdi
	callq	_puts
	leaq	L_str.36(%rip), %rdi
	callq	_puts
	leaq	L_str.37(%rip), %rdi
	callq	_puts
	leaq	L_str.38(%rip), %rdi
	callq	_puts
	leaq	L_str.39(%rip), %rdi
	callq	_puts
	leaq	L_str.40(%rip), %rdi
	callq	_puts
	leaq	L_str.41(%rip), %rdi
	callq	_puts
	leaq	L_str.42(%rip), %rdi
	callq	_puts
	leaq	L_str.43(%rip), %rdi
	callq	_puts
	leaq	L_str.44(%rip), %rdi
	callq	_puts
	leaq	L_str.45(%rip), %rdi
	callq	_puts
	leaq	L_str.46(%rip), %rdi
	callq	_puts
	leaq	L_str.47(%rip), %rdi
	callq	_puts
	leaq	L_str.48(%rip), %rdi
	callq	_puts
	leaq	L_str.49(%rip), %rdi
	callq	_puts
	leaq	L_str.50(%rip), %rdi
	callq	_puts
	leaq	L_str.51(%rip), %rdi
	callq	_puts
	leaq	L_str.52(%rip), %rdi
	callq	_puts
	leaq	L_str.53(%rip), %rdi
	callq	_puts
	leaq	L_str.54(%rip), %rdi
	callq	_puts
	leaq	L_str.55(%rip), %rdi
	callq	_puts
	xorl	%eax, %eax
	addq	$24, %rsp
	popq	%rbx
	popq	%r12
	popq	%r13
	popq	%r14
	popq	%r15
	popq	%rbp
	retq
LBB0_1:
	leaq	L_.str.23(%rip), %rdi
	movl	%r14d, %esi
	movq	%r13, %rdx
	callq	_find_arg
	testl	%eax, %eax
	jle	LBB0_3
## %bb.2:
	movl	%eax, %eax
	movq	8(%r13,%rax,8), %rdi
	callq	_atoi
	movq	_verbose@GOTPCREL(%rip), %rcx
	movq	%rax, (%rcx)
LBB0_3:
	leaq	L_.str.24(%rip), %rdi
	movl	%r14d, %esi
	movq	%r13, %rdx
	callq	_find_arg
	testl	%eax, %eax
	jle	LBB0_5
## %bb.4:
	movl	%eax, %eax
	movq	8(%r13,%rax,8), %rdi
	callq	_atoi
	movq	_symmetric@GOTPCREL(%rip), %rcx
	movq	%rax, (%rcx)
LBB0_5:
	leaq	L_.str.25(%rip), %rdi
	movl	%r14d, %esi
	movq	%r13, %rdx
	callq	_find_arg
	testl	%eax, %eax
	jle	LBB0_7
## %bb.6:
	movl	%eax, %eax
	movq	8(%r13,%rax,8), %rdi
	callq	_atoi
	movq	_window_size@GOTPCREL(%rip), %rcx
	movq	%rax, (%rcx)
LBB0_7:
	leaq	L_.str.26(%rip), %rdi
	movl	%r14d, %esi
	movq	%r13, %rdx
	callq	_find_arg
	movl	(%r12), %edi
	testl	%eax, %eax
	jle	LBB0_8
## %bb.9:
	movl	%eax, %eax
	movq	8(%r13,%rax,8), %rsi
	jmp	LBB0_10
LBB0_8:
	leaq	L_.str.27(%rip), %rsi
LBB0_10:
	callq	_strcpy
	leaq	L_.str.28(%rip), %rdi
	movl	%r14d, %esi
	movq	%r13, %rdx
	callq	_find_arg
	movl	(%r15), %edi
	testl	%eax, %eax
	jle	LBB0_11
## %bb.12:
	movl	%eax, %eax
	movq	8(%r13,%rax,8), %rsi
	jmp	LBB0_13
LBB0_11:
	leaq	L_.str.29(%rip), %rsi
LBB0_13:
	callq	_strcpy
	leaq	L_.str.30(%rip), %rdi
	movl	%r14d, %esi
	movq	%r13, %rdx
	callq	_find_arg
	testl	%eax, %eax
	jle	LBB0_15
## %bb.14:
	movl	%eax, %eax
	movq	8(%r13,%rax,8), %rdi
	callq	_atof
	movq	_memory_limit@GOTPCREL(%rip), %rcx
	movq	%rax, (%rcx)
LBB0_15:
	leaq	L_.str.31(%rip), %rdi
	movl	%r14d, %esi
	movq	%r13, %rdx
	callq	_find_arg
	testl	%eax, %eax
	jle	LBB0_17
## %bb.16:
	movl	%eax, %eax
	movq	8(%r13,%rax,8), %rdi
	callq	_atoi
	movq	_distance_weighting@GOTPCREL(%rip), %rcx
	movq	%rax, (%rcx)
LBB0_17:
	movq	_memory_limit@GOTPCREL(%rip), %rax
	cvtsi2sdq	(%rax), %xmm1
	mulsd	LCPI0_0(%rip), %xmm1
	mulsd	LCPI0_1(%rip), %xmm1
	mulsd	LCPI0_2(%rip), %xmm1
	movsd	LCPI0_3(%rip), %xmm0            ## xmm0 = mem[0],zero
	movsd	%xmm1, -48(%rbp)                ## 8-byte Spill
	addsd	%xmm1, %xmm0
	callq	_fabs
	testl	%eax, %eax
	jle	LBB0_18
## %bb.19:
	movsd	LCPI0_4(%rip), %xmm1            ## xmm1 = mem[0],zero
	.p2align	4, 0x90
LBB0_20:                                ## =>This Inner Loop Header: Depth=1
	movsd	-48(%rbp), %xmm0                ## 8-byte Reload
                                        ## xmm0 = mem[0],zero
	divsd	%xmm1, %xmm0
	movsd	%xmm0, -56(%rbp)                ## 8-byte Spill
	callq	_log
	addsd	LCPI0_5(%rip), %xmm0
	movsd	%xmm0, -64(%rbp)                ## 8-byte Spill
	movsd	-56(%rbp), %xmm1                ## 8-byte Reload
                                        ## xmm1 = mem[0],zero
	mulsd	%xmm0, %xmm1
	movsd	-48(%rbp), %xmm0                ## 8-byte Reload
                                        ## xmm0 = mem[0],zero
	subsd	%xmm1, %xmm0
	callq	_fabs
	movsd	-64(%rbp), %xmm1                ## 8-byte Reload
                                        ## xmm1 = mem[0],zero
	testl	%eax, %eax
	jg	LBB0_20
## %bb.21:
	cvttsd2si	-56(%rbp), %rcx         ## 8-byte Folded Reload
	jmp	LBB0_22
LBB0_18:
	movl	$100000, %ecx                   ## imm = 0x186A0
LBB0_22:
	movsd	-48(%rbp), %xmm0                ## 8-byte Reload
                                        ## xmm0 = mem[0],zero
	movq	_max_product@GOTPCREL(%rip), %r12
	cvttsd2si	%xmm0, %rax
	movq	%rcx, (%r12)
	movabsq	$3074457345618258603, %rcx      ## imm = 0x2AAAAAAAAAAAAAAB
	imulq	%rcx
	movq	%rdx, %rax
	shrq	$63, %rax
	addq	%rdx, %rax
	movq	_overflow_length@GOTPCREL(%rip), %r15
	movq	%rax, (%r15)
	leaq	L_.str.32(%rip), %rdi
	movl	%r14d, %esi
	movq	%r13, %rdx
	callq	_find_arg
	testl	%eax, %eax
	jle	LBB0_24
## %bb.23:
	movl	%eax, %eax
	movq	8(%r13,%rax,8), %rdi
	callq	_atoll
	movq	%rax, (%r12)
LBB0_24:
	leaq	L_.str.33(%rip), %rdi
	movl	%r14d, %esi
	movq	%r13, %rdx
	callq	_find_arg
	testl	%eax, %eax
	jle	LBB0_26
## %bb.25:
	movl	%eax, %eax
	movq	8(%r13,%rax,8), %rdi
	callq	_atoll
	movq	%rax, (%r15)
LBB0_26:
	xorl	%eax, %eax
	addq	$24, %rsp
	popq	%rbx
	popq	%r12
	popq	%r13
	popq	%r14
	popq	%r15
	popq	%rbp
	jmp	_get_cooccurrence               ## TAILCALL
	.cfi_endproc
                                        ## -- End function
	.comm	_MAX_STRING_LENGTH,4,2          ## @MAX_STRING_LENGTH
	.comm	_vocab_file,4,2                 ## @vocab_file
	.comm	_file_head,4,2                  ## @file_head
	.section	__TEXT,__cstring,cstring_literals
L_.str.23:                              ## @.str.23
	.asciz	"-verbose"

	.comm	_verbose,8,3                    ## @verbose
L_.str.24:                              ## @.str.24
	.asciz	"-symmetric"

	.comm	_symmetric,8,3                  ## @symmetric
L_.str.25:                              ## @.str.25
	.asciz	"-window-size"

	.comm	_window_size,8,3                ## @window_size
L_.str.26:                              ## @.str.26
	.asciz	"-vocab-file"

L_.str.27:                              ## @.str.27
	.asciz	"vocab.txt"

L_.str.28:                              ## @.str.28
	.asciz	"-overflow-file"

L_.str.29:                              ## @.str.29
	.asciz	"overflow"

L_.str.30:                              ## @.str.30
	.asciz	"-memory"

	.comm	_memory_limit,8,3               ## @memory_limit
L_.str.31:                              ## @.str.31
	.asciz	"-distance-weighting"

	.comm	_distance_weighting,8,3         ## @distance_weighting
	.comm	_max_product,8,3                ## @max_product
	.comm	_overflow_length,8,3            ## @overflow_length
L_.str.32:                              ## @.str.32
	.asciz	"-max-product"

L_.str.33:                              ## @.str.33
	.asciz	"-overflow-length"

L_str:                                  ## @str
	.asciz	"Tool to calculate word-word cooccurrence statistics"

L_str.34:                               ## @str.34
	.asciz	"Author: Jeffrey Pennington (jpennin@stanford.edu)\n"

L_str.35:                               ## @str.35
	.asciz	"Usage options:"

L_str.36:                               ## @str.36
	.asciz	"\t-verbose <int>"

L_str.37:                               ## @str.37
	.asciz	"\t\tSet verbosity: 0, 1, 2 (default), or 3"

L_str.38:                               ## @str.38
	.asciz	"\t-symmetric <int>"

L_str.39:                               ## @str.39
	.asciz	"\t\tIf <int> = 0, only use left context; if <int> = 1 (default), use left and right"

L_str.40:                               ## @str.40
	.asciz	"\t-window-size <int>"

L_str.41:                               ## @str.41
	.asciz	"\t\tNumber of context words to the left (and to the right, if symmetric = 1); default 15"

L_str.42:                               ## @str.42
	.asciz	"\t-vocab-file <file>"

L_str.43:                               ## @str.43
	.asciz	"\t\tFile containing vocabulary (truncated unigram counts, produced by 'vocab_count'); default vocab.txt"

L_str.44:                               ## @str.44
	.asciz	"\t-memory <float>"

L_str.45:                               ## @str.45
	.asciz	"\t\tSoft limit for memory consumption, in GB -- based on simple heuristic, so not extremely accurate; default 4.0"

L_str.46:                               ## @str.46
	.asciz	"\t-max-product <int>"

L_str.47:                               ## @str.47
	.asciz	"\t\tLimit the size of dense cooccurrence array by specifying the max product <int> of the frequency counts of the two cooccurring words.\n\t\tThis value overrides that which is automatically produced by '-memory'. Typically only needs adjustment for use with very large corpora."

L_str.48:                               ## @str.48
	.asciz	"\t-overflow-length <int>"

L_str.49:                               ## @str.49
	.asciz	"\t\tLimit to length <int> the sparse overflow array, which buffers cooccurrence data that does not fit in the dense array, before writing to disk. \n\t\tThis value overrides that which is automatically produced by '-memory'. Typically only needs adjustment for use with very large corpora."

L_str.50:                               ## @str.50
	.asciz	"\t-overflow-file <file>"

L_str.51:                               ## @str.51
	.asciz	"\t\tFilename, excluding extension, for temporary files; default overflow"

L_str.52:                               ## @str.52
	.asciz	"\t-distance-weighting <int>"

L_str.53:                               ## @str.53
	.asciz	"\t\tIf <int> = 0, do not weight cooccurrence count by distance between words; if <int> = 1 (default), weight the cooccurrence count by inverse of distance between words"

L_str.54:                               ## @str.54
	.asciz	"\nExample usage:"

L_str.55:                               ## @str.55
	.asciz	"./cooccur -verbose 2 -symmetric 0 -window-size 10 -vocab-file vocab.txt -memory 8.0 -overflow-file tempoverflow < corpus.txt > cooccurrences.bin\n"

.subsections_via_symbols

	.section	__TEXT,__text,regular,pure_instructions
	.build_version macos, 13, 0	sdk_version 13, 3
	.globl	_main                           ; -- Begin function main
	.p2align	2
_main:                                  ; @main
	.cfi_startproc
; %bb.0:
	stp	d11, d10, [sp, #-80]!           ; 16-byte Folded Spill
	.cfi_def_cfa_offset 80
	stp	d9, d8, [sp, #16]               ; 16-byte Folded Spill
	stp	x22, x21, [sp, #32]             ; 16-byte Folded Spill
	stp	x20, x19, [sp, #48]             ; 16-byte Folded Spill
	stp	x29, x30, [sp, #64]             ; 16-byte Folded Spill
	add	x29, sp, #64
	.cfi_def_cfa w29, 16
	.cfi_offset w30, -8
	.cfi_offset w29, -16
	.cfi_offset w19, -24
	.cfi_offset w20, -32
	.cfi_offset w21, -40
	.cfi_offset w22, -48
	.cfi_offset b8, -56
	.cfi_offset b9, -64
	.cfi_offset b10, -72
	.cfi_offset b11, -80
	mov	x19, x1
	mov	x20, x0
Lloh0:
	adrp	x21, _MAX_STRING_LENGTH@GOTPAGE
Lloh1:
	ldr	x21, [x21, _MAX_STRING_LENGTH@GOTPAGEOFF]
	ldr	w0, [x21]
	bl	_malloc
Lloh2:
	adrp	x22, _vocab_file@GOTPAGE
Lloh3:
	ldr	x22, [x22, _vocab_file@GOTPAGEOFF]
	str	w0, [x22]
	ldr	w0, [x21]
	bl	_malloc
Lloh4:
	adrp	x21, _file_head@GOTPAGE
Lloh5:
	ldr	x21, [x21, _file_head@GOTPAGEOFF]
	str	w0, [x21]
	cmp	w20, #1
	b.ne	LBB0_2
; %bb.1:
Lloh6:
	adrp	x0, l_str@PAGE
Lloh7:
	add	x0, x0, l_str@PAGEOFF
	bl	_puts
Lloh8:
	adrp	x0, l_str.34@PAGE
Lloh9:
	add	x0, x0, l_str.34@PAGEOFF
	bl	_puts
Lloh10:
	adrp	x0, l_str.35@PAGE
Lloh11:
	add	x0, x0, l_str.35@PAGEOFF
	bl	_puts
Lloh12:
	adrp	x0, l_str.36@PAGE
Lloh13:
	add	x0, x0, l_str.36@PAGEOFF
	bl	_puts
Lloh14:
	adrp	x0, l_str.37@PAGE
Lloh15:
	add	x0, x0, l_str.37@PAGEOFF
	bl	_puts
Lloh16:
	adrp	x0, l_str.38@PAGE
Lloh17:
	add	x0, x0, l_str.38@PAGEOFF
	bl	_puts
Lloh18:
	adrp	x0, l_str.39@PAGE
Lloh19:
	add	x0, x0, l_str.39@PAGEOFF
	bl	_puts
Lloh20:
	adrp	x0, l_str.40@PAGE
Lloh21:
	add	x0, x0, l_str.40@PAGEOFF
	bl	_puts
Lloh22:
	adrp	x0, l_str.41@PAGE
Lloh23:
	add	x0, x0, l_str.41@PAGEOFF
	bl	_puts
Lloh24:
	adrp	x0, l_str.42@PAGE
Lloh25:
	add	x0, x0, l_str.42@PAGEOFF
	bl	_puts
Lloh26:
	adrp	x0, l_str.43@PAGE
Lloh27:
	add	x0, x0, l_str.43@PAGEOFF
	bl	_puts
Lloh28:
	adrp	x0, l_str.44@PAGE
Lloh29:
	add	x0, x0, l_str.44@PAGEOFF
	bl	_puts
Lloh30:
	adrp	x0, l_str.45@PAGE
Lloh31:
	add	x0, x0, l_str.45@PAGEOFF
	bl	_puts
Lloh32:
	adrp	x0, l_str.46@PAGE
Lloh33:
	add	x0, x0, l_str.46@PAGEOFF
	bl	_puts
Lloh34:
	adrp	x0, l_str.47@PAGE
Lloh35:
	add	x0, x0, l_str.47@PAGEOFF
	bl	_puts
Lloh36:
	adrp	x0, l_str.48@PAGE
Lloh37:
	add	x0, x0, l_str.48@PAGEOFF
	bl	_puts
Lloh38:
	adrp	x0, l_str.49@PAGE
Lloh39:
	add	x0, x0, l_str.49@PAGEOFF
	bl	_puts
Lloh40:
	adrp	x0, l_str.50@PAGE
Lloh41:
	add	x0, x0, l_str.50@PAGEOFF
	bl	_puts
Lloh42:
	adrp	x0, l_str.51@PAGE
Lloh43:
	add	x0, x0, l_str.51@PAGEOFF
	bl	_puts
Lloh44:
	adrp	x0, l_str.52@PAGE
Lloh45:
	add	x0, x0, l_str.52@PAGEOFF
	bl	_puts
Lloh46:
	adrp	x0, l_str.53@PAGE
Lloh47:
	add	x0, x0, l_str.53@PAGEOFF
	bl	_puts
Lloh48:
	adrp	x0, l_str.54@PAGE
Lloh49:
	add	x0, x0, l_str.54@PAGEOFF
	bl	_puts
Lloh50:
	adrp	x0, l_str.55@PAGE
Lloh51:
	add	x0, x0, l_str.55@PAGEOFF
	bl	_puts
	mov	w0, #0
	ldp	x29, x30, [sp, #64]             ; 16-byte Folded Reload
	ldp	x20, x19, [sp, #48]             ; 16-byte Folded Reload
	ldp	x22, x21, [sp, #32]             ; 16-byte Folded Reload
	ldp	d9, d8, [sp, #16]               ; 16-byte Folded Reload
	ldp	d11, d10, [sp], #80             ; 16-byte Folded Reload
	ret
LBB0_2:
Lloh52:
	adrp	x0, l_.str.23@PAGE
Lloh53:
	add	x0, x0, l_.str.23@PAGEOFF
	mov	x1, x20
	mov	x2, x19
	bl	_find_arg
	cmp	w0, #1
	b.lt	LBB0_4
; %bb.3:
	add	w8, w0, #1
	ldr	x0, [x19, w8, uxtw #3]
	bl	_atoi
Lloh54:
	adrp	x8, _verbose@GOTPAGE
Lloh55:
	ldr	x8, [x8, _verbose@GOTPAGEOFF]
Lloh56:
	str	x0, [x8]
LBB0_4:
Lloh57:
	adrp	x0, l_.str.24@PAGE
Lloh58:
	add	x0, x0, l_.str.24@PAGEOFF
	mov	x1, x20
	mov	x2, x19
	bl	_find_arg
	cmp	w0, #1
	b.lt	LBB0_6
; %bb.5:
	add	w8, w0, #1
	ldr	x0, [x19, w8, uxtw #3]
	bl	_atoi
Lloh59:
	adrp	x8, _symmetric@GOTPAGE
Lloh60:
	ldr	x8, [x8, _symmetric@GOTPAGEOFF]
Lloh61:
	str	x0, [x8]
LBB0_6:
Lloh62:
	adrp	x0, l_.str.25@PAGE
Lloh63:
	add	x0, x0, l_.str.25@PAGEOFF
	mov	x1, x20
	mov	x2, x19
	bl	_find_arg
	cmp	w0, #1
	b.lt	LBB0_8
; %bb.7:
	add	w8, w0, #1
	ldr	x0, [x19, w8, uxtw #3]
	bl	_atoi
Lloh64:
	adrp	x8, _window_size@GOTPAGE
Lloh65:
	ldr	x8, [x8, _window_size@GOTPAGEOFF]
Lloh66:
	str	x0, [x8]
LBB0_8:
Lloh67:
	adrp	x0, l_.str.26@PAGE
Lloh68:
	add	x0, x0, l_.str.26@PAGEOFF
	mov	x1, x20
	mov	x2, x19
	bl	_find_arg
	mov	x8, x0
	ldr	w0, [x22]
	cmp	w8, #1
	b.lt	LBB0_10
; %bb.9:
	add	w8, w8, #1
	ldr	x1, [x19, w8, uxtw #3]
	b	LBB0_11
LBB0_10:
Lloh69:
	adrp	x1, l_.str.27@PAGE
Lloh70:
	add	x1, x1, l_.str.27@PAGEOFF
LBB0_11:
	bl	_strcpy
Lloh71:
	adrp	x0, l_.str.28@PAGE
Lloh72:
	add	x0, x0, l_.str.28@PAGEOFF
	mov	x1, x20
	mov	x2, x19
	bl	_find_arg
	mov	x8, x0
	ldr	w0, [x21]
	cmp	w8, #1
	b.lt	LBB0_13
; %bb.12:
	add	w8, w8, #1
	ldr	x1, [x19, w8, uxtw #3]
	b	LBB0_14
LBB0_13:
Lloh73:
	adrp	x1, l_.str.29@PAGE
Lloh74:
	add	x1, x1, l_.str.29@PAGEOFF
LBB0_14:
	bl	_strcpy
Lloh75:
	adrp	x0, l_.str.30@PAGE
Lloh76:
	add	x0, x0, l_.str.30@PAGEOFF
	mov	x1, x20
	mov	x2, x19
	bl	_find_arg
Lloh77:
	adrp	x21, _memory_limit@GOTPAGE
Lloh78:
	ldr	x21, [x21, _memory_limit@GOTPAGEOFF]
	cmp	w0, #1
	b.lt	LBB0_16
; %bb.15:
	add	w8, w0, #1
	ldr	x0, [x19, w8, uxtw #3]
	bl	_atof
	str	x0, [x21]
LBB0_16:
Lloh79:
	adrp	x0, l_.str.31@PAGE
Lloh80:
	add	x0, x0, l_.str.31@PAGEOFF
	mov	x1, x20
	mov	x2, x19
	bl	_find_arg
	cmp	w0, #1
	b.lt	LBB0_18
; %bb.17:
	add	w8, w0, #1
	ldr	x0, [x19, w8, uxtw #3]
	bl	_atoi
Lloh81:
	adrp	x8, _distance_weighting@GOTPAGE
Lloh82:
	ldr	x8, [x8, _distance_weighting@GOTPAGEOFF]
Lloh83:
	str	x0, [x8]
LBB0_18:
	ldr	d0, [x21]
	scvtf	d0, d0
	mov	x8, #3689348814741910323
	movk	x8, #16363, lsl #48
	fmov	d1, x8
	fmul	d0, d0, d1
	mov	x8, #4742290407621132288
	fmov	d1, x8
	fmul	d0, d0, d1
	fmov	d1, #0.25000000
	fmul	d9, d0, d1
	mov	x8, #13511
	movk	x8, #44530, lsl #16
	movk	x8, #52623, lsl #32
	movk	x8, #49457, lsl #48
	fmov	d0, x8
	fadd	d0, d9, d0
	bl	_fabs
	cmp	w0, #1
	b.lt	LBB0_22
; %bb.19:
	mov	x8, #39520
	movk	x8, #51760, lsl #16
	movk	x8, #21935, lsl #32
	movk	x8, #16423, lsl #48
	fmov	d10, x8
	mov	x21, #337
	movk	x21, #58236, lsl #16
	movk	x21, #50279, lsl #32
	movk	x21, #16323, lsl #48
LBB0_20:                                ; =>This Inner Loop Header: Depth=1
	fdiv	d8, d9, d10
	fmov	d0, d8
	bl	_log
	fmov	d1, x21
	fadd	d10, d0, d1
	fmsub	d0, d8, d10, d9
	bl	_fabs
	cmp	w0, #0
	b.gt	LBB0_20
; %bb.21:
	fcvtzs	x8, d8
	b	LBB0_23
LBB0_22:
	mov	w8, #34464
	movk	w8, #1, lsl #16
LBB0_23:
Lloh84:
	adrp	x22, _max_product@GOTPAGE
Lloh85:
	ldr	x22, [x22, _max_product@GOTPAGEOFF]
	str	x8, [x22]
	fcvtzs	x8, d9
	mov	x9, #-6148914691236517206
	movk	x9, #43691
	movk	x9, #10922, lsl #48
	smulh	x8, x8, x9
	add	x8, x8, x8, lsr #63
Lloh86:
	adrp	x21, _overflow_length@GOTPAGE
Lloh87:
	ldr	x21, [x21, _overflow_length@GOTPAGEOFF]
	str	x8, [x21]
Lloh88:
	adrp	x0, l_.str.32@PAGE
Lloh89:
	add	x0, x0, l_.str.32@PAGEOFF
	mov	x1, x20
	mov	x2, x19
	bl	_find_arg
	cmp	w0, #1
	b.lt	LBB0_25
; %bb.24:
	add	w8, w0, #1
	ldr	x0, [x19, w8, uxtw #3]
	bl	_atoll
	str	x0, [x22]
LBB0_25:
Lloh90:
	adrp	x0, l_.str.33@PAGE
Lloh91:
	add	x0, x0, l_.str.33@PAGEOFF
	mov	x1, x20
	mov	x2, x19
	bl	_find_arg
	cmp	w0, #1
	b.lt	LBB0_27
; %bb.26:
	add	w8, w0, #1
	ldr	x0, [x19, w8, uxtw #3]
	bl	_atoll
	str	x0, [x21]
LBB0_27:
	ldp	x29, x30, [sp, #64]             ; 16-byte Folded Reload
	ldp	x20, x19, [sp, #48]             ; 16-byte Folded Reload
	ldp	x22, x21, [sp, #32]             ; 16-byte Folded Reload
	ldp	d9, d8, [sp, #16]               ; 16-byte Folded Reload
	ldp	d11, d10, [sp], #80             ; 16-byte Folded Reload
	b	_get_cooccurrence
	.loh AdrpLdrGot	Lloh4, Lloh5
	.loh AdrpLdrGot	Lloh2, Lloh3
	.loh AdrpLdrGot	Lloh0, Lloh1
	.loh AdrpAdd	Lloh50, Lloh51
	.loh AdrpAdd	Lloh48, Lloh49
	.loh AdrpAdd	Lloh46, Lloh47
	.loh AdrpAdd	Lloh44, Lloh45
	.loh AdrpAdd	Lloh42, Lloh43
	.loh AdrpAdd	Lloh40, Lloh41
	.loh AdrpAdd	Lloh38, Lloh39
	.loh AdrpAdd	Lloh36, Lloh37
	.loh AdrpAdd	Lloh34, Lloh35
	.loh AdrpAdd	Lloh32, Lloh33
	.loh AdrpAdd	Lloh30, Lloh31
	.loh AdrpAdd	Lloh28, Lloh29
	.loh AdrpAdd	Lloh26, Lloh27
	.loh AdrpAdd	Lloh24, Lloh25
	.loh AdrpAdd	Lloh22, Lloh23
	.loh AdrpAdd	Lloh20, Lloh21
	.loh AdrpAdd	Lloh18, Lloh19
	.loh AdrpAdd	Lloh16, Lloh17
	.loh AdrpAdd	Lloh14, Lloh15
	.loh AdrpAdd	Lloh12, Lloh13
	.loh AdrpAdd	Lloh10, Lloh11
	.loh AdrpAdd	Lloh8, Lloh9
	.loh AdrpAdd	Lloh6, Lloh7
	.loh AdrpAdd	Lloh52, Lloh53
	.loh AdrpLdrGotStr	Lloh54, Lloh55, Lloh56
	.loh AdrpAdd	Lloh57, Lloh58
	.loh AdrpLdrGotStr	Lloh59, Lloh60, Lloh61
	.loh AdrpAdd	Lloh62, Lloh63
	.loh AdrpLdrGotStr	Lloh64, Lloh65, Lloh66
	.loh AdrpAdd	Lloh67, Lloh68
	.loh AdrpAdd	Lloh69, Lloh70
	.loh AdrpAdd	Lloh71, Lloh72
	.loh AdrpAdd	Lloh73, Lloh74
	.loh AdrpLdrGot	Lloh77, Lloh78
	.loh AdrpAdd	Lloh75, Lloh76
	.loh AdrpAdd	Lloh79, Lloh80
	.loh AdrpLdrGotStr	Lloh81, Lloh82, Lloh83
	.loh AdrpAdd	Lloh88, Lloh89
	.loh AdrpLdrGot	Lloh86, Lloh87
	.loh AdrpLdrGot	Lloh84, Lloh85
	.loh AdrpAdd	Lloh90, Lloh91
	.cfi_endproc
                                        ; -- End function
	.comm	_MAX_STRING_LENGTH,4,2          ; @MAX_STRING_LENGTH
	.comm	_vocab_file,4,2                 ; @vocab_file
	.comm	_file_head,4,2                  ; @file_head
	.section	__TEXT,__cstring,cstring_literals
l_.str.23:                              ; @.str.23
	.asciz	"-verbose"

	.comm	_verbose,8,3                    ; @verbose
l_.str.24:                              ; @.str.24
	.asciz	"-symmetric"

	.comm	_symmetric,8,3                  ; @symmetric
l_.str.25:                              ; @.str.25
	.asciz	"-window-size"

	.comm	_window_size,8,3                ; @window_size
l_.str.26:                              ; @.str.26
	.asciz	"-vocab-file"

l_.str.27:                              ; @.str.27
	.asciz	"vocab.txt"

l_.str.28:                              ; @.str.28
	.asciz	"-overflow-file"

l_.str.29:                              ; @.str.29
	.asciz	"overflow"

l_.str.30:                              ; @.str.30
	.asciz	"-memory"

	.comm	_memory_limit,8,3               ; @memory_limit
l_.str.31:                              ; @.str.31
	.asciz	"-distance-weighting"

	.comm	_distance_weighting,8,3         ; @distance_weighting
	.comm	_max_product,8,3                ; @max_product
	.comm	_overflow_length,8,3            ; @overflow_length
l_.str.32:                              ; @.str.32
	.asciz	"-max-product"

l_.str.33:                              ; @.str.33
	.asciz	"-overflow-length"

l_str:                                  ; @str
	.asciz	"Tool to calculate word-word cooccurrence statistics"

l_str.34:                               ; @str.34
	.asciz	"Author: Jeffrey Pennington (jpennin@stanford.edu)\n"

l_str.35:                               ; @str.35
	.asciz	"Usage options:"

l_str.36:                               ; @str.36
	.asciz	"\t-verbose <int>"

l_str.37:                               ; @str.37
	.asciz	"\t\tSet verbosity: 0, 1, 2 (default), or 3"

l_str.38:                               ; @str.38
	.asciz	"\t-symmetric <int>"

l_str.39:                               ; @str.39
	.asciz	"\t\tIf <int> = 0, only use left context; if <int> = 1 (default), use left and right"

l_str.40:                               ; @str.40
	.asciz	"\t-window-size <int>"

l_str.41:                               ; @str.41
	.asciz	"\t\tNumber of context words to the left (and to the right, if symmetric = 1); default 15"

l_str.42:                               ; @str.42
	.asciz	"\t-vocab-file <file>"

l_str.43:                               ; @str.43
	.asciz	"\t\tFile containing vocabulary (truncated unigram counts, produced by 'vocab_count'); default vocab.txt"

l_str.44:                               ; @str.44
	.asciz	"\t-memory <float>"

l_str.45:                               ; @str.45
	.asciz	"\t\tSoft limit for memory consumption, in GB -- based on simple heuristic, so not extremely accurate; default 4.0"

l_str.46:                               ; @str.46
	.asciz	"\t-max-product <int>"

l_str.47:                               ; @str.47
	.asciz	"\t\tLimit the size of dense cooccurrence array by specifying the max product <int> of the frequency counts of the two cooccurring words.\n\t\tThis value overrides that which is automatically produced by '-memory'. Typically only needs adjustment for use with very large corpora."

l_str.48:                               ; @str.48
	.asciz	"\t-overflow-length <int>"

l_str.49:                               ; @str.49
	.asciz	"\t\tLimit to length <int> the sparse overflow array, which buffers cooccurrence data that does not fit in the dense array, before writing to disk. \n\t\tThis value overrides that which is automatically produced by '-memory'. Typically only needs adjustment for use with very large corpora."

l_str.50:                               ; @str.50
	.asciz	"\t-overflow-file <file>"

l_str.51:                               ; @str.51
	.asciz	"\t\tFilename, excluding extension, for temporary files; default overflow"

l_str.52:                               ; @str.52
	.asciz	"\t-distance-weighting <int>"

l_str.53:                               ; @str.53
	.asciz	"\t\tIf <int> = 0, do not weight cooccurrence count by distance between words; if <int> = 1 (default), weight the cooccurrence count by inverse of distance between words"

l_str.54:                               ; @str.54
	.asciz	"\nExample usage:"

l_str.55:                               ; @str.55
	.asciz	"./cooccur -verbose 2 -symmetric 0 -window-size 10 -vocab-file vocab.txt -memory 8.0 -overflow-file tempoverflow < corpus.txt > cooccurrences.bin\n"

.subsections_via_symbols
