Re: BUG #16696: Backend crash in llvmjit

Dmitry Marakasov <amdmi3@amdmi3.ru>

From: Dmitry Marakasov <amdmi3@amdmi3.ru>
To: Andres Freund <andres@anarazel.de>
Cc: pgsql-bugs@lists.postgresql.org
Date: 2020-11-03T00:38:35Z
Lists: pgsql-bugs
* Andres Freund (andres@anarazel.de) wrote:

> On Mon, Nov 2, 2020, at 13:45, Dmitry Marakasov wrote:
> > * PG Bug reporting form (noreply@postgresql.org) wrote:
> > 
> > > Environment details:
> > > - FreeBSD 12.1 amd64
> > > - PostgreSQL 13.0 (built from FreeBSD ports)
> > > - llvm-10.0.1 (build from FreeBSD ports)
> > 
> > My bad, it's actually llvm-9.0.1. Multiple llvm versions are installed on
> > the system, and PostgreSQL uses llvm9:
> > 
> > ldd /usr/local/lib/postgresql/llvmjit.so | grep LLVM
> > 	libLLVM-9.so => /usr/local/llvm90/lib/libLLVM-9.so (0x800e00000)
> 
> Could you try generating a backtrace after turning jit_debugging_support on? That might give a bit more information.

It doesn't give too much apart from the function name. Here's gdb
output:

#0  0x0000000810f5c70b in evalexpr_0_2 ()
No symbol table info available.
#1  0x000000080bfded8d in ExecRunCompiledExpr (state=0x80b18a850, econtext=0x801bc2a80, isNull=0x7fffffffddd7) at llvmjit_expr.c:2424
        cstate = 0x80b4a9fe0
        func = 0x810f5c120 <evalexpr_0_2>
#2  0x00000000007dd70b in ExecEvalExprSwitchContext (state=0x80b18a850, econtext=0x801bc2a80, isNull=0x7fffffffddd7) at ../../../src/include/executor/executor.h:313
        retDatum = 140737488346496
        oldContext = 0x801bc2000
#3  0x00000000007dd669 in ExecProject (projInfo=0x80b18a848) at ../../../src/include/executor/executor.h:347
        econtext = 0x801bc2a80
        state = 0x80b18a850
        slot = 0x801bc3ec0
        isnull = false
#4  0x00000000007dd42f in ExecResult (pstate=0x801bc2970) at nodeResult.c:136
        node = 0x801bc2970
        outerTupleSlot = 0x801bc31e0
        outerPlan = 0x801bc2b10
        econtext = 0x801bc2a80
#5  0x00000000007a1035 in ExecProcNodeFirst (node=0x801bc2970) at execProcnode.c:450
No locals.
#6  0x00000000007b5e22 in ExecProcNode (node=0x801bc2970) at ../../../src/include/executor/executor.h:245
No locals.
#7  0x00000000007b5a4c in fetch_input_tuple (aggstate=0x801bc2398) at nodeAgg.c:589
        slot = 0x7a9ef7 <ReScanExprContext+39>
#8  0x00000000007b5678 in agg_retrieve_direct (aggstate=0x801bc2398) at nodeAgg.c:2356
        node = 0x801bb5dd0
        econtext = 0x801bc28e0
        tmpcontext = 0x801bc27c0
        peragg = 0x80b4aa6f0
        pergroups = 0x80b4aa990
        outerslot = 0x1a
        firstSlot = 0x80b4aa000
        result = 0xffff0b4aa12c
        hasGroupingSets = false
        numGroupingSets = 1
        currentSet = 32767
        nextSetSize = 0
        numReset = 1
        i = 1
#9  0x00000000007b250e in ExecAgg (pstate=0x801bc2398) at nodeAgg.c:2171
        node = 0x801bc2398
        result = 0x0
#10 0x00000000007a1035 in ExecProcNodeFirst (node=0x801bc2398) at execProcnode.c:450
No locals.
#11 0x0000000000799db2 in ExecProcNode (node=0x801bc2398) at ../../../src/include/executor/executor.h:245
No locals.
#12 0x0000000000796161 in ExecutePlan (estate=0x801bc2118, planstate=0x801bc2398, use_parallel_mode=false, operation=CMD_SELECT, sendTuples=true, numberTuples=0, direction=ForwardScanDirection, 
    dest=0x80b565f00, execute_once=true) at execMain.c:1646
        slot = 0x80b565f50
        current_tuple_count = 0
#13 0x000000000079602e in standard_ExecutorRun (queryDesc=0x80220e918, direction=ForwardScanDirection, count=0, execute_once=true) at execMain.c:364
        estate = 0x801bc2118
        operation = CMD_SELECT
        dest = 0x80b565f00
        sendTuples = true
        oldcontext = 0x80220e800
#14 0x0000000000795e84 in ExecutorRun (queryDesc=0x80220e918, direction=ForwardScanDirection, count=0, execute_once=true) at execMain.c:308
No locals.
#15 0x00000000009f4928 in PortalRunSelect (portal=0x80b0c3118, forward=true, count=0, dest=0x80b565f00) at pquery.c:912
        queryDesc = 0x80220e918
        direction = ForwardScanDirection
        nprocessed = 294333
#16 0x00000000009f438d in PortalRun (portal=0x80b0c3118, count=9223372036854775807, isTopLevel=true, run_once=true, dest=0x80b565f00, altdest=0x80b565f00, qc=0x7fffffffe3a0) at pquery.c:756
        _save_exception_stack = 0x7fffffffe580
        _save_context_stack = 0x0
        _local_sigjmp_buf = {{_sjb = {10437281, -4571079317099439115, 140737488347448, 140737488347776, 140737488350016, 0, 140737488350024, 140737488350056, -64641, 2, 4294967297, 34359738368}}}
        _do_rethrow = false
        result = false
        nprocessed = 34395449568
        saveTopTransactionResourceOwner = 0x80b0ae3a0
        saveTopTransactionContext = 0x80b0cb000
        saveActivePortal = 0x0
        saveResourceOwner = 0x80b0ae3a0
        savePortalContext = 0x0
        saveMemoryContext = 0x80b0cb000
#17 0x00000000009efc10 in exec_simple_query (
    query_string=0x801b87118 "SELECT COUNT(*) FROM(\n\t\tSELECT\n\t\t\tjsonb_array_elements(data)->>0,\n\t\t\tjsonb_array_elements(data)->>1,\n\t\t\tjsonb_array_elements(data)->>2,\n\t\t\tjsonb_array_elements(data)->>3,\n\t\t\tjsonb_array_elements(data)"...) at postgres.c:1239
        snapshot_set = true
        per_parsetree_context = 0x0
        plantree_list = 0x80b565eb0
        parsetree = 0x801b8ecd0
        commandTag = CMDTAG_SELECT
        qc = {commandTag = CMDTAG_UNKNOWN, nprocessed = 0}
        querytree_list = 0x801bb9160
        portal = 0x80b0c3118
        receiver = 0x80b565f00
        format = 0
        parsetree_item__state = {l = 0x801b8ed00, i = 0}
        dest = DestRemote
        oldcontext = 0x80b0cb000
        parsetree_list = 0x801b8ed00
        parsetree_item = 0x801b8ed18
        save_log_statement_stats = false
        was_logged = false
        use_implicit_block = false
        msec_str = "\340\343\377\377\377\177\000\000\022S\201\000\000\000\000\000\377q\t\000\000\000\000\000\365\033'h\356\001\000"
#18 0x00000000009eeec9 in PostgresMain (argc=1, argv=0x80b0ac730, dbname=0x80b0ac6a8 "repology", username=0x80b0ac688 "repology") at postgres.c:4315
        query_string = 0x801b87118 "SELECT COUNT(*) FROM(\n\t\tSELECT\n\t\t\tjsonb_array_elements(data)->>0,\n\t\t\tjsonb_array_elements(data)->>1,\n\t\t\tjsonb_array_elements(data)->>2,\n\t\t\tjsonb_array_elements(data)->>3,\n\t\t\tjsonb_array_elements(data)"...
        firstchar = 81
        input_message = {
          data = 0x801b87118 "SELECT COUNT(*) FROM(\n\t\tSELECT\n\t\t\tjsonb_array_elements(data)->>0,\n\t\t\tjsonb_array_elements(data)->>1,\n\t\t\tjsonb_array_elements(data)->>2,\n\t\t\tjsonb_array_elements(data)->>3,\n\t\t\tjsonb_array_elements(data)"..., len = 495, maxlen = 1024, cursor = 495}
        local_sigjmp_buf = {{_sjb = {10414768, 3, 140737488348136, 140737488348704, 140737488350016, 0, 140737488350024, 140737488350056, 34388575103, 0, 0, 1}}}
        send_ready_for_query = false
        disable_idle_in_transaction_timeout = false
#19 0x000000000092bcb7 in BackendRun (port=0x80b0a5000) at postmaster.c:4536
        av = 0x80b0ac730
        maxac = 2
        ac = 1
        i = 1
#20 0x000000000092b090 in BackendStartup (port=0x80b0a5000) at postmaster.c:4220
        bn = 0x801b97510
        pid = 0
#21 0x000000000092a073 in ServerLoop () at postmaster.c:1739
        port = 0x80b0a5000
        i = 2
        rmask = {__fds_bits = {256, 0 <repeats 15 times>}}
        selres = 1
        now = 1604363041
        readmask = {__fds_bits = {448, 0 <repeats 15 times>}}
        nSockets = 9
        last_lockfile_recheck_time = 1604363041
        last_touch_time = 1604363041
#22 0x0000000000927d52 in PostmasterMain (argc=3, argv=0x7fffffffeb48) at postmaster.c:1412
        opt = -1
        status = 0
        userDoption = 0x800c881a0 "/var/db/postgres/data13"
        listen_addr_saved = true
        i = 64
        output_config_variable = 0x0
#23 0x0000000000819bcf in main (argc=3, argv=0x7fffffffeb48) at main.c:210
        do_check_root = true

Disassembly:

Dump of assembler code for function evalexpr_0_2:
   0x0000000810f5c120 <+0>:	push   %rbp
   0x0000000810f5c121 <+1>:	mov    %rsp,%rbp
   0x0000000810f5c124 <+4>:	push   %r15
   0x0000000810f5c126 <+6>:	push   %r14
   0x0000000810f5c128 <+8>:	push   %r13
   0x0000000810f5c12a <+10>:	push   %r12
   0x0000000810f5c12c <+12>:	push   %rbx
   0x0000000810f5c12d <+13>:	sub    $0x48,%rsp
   0x0000000810f5c131 <+17>:	mov    %rdx,-0x68(%rbp)
   0x0000000810f5c135 <+21>:	mov    %rdi,%r12
   0x0000000810f5c138 <+24>:	movabs $0x80b18a855,%r13
   0x0000000810f5c142 <+34>:	mov    0x18(%rsi),%rax
   0x0000000810f5c146 <+38>:	mov    0x10(%rdi),%rcx
   0x0000000810f5c14a <+42>:	mov    0x18(%rax),%r14
   0x0000000810f5c14e <+46>:	mov    0x20(%rax),%r15
   0x0000000810f5c152 <+50>:	mov    0x18(%rcx),%rbx
   0x0000000810f5c156 <+54>:	mov    0x20(%rcx),%rdx
   0x0000000810f5c15a <+58>:	mov    (%r14),%rax
   0x0000000810f5c15d <+61>:	mov    (%r15),%cl
   0x0000000810f5c160 <+64>:	mov    %rax,0xf3(%r13)
   0x0000000810f5c167 <+71>:	mov    %cl,0xfb(%r13)
   0x0000000810f5c16e <+78>:	movb   $0x1,0x0(%r13)
   0x0000000810f5c173 <+83>:	cmp    $0x1,%cl
   0x0000000810f5c176 <+86>:	mov    %rdx,-0x30(%rbp)
   0x0000000810f5c17a <+90>:	je     0x810f5c1b4 <evalexpr_0_2+148>
   0x0000000810f5c17c <+92>:	cmpb   $0x1,0x10b(%r13)
   0x0000000810f5c184 <+100>:	je     0x810f5c1b4 <evalexpr_0_2+148>
   0x0000000810f5c186 <+102>:	movb   $0x0,0xef(%r13)
   0x0000000810f5c18e <+110>:	lea    0xd3(%r13),%rdi
   0x0000000810f5c195 <+117>:	movabs $0xaa0b40,%rax
   0x0000000810f5c19f <+127>:	callq  *%rax
   0x0000000810f5c1a1 <+129>:	mov    -0x30(%rbp),%rdx
   0x0000000810f5c1a5 <+133>:	mov    0xef(%r13),%cl
   0x0000000810f5c1ac <+140>:	mov    %rax,0x3(%r13)
   0x0000000810f5c1b0 <+144>:	mov    %cl,0x0(%r13)
   0x0000000810f5c1b4 <+148>:	mov    0x8(%r12),%rax
   0x0000000810f5c1b9 <+153>:	mov    0x5(%r12),%cl
   0x0000000810f5c1be <+158>:	mov    %cl,(%rdx)
   0x0000000810f5c1c0 <+160>:	test   %cl,%cl
   0x0000000810f5c1c2 <+162>:	jne    0x810f5c1da <evalexpr_0_2+186>
   0x0000000810f5c1c4 <+164>:	cmpb   $0x1,(%rax)
   0x0000000810f5c1c7 <+167>:	jne    0x810f5c1d7 <evalexpr_0_2+183>
   0x0000000810f5c1c9 <+169>:	cmpb   $0x3,0x1(%rax)
   0x0000000810f5c1cd <+173>:	jne    0x810f5c1d7 <evalexpr_0_2+183>
   0x0000000810f5c1cf <+175>:	mov    0x2(%rax),%rax
   0x0000000810f5c1d3 <+179>:	add    $0x22,%rax
   0x0000000810f5c1d7 <+183>:	mov    %rax,(%rbx)
   0x0000000810f5c1da <+186>:	mov    (%r14),%rax
   0x0000000810f5c1dd <+189>:	mov    (%r15),%cl
   0x0000000810f5c1e0 <+192>:	mov    %rax,0x5a3(%r13)
   0x0000000810f5c1e7 <+199>:	mov    %cl,0x5ab(%r13)
   0x0000000810f5c1ee <+206>:	movb   $0x1,0x0(%r13)
   0x0000000810f5c1f3 <+211>:	cmp    $0x1,%cl
   0x0000000810f5c1f6 <+214>:	je     0x810f5c230 <evalexpr_0_2+272>
   0x0000000810f5c1f8 <+216>:	cmpb   $0x1,0x5bb(%r13)
   0x0000000810f5c200 <+224>:	je     0x810f5c230 <evalexpr_0_2+272>
   0x0000000810f5c202 <+226>:	movb   $0x0,0x59f(%r13)
   0x0000000810f5c20a <+234>:	lea    0x583(%r13),%rdi
   0x0000000810f5c211 <+241>:	movabs $0xaa0b40,%rax
   0x0000000810f5c21b <+251>:	callq  *%rax
   0x0000000810f5c21d <+253>:	mov    -0x30(%rbp),%rdx
   0x0000000810f5c221 <+257>:	mov    0x59f(%r13),%cl
   0x0000000810f5c228 <+264>:	mov    %rax,0x3(%r13)
   0x0000000810f5c22c <+268>:	mov    %cl,0x0(%r13)
   0x0000000810f5c230 <+272>:	mov    0x8(%r12),%rax
   0x0000000810f5c235 <+277>:	mov    0x5(%r12),%cl
   0x0000000810f5c23a <+282>:	mov    %cl,0x1(%rdx)
   0x0000000810f5c23d <+285>:	test   %cl,%cl
   0x0000000810f5c23f <+287>:	jne    0x810f5c258 <evalexpr_0_2+312>
   0x0000000810f5c241 <+289>:	cmpb   $0x1,(%rax)
   0x0000000810f5c244 <+292>:	jne    0x810f5c254 <evalexpr_0_2+308>
   0x0000000810f5c246 <+294>:	cmpb   $0x3,0x1(%rax)
   0x0000000810f5c24a <+298>:	jne    0x810f5c254 <evalexpr_0_2+308>
   0x0000000810f5c24c <+300>:	mov    0x2(%rax),%rax
   0x0000000810f5c250 <+304>:	add    $0x22,%rax
   0x0000000810f5c254 <+308>:	mov    %rax,0x8(%rbx)
   0x0000000810f5c258 <+312>:	mov    (%r14),%rax
   0x0000000810f5c25b <+315>:	mov    (%r15),%cl
   0x0000000810f5c25e <+318>:	mov    %rax,0x643(%r13)
   0x0000000810f5c265 <+325>:	mov    %cl,0x64b(%r13)
   0x0000000810f5c26c <+332>:	movb   $0x1,0x0(%r13)
   0x0000000810f5c271 <+337>:	cmp    $0x1,%cl
   0x0000000810f5c274 <+340>:	je     0x810f5c2ae <evalexpr_0_2+398>
   0x0000000810f5c276 <+342>:	cmpb   $0x1,0x65b(%r13)
   0x0000000810f5c27e <+350>:	je     0x810f5c2ae <evalexpr_0_2+398>
   0x0000000810f5c280 <+352>:	movb   $0x0,0x63f(%r13)
   0x0000000810f5c288 <+360>:	lea    0x623(%r13),%rdi
   0x0000000810f5c28f <+367>:	movabs $0xaa0b40,%rax
   0x0000000810f5c299 <+377>:	callq  *%rax
   0x0000000810f5c29b <+379>:	mov    -0x30(%rbp),%rdx
   0x0000000810f5c29f <+383>:	mov    0x63f(%r13),%cl
   0x0000000810f5c2a6 <+390>:	mov    %rax,0x3(%r13)
   0x0000000810f5c2aa <+394>:	mov    %cl,0x0(%r13)
   0x0000000810f5c2ae <+398>:	mov    0x8(%r12),%rax
   0x0000000810f5c2b3 <+403>:	mov    0x5(%r12),%cl
   0x0000000810f5c2b8 <+408>:	mov    %cl,0x2(%rdx)
   0x0000000810f5c2bb <+411>:	test   %cl,%cl
   0x0000000810f5c2bd <+413>:	jne    0x810f5c2d6 <evalexpr_0_2+438>
   0x0000000810f5c2bf <+415>:	cmpb   $0x1,(%rax)
   0x0000000810f5c2c2 <+418>:	jne    0x810f5c2d2 <evalexpr_0_2+434>
   0x0000000810f5c2c4 <+420>:	cmpb   $0x3,0x1(%rax)
   0x0000000810f5c2c8 <+424>:	jne    0x810f5c2d2 <evalexpr_0_2+434>
   0x0000000810f5c2ca <+426>:	mov    0x2(%rax),%rax
   0x0000000810f5c2ce <+430>:	add    $0x22,%rax
   0x0000000810f5c2d2 <+434>:	mov    %rax,0x10(%rbx)
   0x0000000810f5c2d6 <+438>:	mov    (%r14),%rax
   0x0000000810f5c2d9 <+441>:	mov    (%r15),%cl
   0x0000000810f5c2dc <+444>:	mov    %rax,0x6e3(%r13)
   0x0000000810f5c2e3 <+451>:	mov    %cl,0x6eb(%r13)
   0x0000000810f5c2ea <+458>:	movb   $0x1,0x0(%r13)
   0x0000000810f5c2ef <+463>:	cmp    $0x1,%cl
   0x0000000810f5c2f2 <+466>:	je     0x810f5c32c <evalexpr_0_2+524>
   0x0000000810f5c2f4 <+468>:	cmpb   $0x1,0x6fb(%r13)
   0x0000000810f5c2fc <+476>:	je     0x810f5c32c <evalexpr_0_2+524>
   0x0000000810f5c2fe <+478>:	movb   $0x0,0x6df(%r13)
   0x0000000810f5c306 <+486>:	lea    0x6c3(%r13),%rdi
   0x0000000810f5c30d <+493>:	movabs $0xaa0b40,%rax
   0x0000000810f5c317 <+503>:	callq  *%rax
   0x0000000810f5c319 <+505>:	mov    -0x30(%rbp),%rdx
   0x0000000810f5c31d <+509>:	mov    0x6df(%r13),%cl
   0x0000000810f5c324 <+516>:	mov    %rax,0x3(%r13)
   0x0000000810f5c328 <+520>:	mov    %cl,0x0(%r13)
   0x0000000810f5c32c <+524>:	mov    0x8(%r12),%rax
   0x0000000810f5c331 <+529>:	mov    0x5(%r12),%cl
   0x0000000810f5c336 <+534>:	mov    %cl,0x3(%rdx)
   0x0000000810f5c339 <+537>:	test   %cl,%cl
   0x0000000810f5c33b <+539>:	jne    0x810f5c354 <evalexpr_0_2+564>
   0x0000000810f5c33d <+541>:	cmpb   $0x1,(%rax)
   0x0000000810f5c340 <+544>:	jne    0x810f5c350 <evalexpr_0_2+560>
   0x0000000810f5c342 <+546>:	cmpb   $0x3,0x1(%rax)
   0x0000000810f5c346 <+550>:	jne    0x810f5c350 <evalexpr_0_2+560>
   0x0000000810f5c348 <+552>:	mov    0x2(%rax),%rax
   0x0000000810f5c34c <+556>:	add    $0x22,%rax
   0x0000000810f5c350 <+560>:	mov    %rax,0x18(%rbx)
   0x0000000810f5c354 <+564>:	mov    (%r14),%rax
   0x0000000810f5c357 <+567>:	mov    (%r15),%cl
   0x0000000810f5c35a <+570>:	mov    %rax,0x783(%r13)
   0x0000000810f5c361 <+577>:	mov    %cl,0x78b(%r13)
   0x0000000810f5c368 <+584>:	movb   $0x1,0x0(%r13)
   0x0000000810f5c36d <+589>:	cmp    $0x1,%cl
   0x0000000810f5c370 <+592>:	je     0x810f5c3aa <evalexpr_0_2+650>
   0x0000000810f5c372 <+594>:	cmpb   $0x1,0x79b(%r13)
   0x0000000810f5c37a <+602>:	je     0x810f5c3aa <evalexpr_0_2+650>
   0x0000000810f5c37c <+604>:	movb   $0x0,0x77f(%r13)
   0x0000000810f5c384 <+612>:	lea    0x763(%r13),%rdi
   0x0000000810f5c38b <+619>:	movabs $0xaa0b40,%rax
   0x0000000810f5c395 <+629>:	callq  *%rax
   0x0000000810f5c397 <+631>:	mov    -0x30(%rbp),%rdx
   0x0000000810f5c39b <+635>:	mov    0x77f(%r13),%cl
   0x0000000810f5c3a2 <+642>:	mov    %rax,0x3(%r13)
   0x0000000810f5c3a6 <+646>:	mov    %cl,0x0(%r13)
   0x0000000810f5c3aa <+650>:	mov    0x8(%r12),%rax
   0x0000000810f5c3af <+655>:	mov    0x5(%r12),%cl
   0x0000000810f5c3b4 <+660>:	mov    %cl,0x4(%rdx)
   0x0000000810f5c3b7 <+663>:	test   %cl,%cl
   0x0000000810f5c3b9 <+665>:	jne    0x810f5c3d2 <evalexpr_0_2+690>
   0x0000000810f5c3bb <+667>:	cmpb   $0x1,(%rax)
   0x0000000810f5c3be <+670>:	jne    0x810f5c3ce <evalexpr_0_2+686>
   0x0000000810f5c3c0 <+672>:	cmpb   $0x3,0x1(%rax)
   0x0000000810f5c3c4 <+676>:	jne    0x810f5c3ce <evalexpr_0_2+686>
   0x0000000810f5c3c6 <+678>:	mov    0x2(%rax),%rax
   0x0000000810f5c3ca <+682>:	add    $0x22,%rax
   0x0000000810f5c3ce <+686>:	mov    %rax,0x20(%rbx)
   0x0000000810f5c3d2 <+690>:	mov    (%r14),%rax
   0x0000000810f5c3d5 <+693>:	mov    (%r15),%cl
   0x0000000810f5c3d8 <+696>:	mov    %rax,0x823(%r13)
   0x0000000810f5c3df <+703>:	mov    %cl,0x82b(%r13)
   0x0000000810f5c3e6 <+710>:	movb   $0x1,0x0(%r13)
   0x0000000810f5c3eb <+715>:	cmp    $0x1,%cl
   0x0000000810f5c3ee <+718>:	je     0x810f5c428 <evalexpr_0_2+776>
   0x0000000810f5c3f0 <+720>:	cmpb   $0x1,0x83b(%r13)
   0x0000000810f5c3f8 <+728>:	je     0x810f5c428 <evalexpr_0_2+776>
   0x0000000810f5c3fa <+730>:	movb   $0x0,0x81f(%r13)
   0x0000000810f5c402 <+738>:	lea    0x803(%r13),%rdi
   0x0000000810f5c409 <+745>:	movabs $0xaa0b40,%rax
   0x0000000810f5c413 <+755>:	callq  *%rax
   0x0000000810f5c415 <+757>:	mov    -0x30(%rbp),%rdx
   0x0000000810f5c419 <+761>:	mov    0x81f(%r13),%cl
   0x0000000810f5c420 <+768>:	mov    %rax,0x3(%r13)
   0x0000000810f5c424 <+772>:	mov    %cl,0x0(%r13)
   0x0000000810f5c428 <+776>:	mov    0x8(%r12),%rax
   0x0000000810f5c42d <+781>:	mov    0x5(%r12),%cl
   0x0000000810f5c432 <+786>:	mov    %cl,0x5(%rdx)
   0x0000000810f5c435 <+789>:	test   %cl,%cl
   0x0000000810f5c437 <+791>:	jne    0x810f5c450 <evalexpr_0_2+816>
   0x0000000810f5c439 <+793>:	cmpb   $0x1,(%rax)
   0x0000000810f5c43c <+796>:	jne    0x810f5c44c <evalexpr_0_2+812>
   0x0000000810f5c43e <+798>:	cmpb   $0x3,0x1(%rax)
   0x0000000810f5c442 <+802>:	jne    0x810f5c44c <evalexpr_0_2+812>
   0x0000000810f5c444 <+804>:	mov    0x2(%rax),%rax
   0x0000000810f5c448 <+808>:	add    $0x22,%rax
   0x0000000810f5c44c <+812>:	mov    %rax,0x28(%rbx)
   0x0000000810f5c450 <+816>:	mov    (%r14),%rax
   0x0000000810f5c453 <+819>:	mov    (%r15),%cl
   0x0000000810f5c456 <+822>:	mov    %rax,0x10d3(%r13)
   0x0000000810f5c45d <+829>:	mov    %cl,0x10db(%r13)
   0x0000000810f5c464 <+836>:	movb   $0x1,0x0(%r13)
   0x0000000810f5c469 <+841>:	cmp    $0x1,%cl
   0x0000000810f5c46c <+844>:	je     0x810f5c4a6 <evalexpr_0_2+902>
   0x0000000810f5c46e <+846>:	cmpb   $0x1,0x10eb(%r13)
   0x0000000810f5c476 <+854>:	je     0x810f5c4a6 <evalexpr_0_2+902>
   0x0000000810f5c478 <+856>:	movb   $0x0,0x10cf(%r13)
   0x0000000810f5c480 <+864>:	lea    0x10b3(%r13),%rdi
   0x0000000810f5c487 <+871>:	movabs $0xaa0b40,%rax
   0x0000000810f5c491 <+881>:	callq  *%rax
   0x0000000810f5c493 <+883>:	mov    -0x30(%rbp),%rdx
   0x0000000810f5c497 <+887>:	mov    0x10cf(%r13),%cl
   0x0000000810f5c49e <+894>:	mov    %rax,0x3(%r13)
   0x0000000810f5c4a2 <+898>:	mov    %cl,0x0(%r13)
   0x0000000810f5c4a6 <+902>:	mov    0x8(%r12),%rax
   0x0000000810f5c4ab <+907>:	mov    0x5(%r12),%cl
   0x0000000810f5c4b0 <+912>:	mov    %cl,0x6(%rdx)
   0x0000000810f5c4b3 <+915>:	test   %cl,%cl
   0x0000000810f5c4b5 <+917>:	jne    0x810f5c4ce <evalexpr_0_2+942>
   0x0000000810f5c4b7 <+919>:	cmpb   $0x1,(%rax)
   0x0000000810f5c4ba <+922>:	jne    0x810f5c4ca <evalexpr_0_2+938>
   0x0000000810f5c4bc <+924>:	cmpb   $0x3,0x1(%rax)
   0x0000000810f5c4c0 <+928>:	jne    0x810f5c4ca <evalexpr_0_2+938>
   0x0000000810f5c4c2 <+930>:	mov    0x2(%rax),%rax
   0x0000000810f5c4c6 <+934>:	add    $0x22,%rax
   0x0000000810f5c4ca <+938>:	mov    %rax,0x30(%rbx)
   0x0000000810f5c4ce <+942>:	mov    (%r14),%rax
   0x0000000810f5c4d1 <+945>:	mov    (%r15),%cl
   0x0000000810f5c4d4 <+948>:	mov    %rax,0x1173(%r13)
   0x0000000810f5c4db <+955>:	mov    %cl,0x117b(%r13)
   0x0000000810f5c4e2 <+962>:	movb   $0x1,0x0(%r13)
   0x0000000810f5c4e7 <+967>:	cmp    $0x1,%cl
   0x0000000810f5c4ea <+970>:	je     0x810f5c524 <evalexpr_0_2+1028>
   0x0000000810f5c4ec <+972>:	cmpb   $0x1,0x118b(%r13)
   0x0000000810f5c4f4 <+980>:	je     0x810f5c524 <evalexpr_0_2+1028>
   0x0000000810f5c4f6 <+982>:	movb   $0x0,0x116f(%r13)
   0x0000000810f5c4fe <+990>:	lea    0x1153(%r13),%rdi
   0x0000000810f5c505 <+997>:	movabs $0xaa0b40,%rax
   0x0000000810f5c50f <+1007>:	callq  *%rax
   0x0000000810f5c511 <+1009>:	mov    -0x30(%rbp),%rdx
   0x0000000810f5c515 <+1013>:	mov    0x116f(%r13),%cl
   0x0000000810f5c51c <+1020>:	mov    %rax,0x3(%r13)
   0x0000000810f5c520 <+1024>:	mov    %cl,0x0(%r13)
   0x0000000810f5c524 <+1028>:	mov    0x8(%r12),%rax
   0x0000000810f5c529 <+1033>:	mov    0x5(%r12),%cl
   0x0000000810f5c52e <+1038>:	mov    %cl,0x7(%rdx)
   0x0000000810f5c531 <+1041>:	test   %cl,%cl
   0x0000000810f5c533 <+1043>:	jne    0x810f5c54c <evalexpr_0_2+1068>
   0x0000000810f5c535 <+1045>:	cmpb   $0x1,(%rax)
   0x0000000810f5c538 <+1048>:	jne    0x810f5c548 <evalexpr_0_2+1064>
   0x0000000810f5c53a <+1050>:	cmpb   $0x3,0x1(%rax)
   0x0000000810f5c53e <+1054>:	jne    0x810f5c548 <evalexpr_0_2+1064>
   0x0000000810f5c540 <+1056>:	mov    0x2(%rax),%rax
   0x0000000810f5c544 <+1060>:	add    $0x22,%rax
   0x0000000810f5c548 <+1064>:	mov    %rax,0x38(%rbx)
   0x0000000810f5c54c <+1068>:	mov    (%r14),%rax
   0x0000000810f5c54f <+1071>:	mov    (%r15),%cl
   0x0000000810f5c552 <+1074>:	mov    %rax,0x1213(%r13)
   0x0000000810f5c559 <+1081>:	mov    %cl,0x121b(%r13)
   0x0000000810f5c560 <+1088>:	movb   $0x1,0x0(%r13)
   0x0000000810f5c565 <+1093>:	cmp    $0x1,%cl
   0x0000000810f5c568 <+1096>:	je     0x810f5c5a2 <evalexpr_0_2+1154>
   0x0000000810f5c56a <+1098>:	cmpb   $0x1,0x122b(%r13)
   0x0000000810f5c572 <+1106>:	je     0x810f5c5a2 <evalexpr_0_2+1154>
   0x0000000810f5c574 <+1108>:	movb   $0x0,0x120f(%r13)
   0x0000000810f5c57c <+1116>:	lea    0x11f3(%r13),%rdi
   0x0000000810f5c583 <+1123>:	movabs $0xaa0b40,%rax
   0x0000000810f5c58d <+1133>:	callq  *%rax
   0x0000000810f5c58f <+1135>:	mov    -0x30(%rbp),%rdx
   0x0000000810f5c593 <+1139>:	mov    0x120f(%r13),%cl
   0x0000000810f5c59a <+1146>:	mov    %rax,0x3(%r13)
   0x0000000810f5c59e <+1150>:	mov    %cl,0x0(%r13)
   0x0000000810f5c5a2 <+1154>:	mov    0x8(%r12),%rax
   0x0000000810f5c5a7 <+1159>:	mov    0x5(%r12),%cl
   0x0000000810f5c5ac <+1164>:	mov    %cl,0x8(%rdx)
   0x0000000810f5c5af <+1167>:	test   %cl,%cl
   0x0000000810f5c5b1 <+1169>:	jne    0x810f5c5ca <evalexpr_0_2+1194>
   0x0000000810f5c5b3 <+1171>:	cmpb   $0x1,(%rax)
   0x0000000810f5c5b6 <+1174>:	jne    0x810f5c5c6 <evalexpr_0_2+1190>
   0x0000000810f5c5b8 <+1176>:	cmpb   $0x3,0x1(%rax)
   0x0000000810f5c5bc <+1180>:	jne    0x810f5c5c6 <evalexpr_0_2+1190>
   0x0000000810f5c5be <+1182>:	mov    0x2(%rax),%rax
   0x0000000810f5c5c2 <+1186>:	add    $0x22,%rax
   0x0000000810f5c5c6 <+1190>:	mov    %rax,0x40(%rbx)
   0x0000000810f5c5ca <+1194>:	mov    (%r14),%rax
   0x0000000810f5c5cd <+1197>:	mov    (%r15),%cl
   0x0000000810f5c5d0 <+1200>:	mov    %rax,0x12b3(%r13)
   0x0000000810f5c5d7 <+1207>:	mov    %cl,0x12bb(%r13)
   0x0000000810f5c5de <+1214>:	movb   $0x1,0x0(%r13)
   0x0000000810f5c5e3 <+1219>:	cmp    $0x1,%cl
   0x0000000810f5c5e6 <+1222>:	je     0x810f5c620 <evalexpr_0_2+1280>
   0x0000000810f5c5e8 <+1224>:	cmpb   $0x1,0x12cb(%r13)
   0x0000000810f5c5f0 <+1232>:	je     0x810f5c620 <evalexpr_0_2+1280>
   0x0000000810f5c5f2 <+1234>:	movb   $0x0,0x12af(%r13)
   0x0000000810f5c5fa <+1242>:	lea    0x1293(%r13),%rdi
   0x0000000810f5c601 <+1249>:	movabs $0xaa0b40,%rax
   0x0000000810f5c60b <+1259>:	callq  *%rax
   0x0000000810f5c60d <+1261>:	mov    -0x30(%rbp),%rdx
   0x0000000810f5c611 <+1265>:	mov    0x12af(%r13),%cl
   0x0000000810f5c618 <+1272>:	mov    %rax,0x3(%r13)
   0x0000000810f5c61c <+1276>:	mov    %cl,0x0(%r13)
   0x0000000810f5c620 <+1280>:	mov    0x8(%r12),%rax
   0x0000000810f5c625 <+1285>:	mov    0x5(%r12),%cl
   0x0000000810f5c62a <+1290>:	mov    %cl,0x9(%rdx)
   0x0000000810f5c62d <+1293>:	test   %cl,%cl
   0x0000000810f5c62f <+1295>:	jne    0x810f5c648 <evalexpr_0_2+1320>
   0x0000000810f5c631 <+1297>:	cmpb   $0x1,(%rax)
   0x0000000810f5c634 <+1300>:	jne    0x810f5c644 <evalexpr_0_2+1316>
   0x0000000810f5c636 <+1302>:	cmpb   $0x3,0x1(%rax)
   0x0000000810f5c63a <+1306>:	jne    0x810f5c644 <evalexpr_0_2+1316>
   0x0000000810f5c63c <+1308>:	mov    0x2(%rax),%rax
   0x0000000810f5c640 <+1312>:	add    $0x22,%rax
   0x0000000810f5c644 <+1316>:	mov    %rax,0x48(%rbx)
   0x0000000810f5c648 <+1320>:	mov    %rbx,-0x58(%rbp)
   0x0000000810f5c64c <+1324>:	mov    (%r14),%rax
   0x0000000810f5c64f <+1327>:	mov    (%r15),%cl
   0x0000000810f5c652 <+1330>:	mov    %rax,0x1353(%r13)
   0x0000000810f5c659 <+1337>:	mov    %cl,0x135b(%r13)
   0x0000000810f5c660 <+1344>:	movb   $0x1,0x0(%r13)
   0x0000000810f5c665 <+1349>:	cmp    $0x1,%cl
   0x0000000810f5c668 <+1352>:	je     0x810f5c7e3 <evalexpr_0_2+1731>
   0x0000000810f5c66e <+1358>:	cmpb   $0x1,0x136b(%r13)
   0x0000000810f5c676 <+1366>:	je     0x810f5c7e3 <evalexpr_0_2+1731>
   0x0000000810f5c67c <+1372>:	movb   $0x0,0x134f(%r13)
   0x0000000810f5c684 <+1380>:	lea    0x1333(%r13),%rdi
   0x0000000810f5c68b <+1387>:	movabs $0xaa0b40,%rax
   0x0000000810f5c695 <+1397>:	callq  *%rax
   0x0000000810f5c697 <+1399>:	mov    -0x30(%rbp),%rdx
   0x0000000810f5c69b <+1403>:	mov    0x134f(%r13),%bl
   0x0000000810f5c6a2 <+1410>:	mov    %rax,0x3(%r13)
   0x0000000810f5c6a6 <+1414>:	mov    %bl,0x0(%r13)
   0x0000000810f5c6aa <+1418>:	cmp    $0x1,%bl
   0x0000000810f5c6ad <+1421>:	je     0x810f5c7e3 <evalexpr_0_2+1731>
   0x0000000810f5c6b3 <+1427>:	mov    0x3(%r13),%rax
   0x0000000810f5c6b7 <+1431>:	mov    %rax,0x13f3(%r13)
   0x0000000810f5c6be <+1438>:	movb   $0x0,0x13fb(%r13)
   0x0000000810f5c6c6 <+1446>:	lea    0x13d3(%r13),%rdi
   0x0000000810f5c6cd <+1453>:	movabs $0xb7cfc0,%rax
   0x0000000810f5c6d7 <+1463>:	callq  *%rax
   0x0000000810f5c6d9 <+1465>:	mov    -0x30(%rbp),%rdx
   0x0000000810f5c6dd <+1469>:	test   %rax,%rax
   0x0000000810f5c6e0 <+1472>:	je     0x810f5c7e3 <evalexpr_0_2+1731>
   0x0000000810f5c6e6 <+1478>:	mov    %rax,0x1493(%r13)
   0x0000000810f5c6ed <+1485>:	mov    %bl,0x149b(%r13)
   0x0000000810f5c6f4 <+1492>:	movb   $0x0,0x148f(%r13)
   0x0000000810f5c6fc <+1500>:	movzbl (%rax),%esi
   0x0000000810f5c6ff <+1503>:	movabs $0xc85a04,%rcx
   0x0000000810f5c709 <+1513>:	mov    (%rcx),%edi
   0x0000000810f5c70b <+1515>:	mov    0x1b178bc(%rip),%rcx        # 0x812a73fce
   0x0000000810f5c712 <+1522>:	mov    %fs:0x0,%rdx
   0x0000000810f5c71b <+1531>:	mov    (%rdx,%rcx,1),%rbx
   0x0000000810f5c71f <+1535>:	cmp    %esi,%edi
   0x0000000810f5c721 <+1537>:	mov    %rax,-0x60(%rbp)
   0x0000000810f5c725 <+1541>:	mov    %edi,-0x48(%rbp)
   0x0000000810f5c728 <+1544>:	mov    %rbx,-0x40(%rbp)
   0x0000000810f5c72c <+1548>:	jle    0x810f5c769 <evalexpr_0_2+1609>
   0x0000000810f5c72e <+1550>:	test   %rbx,%rbx
   0x0000000810f5c731 <+1553>:	movabs $0xc85a10,%rcx
   0x0000000810f5c73b <+1563>:	mov    (%rcx),%rdx
   0x0000000810f5c73e <+1566>:	mov    %rbx,%rcx
   0x0000000810f5c741 <+1569>:	mov    %rdx,%r8
   0x0000000810f5c744 <+1572>:	cmove  %rdx,%rcx
   0x0000000810f5c748 <+1576>:	mov    %rax,%rbx
   0x0000000810f5c74b <+1579>:	mov    %rdx,-0x50(%rbp)
   0x0000000810f5c74f <+1583>:	nop
   0x0000000810f5c750 <+1584>:	movzbl %sil,%edx
   0x0000000810f5c754 <+1588>:	testb  $0x40,0x41(%rcx,%rdx,8)
   0x0000000810f5c759 <+1593>:	je     0x810f5c77d <evalexpr_0_2+1629>
   0x0000000810f5c75b <+1595>:	movzbl 0x1(%rbx),%esi
   0x0000000810f5c75f <+1599>:	add    $0x1,%rbx
   0x0000000810f5c763 <+1603>:	cmp    %esi,%edi
   0x0000000810f5c765 <+1605>:	jg     0x810f5c750 <evalexpr_0_2+1584>
   0x0000000810f5c767 <+1607>:	jmp    0x810f5c77d <evalexpr_0_2+1629>
   0x0000000810f5c769 <+1609>:	movabs $0xc85a10,%rcx
   0x0000000810f5c773 <+1619>:	mov    (%rcx),%rcx
   0x0000000810f5c776 <+1622>:	mov    %rcx,-0x50(%rbp)
   0x0000000810f5c77a <+1626>:	mov    %rax,%rbx
   0x0000000810f5c77d <+1629>:	movabs $0x801769f90,%rax
   0x0000000810f5c787 <+1639>:	mov    %rbx,%rdi
   0x0000000810f5c78a <+1642>:	callq  *%rax
   0x0000000810f5c78c <+1644>:	mov    -0x40(%rbp),%rcx
   0x0000000810f5c790 <+1648>:	test   %rcx,%rcx
   0x0000000810f5c793 <+1651>:	mov    -0x50(%rbp),%rdi
   0x0000000810f5c797 <+1655>:	cmovne %rcx,%rdi
   0x0000000810f5c79b <+1659>:	mov    -0x48(%rbp),%edx
   0x0000000810f5c79e <+1662>:	xchg   %ax,%ax
   0x0000000810f5c7a0 <+1664>:	mov    %rax,%rsi
   0x0000000810f5c7a3 <+1667>:	test   %rax,%rax
   0x0000000810f5c7a6 <+1670>:	je     0x810f5c7bc <evalexpr_0_2+1692>
   0x0000000810f5c7a8 <+1672>:	movzbl -0x1(%rbx,%rsi,1),%ecx
   0x0000000810f5c7ad <+1677>:	cmp    %ecx,%edx
   0x0000000810f5c7af <+1679>:	jle    0x810f5c7bc <evalexpr_0_2+1692>
   0x0000000810f5c7b1 <+1681>:	lea    -0x1(%rsi),%rax
   0x0000000810f5c7b5 <+1685>:	testb  $0x40,0x41(%rdi,%rcx,8)
   0x0000000810f5c7ba <+1690>:	jne    0x810f5c7a0 <evalexpr_0_2+1664>
   0x0000000810f5c7bc <+1692>:	movabs $0xa3acc0,%rax
   0x0000000810f5c7c6 <+1702>:	lea    -0x32(%rbp),%rdx
   0x0000000810f5c7ca <+1706>:	mov    %rbx,%rdi
   0x0000000810f5c7cd <+1709>:	callq  *%rax
   0x0000000810f5c7cf <+1711>:	test   %al,%al
   0x0000000810f5c7d1 <+1713>:	je     0x810f5c9cc <evalexpr_0_2+2220>
   0x0000000810f5c7d7 <+1719>:	movzbl -0x32(%rbp),%eax
   0x0000000810f5c7db <+1723>:	mov    %rax,0x3(%r13)
   0x0000000810f5c7df <+1727>:	mov    -0x30(%rbp),%rdx
   0x0000000810f5c7e3 <+1731>:	mov    0x8(%r12),%rax
   0x0000000810f5c7e8 <+1736>:	mov    0x5(%r12),%cl
   0x0000000810f5c7ed <+1741>:	mov    %cl,0xa(%rdx)
   0x0000000810f5c7f0 <+1744>:	mov    -0x58(%rbp),%rcx
   0x0000000810f5c7f4 <+1748>:	mov    %rax,0x50(%rcx)
   0x0000000810f5c7f8 <+1752>:	mov    (%r14),%rax
   0x0000000810f5c7fb <+1755>:	mov    (%r15),%cl
   0x0000000810f5c7fe <+1758>:	mov    %rax,0x31e763(%r13)
   0x0000000810f5c805 <+1765>:	mov    %cl,0x31e76b(%r13)
   0x0000000810f5c80c <+1772>:	movb   $0x1,0x0(%r13)
   0x0000000810f5c811 <+1777>:	cmp    $0x1,%cl
   0x0000000810f5c814 <+1780>:	je     0x810f5c995 <evalexpr_0_2+2165>
   0x0000000810f5c81a <+1786>:	cmpb   $0x1,0x31e77b(%r13)
   0x0000000810f5c822 <+1794>:	je     0x810f5c995 <evalexpr_0_2+2165>
   0x0000000810f5c828 <+1800>:	movb   $0x0,0x31e75f(%r13)
   0x0000000810f5c830 <+1808>:	lea    0x31e743(%r13),%rdi
   0x0000000810f5c837 <+1815>:	movabs $0xaa0b40,%rax
   0x0000000810f5c841 <+1825>:	callq  *%rax
   0x0000000810f5c843 <+1827>:	mov    -0x30(%rbp),%rdx
   0x0000000810f5c847 <+1831>:	mov    0x31e75f(%r13),%bl
   0x0000000810f5c84e <+1838>:	mov    %rax,0x3(%r13)
   0x0000000810f5c852 <+1842>:	mov    %bl,0x0(%r13)
   0x0000000810f5c856 <+1846>:	cmp    $0x1,%bl
   0x0000000810f5c859 <+1849>:	je     0x810f5c995 <evalexpr_0_2+2165>
   0x0000000810f5c85f <+1855>:	mov    0x3(%r13),%rax
   0x0000000810f5c863 <+1859>:	mov    %rax,0x31e803(%r13)
   0x0000000810f5c86a <+1866>:	movb   $0x0,0x31e80b(%r13)
   0x0000000810f5c872 <+1874>:	lea    0x31e7e3(%r13),%rdi
   0x0000000810f5c879 <+1881>:	movabs $0xb7cfc0,%rax
   0x0000000810f5c883 <+1891>:	callq  *%rax
   0x0000000810f5c885 <+1893>:	mov    -0x30(%rbp),%rdx
   0x0000000810f5c889 <+1897>:	test   %rax,%rax
   0x0000000810f5c88c <+1900>:	je     0x810f5c995 <evalexpr_0_2+2165>
   0x0000000810f5c892 <+1906>:	mov    %rax,0x1733(%r13)
   0x0000000810f5c899 <+1913>:	mov    %bl,0x173b(%r13)
   0x0000000810f5c8a0 <+1920>:	movb   $0x0,0x172f(%r13)
   0x0000000810f5c8a8 <+1928>:	movzbl (%rax),%esi
   0x0000000810f5c8ab <+1931>:	movabs $0xc85a04,%rcx
   0x0000000810f5c8b5 <+1941>:	mov    (%rcx),%r14d
   0x0000000810f5c8b8 <+1944>:	mov    0x1b178bc(%rip),%rcx        # 0x812a7417b
   0x0000000810f5c8bf <+1951>:	mov    %fs:0x0,%rdx
   0x0000000810f5c8c8 <+1960>:	mov    (%rdx,%rcx,1),%rdi
   0x0000000810f5c8cc <+1964>:	cmp    %esi,%r14d
   0x0000000810f5c8cf <+1967>:	mov    %rax,-0x40(%rbp)
   0x0000000810f5c8d3 <+1971>:	mov    %rdi,-0x48(%rbp)
   0x0000000810f5c8d7 <+1975>:	jle    0x810f5c91a <evalexpr_0_2+2042>
   0x0000000810f5c8d9 <+1977>:	test   %rdi,%rdi
   0x0000000810f5c8dc <+1980>:	movabs $0xc85a10,%rcx
   0x0000000810f5c8e6 <+1990>:	mov    (%rcx),%r15
   0x0000000810f5c8e9 <+1993>:	mov    %rdi,%rcx
   0x0000000810f5c8ec <+1996>:	cmove  %r15,%rcx
   0x0000000810f5c8f0 <+2000>:	mov    %rax,%rbx
   0x0000000810f5c8f3 <+2003>:	nopw   %cs:0x0(%rax,%rax,1)
   0x0000000810f5c8fd <+2013>:	nopl   (%rax)
   0x0000000810f5c900 <+2016>:	movzbl %sil,%edx
   0x0000000810f5c904 <+2020>:	testb  $0x40,0x41(%rcx,%rdx,8)
   0x0000000810f5c909 <+2025>:	je     0x810f5c92a <evalexpr_0_2+2058>
   0x0000000810f5c90b <+2027>:	movzbl 0x1(%rbx),%esi
   0x0000000810f5c90f <+2031>:	add    $0x1,%rbx
   0x0000000810f5c913 <+2035>:	cmp    %esi,%r14d
   0x0000000810f5c916 <+2038>:	jg     0x810f5c900 <evalexpr_0_2+2016>
   0x0000000810f5c918 <+2040>:	jmp    0x810f5c92a <evalexpr_0_2+2058>
   0x0000000810f5c91a <+2042>:	movabs $0xc85a10,%rcx
   0x0000000810f5c924 <+2052>:	mov    (%rcx),%r15
   0x0000000810f5c927 <+2055>:	mov    %rax,%rbx
   0x0000000810f5c92a <+2058>:	movabs $0x801769f90,%rax
   0x0000000810f5c934 <+2068>:	mov    %rbx,%rdi
   0x0000000810f5c937 <+2071>:	callq  *%rax
   0x0000000810f5c939 <+2073>:	mov    -0x48(%rbp),%rcx
   0x0000000810f5c93d <+2077>:	test   %rcx,%rcx
   0x0000000810f5c940 <+2080>:	cmovne %rcx,%r15
   0x0000000810f5c944 <+2084>:	nopw   %cs:0x0(%rax,%rax,1)
   0x0000000810f5c94e <+2094>:	xchg   %ax,%ax
   0x0000000810f5c950 <+2096>:	mov    %rax,%rsi
   0x0000000810f5c953 <+2099>:	test   %rax,%rax
   0x0000000810f5c956 <+2102>:	je     0x810f5c96e <evalexpr_0_2+2126>
   0x0000000810f5c958 <+2104>:	movzbl -0x1(%rbx,%rsi,1),%ecx
   0x0000000810f5c95d <+2109>:	cmp    %ecx,%r14d
   0x0000000810f5c960 <+2112>:	jle    0x810f5c96e <evalexpr_0_2+2126>
   0x0000000810f5c962 <+2114>:	lea    -0x1(%rsi),%rax
   0x0000000810f5c966 <+2118>:	testb  $0x40,0x41(%r15,%rcx,8)
   0x0000000810f5c96c <+2124>:	jne    0x810f5c950 <evalexpr_0_2+2096>
   0x0000000810f5c96e <+2126>:	movabs $0xa3acc0,%rax
   0x0000000810f5c978 <+2136>:	lea    -0x31(%rbp),%rdx
   0x0000000810f5c97c <+2140>:	mov    %rbx,%rdi
   0x0000000810f5c97f <+2143>:	callq  *%rax
   0x0000000810f5c981 <+2145>:	test   %al,%al
   0x0000000810f5c983 <+2147>:	je     0x810f5ca14 <evalexpr_0_2+2292>
   0x0000000810f5c989 <+2153>:	movzbl -0x31(%rbp),%eax
   0x0000000810f5c98d <+2157>:	mov    %rax,0x3(%r13)
   0x0000000810f5c991 <+2161>:	mov    -0x30(%rbp),%rdx
   0x0000000810f5c995 <+2165>:	mov    0x8(%r12),%rax
   0x0000000810f5c99a <+2170>:	mov    0x5(%r12),%cl
   0x0000000810f5c99f <+2175>:	mov    %cl,0xb(%rdx)
   0x0000000810f5c9a2 <+2178>:	mov    -0x58(%rbp),%rcx
   0x0000000810f5c9a6 <+2182>:	mov    %rax,0x58(%rcx)
   0x0000000810f5c9aa <+2186>:	mov    0x8(%r12),%rax
   0x0000000810f5c9af <+2191>:	mov    0x5(%r12),%cl
   0x0000000810f5c9b4 <+2196>:	and    $0x1,%cl
   0x0000000810f5c9b7 <+2199>:	mov    -0x68(%rbp),%rdx
   0x0000000810f5c9bb <+2203>:	mov    %cl,(%rdx)
   0x0000000810f5c9bd <+2205>:	add    $0x48,%rsp
   0x0000000810f5c9c1 <+2209>:	pop    %rbx
   0x0000000810f5c9c2 <+2210>:	pop    %r12
   0x0000000810f5c9c4 <+2212>:	pop    %r13
   0x0000000810f5c9c6 <+2214>:	pop    %r14
   0x0000000810f5c9c8 <+2216>:	pop    %r15
   0x0000000810f5c9ca <+2218>:	pop    %rbp
   0x0000000810f5c9cb <+2219>:	retq   
   0x0000000810f5c9cc <+2220>:	movabs $0xbbf270,%rax
   0x0000000810f5c9d6 <+2230>:	mov    $0x14,%edi
   0x0000000810f5c9db <+2235>:	xor    %esi,%esi
   0x0000000810f5c9dd <+2237>:	callq  *%rax
   0x0000000810f5c9df <+2239>:	movabs $0xbc0510,%rax
   0x0000000810f5c9e9 <+2249>:	mov    $0x2020082,%edi
   0x0000000810f5c9ee <+2254>:	callq  *%rax
   0x0000000810f5c9f0 <+2256>:	movabs $0x810f5d023,%rdi
   0x0000000810f5c9fa <+2266>:	movabs $0x810f5d04a,%rsi
   0x0000000810f5ca04 <+2276>:	movabs $0xbc0800,%rcx
   0x0000000810f5ca0e <+2286>:	mov    -0x60(%rbp),%rdx
   0x0000000810f5ca12 <+2290>:	jmp    0x810f5ca5a <evalexpr_0_2+2362>
   0x0000000810f5ca14 <+2292>:	movabs $0xbbf270,%rax
   0x0000000810f5ca1e <+2302>:	mov    $0x14,%edi
   0x0000000810f5ca23 <+2307>:	xor    %esi,%esi
   0x0000000810f5ca25 <+2309>:	callq  *%rax
   0x0000000810f5ca27 <+2311>:	movabs $0xbc0510,%rax
   0x0000000810f5ca31 <+2321>:	mov    $0x2020082,%edi
   0x0000000810f5ca36 <+2326>:	callq  *%rax
   0x0000000810f5ca38 <+2328>:	movabs $0x810f5d023,%rdi
   0x0000000810f5ca42 <+2338>:	movabs $0x810f5d04a,%rsi
   0x0000000810f5ca4c <+2348>:	movabs $0xbc0800,%rcx
   0x0000000810f5ca56 <+2358>:	mov    -0x40(%rbp),%rdx
   0x0000000810f5ca5a <+2362>:	xor    %eax,%eax
   0x0000000810f5ca5c <+2364>:	callq  *%rcx
   0x0000000810f5ca5e <+2366>:	movabs $0x810f5d052,%rdi
   0x0000000810f5ca68 <+2376>:	movabs $0x810f5d059,%rdx
   0x0000000810f5ca72 <+2386>:	movabs $0xbbfc50,%rax
   0x0000000810f5ca7c <+2396>:	mov    $0x9a,%esi
   0x0000000810f5ca81 <+2401>:	callq  *%rax
End of assembler dump.

-- 
Dmitry Marakasov   .   55B5 0596 FF1E 8D84 5F56  9510 D35A 80DD F9D2 F77D
amdmi3@amdmi3.ru  ..:              https://github.com/AMDmi3




Commits

  1. jit: Don't inline functions that access thread-locals.