File hevea_f46f610a6b0078f4aa208dda361f21de574cc56ad64b32889301afc466d33979.elf
Function:
    001fdd40
    001fdd40caml_ba_fill:
    001fdd40push r15
    001fdd42push r14
    001fdd44push r13
    001fdd46push r12
    001fdd48push rbp
    001fdd49push rbx
    001fdd4asub rsp, 120
    001fdd4emov rax, [rip+0x7828f]
    001fdd55mov [rsp+24], rdi
    001fdd5amov rdi, [0x28]
    001fdd63mov [rsp+104], rdi
    001fdd68mov rdi, rsi
    001fdd6bmov r13, [rax]
    001fdd6flea rax, [rsp+32]
    001fdd74mov r14, [r13+160]
    001fdd7bmov [r13+160], rax
    001fdd82mov eax, 1
    001fdd87movq x0, rax
    001fdd8clea rax, [rsp+24]
    001fdd91mov [rsp+56], rax
    001fdd96mov rax, [rsp+24]
    001fdd9bpunpcklqdq x0, x0
    001fdd9fmovups [rsp+40], x0
    001fdda4mov rsi, [rax+16]
    001fdda8mov [rsp+32], r14
    001fddadlea rcx, [rax+8]
    001fddb1mov rbp, [rax+8]
    001fddb5test rsi, rsi
    001fddb8jle 0x1fe360
    001fddbemov ebx, 1
    001fddc3xor edx, edx
    001fddc5xor eax, eax
    001fddc7nop [rax+rax]
    001fddd2nop [rax+rax]
    001fdddcadd edx, 1
    001fdddfimul rbx, [rcx+8*rax+32]
    001fdde5movsxd rax, edx
    001fdde8cmp rax, rsi
    001fddebjl 0x1fdde0
    001fddedmov rax, [rcx+16]
    001fddf1mov r12, rbx
    001fddf4movzx edx, al
    001fddf7cmp al, 13
    001fddf9ja 0xf488e
    001fddfflea rcx, [rip+0x33a2a]
    001fde06movsxd rdx, [rcx+4*rdx]
    001fde0aadd rdx, rcx
    001fde0djmp rdx
    001fde10nop [rax]
    001fde14sar rdi, 1
    001fde17mov r15, rdi
    001fde1acmp rbx, 4095
    001fde21jg 0x1fe456
    001fde27test ah, 4
    001fde2aje 0x1fe61a
    001fde30call caml_enter_blocking_section
    001fde35test rbx, rbx
    001fde38jle 0x1fdfa8
    001fde3emovzx esi, r15b
    001fde42
    001fde42loc_1fde42:
    001fde42mov rdx, r12
    001fde45mov rdi, rbp
    001fde48call fn_f40e0
    001fde4djmp 0x1fdfa8
    001fde52nop [rax+rax]
    001fde5csar rdi, 1
    001fde5fmov r15, rdi
    001fde62cmp rbx, 4095
    001fde69jg 0x1fe5ec
    001fde6ftest ah, 4
    001fde72je 0x1fe427
    001fde78call caml_enter_blocking_section
    001fde7dtest rbx, rbx
    001fde80jle 0x1fdfa8
    001fde86mov ecx, 1
    001fde8blea rdx, [rbp+2*r12]
    001fde90and r12l, 1
    001fde94mov eax, r15l
    001fde97je 0x1fdec0
    001fde99mov [rbp], r15w
    001fde9eadd rbp, 2
    001fdea2cmp rbp, rdx
    001fdea5je 0x1fded1
    001fdea7nop [rax+rax]
    001fdeb2nop [rax+rax]
    001fdebcmov [rbp], ax
    001fdec0
    001fdec0loc_1fdec0:
    001fdec0add rbp, 4
    001fdec4mov [rbp-2], ax
    001fdec8cmp rbp, rdx
    001fdecbjne 0x1fdec0
    001fdecdtest ecx, ecx
    001fdecfje 0x1fe1b0
    001fded5jmp 0x1fdfa8
    001fdedamov r12l, 1
    001fdee0pxor x1, x1
    001fdee4cvtsd2ss x1, [rdi]
    001fdee8movd edx, x1
    001fdeecmov ebx, edx
    001fdeeeand ebx, 0x7fffffff
    001fdef4cmp ebx, 0x477fffff
    001fdefaja 0x1fe380
    001fdf00cmp ebx, 0x387fffff
    001fdf06ja 0x1fe637
    001fdf0cmovd x2, ebx
    001fdf10addss x2, [rip+0x2c0f0]
    001fdf18movd ebx, x2
    001fdf1cshr edx, 16
    001fdf1fand edx, 32768
    001fdf25or ebx, edx
    001fdf27cmp r12, 4095
    001fdf2ejg 0x1fe5e2
    001fdf34test ah, 4
    001fdf37je 0x1fe60a
    001fdf3dcall caml_enter_blocking_section
    001fdf42test r12, r12
    001fdf45jle 0x1fdfa8
    001fdf47mov edx, 1
    001fdf4clea rax, [rbp+2*r12]
    001fdf51and r12l, 1
    001fdf55je 0x1fdf80
    001fdf57mov [rbp], bx
    001fdf5badd rbp, 2
    001fdf5fcmp rax, rbp
    001fdf62je 0x1fdfa0
    001fdf64nop [rax+rax]
    001fdf6fnop [rax+rax]
    001fdf7anop
    001fdf7cmov [rbp], bx
    001fdf80
    001fdf80loc_1fdf80:
    001fdf80add rbp, 4
    001fdf84mov [rbp-2], bx
    001fdf88cmp rax, rbp
    001fdf8bjne 0x1fdf80
    001fdf8dnop [rax+rax]
    001fdf98nop [rax]
    001fdf9ctest edx, edx
    001fdf9eje 0x1fe1b0
    001fdfa4call caml_leave_blocking_section
    001fdfa9jmp 0x1fe1b0
    001fdfaemov r15, [rdi+8]
    001fdfb2cmp rbx, 4095
    001fdfb9jg 0x1fe5f6
    001fdfbftest ah, 4
    001fdfc2jne 0x1fe3df
    001fdfc8test rbx, rbx
    001fdfcbjle 0x1fe1b0
    001fdfd1xor edx, edx
    001fdfd3xor eax, eax
    001fdfd5test r12b, 1
    001fdfd9je 0x1fe000
    001fdfdbmov [rbp], r15
    001fdfdfmov eax, 1
    001fdfe4cmp r12, 1
    001fdfe8je 0x1fdfa0
    001fdfeanop [rax+rax]
    001fdff5nop [rax]
    001fdffcmov [rbp+8*rax], r15
    001fe001mov [rbp+8*rax+8], r15
    001fe006add rax, 2
    001fe00acmp r12, rax
    001fe00djne 0x1fe000
    001fe00fjmp 0x1fdfa0
    001fe011sar rdi, 1
    001fe014mov r15, rdi
    001fe017cmp rbx, 4095
    001fe01ejg 0x1fe5d8
    001fe024test ah, 4
    001fe027je 0x1fe3bf
    001fe02dcall caml_enter_blocking_section
    001fe032test rbx, rbx
    001fe035jle 0x1fdfa8
    001fe03bmov edx, 1
    001fe040xor eax, eax
    001fe042test r12b, 1
    001fe046je 0x1fe060
    001fe048mov eax, 1
    001fe04dmov [rbp], r15
    001fe051cmp rax, r12
    001fe054je 0x1fdfa0
    001fe05anop
    001fe05cmov [rbp+8*rax], r15
    001fe061mov [rbp+8*rax+8], r15
    001fe066add rax, 2
    001fe06acmp rax, r12
    001fe06djne 0x1fe060
    001fe06fjmp 0x1fdfa0
    001fe074mov r15, [rdi+8]
    001fe078cmp rbx, 4095
    001fe07fjg 0x1fe5a6
    001fe085test ah, 4
    001fe088jne 0x1fe3a7
    001fe08etest rbx, rbx
    001fe091jle 0x1fe1b0
    001fe097xor edx, edx
    001fe099xor eax, eax
    001fe09btest r12b, 1
    001fe09fje 0x1fe0c0
    001fe0a1mov [rbp], r15
    001fe0a5mov eax, 1
    001fe0aacmp r12, 1
    001fe0aeje 0x1fdfa0
    001fe0b4nop [rax+rax]
    001fe0bcmov [rbp+8*rax], r15
    001fe0c1mov [rbp+8*rax+8], r15
    001fe0c6add rax, 2
    001fe0cacmp r12, rax
    001fe0cdjne 0x1fe0c0
    001fe0cfjmp 0x1fdfa0
    001fe0d4movupd x0, [rdi]
    001fe0d8lea rdx, [rbx+rbx]
    001fe0dccvtpd2ps x0, x0
    001fe0e0cmp rdx, 4095
    001fe0e7jg 0x1fe0f6
    001fe0e9test ah, 4
    001fe0ecje 0x1fe3f7
    001fe0f2movlps [rsp], x0
    001fe0f6
    001fe0f6loc_1fe0f6:
    001fe0f6call caml_enter_blocking_section
    001fe0fbtest rbx, rbx
    001fe0femovq x0, [rsp]
    001fe103mov edx, 1
    001fe108jle 0x1fdfa8
    001fe10exor eax, eax
    001fe110test r12b, 1
    001fe114je 0x1fe140
    001fe116mov eax, 1
    001fe11bmovlps [rbp], x0
    001fe11fcmp rax, r12
    001fe122je 0x1fdfa0
    001fe128nop [rax+rax]
    001fe133nop [rax+rax]
    001fe13cmovlps [rbp+8*rax], x0
    001fe141movlps [rbp+8*rax+8], x0
    001fe146add rax, 2
    001fe14acmp rax, r12
    001fe14djne 0x1fe140
    001fe14fjmp 0x1fdfa0
    001fe154lea rdx, [rbx+rbx]
    001fe158movupd x0, [rdi]
    001fe15ccmp rdx, 4095
    001fe163jg 0x1fe172
    001fe165test ah, 4
    001fe168je 0x1fe407
    001fe16emovaps [rsp], x0
    001fe172
    001fe172loc_1fe172:
    001fe172call caml_enter_blocking_section
    001fe177test rbx, rbx
    001fe17amovapd x0, [rsp]
    001fe17fmov eax, 1
    001fe184jle 0x1fdfa8
    001fe18anop
    001fe18cadd rbp, 16
    001fe190
    001fe190loc_1fe190:
    001fe190movups [rbp-16], x0
    001fe194sub r12, 1
    001fe198jne 0x1fe190
    001fe19atest eax, eax
    001fe19cjne 0x1fdfa8
    001fe1a2nop [rax+rax]
    001fe1acmov [r13+160], r14
    001fe1b3mov rax, [rsp+104]
    001fe1b8sub rax, [0x28]
    001fe1c1jne 0x1fe6cb
    001fe1c7add rsp, 120
    001fe1cbmov eax, 1
    001fe1d0pop rbx
    001fe1d1pop rbp
    001fe1d2pop r12
    001fe1d4pop r13
    001fe1d6pop r14
    001fe1d8pop r15
    001fe1daret
    001fe1dbmovsd_xmm x0, [rdi]
    001fe1dfcmp rbx, 4095
    001fe1e6jg 0x1fe5b0
    001fe1ectest ah, 4
    001fe1efje 0x1fe397
    001fe1f5movsd_xmm [rsp], x0
    001fe1facall caml_enter_blocking_section
    001fe1fftest rbx, rbx
    001fe202movsd_xmm x0, [rsp]
    001fe207jle 0x1fdfa8
    001fe20dmov edx, 1
    001fe212xor eax, eax
    001fe214test r12b, 1
    001fe218je 0x1fe240
    001fe21amovsd_xmm [rbp], x0
    001fe21fmov eax, 1
    001fe224cmp r12, 1
    001fe228je 0x1fdfa0
    001fe22enop [rax+rax]
    001fe239nop [rax]
    001fe23cmovsd_xmm [rbp+8*rax], x0
    001fe242movsd_xmm [rbp+8*rax+8], x0
    001fe248add rax, 2
    001fe24ccmp r12, rax
    001fe24fjne 0x1fe240
    001fe251jmp 0x1fdfa0
    001fe256mov r15l, [rdi+8]
    001fe25acmp rbx, 4095
    001fe261jg 0x1fe600
    001fe267test ah, 4
    001fe26aje 0x1fe3cf
    001fe270call caml_enter_blocking_section
    001fe275test rbx, rbx
    001fe278jle 0x1fdfa8
    001fe27emov edx, 1
    001fe283xor eax, eax
    001fe285test r12b, 1
    001fe289je 0x1fe2c0
    001fe28bmov [rbp], r15l
    001fe28fmov eax, 1
    001fe294cmp r12, 1
    001fe298je 0x1fdfa0
    001fe29enop [rax+rax]
    001fe2a9nop [rax+rax]
    001fe2b4nop [rax+rax]
    001fe2bcmov [rbp+4*rax], r15l
    001fe2c1mov [rbp+4*rax+4], r15l
    001fe2c6add rax, 2
    001fe2cacmp r12, rax
    001fe2cdjne 0x1fe2c0
    001fe2cfjmp 0x1fdfa0
    001fe2d4pxor x0, x0
    001fe2d8cvtsd2ss x0, [rdi]
    001fe2dccmp rbx, 4095
    001fe2e3jg 0x1fe5c4
    001fe2e9test ah, 4
    001fe2ecje 0x1fe417
    001fe2f2movss [rsp], x0
    001fe2f7call caml_enter_blocking_section
    001fe2fctest rbx, rbx
    001fe2ffmovss x0, [rsp]
    001fe304jle 0x1fdfa8
    001fe30amov edx, 1
    001fe30fxor eax, eax
    001fe311test r12b, 1
    001fe315je 0x1fe340
    001fe317mov eax, 1
    001fe31cmovss [rbp], x0
    001fe321cmp rax, r12
    001fe324je 0x1fdfa0
    001fe32anop [rax+rax]
    001fe335nop [rax]
    001fe33cmovss [rbp+4*rax], x0
    001fe342movss [rbp+4*rax+4], x0
    001fe348add rax, 2
    001fe34ccmp rax, r12
    001fe34fjne 0x1fe340
    001fe351jmp 0x1fdfa0
    001fe356nop [rax+rax]
    001fe35cmov rax, [rcx+16]
    001fe360
    001fe360loc_1fe360:
    001fe360movzx edx, al
    001fe363cmp al, 13
    001fe365ja 0xf488e
    001fe36blea rcx, [rip+0x334f6]
    001fe372movsxd rdx, [rcx+4*rdx]
    001fe376add rdx, rcx
    001fe379jmp rdx
    001fe37ccmp ebx, 0x7f800001
    001fe382sbb ebx, ebx
    001fe384and bx, -512
    001fe389add bx, 32256
    001fe38ejmp 0x1fdf20
    001fe393test rbx, rbx
    001fe396jle 0x1fe1b0
    001fe39cxor edx, edx
    001fe39ejmp 0x1fe216
    001fe3a3call caml_enter_blocking_section
    001fe3a8test rbx, rbx
    001fe3abjle 0x1fdfa8
    001fe3b1mov edx, 1
    001fe3b6jmp 0x1fe09d
    001fe3bbtest rbx, rbx
    001fe3bejle 0x1fe1b0
    001fe3c4xor edx, edx
    001fe3c6jmp 0x1fe044
    001fe3cbtest rbx, rbx
    001fe3cejle 0x1fe1b0
    001fe3d4xor edx, edx
    001fe3d6jmp 0x1fe287
    001fe3dbcall caml_enter_blocking_section
    001fe3e0test rbx, rbx
    001fe3e3jle 0x1fdfa8
    001fe3e9mov edx, 1
    001fe3eejmp 0x1fdfd7
    001fe3f3test rbx, rbx
    001fe3f6jle 0x1fe1b0
    001fe3fcxor edx, edx
    001fe3fejmp 0x1fe112
    001fe403test rbx, rbx
    001fe406jle 0x1fe1b0
    001fe40cxor eax, eax
    001fe40ejmp 0x1fe190
    001fe413test rbx, rbx
    001fe416jle 0x1fe1b0
    001fe41cxor edx, edx
    001fe41ejmp 0x1fe313
    001fe423test rbx, rbx
    001fe426jle 0x1fe1b0
    001fe42cxor ecx, ecx
    001fe42ejmp 0x1fde8f
    001fe433sar rdi, 1
    001fe436mov r15, rdi
    001fe439test ah, 4
    001fe43cje 0x1fe64e
    001fe442call caml_enter_blocking_section
    001fe447mov r12l, 1
    001fe44djmp 0x1fde42
    001fe452call caml_enter_blocking_section
    001fe457jmp 0x1fde42
    001fe45csar rdi, 1
    001fe45fmov r15, rdi
    001fe462test ah, 4
    001fe465je 0x1fe656
    001fe46bcall caml_enter_blocking_section
    001fe470mov r12l, 1
    001fe476jmp 0x1fde8a
    001fe47bpxor x0, x0
    001fe47fcvtsd2ss x0, [rdi]
    001fe483test ah, 4
    001fe486je 0x1fe663
    001fe48cmovss [rsp], x0
    001fe491mov r12l, 1
    001fe497call caml_enter_blocking_section
    001fe49cmovss x0, [rsp]
    001fe4a1mov edx, 1
    001fe4a6jmp 0x1fe313
    001fe4abmov r15l, [rdi+8]
    001fe4aftest ah, 4
    001fe4b2je 0x1fe670
    001fe4b8call caml_enter_blocking_section
    001fe4bdmov r12l, 1
    001fe4c3jmp 0x1fe282
    001fe4c8movsd_xmm x0, [rdi]
    001fe4cctest ah, 4
    001fe4cfje 0x1fe697
    001fe4d5movsd_xmm [rsp], x0
    001fe4damov r12l, 1
    001fe4e0call caml_enter_blocking_section
    001fe4e5movsd_xmm x0, [rsp]
    001fe4eajmp 0x1fe211
    001fe4efmovupd x0, [rdi]
    001fe4f3cvtpd2ps x0, x0
    001fe4f7test ah, 4
    001fe4faje 0x1fe6b1
    001fe500movlps [rsp], x0
    001fe504mov r12l, 1
    001fe50acall caml_enter_blocking_section
    001fe50fmovq x0, [rsp]
    001fe514mov edx, 1
    001fe519jmp 0x1fe112
    001fe51esar rdi, 1
    001fe521mov r15, rdi
    001fe524test ah, 4
    001fe527je 0x1fe6a4
    001fe52dcall caml_enter_blocking_section
    001fe532mov r12l, 1
    001fe538jmp 0x1fe03f
    001fe53dmov r15, [rdi+8]
    001fe541test ah, 4
    001fe544je 0x1fe6be
    001fe54acall caml_enter_blocking_section
    001fe54fmov r12l, 1
    001fe555jmp 0x1fe3b5
    001fe55amov r15, [rdi+8]
    001fe55etest ah, 4
    001fe561je 0x1fe67d
    001fe567call caml_enter_blocking_section
    001fe56cmov r12l, 1
    001fe572jmp 0x1fe3ed
    001fe577movupd x0, [rdi]
    001fe57btest ah, 4
    001fe57eje 0x1fe68a
    001fe584movaps [rsp], x0
    001fe588mov r12l, 1
    001fe58ecall caml_enter_blocking_section
    001fe593movapd x0, [rsp]
    001fe598mov eax, 1
    001fe59djmp 0x1fe190
    001fe5a2call caml_enter_blocking_section
    001fe5a7jmp 0x1fe3b5
    001fe5acmovsd_xmm [rsp], x0
    001fe5b1call caml_enter_blocking_section
    001fe5b6movsd_xmm x0, [rsp]
    001fe5bbjmp 0x1fe211
    001fe5c0movss [rsp], x0
    001fe5c5call caml_enter_blocking_section
    001fe5camovss x0, [rsp]
    001fe5cfjmp 0x1fe30e
    001fe5d4call caml_enter_blocking_section
    001fe5d9jmp 0x1fe03f
    001fe5decall caml_enter_blocking_section
    001fe5e3jmp 0x1fdf4b
    001fe5e8call caml_enter_blocking_section
    001fe5edjmp 0x1fde8a
    001fe5f2call caml_enter_blocking_section
    001fe5f7jmp 0x1fe3ed
    001fe5fccall caml_enter_blocking_section
    001fe601jmp 0x1fe282
    001fe606test r12, r12
    001fe609jle 0x1fe1b0
    001fe60fxor edx, edx
    001fe611jmp 0x1fdf50
    001fe616test rbx, rbx
    001fe619jle 0x1fe1b0
    001fe61fmovzx esi, r15b
    001fe623
    001fe623loc_1fe623:
    001fe623mov rdx, r12
    001fe626mov rdi, rbp
    001fe629call fn_f40e0
    001fe62ejmp 0x1fe1b0
    001fe633mov ecx, ebx
    001fe635shr ecx, 13
    001fe638and ecx, 1
    001fe63blea ebx, [rbx+rcx-0x37fff001]
    001fe642shr ebx, 13
    001fe645jmp 0x1fdf20
    001fe64amov r12l, 1
    001fe650jmp 0x1fe623
    001fe652mov r12l, 1
    001fe658xor ecx, ecx
    001fe65ajmp 0x1fde8f
    001fe65fmov r12l, 1
    001fe665xor edx, edx
    001fe667jmp 0x1fe313
    001fe66cmov r12l, 1
    001fe672xor edx, edx
    001fe674jmp 0x1fe287
    001fe679mov r12l, 1
    001fe67fxor edx, edx
    001fe681jmp 0x1fdfd7
    001fe686mov r12l, 1
    001fe68cxor eax, eax
    001fe68ejmp 0x1fe190
    001fe693mov r12l, 1
    001fe699xor edx, edx
    001fe69bjmp 0x1fe216
    001fe6a0mov r12l, 1
    001fe6a6xor edx, edx
    001fe6a8jmp 0x1fe044
    001fe6admov r12l, 1
    001fe6b3xor edx, edx
    001fe6b5jmp 0x1fe112
    001fe6bamov r12l, 1
    001fe6c0xor edx, edx
    001fe6c2jmp 0x1fe09d
    001fe6c7call fn_f4590
    001fe6ccdb 0xc0
    001fe6cdpop rsi
    001fe6ceout dx, eax
    001fe6cfdb 0xff
    001fdd40
    001fe6d0
    001fe6d0 // align 0x20
    001fe6e0
    001fe6e0caml_ba_reshape:
    001fe6e0push rbp
    001fe6e1mov rdx, rsi
    001fe6e4push rbx
    001fe6e5sub rsp, 312
    001fe6ecmovdqa x0, [rip+0x2b9d8]
    001fe6f4mov [rsp], rsi
    001fe6f8movq x1, rsp
    001fe6fdmov [rsp+8], rdi
    001fe702mov rax, [0x28]
    001fe70bmov [rsp+296], rax
    001fe713mov rax, [rip+0x778ca]
    001fe71amov rbx, [rax]
    001fe71elea rax, [rsp+8]
    001fe723movups [rsp+40], x0
    001fe728mov [rsp+24], 1
    001fe731movq x0, rax
    001fe736lea rax, [rsp+32]
    001fe73bmov [rsp+96], rax
    001fe740lea rax, [rsp+96]
    001fe745mov rbp, [rbx+160]
    001fe74cpunpcklqdq x0, x1
    001fe750mov [rbx+160], rax
    001fe757mov eax, 1
    001fe75cmovups [rsp+56], x0
    001fe761movq x0, rax
    001fe766lea rax, [rsp+24]
    001fe76bpunpcklqdq x0, x0
    001fe76fmov [rsp+32], rbp
    001fe774mov [rsp+120], rax
    001fe779movups [rsp+104], x0
    001fe77emov rax, [rsi-8]
    001fe782mov rsi, rax
    001fe785shr rsi, 10
    001fe789cmp rax, 17407
    001fe78fja 0x1fe8b7
    001fe795test rsi, rsi
    001fe798je 0x1fe88b
    001fe79elea rdi, [rsp+160]
    001fe7a6lea r8, [rdx+8*rsi]
    001fe7aamov ecx, 1
    001fe7afsub rdi, rdx
    001fe7b2nop [rax+rax]
    001fe7bcmov rax, [rdx]
    001fe7bfsar rax, 1
    001fe7c2mov [rdi+rdx], rax
    001fe7c6js 0x1fe8ab
    001fe7ccadd rdx, 8
    001fe7d0imul rcx, rax
    001fe7d4cmp rdx, r8
    001fe7d7jne 0x1fe7c0
    001fe7d9mov rax, [rsp+8]
    001fe7demov r9, [rax+16]
    001fe7e2lea r8, [rax+8]
    001fe7e6test r9, r9
    001fe7e9jle 0x1fe884
    001fe7efmov edi, 1
    001fe7f4xor edx, edx
    001fe7f6xor eax, eax
    001fe7f8nop [rax]
    001fe7fcadd edx, 1
    001fe7ffimul rdi, [r8+8*rax+32]
    001fe805movsxd rax, edx
    001fe808cmp rax, r9
    001fe80bjl 0x1fe800
    001fe80dcmp rdi, rcx
    001fe810jne 0x1fe8c8
    001fe816mov rdi, [r8+16]
    001fe81a
    001fe81aloc_1fe81a:
    001fe81amov rdx, [r8]
    001fe81dlea rcx, [rsp+160]
    001fe825or edi, 2048
    001fe82bcall caml_ba_alloc
    001fe830mov rdx, [rsp+8]
    001fe835mov [rsp+24], rax
    001fe83amov rdx, [rdx]
    001fe83dmov [rax], rdx
    001fe840mov rax, [rsp+24]
    001fe845lea rsi, [rax+8]
    001fe849mov rax, [rsp+8]
    001fe84elea rdi, [rax+8]
    001fe852call fn_1fc480
    001fe857mov [rbx+160], rbp
    001fe85emov rax, [rsp+24]
    001fe863mov rdx, [rsp+296]
    001fe86bsub rdx, [0x28]
    001fe874jne 0x1fe8c3
    001fe876add rsp, 312
    001fe87dpop rbx
    001fe87epop rbp
    001fe87fret
    001fe880mov edi, 1
    001fe885jmp 0x1fe811
    001fe887mov rax, [rsp+8]
    001fe88cmov ecx, 1
    001fe891mov r9, [rax+16]
    001fe895lea r8, [rax+8]
    001fe899test r9, r9
    001fe89cjg 0x1fe7f3
    001fe8a2jmp 0x1fe81a
    001fe8a7lea rdi, [rip+0x312fe]
    001fe8aecall caml_invalid_argument
    001fe8b3lea rdi, [rip+0x312c2]
    001fe8bacall caml_invalid_argument
    001fe8bfcall fn_f4590
    001fe8c4lea rdi, [rip+0x31309]
    001fe8cbcall caml_invalid_argument
    001fe8d0db 0x2c
    001fe8d1db 0x81
    001fe8d2add [rax], al
    001fe6e0
    001fe8d4
    001fe8d4 // align 0x10
    001fe8e0
    001fe8e0fn_1fe8e0:
    001fe8e0push r15
    001fe8e2movsxd rax, ecx
    001fe8e5push r14
    001fe8e7push r13
    001fe8e9push r12
    001fe8ebpush rbp
    001fe8ecmov rbp, rdi
    001fe8efpush rbx
    001fe8f0sub rsp, 296
    001fe8f7mov rcx, [0x28]
    001fe900mov [rsp+280], rcx
    001fe908xor ecx, ecx
    001fe90aadd rdx, [rdi+64]
    001fe90emov rcx, [rdi+72]
    001fe912mov [rdi+64], rdx
    001fe916jae 0x1fe920
    001fe918add rcx, 1
    001fe91cmov [rdi+72], rcx
    001fe920
    001fe920loc_1fe920:
    001fe920movdqu x0, [rsi]
    001fe924mov r14, [rbp+8]
    001fe928neg rax
    001fe92bmov rdi, 0x510e527fade682d1
    001fe935xor rdx, rdi
    001fe938mov r8, [rbp+16]
    001fe93cmov r9, [rbp+48]
    001fe940mov rdi, 0x9b05688c2b3e6c1f
    001fe94amov r12, [rbp+56]
    001fe94emov r11, [rbp]
    001fe952xor rcx, rdi
    001fe955mov [rsp+80], r14
    001fe95amovaps [rsp+144], x0
    001fe962movdqu x0, [rsi+16]
    001fe967mov r10, [rbp+24]
    001fe96bmov rdi, 0x1f83d9abfb41bd6b
    001fe975mov rbx, [rbp+32]
    001fe979mov r13, [rbp+40]
    001fe97dxor rax, rdi
    001fe980mov [rsp+88], r8
    001fe985mov [rsp+120], r9
    001fe98amov rdi, r14
    001fe98dlea r15, [rip+0x32f2c]
    001fe994mov r14, 0x5be0cd19137e2179
    001fe99emovaps [rsp+160], x0
    001fe9a6movdqu x0, [rsi+32]
    001fe9abmov [rsp+128], r12
    001fe9b3movaps [rsp+176], x0
    001fe9bbmovdqu x0, [rsi+48]
    001fe9c0mov [rsp+72], r11
    001fe9c5movaps [rsp+192], x0
    001fe9cdmovdqu x0, [rsi+64]
    001fe9d2mov [rsp+96], r10
    001fe9d7movaps [rsp+208], x0
    001fe9dfmovdqu x0, [rsi+80]
    001fe9e4mov [rsp+104], rbx
    001fe9e9movaps [rsp+224], x0
    001fe9f1movdqu x0, [rsi+96]
    001fe9f6mov [rsp+112], r13
    001fe9fbmovaps [rsp+240], x0
    001fea03movdqu x0, [rsi+112]
    001fea08mov rsi, r8
    001fea0bmov r8, 0xbb67ae8584caa73b
    001fea15movaps [rsp+256], x0
    001fea1dmov [rsp+48], r12
    001fea22mov r12, 0xa54ff53a5f1d36f1
    001fea2cmov [rsp+56], rax
    001fea31mov [rsp+40], r9
    001fea36mov r9, 0x6a09e667f3bcc908
    001fea40mov [rsp+32], r14
    001fea45mov r14, 0x3c6ef372fe94f82b
    001fea4fmov [rsp+136], rbp
    001fea57mov rbp, rsi
    001fea5anop [rax+rax]
    001fea60
    001fea60loc_1fea60:
    001fea60movzx esi, [r15]
    001fea64mov rax, [rsp+8*rsi+144]
    001fea6cadd rax, rbx
    001fea6fmov rsi, rax
    001fea72add rsi, r11
    001fea75movzx r11l, [r15+1]
    001fea7axor rdx, rsi
    001fea7drol rdx, 32
    001fea81mov rax, [rsp+8*r11+144]
    001fea89add r9, rdx
    001fea8cxor rbx, r9
    001fea8fror rbx, 24
    001fea93add rax, rbx
    001fea96mov r11, rax
    001fea99add r11, rsi
    001fea9cmovzx esi, [r15+2]
    001feaa1xor rdx, r11
    001feaa4ror rdx, 16
    001feaa8lea rax, [r9+rdx]
    001feaacmov r9, [rsp+8*rsi+144]
    001feab4mov [rsp+8], rdx
    001feab9xor rbx, rax
    001feabcmov [rsp+16], rax
    001feac1mov rax, [rsp+56]
    001feac6add r9, r13
    001feac9rol rbx, 1
    001feaccmov rsi, r9
    001feacfmov [rsp+64], rbx
    001fead4add rsi, rdi
    001fead7movzx edi, [r15+3]
    001feadcxor rcx, rsi
    001feadfrol rcx, 32
    001feae3mov r9, [rsp+8*rdi+144]
    001feaebadd r8, rcx
    001feaeexor r13, r8
    001feaf1ror r13, 24
    001feaf5add r9, r13
    001feaf8mov rdi, r9
    001feafbadd rdi, rsi
    001feafexor rcx, rdi
    001feb01ror rcx, 16
    001feb05lea rsi, [r8+rcx]
    001feb09mov r8, [rsp+40]
    001feb0exor r13, rsi
    001feb11mov [rsp+24], rsi
    001feb16movzx esi, [r15+4]
    001feb1brol r13, 1
    001feb1emov r9, [rsp+8*rsi+144]
    001feb26add r9, r8
    001feb29mov rsi, r9
    001feb2cadd rsi, rbp
    001feb2fxor rax, rsi
    001feb32rol rax, 32
    001feb36lea rbx, [rax+r14]
    001feb3axor r8, rbx
    001feb3dmov r9, r8
    001feb40movzx r8l, [r15+5]
    001feb45ror r9, 24
    001feb49mov rbp, [rsp+8*r8+144]
    001feb51mov r8, [rsp+48]
    001feb56add rbp, r9
    001feb59add rbp, rsi
    001feb5cmovzx esi, [r15+6]
    001feb61xor rax, rbp
    001feb64mov r14, [rsp+8*rsi+144]
    001feb6cmov rsi, r8
    001feb6fror rax, 16
    001feb73add rbx, rax
    001feb76add r14, r8
    001feb79movzx r8l, [r15+7]
    001feb7exor r9, rbx
    001feb81add r14, r10
    001feb84mov r10, [rsp+32]
    001feb89rol r9, 1
    001feb8cmov rdx, [rsp+8*r8+144]
    001feb94xor r10, r14
    001feb97rol r10, 32
    001feb9badd r12, r10
    001feb9exor rsi, r12
    001feba1ror rsi, 24
    001feba5add rdx, rsi
    001feba8mov r8, rdx
    001febabmov rdx, [rsp+8]
    001febb0add r8, r14
    001febb3movzx r14l, [r15+8]
    001febb8xor r10, r8
    001febbbadd r11, [rsp+8*r14+144]
    001febc3ror r10, 16
    001febc7movzx r14l, [r15+9]
    001febccadd r11, r13
    001febcfadd r12, r10
    001febd2xor r10, r11
    001febd5add r11, [rsp+8*r14+144]
    001febddxor rsi, r12
    001febe0rol r10, 32
    001febe4rol rsi, 1
    001febe7add rbx, r10
    001febeaxor r13, rbx
    001febedror r13, 24
    001febf1add r11, r13
    001febf4xor r10, r11
    001febf7ror r10, 16
    001febfblea r14, [rbx+r10]
    001febffmov [rsp+32], r10
    001fec04movzx r10l, [r15+10]
    001fec09xor r13, r14
    001fec0cadd rdi, [rsp+8*r10+144]
    001fec14movzx r10l, [r15+11]
    001fec19rol r13, 1
    001fec1cadd rdi, r9
    001fec1fmov rbx, [rsp+64]
    001fec24xor rdx, rdi
    001fec27add rdi, [rsp+8*r10+144]
    001fec2fmovzx r10l, [r15+13]
    001fec34rol rdx, 32
    001fec38add r12, rdx
    001fec3bxor r9, r12
    001fec3eror r9, 24
    001fec42add rdi, r9
    001fec45xor rdx, rdi
    001fec48ror rdx, 16
    001fec4cadd r12, rdx
    001fec4fxor r9, r12
    001fec52rol r9, 1
    001fec55mov [rsp+40], r9
    001fec5amovzx r9l, [r15+12]
    001fec5fadd rbp, [rsp+8*r9+144]
    001fec67mov r9, [rsp+16]
    001fec6cadd rbp, rsi
    001fec6fxor rcx, rbp
    001fec72add rbp, [rsp+8*r10+144]
    001fec7arol rcx, 32
    001fec7eadd r9, rcx
    001fec81xor rsi, r9
    001fec84ror rsi, 24
    001fec88add rbp, rsi
    001fec8bxor rcx, rbp
    001fec8eror rcx, 16
    001fec92add r9, rcx
    001fec95xor rsi, r9
    001fec98mov r10, rsi
    001fec9bmovzx esi, [r15+14]
    001feca0rol r10, 1
    001feca3add r8, [rsp+8*rsi+144]
    001fecabmov [rsp+48], r10
    001fecb0lea r10, [rbx+r8]
    001fecb4mov rsi, [rsp+24]
    001fecb9movzx r8l, [r15+15]
    001fecbexor rax, r10
    001fecc1rol rax, 32
    001fecc5add r10, [rsp+8*r8+144]
    001feccdadd r15, 16
    001fecd1add rsi, rax
    001fecd4xor rbx, rsi
    001fecd7ror rbx, 24
    001fecdbadd r10, rbx
    001fecdexor rax, r10
    001fece1ror rax, 16
    001fece5lea r8, [rsi+rax]
    001fece9mov [rsp+56], rax
    001feceelea rax, [rip+0x32c8b]
    001fecf5xor rbx, r8
    001fecf8rol rbx, 1
    001fecfbcmp r15, rax
    001fecfejne 0x1fea60
    001fed04mov r15, [rsp+72]
    001fed09mov rsi, rbp
    001fed0cmov rbp, [rsp+136]
    001fed14mov rax, [rsp+56]
    001fed19xor r15, r11
    001fed1cmov r11, r15
    001fed1fxor r11, r9
    001fed22mov [rbp], r11
    001fed26mov r11, [rsp+80]
    001fed2bxor r11, rdi
    001fed2emov rdi, r11
    001fed31xor rdi, r8
    001fed34mov [rbp+8], rdi
    001fed38mov rdi, [rsp+88]
    001fed3dxor rdi, rsi
    001fed40mov rsi, rdi
    001fed43mov rdi, [rsp+104]
    001fed48xor rsi, r14
    001fed4bxor rdi, rdx
    001fed4emov [rbp+16], rsi
    001fed52mov rsi, [rsp+96]
    001fed57mov rdx, rdi
    001fed5amov rdi, [rsp+120]
    001fed5fxor rdx, rbx
    001fed62xor rsi, r10
    001fed65xor rdi, rax
    001fed68mov [rbp+32], rdx
    001fed6cmov rdx, [rsp+112]
    001fed71xor rsi, r12
    001fed74mov rax, rdi
    001fed77mov rdi, [rsp+40]
    001fed7cmov [rbp+24], rsi
    001fed80xor rdx, rcx
    001fed83xor rax, rdi
    001fed86mov rdi, [rsp+32]
    001fed8bxor rdx, r13
    001fed8emov [rbp+48], rax
    001fed92mov rax, [rsp+128]
    001fed9amov [rbp+40], rdx
    001fed9exor rax, rdi
    001feda1mov rdi, [rsp+48]
    001feda6xor rax, rdi
    001feda9mov [rbp+56], rax
    001fedadmov rax, [rsp+280]
    001fedb5sub rax, [0x28]
    001fedbejne 0x1fedd2
    001fedc0add rsp, 296
    001fedc7pop rbx
    001fedc8pop rbp
    001fedc9pop r12
    001fedcbpop r13
    001fedcdpop r14
    001fedcfpop r15
    001fedd1ret
    001fedd2
    001fedd2loc_1fedd2:
    001fedd2call fn_f4590
    001fe8e0
    001fedd7
    001fedd7 // align 0x10
    001fede0
    001fede0fn_1fede0:
    001fede0mov rdi, [rdi+8]
    001fede4jmp 0x216690
    001fede9db 0xa3
    001fedeajs 0x1feded
    001fedecdb 0x00
    001fede0
    001feded
    001feded // align 0x10
    001fedf0
    001fedf0caml_BLAKE2Init:
    001fedf0mov rax, 0xbb67ae8584caa73b
    001fedfamov r8, rdi
    001fedfdmov rdi, rcx
    001fee00mov rcx, 0x6a09e667f3bcc908
    001fee0amov [r8+8], rax
    001fee0emov rax, 0x3c6ef372fe94f82b
    001fee18mov [r8+16], rax
    001fee1cmov rax, 0xa54ff53a5f1d36f1
    001fee26mov [r8+24], rax
    001fee2amov rax, 0x510e527fade682d1
    001fee34mov [r8+32], rax
    001fee38mov rax, 0x9b05688c2b3e6c1f
    001fee42mov [r8+40], rax
    001fee46mov rax, 0x1f83d9abfb41bd6b
    001fee50mov [r8+48], rax
    001fee54mov rax, 0x5be0cd19137e2179
    001fee5emov [r8+56], rax
    001fee62mov rax, rdx
    001fee65shl rax, 8
    001fee69mov [r8+72], 0
    001fee71or rax, rsi
    001fee74mov [r8+64], 0
    001fee7cor rax, 0x1010000
    001fee82mov [r8+80], 0
    001fee8axor rax, rcx
    001fee8dmov [r8], rax
    001fee90test rdx, rdx
    001fee93jne 0x1feea0
    001fee95ret
    001fee96db 0xd2
    001fee97jne 0x1feea0
    001fee99ret
    001fee9a
    001fee9a 66 0f 1f 44 00 00 f..D..
    001feea0
    001feea0loc_1feea0:
    001feea0mov eax, 64
    001feea5lea rcx, [r8+88]
    001feea9cmp rdx, rax
    001feeaccmova rdx, rax
    001feeb0cmp edx, 8
    001feeb3jae 0x1fef18
    001feeb5test dl, 4
    001feeb8jne 0x1fef65
    001feebetest edx, edx
    001feec0je 0x1feed2
    001feec2movzx eax, [rdi]
    001feec5mov [r8+88], al
    001feec9test dl, 2
    001feeccjne 0x1fef7a
    001feed2
    001feed2loc_1feed2:
    001feed2mov eax, 128
    001feed7sub rax, rdx
    001feedaadd rdx, rcx
    001feeddlea rdi, [rdx+8]
    001feee1mov ecx, eax
    001feee3mov [rdx], 0
    001feeeamov [rdx+rcx-8], 0
    001feef3and rdi, -8
    001feef7sub rdx, rdi
    001feefalea ecx, [rax+rdx]
    001feefdmov eax, ecx
    001feeffshr eax, 3
    001fef02mov ecx, eax
    001fef04xor eax, eax
    001fef06rep stosq [rdi], rax
    001fef09mov [r8+80], 128
    001fef11ret
    001fef12
    001fef12 66 0f 1f 44 00 00 f..D..
    001fef18
    001fef18loc_1fef18:
    001fef18mov rax, [rdi]
    001fef1bmov [r8+88], rax
    001fef1fmov eax, edx
    001fef21mov rsi, [rdi+rax-8]
    001fef26mov [rcx+rax-8], rsi
    001fef2blea rsi, [r8+96]
    001fef2fmov rax, rcx
    001fef32and rsi, -8
    001fef36sub rax, rsi
    001fef39sub rdi, rax
    001fef3cadd eax, edx
    001fef3eand eax, -8
    001fef41cmp eax, 8
    001fef44jb 0x1feed2
    001fef46and eax, -8
    001fef49xor r9l, r9l
    001fef4c
    001fef4cloc_1fef4c:
    001fef4cmov r10l, r9l
    001fef4fadd r9l, 8
    001fef53mov r11, [rdi+r10]
    001fef57mov [rsi+r10], r11
    001fef5bcmp r9l, eax
    001fef5ejb 0x1fef4c
    001fef60jmp 0x1feed2
    001fef65
    001fef65loc_1fef65:
    001fef65mov eax, [rdi]
    001fef67mov [r8+88], eax
    001fef6bmov eax, edx
    001fef6dmov esi, [rdi+rax-4]
    001fef71mov [rcx+rax-4], esi
    001fef75jmp 0x1feed2
    001fef7a
    001fef7aloc_1fef7a:
    001fef7amov eax, edx
    001fef7cmovzx esi, [rdi+rax-2]
    001fef81mov [rcx+rax-2], si
    001fef86jmp 0x1feed2
    001fedf0
    001fef8b
    001fef8b // align 0x10
    001fef90
    001fef90caml_BLAKE2Update:
    001fef90push r15
    001fef92push r14
    001fef94push r13
    001fef96push r12
    001fef98mov r12, rsi
    001fef9bpush rbp
    001fef9cmov rbp, rdx
    001fef9fpush rbx
    001fefa0mov rbx, rdi
    001fefa3sub rsp, 24
    001fefa7mov r13, [rdi+80]
    001fefabtest r13, r13
    001fefaejne 0x1ff0a0
    001fefb4lea rax, [rdi+88]
    001fefb8mov [rsp+8], rax
    001fefbdcmp rbp, 128
    001fefc4jbe 0x1ff01e
    001fefc6lea r14, [rbp-129]
    001fefcdmov r15, r12
    001fefd0shr r14, 7
    001fefd4lea r13, [r14+1]
    001fefd8shl r13, 7
    001fefdcadd r13, r12
    001fefdfnop [rax+rax]
    001fefeanop
    001fefecmov rsi, r15
    001fefefxor ecx, ecx
    001feff1mov edx, 128
    001feff6mov rdi, rbx
    001feff9call fn_1fe8e0
    001feffesub r15, -128
    001ff002cmp r15, r13
    001ff005jne 0x1feff0
    001ff007neg r14
    001ff00asub r12, -128
    001ff00eshl r14, 7
    001ff012lea rbp, [rbp+r14-128]
    001ff017sub r12, r14
    001ff01amov ecx, ebp
    001ff01ccmp ebp, 8
    001ff01fjb 0x1ff070
    001ff021mov rax, [r12]
    001ff025lea rdi, [rbx+96]
    001ff029mov rsi, r12
    001ff02cand rdi, -8
    001ff030mov [rbx+88], rax
    001ff034mov eax, ebp
    001ff036mov rcx, [rsp+8]
    001ff03bmov rdx, [r12+rax-8]
    001ff040mov [rcx+rax-8], rdx
    001ff045sub rcx, rdi
    001ff048sub rsi, rcx
    001ff04blea ecx, [rbp+rcx]
    001ff04fshr ecx, 3
    001ff052rep movsq [rdi], [rsi]
    001ff055mov [rbx+80], rbp
    001ff059
    001ff059loc_1ff059:
    001ff059add rsp, 24
    001ff05dpop rbx
    001ff05epop rbp
    001ff05fpop r12
    001ff061pop r13
    001ff063pop r14
    001ff065pop r15
    001ff067ret
    001ff068db 0x5e
    001ff069pop r15
    001ff06bret
    001ff06c
    001ff06c 0f 1f 40 00 ..@.
    001ff070
    001ff070loc_1ff070:
    001ff070test bpl, 4
    001ff074jne 0x1ff0fb
    001ff07atest ebp, ebp
    001ff07cje 0x1ff059
    001ff07emovzx eax, [r12]
    001ff083mov [rbx+88], al
    001ff086test bpl, 2
    001ff08aje 0x1ff059
    001ff08cmov eax, ebp
    001ff08emov rsi, [rsp+8]
    001ff093movzx edx, [r12+rax-2]
    001ff099mov [rsi+rax-2], dx
    001ff09ejmp 0x1ff059
    001ff0a0
    001ff0a0loc_1ff0a0:
    001ff0a0mov r14l, 128
    001ff0a6sub r14, r13
    001ff0a9cmp r14, rdx
    001ff0acjae 0x1ff0e8
    001ff0aelea r15, [rdi+88]
    001ff0b2mov rdx, r14
    001ff0b5lea rbp, [r13+rbp-128]
    001ff0baadd r12, r14
    001ff0bdlea rdi, [r15+r13]
    001ff0c1mov [rsp+8], r15
    001ff0c6call fn_f47d0
    001ff0cbxor ecx, ecx
    001ff0cdmov edx, 128
    001ff0d2mov rsi, r15
    001ff0d5mov rdi, rbx
    001ff0d8call fn_1fe8e0
    001ff0ddjmp 0x1fefc1
    001ff0e2
    001ff0e2 66 0f 1f 44 00 00 f..D..
    001ff0e8
    001ff0e8loc_1ff0e8:
    001ff0e8lea rdi, [rdi+r13+88]
    001ff0edcall fn_f47d0
    001ff0f2add rbp, [rbx+80]
    001ff0f6jmp 0x1ff059
    001ff0fb
    001ff0fbloc_1ff0fb:
    001ff0fbmov eax, [r12]
    001ff0ffmov [rbx+88], eax
    001ff102mov eax, [r12+rcx-4]
    001ff107mov rdx, [rsp+8]
    001ff10cmov [rdx+rcx-4], eax
    001ff110jmp 0x1ff059
    001fef90
    001ff115
    001ff115 // align 0x40
    001ff140
    001ff140caml_BLAKE2Final:
    001ff140push r13
    001ff142push r12
    001ff144mov r12, rdx
    001ff147mov edx, 128
    001ff14cpush rbp
    001ff14dmov rbp, rsi
    001ff150xor esi, esi
    001ff152push rbx
    001ff153mov rbx, rdi
    001ff156lea r13, [rbx+88]
    001ff15asub rsp, 8
    001ff15emov rdi, [rdi+80]
    001ff162sub rdx, rdi
    001ff165add rdi, r13
    001ff168call fn_f40e0
    001ff16dmov rdx, [rbx+80]
    001ff171mov rsi, r13
    001ff174mov rdi, rbx
    001ff177mov ecx, 1
    001ff17ccall fn_1fe8e0
    001ff181test rbp, rbp
    001ff184je 0x1ff1e3
    001ff186xor eax, eax
    001ff188xor esi, esi
    001ff18anop [rax+rax]
    001ff195nop [rax+rax]
    001ff1a0nop [rax+rax]
    001ff1abnop [rax+rax]
    001ff1b6nop [rax+rax]
    001ff1bcmov edx, eax
    001ff1bemov ecx, eax
    001ff1c0
    001ff1c0loc_1ff1c0:
    001ff1c0shr edx, 3
    001ff1c3and ecx, 7
    001ff1c6mov rdx, [rbx+8*rdx]
    001ff1cashl ecx, 3
    001ff1cdshr rdx, cl
    001ff1d0mov [r12+rsi], dl
    001ff1d4lea esi, [rax+1]
    001ff1d7mov rax, rsi
    001ff1dacmp rsi, rbp
    001ff1ddjb 0x1ff1c0
    001ff1dfadd rsp, 8
    001ff1e3
    001ff1e3loc_1ff1e3:
    001ff1e3pop rbx
    001ff1e4pop rbp
    001ff1e5pop r12
    001ff1e7pop r13
    001ff1e9ret
    001ff1eadb 0x5c
    001ff1ebpop r13
    001ff1edret
    001ff140
    001ff1ee
    001ff1ee // align 0x10
    001ff1f0
    001ff1f0caml_blake2_create:
    001ff1f0push r15
    001ff1f2push r14
    001ff1f4push r13
    001ff1f6push r12
    001ff1f8push rbp
    001ff1f9push rbx
    001ff1famov rbx, rdi
    001ff1fdmov edi, 216
    001ff202sar rbx, 1
    001ff205sub rsp, 104
    001ff209mov [rsp+8], rsi
    001ff20emov rax, [0x28]
    001ff217mov [rsp+88], rax
    001ff21cmov rax, [rip+0x76dc1]
    001ff223mov r12, [rax]
    001ff227lea rax, [rsp+16]
    001ff22cmov r14, [r12+160]
    001ff234mov [r12+160], rax
    001ff23cmov eax, 1
    001ff241movq x0, rax
    001ff246lea rax, [rsp+8]
    001ff24bpunpcklqdq x0, x0
    001ff24fmov [rsp+16], r14
    001ff254movups [rsp+24], x0
    001ff259mov [rsp+40], rax
    001ff25ecall caml_stat_alloc
    001ff263mov edx, 216
    001ff268mov esi, 8
    001ff26dlea rdi, [rip+0x179068]
    001ff274mov r13, rax
    001ff277call caml_alloc_custom_mem
    001ff27cmov r15, [rsp+8]
    001ff281mov rbp, rax
    001ff284mov rdi, r15
    001ff287call caml_string_length
    001ff28cmov rsi, rbx
    001ff28fmov rcx, r15
    001ff292mov rdi, r13
    001ff295mov rdx, rax
    001ff298call caml_BLAKE2Init
    001ff29dmov [rbp+8], r13
    001ff2a1mov [r12+160], r14
    001ff2a9mov rax, [rsp+88]
    001ff2aesub rax, [0x28]
    001ff2b7jne 0x1ff2cf
    001ff2b9add rsp, 104
    001ff2bdmov rax, rbp
    001ff2c0pop rbx
    001ff2c1pop rbp
    001ff2c2pop r12
    001ff2c4pop r13
    001ff2c6pop r14
    001ff2c8pop r15
    001ff2caret
    001ff2cbcall fn_f4590
    001ff2d0db 0xbc
    001ff2d1push rdx
    001ff2d2out dx, eax
    001ff2d3db 0xff
    001ff1f0
    001ff2d4
    001ff2d4 // align 0x10
    001ff2e0
    001ff2e0caml_blake2_update:
    001ff2e0sar rcx, 1
    001ff2e3sub rsp, 8
    001ff2e7sar rdx, 1
    001ff2eamov rdi, [rdi+8]
    001ff2eeadd rsi, rdx
    001ff2f1mov rdx, rcx
    001ff2f4call caml_BLAKE2Update
    001ff2f9mov eax, 1
    001ff2feadd rsp, 8
    001ff302ret
    001ff303db 0x83
    001ff304db 0xc4
    001ff305or bl, al
    001ff2e0
    001ff307
    001ff307 // align 0x10
    001ff310
    001ff310caml_blake2_final:
    001ff310push r13
    001ff312push r12
    001ff314push rbp
    001ff315push rbx
    001ff316mov rbx, rsi
    001ff319sar rbx, 1
    001ff31csub rsp, 104
    001ff320mov [rsp+8], rdi
    001ff325mov rdi, rbx
    001ff328mov rax, [0x28]
    001ff331mov [rsp+88], rax
    001ff336mov rax, [rip+0x76ca7]
    001ff33dmov r12, [rax]
    001ff341lea rax, [rsp+16]
    001ff346mov r13, [r12+160]
    001ff34emov [r12+160], rax
    001ff356mov eax, 1
    001ff35bmovq x0, rax
    001ff360lea rax, [rsp+8]
    001ff365punpcklqdq x0, x0
    001ff369mov [rsp+16], r13
    001ff36emovups [rsp+24], x0
    001ff373mov [rsp+40], rax
    001ff378call caml_alloc_string
    001ff37dmov rsi, rbx
    001ff380mov rbp, rax
    001ff383mov rax, [rsp+8]
    001ff388mov rdx, rbp
    001ff38bmov rdi, [rax+8]
    001ff38fcall caml_BLAKE2Final
    001ff394mov [r12+160], r13
    001ff39cmov rax, [rsp+88]
    001ff3a1sub rax, [0x28]
    001ff3aajne 0x1ff3be
    001ff3acadd rsp, 104
    001ff3b0mov rax, rbp
    001ff3b3pop rbx
    001ff3b4pop rbp
    001ff3b5pop r12
    001ff3b7pop r13
    001ff3b9ret
    001ff3bacall fn_f4590
    001ff3bfdb 0xcd
    001ff3c0push rcx
    001ff3c1out dx, eax
    001ff3c2db 0xff
    001ff310
    001ff3c3
    001ff3c3 // align 0x10
    001ff3d0
    001ff3d0caml_blake2_string:
    001ff3d0push r15
    001ff3d2sar rdi, 1
    001ff3d5mov r15, rsi
    001ff3d8push r14
    001ff3damov r14, rdx
    001ff3ddpush r13
    001ff3dfpush r12
    001ff3e1push rbp
    001ff3e2mov rbp, rdi
    001ff3e5mov rdi, rsi
    001ff3e8push rbx
    001ff3e9mov rbx, rcx
    001ff3ecsar rbx, 1
    001ff3efsub rsp, 232
    001ff3f6mov r12, [0x28]
    001ff3ffmov [rsp+216], r12
    001ff407mov r12, r8
    001ff40acall caml_string_length
    001ff40fmov rcx, r15
    001ff412mov rsi, rbp
    001ff415mov rdi, rsp
    001ff418mov rdx, rax
    001ff41bcall caml_BLAKE2Init
    001ff420lea rsi, [rbx+r14]
    001ff424mov rdi, rsp
    001ff427mov rdx, r12
    001ff42asar rdx, 1
    001ff42dcall caml_BLAKE2Update
    001ff432mov rdi, rbp
    001ff435call caml_alloc_string
    001ff43amov rsi, rbp
    001ff43dmov rdi, rsp
    001ff440mov rdx, rax
    001ff443mov rbx, rax
    001ff446call caml_BLAKE2Final
    001ff44bmov rax, [rsp+216]
    001ff453sub rax, [0x28]
    001ff45cjne 0x1ff477
    001ff45eadd rsp, 232
    001ff465mov rax, rbx
    001ff468pop rbx
    001ff469pop rbp
    001ff46apop r12
    001ff46cpop r13
    001ff46epop r14
    001ff470pop r15
    001ff472ret
    001ff473call fn_f4590
    001ff478db 0x14
    001ff479push rcx
    001ff47aout dx, eax
    001ff47bdb 0xff
    001ff3d0
    001ff47c
    001ff47c // align 0x10
    001ff480
    001ff480caml_blake2_bytes:
    001ff480jmp 0x1ff3d0
    001ff485db 0x47
    001ff486db 0xff
    001ff487db 0xff
    001ff488db 0xff
    001ff480
    001ff489
    001ff489 // align 0x10
    001ff490
    001ff490caml_init_callbacks:
    001ff490ret
    001ff491db 0x0f
    001ff492db 0x1e
    001ff493cli
    001ff494ret
    001ff490
    001ff495
    001ff495 // align 0x10
    001ff4a0
    001ff4a0caml_callback_exn:
    001ff4a0push r14
    001ff4a2push r13
    001ff4a4push r12
    001ff4a6push rbp
    001ff4a7push rbx
    001ff4a8sub rsp, 112
    001ff4acmov [rsp+8], rdi
    001ff4b1mov [rsp], rsi
    001ff4b5mov r12, [0x28]
    001ff4bemov [rsp+104], r12
    001ff4c3mov r12, [rip+0x76b1a]
    001ff4camov rbp, [r12]
    001ff4cftest rbp, rbp
    001ff4d2je 0x1ff638
    001ff4d8call caml_maybe_expand_stack
    001ff4ddmov rax, [rbp+40]
    001ff4e1mov rax, [rax+16]
    001ff4e5cmp [rax+24], 0
    001ff4eaje 0x1ff618
    001ff4f0mov rbx, [r12]
    001ff4f5movdqa x0, [rip+0x2abcf]
    001ff4fdlea rax, [rsp+8]
    001ff502mov r13, rsp
    001ff505lea r14, [rsp+32]
    001ff50amovq x1, rsp
    001ff50fmov rdx, [rbx+160]
    001ff516mov [rsp+32], rdx
    001ff51bmov [rbx+160], r14
    001ff522movups [rsp+40], x0
    001ff527movq x0, rax
    001ff52cpunpcklqdq x0, x1
    001ff530movups [rsp+56], x0
    001ff535mov rax, [rbx+40]
    001ff539mov rax, [rax+16]
    001ff53dmov rsi, [rax+24]
    001ff541mov eax, 1
    001ff546test rsi, rsi
    001ff549je 0x1ff57c
    001ff54bmov edx, 1
    001ff550add rsi, 1
    001ff554mov edi, 245
    001ff559call caml_alloc_2
    001ff55emov rdx, [rbx+40]
    001ff562mov rdx, [rdx+16]
    001ff566mov [rdx+24], 0
    001ff56emov rbx, [r12]
    001ff573mov rdx, [rsp+32]
    001ff578mov [rsp+32], rdx
    001ff57dmov rdi, rbx
    001ff580mov [rbx+160], r14
    001ff587mov [rsp+24], rax
    001ff58cmov eax, 1
    001ff591movq x0, rax
    001ff596lea rax, [rsp+24]
    001ff59bpunpcklqdq x0, x0
    001ff59fmov [rsp+56], rax
    001ff5a4movups [rsp+40], x0
    001ff5a9call caml_update_young_limit_after_c_call
    001ff5aemov rsi, [rsp+8]
    001ff5b3mov rdx, r13
    001ff5b6mov rdi, rbx
    001ff5b9call caml_callback_asm
    001ff5bemov rdx, [r12]
    001ff5c3mov rcx, [rsp+32]
    001ff5c8mov [rdx+160], rcx
    001ff5cfmov rdx, [rsp+24]
    001ff5d4test dl, 1
    001ff5d7je 0x1ff600
    001ff5d9mov rdx, [rsp+104]
    001ff5desub rdx, [0x28]
    001ff5e7jne 0x1ff63d
    001ff5e9add rsp, 112
    001ff5edpop rbx
    001ff5eepop rbp
    001ff5efpop r12
    001ff5f1pop r13
    001ff5f3pop r14
    001ff5f5ret
    001ff5f6db 0x5d
    001ff5f7pop r14
    001ff5f9ret
    001ff5fa
    001ff5fa 66 0f 1f 44 00 00 f..D..
    001ff600
    001ff600loc_1ff600:
    001ff600mov rcx, [rbp+40]
    001ff604mov rdx, [rdx]
    001ff607mov rcx, [rcx+16]
    001ff60bsub rdx, 1
    001ff60fmov [rcx+24], rdx
    001ff613jmp 0x1ff5dd
    001ff615
    001ff615 0f 1f 00 ...
    001ff618
    001ff618loc_1ff618:
    001ff618mov rdi, rbp
    001ff61bcall caml_update_young_limit_after_c_call
    001ff620mov rsi, [rsp+8]
    001ff625mov rdx, rsp
    001ff628mov rdi, rbp
    001ff62bcall caml_callback_asm
    001ff630jmp 0x1ff5dd
    001ff632
    001ff632 66 0f 1f 44 00 00 f..D..
    001ff638
    001ff638loc_1ff638:
    001ff638call caml_bad_caml_state
    001ff63d
    001ff63dloc_1ff63d:
    001ff63dcall fn_f4590
    001ff4a0
    001ff642
    001ff642 // align 0x10
    001ff650
    001ff650caml_callback2_exn:
    001ff650push r13
    001ff652push r12
    001ff654push rbp
    001ff655push rbx
    001ff656sub rsp, 152
    001ff65dmov [rsp+24], rdi
    001ff662mov [rsp+16], rsi
    001ff667mov [rsp+8], rdx
    001ff66cmov r12, [0x28]
    001ff675mov [rsp+136], r12
    001ff67dmov r12, [rip+0x76960]
    001ff684mov rbp, [r12]
    001ff689test rbp, rbp
    001ff68cje 0x1ff828
    001ff692call caml_maybe_expand_stack
    001ff697mov rax, [rbp+40]
    001ff69bmov rax, [rax+16]
    001ff69fcmp [rax+24], 0
    001ff6a4je 0x1ff7f8
    001ff6aamov rbx, [r12]
    001ff6aflea rax, [rsp+24]
    001ff6b4lea r13, [rsp+64]
    001ff6b9movdqa x0, [rip+0x2aa1b]
    001ff6c1mov rdx, [rbx+160]
    001ff6c8mov [rsp+64], rdx
    001ff6cdmov [rbx+160], r13
    001ff6d4movups [rsp+72], x0
    001ff6d9movq x0, rax
    001ff6delea rax, [rsp+16]
    001ff6e3movq x1, rax
    001ff6e8lea rax, [rsp+8]
    001ff6edpunpcklqdq x0, x1
    001ff6f1mov [rsp+104], rax
    001ff6f6movups [rsp+88], x0
    001ff6fbmov rax, [rbx+40]
    001ff6ffmov rax, [rax+16]
    001ff703mov rsi, [rax+24]
    001ff707mov eax, 1
    001ff70ctest rsi, rsi
    001ff70fje 0x1ff742
    001ff711mov edx, 1
    001ff716add rsi, 1
    001ff71amov edi, 245
    001ff71fcall caml_alloc_2
    001ff724mov rdx, [rbx+40]
    001ff728mov rdx, [rdx+16]
    001ff72cmov [rdx+24], 0
    001ff734mov rbx, [r12]
    001ff739mov rdx, [rsp+64]
    001ff73emov [rsp+40], rax
    001ff743mov eax, 1
    001ff748mov rdi, rbx
    001ff74bmovq x0, rax
    001ff750mov [rsp+64], rdx
    001ff755lea rax, [rsp+40]
    001ff75apunpcklqdq x0, x0
    001ff75emov [rbx+160], r13
    001ff765movups [rsp+72], x0
    001ff76amovq x0, [rsp+16]
    001ff770mov [rsp+88], rax
    001ff775movhps x0, [rsp+8]
    001ff77amovaps [rsp+48], x0
    001ff77fcall caml_update_young_limit_after_c_call
    001ff784mov rsi, [rsp+24]
    001ff789lea rdx, [rsp+48]
    001ff78emov rdi, rbx
    001ff791call caml_callback2_asm
    001ff796mov rdx, [r12]
    001ff79bmov rcx, [rsp+64]
    001ff7a0mov [rdx+160], rcx
    001ff7a7mov rdx, [rsp+40]
    001ff7actest dl, 1
    001ff7afje 0x1ff7e0
    001ff7b1mov rdx, [rsp+136]
    001ff7b9sub rdx, [0x28]
    001ff7c2jne 0x1ff82d
    001ff7c4add rsp, 152
    001ff7cbpop rbx
    001ff7ccpop rbp
    001ff7cdpop r12
    001ff7cfpop r13
    001ff7d1ret
    001ff7d2db 0x5c
    001ff7d3pop r13
    001ff7d5ret
    001ff7d6
    001ff7d6 66 2e 0f 1f 84 00 00 00 00 00 f.........
    001ff7e0
    001ff7e0loc_1ff7e0:
    001ff7e0mov rcx, [rbp+40]
    001ff7e4mov rdx, [rdx]
    001ff7e7mov rcx, [rcx+16]
    001ff7ebsub rdx, 1
    001ff7efmov [rcx+24], rdx
    001ff7f3jmp 0x1ff7b5
    001ff7f5
    001ff7f5 0f 1f 00 ...
    001ff7f8
    001ff7f8loc_1ff7f8:
    001ff7f8movq x0, [rsp+16]
    001ff7femov rdi, rbp
    001ff801movhps x0, [rsp+8]
    001ff806movaps [rsp+64], x0
    001ff80bcall caml_update_young_limit_after_c_call
    001ff810mov rsi, [rsp+24]
    001ff815lea rdx, [rsp+64]
    001ff81amov rdi, rbp
    001ff81dcall caml_callback2_asm
    001ff822jmp 0x1ff7b5
    001ff824
    001ff824 0f 1f 40 00 ..@.
    001ff828
    001ff828loc_1ff828:
    001ff828call caml_bad_caml_state
    001ff82d
    001ff82dloc_1ff82d:
    001ff82dcall fn_f4590
    001ff650
    001ff832
    001ff832 // align 0x10
    001ff840
    001ff840caml_callback3_exn:
    001ff840push r13
    001ff842push r12
    001ff844push rbp
    001ff845push rbx
    001ff846sub rsp, 168
    001ff84dmov [rsp+24], rdi
    001ff852mov [rsp+16], rsi
    001ff857mov [rsp+8], rdx
    001ff85cmov [rsp], rcx
    001ff860mov r12, [0x28]
    001ff869mov [rsp+152], r12
    001ff871mov r12, [rip+0x7676c]
    001ff878mov rbp, [r12]
    001ff87dtest rbp, rbp
    001ff880je 0x1ffa38
    001ff886call caml_maybe_expand_stack
    001ff88bmov rax, [rbp+40]
    001ff88fmov rax, [rax+16]
    001ff893cmp [rax+24], 0
    001ff898je 0x1ffa00
    001ff89emov rbx, [r12]
    001ff8a3lea rax, [rsp+24]
    001ff8a8lea r13, [rsp+80]
    001ff8admovdqa x0, [rip+0x2a837]
    001ff8b5movq x2, rsp
    001ff8bamov rdx, [rbx+160]
    001ff8c1mov [rsp+80], rdx
    001ff8c6mov [rbx+160], r13
    001ff8cdmovups [rsp+88], x0
    001ff8d2movq x0, rax
    001ff8d7lea rax, [rsp+16]
    001ff8dcmovq x1, rax
    001ff8e1lea rax, [rsp+8]
    001ff8e6punpcklqdq x0, x1
    001ff8eamovups [rsp+104], x0
    001ff8efmovq x0, rax
    001ff8f4punpcklqdq x0, x2
    001ff8f8movups [rsp+120], x0
    001ff8fdmov rax, [rbx+40]
    001ff901mov rax, [rax+16]
    001ff905mov rsi, [rax+24]
    001ff909mov eax, 1
    001ff90etest rsi, rsi
    001ff911je 0x1ff944
    001ff913mov edx, 1
    001ff918add rsi, 1
    001ff91cmov edi, 245
    001ff921call caml_alloc_2
    001ff926mov rdx, [rbx+40]
    001ff92amov rdx, [rdx+16]
    001ff92emov [rdx+24], 0
    001ff936mov rbx, [r12]
    001ff93bmov rdx, [rsp+80]
    001ff940mov [rsp+40], rax
    001ff945mov eax, 1
    001ff94amov rdi, rbx
    001ff94dmovq x0, rax
    001ff952mov [rsp+80], rdx
    001ff957lea rax, [rsp+40]
    001ff95cpunpcklqdq x0, x0
    001ff960mov [rbx+160], r13
    001ff967movups [rsp+88], x0
    001ff96cmovq x0, [rsp+16]
    001ff972mov [rsp+104], rax
    001ff977mov rax, [rsp]
    001ff97bmovhps x0, [rsp+8]
    001ff980mov [rsp+64], rax
    001ff985movaps [rsp+48], x0
    001ff98acall caml_update_young_limit_after_c_call
    001ff98fmov rsi, [rsp+24]
    001ff994lea rdx, [rsp+48]
    001ff999mov rdi, rbx
    001ff99ccall caml_callback3_asm
    001ff9a1mov rdx, [r12]
    001ff9a6mov rcx, [rsp+80]
    001ff9abmov [rdx+160], rcx
    001ff9b2mov rdx, [rsp+40]
    001ff9b7test dl, 1
    001ff9baje 0x1ff9e8
    001ff9bcmov rdx, [rsp+152]
    001ff9c4sub rdx, [0x28]
    001ff9cdjne 0x1ffa3d
    001ff9cfadd rsp, 168
    001ff9d6pop rbx
    001ff9d7pop rbp
    001ff9d8pop r12
    001ff9dapop r13
    001ff9dcret
    001ff9dddb 0x5c
    001ff9depop r13
    001ff9e0ret
    001ff9e1
    001ff9e1 0f 1f 80 00 00 00 00 .......
    001ff9e8
    001ff9e8loc_1ff9e8:
    001ff9e8mov rcx, [rbp+40]
    001ff9ecmov rdx, [rdx]
    001ff9efmov rcx, [rcx+16]
    001ff9f3sub rdx, 1
    001ff9f7mov [rcx+24], rdx
    001ff9fbjmp 0x1ff9c0
    001ff9fd
    001ff9fd 0f 1f 00 ...
    001ffa00
    001ffa00loc_1ffa00:
    001ffa00movq x0, [rsp+16]
    001ffa06mov rax, [rsp]
    001ffa0amov rdi, rbp
    001ffa0dmovhps x0, [rsp+8]
    001ffa12mov [rsp+96], rax
    001ffa17movaps [rsp+80], x0
    001ffa1ccall caml_update_young_limit_after_c_call
    001ffa21mov rsi, [rsp+24]
    001ffa26lea rdx, [rsp+80]
    001ffa2bmov rdi, rbp
    001ffa2ecall caml_callback3_asm
    001ffa33jmp 0x1ff9c0
    001ffa35
    001ffa35 0f 1f 00 ...
    001ffa38
    001ffa38loc_1ffa38:
    001ffa38call caml_bad_caml_state
    001ffa3d
    001ffa3dloc_1ffa3d:
    001ffa3dcall fn_f4590
    001ff840
    001ffa42
    001ffa42 // align 0x10
    001ffa50
    001ffa50caml_callbackN_exn:
    001ffa50push r13
    001ffa52sub esi, 3
    001ffa55push r12
    001ffa57push rbp
    001ffa58movsxd rbp, esi
    001ffa5bpush rbx
    001ffa5csub rsp, 88
    001ffa60mov rbx, [0x28]
    001ffa69mov [rsp+72], rbx
    001ffa6emov rbx, rdx
    001ffa71mov r13, rsp
    001ffa74jmp 0x1ffae9
    001ffa76db 0x89
    001ffa77in eax, 235
    001ffa79outsd dx, [rsi]
    001ffa7a
    001ffa7a 66 0f 1f 44 00 00 f..D..
    001ffa80
    001ffa80loc_1ffa80:
    001ffa80mov r12, [rip+0x76561]
    001ffa87add rbx, 24
    001ffa8bmov rax, [r12]
    001ffa90mov [rsp+16], rbp
    001ffa95sub rbp, 3
    001ffa99mov [rsp+8], 1
    001ffaa2mov rdx, [rax+160]
    001ffaa9mov [rax+160], r13
    001ffab0mov rcx, [rbx-8]
    001ffab4mov rsi, [rbx-24]
    001ffab8mov [rsp+24], rbx
    001ffabdmov [rsp], rdx
    001ffac1mov rdx, [rbx-16]
    001ffac5call caml_callback3_exn
    001ffacamov rdx, [rsp]
    001ffacemov rdi, rax
    001ffad1mov rax, [r12]
    001ffad6mov [rax+160], rdx
    001ffaddmov rax, rdi
    001ffae0and eax, 3
    001ffae3cmp rax, 2
    001ffae7je 0x1ffb20
    001ffae9
    001ffae9loc_1ffae9:
    001ffae9lea eax, [rbp+3]
    001ffaeccmp eax, 2
    001ffaefjg 0x1ffa80
    001ffaf1test eax, eax
    001ffaf3je 0x1ffb20
    001ffaf5cmp eax, 1
    001ffaf8je 0x1ffb40
    001ffafamov rax, [rsp+72]
    001ffaffsub rax, [0x28]
    001ffb08jne 0x1ffb62
    001ffb0amov rdx, [rbx+8]
    001ffb0emov rsi, [rbx]
    001ffb11add rsp, 88
    001ffb15pop rbx
    001ffb16pop rbp
    001ffb17pop r12
    001ffb19pop r13
    001ffb1bjmp 0x1ff650
    001ffb20
    001ffb20loc_1ffb20:
    001ffb20mov rax, [rsp+72]
    001ffb25sub rax, [0x28]
    001ffb2ejne 0x1ffb62
    001ffb30add rsp, 88
    001ffb34mov rax, rdi
    001ffb37pop rbx
    001ffb38pop rbp
    001ffb39pop r12
    001ffb3bpop r13
    001ffb3dret
    001ffb3e
    001ffb3e 66 90 f.
    001ffb40
    001ffb40loc_1ffb40:
    001ffb40mov rax, [rsp+72]
    001ffb45sub rax, [0x28]
    001ffb4ejne 0x1ffb62
    001ffb50mov rsi, [rbx]
    001ffb53add rsp, 88
    001ffb57pop rbx
    001ffb58pop rbp
    001ffb59pop r12
    001ffb5bpop r13
    001ffb5djmp 0x1ff4a0
    001ffb62
    001ffb62loc_1ffb62:
    001ffb62call fn_f4590
    001ffa50
    001ffb67
    001ffb67 // align 0x10
    001ffb70
    001ffb70caml_callbackN_res:
    001ffb70sub rsp, 8
    001ffb74call caml_callbackN_exn
    001ffb79mov rdx, rax
    001ffb7cand edx, 3
    001ffb7fcmp rdx, 2
    001ffb83je 0x1ffba0
    001ffb85xor edx, edx
    001ffb87mov rdi, rax
    001ffb8aadd rsp, 8
    001ffb8eand edx, 1
    001ffb91mov eax, edx
    001ffb93mov rdx, rdi
    001ffb96ret
    001ffb97db 0x48
    001ffb98mov edx, edi
    001ffb9aret
    001ffb9b
    001ffb9b 0f 1f 44 00 00 ..D..
    001ffba0
    001ffba0loc_1ffba0:
    001ffba0and rax, -4
    001ffba4mov edx, 1
    001ffba9add rsp, 8
    001ffbadand edx, 1
    001ffbb0mov rdi, rax
    001ffbb3mov eax, edx
    001ffbb5mov rdx, rdi
    001ffbb8ret
    001ffb70
    001ffbb9
    001ffbb9 // align 0x10
    001ffbc0
    001ffbc0caml_callback_res:
    001ffbc0sub rsp, 8
    001ffbc4call caml_callback_exn
    001ffbc9xor edx, edx
    001ffbcbmov rcx, rax
    001ffbceand ecx, 3
    001ffbd1cmp rcx, 2
    001ffbd5jne 0x1ffbe4
    001ffbd7and rax, -4
    001ffbdbmov edx, 1
    001ffbe0and edx, 1
    001ffbe3mov rcx, rax
    001ffbe6add rsp, 8
    001ffbeamov eax, edx
    001ffbecmov rdx, rcx
    001ffbefret
    001ffbf0db 0x48
    001ffbf1mov edx, ecx
    001ffbf3ret
    001ffbc0
    001ffbf4
    001ffbf4 // align 0x10
    001ffc00
    001ffc00caml_callback2_res:
    001ffc00sub rsp, 8
    001ffc04call caml_callback2_exn
    001ffc09mov rdx, rax
    001ffc0cand edx, 3
    001ffc0fcmp rdx, 2
    001ffc13je 0x1ffc30
    001ffc15xor edx, edx
    001ffc17mov rdi, rax
    001ffc1aadd rsp, 8
    001ffc1eand edx, 1
    001ffc21mov eax, edx
    001ffc23mov rdx, rdi
    001ffc26ret
    001ffc27db 0x48
    001ffc28mov edx, edi
    001ffc2aret
    001ffc2b
    001ffc2b 0f 1f 44 00 00 ..D..
    001ffc30
    001ffc30loc_1ffc30:
    001ffc30and rax, -4
    001ffc34mov edx, 1
    001ffc39add rsp, 8
    001ffc3dand edx, 1
    001ffc40mov rdi, rax
    001ffc43mov eax, edx
    001ffc45mov rdx, rdi
    001ffc48ret
    001ffc00
    001ffc49
    001ffc49 // align 0x10
    001ffc50
    001ffc50caml_callback3_res:
    001ffc50sub rsp, 8
    001ffc54call caml_callback3_exn
    001ffc59mov rdx, rax
    001ffc5cand edx, 3
    001ffc5fcmp rdx, 2
    001ffc63je 0x1ffc80
    001ffc65xor edx, edx
    001ffc67mov rdi, rax
    001ffc6aadd rsp, 8
    001ffc6eand edx, 1
    001ffc71mov eax, edx
    001ffc73mov rdx, rdi
    001ffc76ret
    001ffc77db 0x48
    001ffc78mov edx, edi
    001ffc7aret
    001ffc7b
    001ffc7b 0f 1f 44 00 00 ..D..
    001ffc80
    001ffc80loc_1ffc80:
    001ffc80and rax, -4
    001ffc84mov edx, 1
    001ffc89add rsp, 8
    001ffc8dand edx, 1
    001ffc90mov rdi, rax
    001ffc93mov eax, edx
    001ffc95mov rdx, rdi
    001ffc98ret
    001ffc50
    001ffc99
    001ffc99 // align 0x10
    001ffca0
    001ffca0caml_callback:
    001ffca0sub rsp, 8
    001ffca4call caml_callback_exn
    001ffca9mov rdx, rax
    001ffcacand edx, 3
    001ffcafcmp rdx, 2
    001ffcb3je 0x1ffcbe
    001ffcb5add rsp, 8
    001ffcb9ret
    001ffcbaand rax, -4
    001ffcbe
    001ffcbeloc_1ffcbe:
    001ffcbemov rdi, rax
    001ffcc1call caml_raise
    001ffcc6db 0xd6
    001ffcc7movsxd rax, [rdx]
    001ffcc9db 0x00
    001ffca0
    001ffcca
    001ffcca // align 0x10
    001ffcd0
    001ffcd0caml_callback2:
    001ffcd0sub rsp, 8
    001ffcd4call caml_callback2_exn
    001ffcd9mov rdx, rax
    001ffcdcand edx, 3
    001ffcdfcmp rdx, 2
    001ffce3je 0x1ffcee
    001ffce5add rsp, 8
    001ffce9ret
    001ffceaand rax, -4
    001ffcee
    001ffceeloc_1ffcee:
    001ffceemov rdi, rax
    001ffcf1call caml_raise
    001ffcf6db 0xa6
    001ffcf7movsxd rax, [rdx]
    001ffcf9db 0x00
    001ffcd0
    001ffcfa
    001ffcfa // align 0x10
    001ffd00
    001ffd00caml_callback3:
    001ffd00sub rsp, 8
    001ffd04call caml_callback3_exn
    001ffd09mov rdx, rax
    001ffd0cand edx, 3
    001ffd0fcmp rdx, 2
    001ffd13je 0x1ffd1e
    001ffd15add rsp, 8
    001ffd19ret
    001ffd1aand rax, -4
    001ffd1e
    001ffd1eloc_1ffd1e:
    001ffd1emov rdi, rax
    001ffd21call caml_raise
    001ffd26db 0x76
    001ffd27movsxd rax, [rdx]
    001ffd29db 0x00
    001ffd00
    001ffd2a
    001ffd2a // align 0x10
    001ffd30
    001ffd30caml_callbackN:
    001ffd30sub rsp, 8
    001ffd34call caml_callbackN_exn
    001ffd39mov rdx, rax
    001ffd3cand edx, 3
    001ffd3fcmp rdx, 2
    001ffd43je 0x1ffd4e
    001ffd45add rsp, 8
    001ffd49ret
    001ffd4aand rax, -4
    001ffd4e
    001ffd4eloc_1ffd4e:
    001ffd4emov rdi, rax
    001ffd51call caml_raise
    001ffd56db 0x46
    001ffd57movsxd rax, [rdx]
    001ffd59db 0x00
    001ffd30
    001ffd5a
    001ffd5a // align 0x10
    001ffd60
    001ffd60caml_register_named_value:
    001ffd60push r15
    001ffd62push r14
    001ffd64push r13
    001ffd66push r12
    001ffd68push rbp
    001ffd69push rbx
    001ffd6amov rbx, rdi
    001ffd6dsub rsp, 24
    001ffd71mov [rsp], rsi
    001ffd75call fn_f43a0
    001ffd7amovsx edx, [rbx]
    001ffd7dmov rbp, rax
    001ffd80test dl, dl
    001ffd82je 0x1ffe90
    001ffd88mov rcx, rbx
    001ffd8bmov eax, 5381
    001ffd90nop [rax+rax]
    001ffd9bnop
    001ffd9cmov esi, eax
    001ffd9eadd rcx, 1
    001ffda2shl esi, 5
    001ffda5add eax, esi
    001ffda7add eax, edx
    001ffda9movsx edx, [rcx]
    001ffdactest dl, dl
    001ffdaejne 0x1ffda0
    001ffdb0mov r13l, eax
    001ffdb3imul r13, r13, 0x4ec4ec4f
    001ffdbashr r13, 34
    001ffdbelea edx, [r13+2*r13]
    001ffdc3lea edx, [r13+4*rdx]
    001ffdc8sub eax, edx
    001ffdcamov r13l, eax
    001ffdcdlea r15, [rip+0x178728]
    001ffdd4mov rdi, r15
    001ffdd7call fn_f4710
    001ffddctest eax, eax
    001ffddejne 0x1ffea9
    001ffde4lea r14, [rip+0x178751]
    001ffdebmov r12, [r14+8*r13]
    001ffdeftest r12, r12
    001ffdf2jne 0x1ffe0a
    001ffdf4jmp 0x1ffe30
    001ffdf6db 0x75
    001ffdf7adc ch, bl
    001ffdf9db 0x36
    001ffdfa
    001ffdfa 66 0f 1f 44 00 00 f..D..
    001ffe00
    001ffe00loc_1ffe00:
    001ffe00mov r12, [r12+8]
    001ffe05test r12, r12
    001ffe08je 0x1ffe30
    001ffe0a
    001ffe0aloc_1ffe0a:
    001ffe0alea rsi, [r12+16]
    001ffe0fmov rdi, rbx
    001ffe12call fn_f45a0
    001ffe17test eax, eax
    001ffe19jne 0x1ffe00
    001ffe1bmov rsi, [rsp]
    001ffe1fmov rdi, r12
    001ffe22call caml_modify_generational_global_root
    001ffe27jmp 0x1ffe6e
    001ffe29
    001ffe29 0f 1f 80 00 00 00 00 .......
    001ffe30
    001ffe30loc_1ffe30:
    001ffe30lea rdi, [rbp+24]
    001ffe34call caml_stat_alloc
    001ffe39lea rdx, [rbp+1]
    001ffe3dmov rsi, rbx
    001ffe40lea rdi, [rax+16]
    001ffe44mov [rsp+8], rax
    001ffe49call fn_f47d0
    001ffe4emov rcx, [rsp+8]
    001ffe53mov rax, [rsp]
    001ffe57mov [rcx], rax
    001ffe5amov rax, [r14+8*r13]
    001ffe5emov rdi, rcx
    001ffe61mov [r14+8*r13], rcx
    001ffe65mov [rcx+8], rax
    001ffe69call caml_register_generational_global_root
    001ffe6e
    001ffe6eloc_1ffe6e:
    001ffe6emov rdi, r15
    001ffe71call fn_f47c0
    001ffe76test eax, eax
    001ffe78jne 0x1ffe9b
    001ffe7aadd rsp, 24
    001ffe7emov eax, 1
    001ffe83pop rbx
    001ffe84pop rbp
    001ffe85pop r12
    001ffe87pop r13
    001ffe89pop r14
    001ffe8bpop r15
    001ffe8dret
    001ffe8e
    001ffe8e 66 90 f.
    001ffe90
    001ffe90loc_1ffe90:
    001ffe90mov r13l, 12
    001ffe96jmp 0x1ffdd1
    001ffe9b
    001ffe9bloc_1ffe9b:
    001ffe9bmov esi, eax
    001ffe9dlea rdi, [rip+0x2f676]
    001ffea4call caml_plat_fatal_error
    001ffea9
    001ffea9loc_1ffea9:
    001ffea9mov esi, eax
    001ffeablea rdi, [rip+0x2f65d]
    001ffeb2call caml_plat_fatal_error
    001ffd60