File hevea_f46f610a6b0078f4aa208dda361f21de574cc56ad64b32889301afc466d33979.elf
Function:
    0020e490
    0020e490caml_nativeint_of_float:
    0020e490push rbx
    0020e491cvttsd2si rbx, [rdi]
    0020e496mov ecx, 1
    0020e49bxor edx, edx
    0020e49dmov esi, 8
    0020e4a2lea rdi, [rip+0x67393]
    0020e4a9call caml_alloc_custom
    0020e4aemov [rax+8], rbx
    0020e4b2pop rbx
    0020e4b3ret
    0020e4b4db 0x58
    0020e4b5or [rbx-61], bl
    0020e490
    0020e4b8
    0020e4b8 // align 0x10
    0020e4c0
    0020e4c0caml_nativeint_to_float_unboxed:
    0020e4c0pxor x0, x0
    0020e4c4cvtsi2sd x0, rdi
    0020e4c9ret
    0020e4cadb 0x0f
    0020e4cbsub al, bh
    0020e4cdret
    0020e4c0
    0020e4ce
    0020e4ce // align 0x10
    0020e4d0
    0020e4d0caml_nativeint_to_float:
    0020e4d0pxor x0, x0
    0020e4d4cvtsi2sd x0, [rdi+8]
    0020e4dajmp 0x2075f0
    0020e4dfdb 0x0d
    0020e4e0xchg eax, ecx
    0020e4e1db 0xff
    0020e4e2db 0xff
    0020e4d0
    0020e4e3
    0020e4e3 // align 0x10
    0020e4f0
    0020e4f0caml_nativeint_of_int32:
    0020e4f0push rbx
    0020e4f1mov ecx, 1
    0020e4f6movsxd rbx, [rdi+8]
    0020e4faxor edx, edx
    0020e4fcmov esi, 8
    0020e501lea rdi, [rip+0x67334]
    0020e508call caml_alloc_custom
    0020e50dmov [rax+8], rbx
    0020e511pop rbx
    0020e512ret
    0020e513db 0x58
    0020e514or [rbx-61], bl
    0020e4f0
    0020e517
    0020e517 // align 0x10
    0020e520
    0020e520caml_nativeint_to_int32:
    0020e520push rbx
    0020e521mov ecx, 1
    0020e526mov rbx, [rdi+8]
    0020e52axor edx, edx
    0020e52cmov esi, 4
    0020e531lea rdi, [rip+0x67384]
    0020e538call caml_alloc_custom
    0020e53dmov [rax+8], ebx
    0020e540pop rbx
    0020e541ret
    0020e542db 0x58
    0020e543or [rbx-61], bl
    0020e520
    0020e546
    0020e546 // align 0x10
    0020e550
    0020e550caml_nativeint_compare_unboxed:
    0020e550xor eax, eax
    0020e552cmp rdi, rsi
    0020e555setl dl
    0020e558setg al
    0020e55bmovzx edx, dl
    0020e55esub rax, rdx
    0020e561ret
    0020e562db 0x48
    0020e563sub eax, edx
    0020e565ret
    0020e550
    0020e566
    0020e566 // align 0x10
    0020e570
    0020e570caml_nativeint_compare:
    0020e570mov rax, [rdi+8]
    0020e574cmp [rsi+8], rax
    0020e578setl al
    0020e57bsetg dl
    0020e57emovzx edx, dl
    0020e581movzx eax, al
    0020e584sub rax, rdx
    0020e587lea rax, [rax+rax+1]
    0020e58cret
    0020e58ddb 0x44
    0020e58eadd [rcx], al
    0020e590ret
    0020e570
    0020e591
    0020e591 // align 0x10
    0020e5a0
    0020e5a0caml_nativeint_format:
    0020e5a0push rbp
    0020e5a1push rbx
    0020e5a2sub rsp, 56
    0020e5a6mov rbx, [0x28]
    0020e5afmov [rsp+40], rbx
    0020e5b4mov rbx, rsi
    0020e5b7mov rdx, rsp
    0020e5balea rsi, [rip+0x20f9a]
    0020e5c1call fn_20cff0
    0020e5c6xor eax, eax
    0020e5c8mov rdi, rsp
    0020e5cbmov rsi, [rbx+8]
    0020e5cfcall caml_alloc_sprintf
    0020e5d4mov rdx, [rsp+40]
    0020e5d9sub rdx, [0x28]
    0020e5e2jne 0x20e5ef
    0020e5e4add rsp, 56
    0020e5e8pop rbx
    0020e5e9pop rbp
    0020e5earet
    0020e5ebcall fn_f4590
    0020e5f0db 0x9c
    0020e5f1pop rdi
    0020e5f2out dx, al
    0020e5f3db 0xff
    0020e5a0
    0020e5f4
    0020e5f4 // align 0x10
    0020e600
    0020e600caml_nativeint_of_string:
    0020e600push rbx
    0020e601lea rdx, [rip+0x20a7c]
    0020e608mov esi, 64
    0020e60dcall fn_20d210
    0020e612mov ecx, 1
    0020e617xor edx, edx
    0020e619mov esi, 8
    0020e61elea rdi, [rip+0x67217]
    0020e625mov rbx, rax
    0020e628call caml_alloc_custom
    0020e62dmov [rax+8], rbx
    0020e631pop rbx
    0020e632ret
    0020e633db 0x58
    0020e634or [rbx-61], bl
    0020e600
    0020e637
    0020e637 // align 0x10
    0020e640
    0020e640fn_20e640:
    0020e640mov rdx, [rsi+8]
    0020e644xor eax, eax
    0020e646cmp [rdi+8], rdx
    0020e64aje 0x20e655
    0020e64csbb eax, eax
    0020e64eor eax, 1
    0020e651ret
    0020e652db 0x83
    0020e653db 0xc8
    0020e654add ebx, eax
    0020e640
    0020e656
    0020e656 // align 0x10
    0020e660
    0020e660fn_20e660:
    0020e660mov rax, [rdi+8]
    0020e664ret
    0020e665db 0x8b
    0020e666or r11b, r8b
    0020e660
    0020e669
    0020e669 // align 0x10
    0020e670
    0020e670fn_20e670:
    0020e670push rbp
    0020e671push rbx
    0020e672mov rbx, rdi
    0020e675sub rsp, 8
    0020e679call caml_check_pending_actions
    0020e67etest eax, eax
    0020e680je 0x20e693
    0020e682test [rbx+104], 4
    0020e686jne 0x20e6c8
    0020e688call caml_process_pending_actions
    0020e68dtest [rbx+104], 4
    0020e691jne 0x20e6a0
    0020e693
    0020e693loc_20e693:
    0020e693add rsp, 8
    0020e697pop rbx
    0020e698pop rbp
    0020e699ret
    0020e69a
    0020e69a 66 0f 1f 44 00 00 f..D..
    0020e6a0
    0020e6a0loc_20e6a0:
    0020e6a0lea rbp, [rbx+40]
    0020e6a4mov rdi, rbp
    0020e6a7call fn_f4780
    0020e6accmp eax, 16
    0020e6afje 0x20e6f0
    0020e6b1test eax, eax
    0020e6b3jne 0x20e6fa
    0020e6b5
    0020e6b5loc_20e6b5:
    0020e6b5mov [0xfffffffffffffff0], rbx
    0020e6beadd rsp, 8
    0020e6c2pop rbx
    0020e6c3pop rbp
    0020e6c4ret
    0020e6c5
    0020e6c5 0f 1f 00 ...
    0020e6c8
    0020e6c8loc_20e6c8:
    0020e6c8lea rdi, [rbx+40]
    0020e6cccall fn_f47c0
    0020e6d1test eax, eax
    0020e6d3jne 0x20e708
    0020e6d5mov [0xfffffffffffffff0], 0
    0020e6e2call caml_process_pending_actions
    0020e6e7test [rbx+104], 4
    0020e6ebje 0x20e693
    0020e6edjmp 0x20e6a0
    0020e6ef
    0020e6ef 90 .
    0020e6f0
    0020e6f0loc_20e6f0:
    0020e6f0mov rdi, rbp
    0020e6f3call caml_plat_lock_non_blocking_actual
    0020e6f8jmp 0x20e6b5
    0020e6fa
    0020e6faloc_20e6fa:
    0020e6famov esi, eax
    0020e6fclea rdi, [rip+0x20e24]
    0020e703call caml_plat_fatal_error
    0020e708
    0020e708loc_20e708:
    0020e708mov esi, eax
    0020e70alea rdi, [rip+0x20e09]
    0020e711call caml_plat_fatal_error
    0020e670
    0020e716
    0020e716 // align 0x10
    0020e720
    0020e720caml_finalize_channel:
    0020e720push rbp
    0020e721push rbx
    0020e722sub rsp, 8
    0020e726mov rbx, [rdi+8]
    0020e72atest [rbx+104], 4
    0020e72eje 0x20e786
    0020e730cmp [rbx], -1
    0020e733je 0x20e74d
    0020e735cmp [rbx+120], 0
    0020e73aje 0x20e74d
    0020e73ccall caml_runtime_warnings_active
    0020e741test eax, eax
    0020e743jne 0x20e880
    0020e749cmp [rbx+32], 0
    0020e74eje 0x20e800
    0020e754lea rbp, [rip+0x16a2c1]
    0020e75bmov rdi, rbp
    0020e75ecall fn_f4710
    0020e763test eax, eax
    0020e765jne 0x20e8d8
    0020e76bsub [rbx+96], 1
    0020e770je 0x20e790
    0020e772mov rdi, rbp
    0020e775call fn_f47c0
    0020e77atest eax, eax
    0020e77cjne 0x20e8ca
    0020e782add rsp, 8
    0020e786
    0020e786loc_20e786:
    0020e786pop rbx
    0020e787pop rbp
    0020e788ret
    0020e789db 0x08
    0020e78apop rbx
    0020e78bpop rbp
    0020e78cret
    0020e78d
    0020e78d 0f 1f 00 ...
    0020e790
    0020e790loc_20e790:
    0020e790mov rax, [rbx+88]
    0020e794test rax, rax
    0020e797je 0x20e850
    0020e79dmov rdx, [rbx+80]
    0020e7a1mov [rax+80], rdx
    0020e7a5test rdx, rdx
    0020e7a8je 0x20e7b2
    0020e7aamov rax, [rbx+88]
    0020e7aemov [rdx+88], rax
    0020e7b2
    0020e7b2loc_20e7b2:
    0020e7b2pxor x0, x0
    0020e7b6mov rdi, rbp
    0020e7b9movups [rbx+80], x0
    0020e7bdcall fn_f47c0
    0020e7c2test eax, eax
    0020e7c4jne 0x20e8ca
    0020e7calea rdi, [rbx+40]
    0020e7cecall caml_plat_mutex_free
    0020e7d3mov rdi, [rbx+120]
    0020e7d7call caml_stat_free
    0020e7dccmp [rbx], -1
    0020e7dfje 0x20e7ea
    0020e7e1mov rdi, [rbx+112]
    0020e7e5call caml_stat_free
    0020e7ea
    0020e7ealoc_20e7ea:
    0020e7eaadd rsp, 8
    0020e7eemov rdi, rbx
    0020e7f1pop rbx
    0020e7f2pop rbp
    0020e7f3jmp 0x216690
    0020e7f8
    0020e7f8 0f 1f 84 00 00 00 00 00 ........
    0020e800
    0020e800loc_20e800:
    0020e800mov rax, [rbx+112]
    0020e804cmp [rbx+24], rax
    0020e808je 0x20e758
    0020e80ecmp [rbx+120], 0
    0020e813je 0x20e822
    0020e815call caml_runtime_warnings_active
    0020e81atest eax, eax
    0020e81cjne 0x20e8a8
    0020e822
    0020e822loc_20e822:
    0020e822lea rbp, [rip+0x16a1f7]
    0020e829mov rdi, rbp
    0020e82ccall fn_f4710
    0020e831test eax, eax
    0020e833jne 0x20e8d8
    0020e839sub [rbx+96], 1
    0020e83emov rdi, rbp
    0020e841call fn_f47c0
    0020e846test eax, eax
    0020e848je 0x20e786
    0020e84ejmp 0x20e8ca
    0020e850
    0020e850loc_20e850:
    0020e850mov rax, [rip+0x16a1f1]
    0020e857mov rax, [rax+80]
    0020e85bmov [rip+0x16a1e6], rax
    0020e862test rax, rax
    0020e865je 0x20e7b2
    0020e86bmov [rax+88], 0
    0020e873jmp 0x20e7b2
    0020e878
    0020e878 0f 1f 84 00 00 00 00 00 ........
    0020e880
    0020e880loc_20e880:
    0020e880mov rcx, [rbx+120]
    0020e884mov rdi, [rip+0x169c55]
    0020e88blea rdx, [rip+0x21fc6]
    0020e892xor eax, eax
    0020e894mov esi, 1
    0020e899call fn_f41b0
    0020e89ejmp 0x20e74d
    0020e8a3
    0020e8a3 0f 1f 44 00 00 ..D..
    0020e8a8
    0020e8a8loc_20e8a8:
    0020e8a8mov rcx, [rip+0x169c31]
    0020e8afmov edx, 42
    0020e8b4mov esi, 1
    0020e8b9lea rdi, [rip+0x21fd8]
    0020e8c0call fn_f4700
    0020e8c5jmp 0x20e822
    0020e8ca
    0020e8caloc_20e8ca:
    0020e8camov esi, eax
    0020e8cclea rdi, [rip+0x20c47]
    0020e8d3call caml_plat_fatal_error
    0020e8d8
    0020e8d8loc_20e8d8:
    0020e8d8mov esi, eax
    0020e8dalea rdi, [rip+0x20c2e]
    0020e8e1call caml_plat_fatal_error
    0020e720
    0020e8e6
    0020e8e6 // align 0x10
    0020e8f0
    0020e8f0caml_channel_lock:
    0020e8f0push rbp
    0020e8f1lea rbp, [rdi+40]
    0020e8f5push rbx
    0020e8f6mov rbx, rdi
    0020e8f9mov rdi, rbp
    0020e8fcsub rsp, 8
    0020e900call fn_f4780
    0020e905cmp eax, 16
    0020e908je 0x20e928
    0020e90atest eax, eax
    0020e90cjne 0x20e940
    0020e90emov [0xfffffffffffffff0], rbx
    0020e917add rsp, 8
    0020e91bpop rbx
    0020e91cpop rbp
    0020e91dret
    0020e91edb 0x08
    0020e91fpop rbx
    0020e920pop rbp
    0020e921ret
    0020e922
    0020e922 66 0f 1f 44 00 00 f..D..
    0020e928
    0020e928loc_20e928:
    0020e928mov rdi, rbp
    0020e92bcall caml_plat_lock_non_blocking_actual
    0020e930mov [0xfffffffffffffff0], rbx
    0020e939add rsp, 8
    0020e93dpop rbx
    0020e93epop rbp
    0020e93fret
    0020e940
    0020e940loc_20e940:
    0020e940mov esi, eax
    0020e942lea rdi, [rip+0x20bde]
    0020e949call caml_plat_fatal_error
    0020e8f0
    0020e94e
    0020e94e // align 0x10
    0020e950
    0020e950caml_channel_unlock:
    0020e950sub rsp, 8
    0020e954add rdi, 40
    0020e958call fn_f47c0
    0020e95dtest eax, eax
    0020e95fjne 0x20e977
    0020e961mov [0xfffffffffffffff0], 0
    0020e96eadd rsp, 8
    0020e972ret
    0020e973mov esi, eax
    0020e975lea rdi, [rip+0x20b9a]
    0020e97ccall caml_plat_fatal_error
    0020e981db 0x4b
    0020e982rol [rax], 1
    0020e984db 0x00
    0020e950
    0020e985
    0020e985 // align 0x10
    0020e990
    0020e990caml_channel_cleanup_on_raise:
    0020e990mov rdi, [0xfffffffffffffff0]
    0020e999test rdi, rdi
    0020e99cje 0x20e9c8
    0020e99esub rsp, 8
    0020e9a2add rdi, 40
    0020e9a6call fn_f47c0
    0020e9abtest eax, eax
    0020e9adjne 0x20e9c9
    0020e9afmov [0xfffffffffffffff0], 0
    0020e9bcadd rsp, 8
    0020e9c0ret
    0020e9c1db 0x83
    0020e9c2db 0xc4
    0020e9c3or bl, al
    0020e9c5
    0020e9c5 0f 1f 00 ...
    0020e9c8
    0020e9c8loc_20e9c8:
    0020e9c8ret
    0020e9c9
    0020e9c9loc_20e9c9:
    0020e9c9mov esi, eax
    0020e9cblea rdi, [rip+0x20b48]
    0020e9d2call caml_plat_fatal_error
    0020e990
    0020e9d7
    0020e9d7 // align 0x10
    0020e9e0
    0020e9e0caml_open_descriptor_in:
    0020e9e0push rbp
    0020e9e1mov ebp, edi
    0020e9e3mov edi, 128
    0020e9e8push rbx
    0020e9e9sub rsp, 8
    0020e9edcall caml_stat_alloc
    0020e9f2mov edi, 0x10000
    0020e9f7mov rbx, rax
    0020e9facall caml_stat_alloc_noexc
    0020e9ffmov [rbx+112], rax
    0020ea03test rax, rax
    0020ea06je 0x20ea7d
    0020ea08mov [rbx], ebp
    0020ea0acall caml_enter_blocking_section_no_pending
    0020ea0fmov edi, ebp
    0020ea11mov edx, 1
    0020ea16xor esi, esi
    0020ea18call fn_f4660
    0020ea1dmov [rbx+8], rax
    0020ea21call caml_leave_blocking_section
    0020ea26mov rax, [rbx+112]
    0020ea2alea rdi, [rbx+40]
    0020ea2elea rcx, [rax+0x10000]
    0020ea35mov [rbx+32], rax
    0020ea39movq x1, rax
    0020ea3emovq x0, rcx
    0020ea43punpcklqdq x0, x1
    0020ea47movups [rbx+16], x0
    0020ea4bcall caml_plat_mutex_init
    0020ea50pxor x0, x0
    0020ea54mov rax, rbx
    0020ea57mov [rbx+96], 0
    0020ea5fmov [rbx+120], 0
    0020ea67mov [rbx+104], 0
    0020ea6emovups [rbx+80], x0
    0020ea72add rsp, 8
    0020ea76pop rbx
    0020ea77pop rbp
    0020ea78ret
    0020ea79mov rdi, rbx
    0020ea7ccall caml_stat_free
    0020ea81call caml_raise_out_of_memory
    0020ea86db 0xb6
    0020ea87jg 0x20ea88
    0020ea89db 0xff
    0020e9e0
    0020ea8a
    0020ea8a // align 0x10
    0020ea90
    0020ea90caml_open_descriptor_out:
    0020ea90sub rsp, 8
    0020ea94call caml_open_descriptor_in
    0020ea99mov [rax+32], 0
    0020eaa1add rsp, 8
    0020eaa5ret
    0020eaa6db 0x83
    0020eaa7db 0xc4
    0020eaa8or bl, al
    0020ea90
    0020eaaa
    0020eaaa // align 0x10
    0020eab0
    0020eab0caml_close_channel:
    0020eab0push rbx
    0020eab1mov rbx, rdi
    0020eab4mov edi, [rdi]
    0020eab6call fn_f4140
    0020eabblea rdi, [rbx+40]
    0020eabfcall caml_plat_mutex_free
    0020eac4mov rdi, [rbx+120]
    0020eac8call caml_stat_free
    0020eacdmov rdi, [rbx+112]
    0020ead1call caml_stat_free
    0020ead6mov rdi, rbx
    0020ead9pop rbx
    0020eadajmp 0x216690
    0020eadfdb 0xad
    0020eae0jnp 0x20eae2
    0020eae2db 0x00
    0020eab0
    0020eae3
    0020eae3 // align 0x10
    0020eaf0
    0020eaf0caml_channel_size:
    0020eaf0push r12
    0020eaf2push rbp
    0020eaf3push rbx
    0020eaf4mov rbx, rdi
    0020eaf7call fn_20e670
    0020eafcmov r12l, [rbx]
    0020eafftest [rbx+104], 8
    0020eb03je 0x20eb60
    0020eb05call caml_enter_blocking_section_no_pending
    0020eb0amov edx, 1
    0020eb0fxor esi, esi
    0020eb11mov edi, r12l
    0020eb14call fn_f4660
    0020eb19mov rbx, rax
    0020eb1ccmp rax, -1
    0020eb20je 0x20eb71
    0020eb22mov edx, 2
    0020eb27xor esi, esi
    0020eb29mov edi, r12l
    0020eb2ccall fn_f4660
    0020eb31mov rbp, rax
    0020eb34cmp rax, -1
    0020eb38je 0x20eb71
    0020eb3axor edx, edx
    0020eb3cmov rsi, rbx
    0020eb3fmov edi, r12l
    0020eb42call fn_f4660
    0020eb47cmp rax, rbx
    0020eb4ajne 0x20eb71
    0020eb4ccall caml_leave_blocking_section
    0020eb51mov rax, rbp
    0020eb54pop rbx
    0020eb55pop rbp
    0020eb56pop r12
    0020eb58ret
    0020eb59db 0x5d
    0020eb5apop r12
    0020eb5cret
    0020eb5d
    0020eb5d 0f 1f 00 ...
    0020eb60
    0020eb60loc_20eb60:
    0020eb60mov rbx, [rbx+8]
    0020eb64call caml_enter_blocking_section_no_pending
    0020eb69cmp rbx, -1
    0020eb6djne 0x20eb26
    0020eb6fjmp 0x20eb0e
    0020eb71
    0020eb71loc_20eb71:
    0020eb71call caml_leave_blocking_section
    0020eb76mov edi, 1
    0020eb7bcall caml_sys_error
    0020eaf0
    0020eb80
    0020eb80fn_20eb80:
    0020eb80push r13
    0020eb82push r12
    0020eb84push rbp
    0020eb85push rbx
    0020eb86sub rsp, 104
    0020eb8amov [rsp+8], rdi
    0020eb8fmov rax, [0x28]
    0020eb98mov [rsp+88], rax
    0020eb9dmov rax, [rip+0x67444]
    0020eba4mov rbx, [rax]
    0020eba8lea rax, [rsp+16]
    0020ebadmov rbp, [rbx+160]
    0020ebb4mov [rbx+160], rax
    0020ebbbmov eax, 1
    0020ebc0movq x0, rax
    0020ebc5lea rax, [rsp+8]
    0020ebcapunpcklqdq x0, x0
    0020ebcemov [rsp+16], rbp
    0020ebd3mov [rsp+40], rax
    0020ebd8movups [rsp+24], x0
    0020ebddmov r13, [rdi+8]
    0020ebe1lea r12, [r13+40]
    0020ebe5mov rdi, r12
    0020ebe8call fn_f4780
    0020ebedcmp eax, 16
    0020ebf0je 0x20ec50
    0020ebf2test eax, eax
    0020ebf4jne 0x20ec6d
    0020ebf6
    0020ebf6loc_20ebf6:
    0020ebf6mov [0xfffffffffffffff0], r13
    0020ebffmov rax, [rsp+8]
    0020ec04mov rdi, [rax+8]
    0020ec08call caml_channel_size
    0020ec0dmov rdi, r12
    0020ec10mov r13, rax
    0020ec13call fn_f47c0
    0020ec18test eax, eax
    0020ec1ajne 0x20ec5f
    0020ec1cmov [0xfffffffffffffff0], 0
    0020ec29mov [rbx+160], rbp
    0020ec30mov rax, [rsp+88]
    0020ec35sub rax, [0x28]
    0020ec3ejne 0x20ec5a
    0020ec40add rsp, 104
    0020ec44mov rax, r13
    0020ec47pop rbx
    0020ec48pop rbp
    0020ec49pop r12
    0020ec4bpop r13
    0020ec4dret
    0020ec4e
    0020ec4e 66 90 f.
    0020ec50
    0020ec50loc_20ec50:
    0020ec50mov rdi, r12
    0020ec53call caml_plat_lock_non_blocking_actual
    0020ec58jmp 0x20ebf6
    0020ec5a
    0020ec5aloc_20ec5a:
    0020ec5acall fn_f4590
    0020ec5f
    0020ec5floc_20ec5f:
    0020ec5fmov esi, eax
    0020ec61lea rdi, [rip+0x208b2]
    0020ec68call caml_plat_fatal_error
    0020ec6d
    0020ec6dloc_20ec6d:
    0020ec6dmov esi, eax
    0020ec6flea rdi, [rip+0x208b1]
    0020ec76call caml_plat_fatal_error
    0020eb80
    0020ec7b
    0020ec7b // align 0x10
    0020ec80
    0020ec80caml_channel_binary_mode:
    0020ec80movzx eax, [rdi+104]
    0020ec84shr al, 3
    0020ec87and eax, 1
    0020ec8axor eax, 1
    0020ec8dret
    0020ec8edb 0x83
    0020ec8fdb 0xf0
    0020ec90add ebx, eax
    0020ec80
    0020ec92
    0020ec92 // align 0x10
    0020eca0
    0020eca0caml_flush_partial:
    0020eca0push r12
    0020eca2push rbp
    0020eca3push rbx
    0020eca4mov rbx, rdi
    0020eca7jmp 0x20eccb
    0020eca9db 0x89
    0020ecaasti
    0020ecabjmp 0x20eccb
    0020ecad
    0020ecad 0f 1f 00 ...
    0020ecb0
    0020ecb0loc_20ecb0:
    0020ecb0mov esi, [rbx+104]
    0020ecb3mov edi, [rbx]
    0020ecb5call caml_write_fd
    0020ecbacmp eax, -1
    0020ecbdjne 0x20ecf8
    0020ecbfcall fn_f4570
    0020ecc4mov eax, [rax]
    0020ecc6cmp eax, 4
    0020ecc9jne 0x20ed34
    0020eccb
    0020eccbloc_20eccb:
    0020eccbmov rdi, rbx
    0020eccecall fn_20e670
    0020ecd3mov rax, [rbx+24]
    0020ecd7mov rdx, [rbx+112]
    0020ecdbmov rbp, rax
    0020ecdesub rbp, rdx
    0020ece1mov ecx, ebp
    0020ece3test ebp, ebp
    0020ece5jg 0x20ecb0
    0020ece7cmp rax, rdx
    0020eceapop rbx
    0020ecebpop rbp
    0020ececsete al
    0020ecefpop r12
    0020ecf1movzx eax, al
    0020ecf4ret
    0020ecf5
    0020ecf5 0f 1f 00 ...
    0020ecf8
    0020ecf8loc_20ecf8:
    0020ecf8movsxd r12, eax
    0020ecfbadd [rbx+8], r12
    0020ecffcmp ebp, eax
    0020ed01jg 0x20ed20
    0020ed03
    0020ed03loc_20ed03:
    0020ed03mov rax, [rbx+24]
    0020ed07mov rdx, [rbx+112]
    0020ed0bsub rax, r12
    0020ed0ecmp rax, rdx
    0020ed11mov [rbx+24], rax
    0020ed15pop rbx
    0020ed16sete al
    0020ed19pop rbp
    0020ed1apop r12
    0020ed1cmovzx eax, al
    0020ed1fret
    0020ed20
    0020ed20loc_20ed20:
    0020ed20mov rdi, [rbx+112]
    0020ed24sub ebp, eax
    0020ed26movsxd rdx, ebp
    0020ed29lea rsi, [rdi+r12]
    0020ed2dcall fn_f4520
    0020ed32jmp 0x20ed03
    0020ed34
    0020ed34loc_20ed34:
    0020ed34cmp eax, 9
    0020ed37sete dl
    0020ed3acmp eax, 32
    0020ed3dsete cl
    0020ed40or dl, cl
    0020ed42jne 0x20ed49
    0020ed44cmp eax, 104
    0020ed47jne 0x20ed56
    0020ed49
    0020ed49loc_20ed49:
    0020ed49cmp [rbx], -1
    0020ed4cje 0x20ed56
    0020ed4emov rax, [rbx+112]
    0020ed52mov [rbx+24], rax
    0020ed56
    0020ed56loc_20ed56:
    0020ed56mov edi, 1
    0020ed5bcall caml_sys_io_error
    0020eca0
    0020ed60
    0020ed60caml_flush:
    0020ed60push rbx
    0020ed61mov rbx, rdi
    0020ed64nop [rax+rax]
    0020ed6cmov rdi, rbx
    0020ed6fcall caml_flush_partial
    0020ed74test eax, eax
    0020ed76je 0x20ed70
    0020ed78pop rbx
    0020ed79ret
    0020ed7adb 0x74
    0020ed7bhlt
    0020ed7cpop rbx
    0020ed7dret
    0020ed60
    0020ed7e
    0020ed7e // align 0x10
    0020ed80
    0020ed80caml_flush_if_unbuffered:
    0020ed80test [rdi+104], 16
    0020ed84je 0x20eda0
    0020ed86push rbx
    0020ed87mov rbx, rdi
    0020ed8anop
    0020ed8cmov rdi, rbx
    0020ed8fcall caml_flush_partial
    0020ed94test eax, eax
    0020ed96je 0x20ed90
    0020ed98pop rbx
    0020ed99ret
    0020ed9adb 0x74
    0020ed9bhlt
    0020ed9cpop rbx
    0020ed9dret
    0020ed9e
    0020ed9e 66 90 f.
    0020eda0
    0020eda0loc_20eda0:
    0020eda0ret
    0020ed80
    0020eda1
    0020eda1 // align 0x10
    0020edb0
    0020edb0caml_putch:
    0020edb0push rbp
    0020edb1mov ebp, esi
    0020edb3push rbx
    0020edb4mov rbx, rdi
    0020edb7sub rsp, 8
    0020edbbmov rax, [rdi+24]
    0020edbfcmp rax, [rdi+16]
    0020edc3jae 0x20ede0
    0020edc5lea rdx, [rax+1]
    0020edc9
    0020edc9loc_20edc9:
    0020edc9mov [rbx+24], rdx
    0020edcdmov [rax], bpl
    0020edd0add rsp, 8
    0020edd4pop rbx
    0020edd5pop rbp
    0020edd6ret
    0020edd7db 0x08
    0020edd8pop rbx
    0020edd9pop rbp
    0020eddaret
    0020eddb
    0020eddb 0f 1f 44 00 00 ..D..
    0020ede0
    0020ede0loc_20ede0:
    0020ede0call caml_flush_partial
    0020ede5mov rax, [rbx+24]
    0020ede9jmp 0x20edc9
    0020edb0
    0020edeb
    0020edeb // align 0x10
    0020edf0
    0020edf0caml_putword:
    0020edf0push r12
    0020edf2push rbp
    0020edf3push rbx
    0020edf4test [rdi+104], 8
    0020edf8jne 0x20eed1
    0020edfemov r12l, esi
    0020ee01mov rax, [rdi+24]
    0020ee05mov rbx, rdi
    0020ee08mov ebp, esi
    0020ee0ashr r12l, 24
    0020ee0ecmp rax, [rdi+16]
    0020ee12jae 0x20ee80
    0020ee14lea rdx, [rax+1]
    0020ee18
    0020ee18loc_20ee18:
    0020ee18mov [rbx+24], rdx
    0020ee1cmov [rax], r12b
    0020ee1fmov r12l, ebp
    0020ee22mov rax, [rbx+24]
    0020ee26shr r12l, 16
    0020ee2acmp rax, [rbx+16]
    0020ee2ejae 0x20eec0
    0020ee34lea rdx, [rax+1]
    0020ee38
    0020ee38loc_20ee38:
    0020ee38mov [rbx+24], rdx
    0020ee3cmov [rax], r12b
    0020ee3fmov r12l, ebp
    0020ee42mov rax, [rbx+24]
    0020ee46shr r12l, 8
    0020ee4acmp rax, [rbx+16]
    0020ee4ejae 0x20eeb0
    0020ee50lea rdx, [rax+1]
    0020ee54
    0020ee54loc_20ee54:
    0020ee54mov [rbx+24], rdx
    0020ee58mov [rax], r12b
    0020ee5bmov rax, [rbx+24]
    0020ee5fcmp rax, [rbx+16]
    0020ee63jae 0x20ee90
    0020ee65lea rdx, [rax+1]
    0020ee69mov [rbx+24], rdx
    0020ee6dmov [rax], bpl
    0020ee70pop rbx
    0020ee71pop rbp
    0020ee72pop r12
    0020ee74ret
    0020ee75db 0x5d
    0020ee76pop r12
    0020ee78ret
    0020ee79
    0020ee79 0f 1f 80 00 00 00 00 .......
    0020ee80
    0020ee80loc_20ee80:
    0020ee80call caml_flush_partial
    0020ee85mov rax, [rbx+24]
    0020ee89jmp 0x20ee18
    0020ee8b
    0020ee8b 0f 1f 44 00 00 ..D..
    0020ee90
    0020ee90loc_20ee90:
    0020ee90mov rdi, rbx
    0020ee93call caml_flush_partial
    0020ee98mov rax, [rbx+24]
    0020ee9clea rdx, [rax+1]
    0020eea0mov [rbx+24], rdx
    0020eea4mov [rax], bpl
    0020eea7pop rbx
    0020eea8pop rbp
    0020eea9pop r12
    0020eeabret
    0020eeac
    0020eeac 0f 1f 40 00 ..@.
    0020eeb0
    0020eeb0loc_20eeb0:
    0020eeb0mov rdi, rbx
    0020eeb3call caml_flush_partial
    0020eeb8mov rax, [rbx+24]
    0020eebcjmp 0x20ee54
    0020eebe
    0020eebe 66 90 f.
    0020eec0
    0020eec0loc_20eec0:
    0020eec0mov rdi, rbx
    0020eec3call caml_flush_partial
    0020eec8mov rax, [rbx+24]
    0020eeccjmp 0x20ee38
    0020eed1
    0020eed1loc_20eed1:
    0020eed1lea rdi, [rip+0x219f0]
    0020eed8call caml_failwith
    0020edf0
    0020eedd
    0020eedd // align 0x10
    0020eee0
    0020eee0caml_putblock:
    0020eee0push r12
    0020eee2mov eax, 0x7fffffff
    0020eee7push rbp
    0020eee8mov rbp, rdi
    0020eeebcmp rdx, rax
    0020eeeepush rbx
    0020eeefmov rdi, [rdi+24]
    0020eef3cmovg rdx, rax
    0020eef7mov rbx, [rbp+16]
    0020eefbsub rbx, rdi
    0020eefecmp edx, ebx
    0020ef00jge 0x20ef20
    0020ef02movsxd rbx, edx
    0020ef05mov r12l, edx
    0020ef08mov rdx, rbx
    0020ef0bcall fn_f4520
    0020ef10add [rbp+24], rbx
    0020ef14mov eax, r12l
    0020ef17pop rbx
    0020ef18pop rbp
    0020ef19pop r12
    0020ef1bret
    0020ef1cmovsxd rdx, ebx
    0020ef1fmov r12l, ebx
    0020ef22call fn_f4520
    0020ef27mov rax, [rbp+16]
    0020ef2bmov rdi, rbp
    0020ef2emov [rbp+24], rax
    0020ef32call caml_flush_partial
    0020ef37mov eax, r12l
    0020ef3apop rbx
    0020ef3bpop rbp
    0020ef3cpop r12
    0020ef3eret
    0020ef3fdb 0x5d
    0020ef40pop r12
    0020ef42ret
    0020eee0
    0020ef43
    0020ef43 // align 0x10
    0020ef50
    0020ef50caml_really_putblock:
    0020ef50test rdx, rdx
    0020ef53jle 0x20f000
    0020ef59push r15
    0020ef5bmov r15, rsi
    0020ef5epush r14
    0020ef60push r13
    0020ef62mov r13, rdi
    0020ef65push r12
    0020ef67push rbp
    0020ef68mov rbp, rdx
    0020ef6bpush rbx
    0020ef6csub rsp, 8
    0020ef70jmp 0x20ef9d
    0020ef72db 0xec
    0020ef73or bl, ch
    0020ef75db 0x27
    0020ef76
    0020ef76 66 2e 0f 1f 84 00 00 00 00 00 f.........
    0020ef80
    0020ef80loc_20ef80:
    0020ef80movsxd rbx, ebx
    0020ef83mov rsi, r15
    0020ef86sub rbp, r14
    0020ef89mov rdx, rbx
    0020ef8cadd r15, rbx
    0020ef8fcall fn_f4520
    0020ef94add [r13+24], rbx
    0020ef98test rbp, rbp
    0020ef9bjle 0x20efe8
    0020ef9d
    0020ef9dloc_20ef9d:
    0020ef9dmov ebx, 0x7fffffff
    0020efa2mov rdi, [r13+24]
    0020efa6mov r12, [r13+16]
    0020efaacmp rbp, rbx
    0020efadcmovle rbx, rbp
    0020efb1sub r12, rdi
    0020efb4movsxd r14, ebx
    0020efb7cmp ebx, r12l
    0020efbajl 0x20ef80
    0020efbcmovsxd rbx, r12l
    0020efbfmov rsi, r15
    0020efc2movsxd r14, r12l
    0020efc5mov rdx, rbx
    0020efc8sub rbp, r14
    0020efcbadd r15, rbx
    0020efcecall fn_f4520
    0020efd3mov rax, [r13+16]
    0020efd7mov rdi, r13
    0020efdamov [r13+24], rax
    0020efdecall caml_flush_partial
    0020efe3test rbp, rbp
    0020efe6jg 0x20ef9d
    0020efe8
    0020efe8loc_20efe8:
    0020efe8add rsp, 8
    0020efecpop rbx
    0020efedpop rbp
    0020efeepop r12
    0020eff0pop r13
    0020eff2pop r14
    0020eff4pop r15
    0020eff6ret
    0020eff7
    0020eff7 66 0f 1f 84 00 00 00 00 00 f........
    0020f000
    0020f000loc_20f000:
    0020f000ret
    0020ef50
    0020f001
    0020f001 // align 0x10
    0020f010
    0020f010caml_seek_out:
    0020f010push rbp
    0020f011mov rbp, rsi
    0020f014push rbx
    0020f015mov rbx, rdi
    0020f018sub rsp, 8
    0020f01cmov rdi, rbx
    0020f01fcall caml_flush_partial
    0020f024test eax, eax
    0020f026je 0x20f020
    0020f028call caml_enter_blocking_section_no_pending
    0020f02dmov edi, [rbx]
    0020f02fxor edx, edx
    0020f031mov rsi, rbp
    0020f034call fn_f4660
    0020f039test rax, rax
    0020f03cjs 0x20f057
    0020f03ecmp rbp, rax
    0020f041jne 0x20f057
    0020f043call caml_leave_blocking_section
    0020f048mov [rbx+8], rbp
    0020f04cadd rsp, 8
    0020f050pop rbx
    0020f051pop rbp
    0020f052ret
    0020f053call caml_leave_blocking_section
    0020f058mov edi, 1
    0020f05dcall caml_sys_error
    0020f062db 0xba
    0020f063db 0x2f
    0020f064add [rax], eax
    0020f010
    0020f066
    0020f066 // align 0x10
    0020f070
    0020f070caml_pos_out:
    0020f070mov rax, [rdi+24]
    0020f074sub rax, [rdi+112]
    0020f078add rax, [rdi+8]
    0020f07cret
    0020f07ddb 0x03
    0020f07eor r11b, r8b
    0020f070
    0020f081
    0020f081 // align 0x10
    0020f090
    0020f090caml_do_read:
    0020f090push r13
    0020f092mov r13l, edi
    0020f095push r12
    0020f097mov r12, rsi
    0020f09apush rbp
    0020f09bmov ebp, edx
    0020f09dpush rbx
    0020f09esub rsp, 8
    0020f0a2jmp 0x20f0ba
    0020f0a4db 0xec
    0020f0a5or bl, ch
    0020f0a7db 0x12
    0020f0a8
    0020f0a8 0f 1f 84 00 00 00 00 00 ........
    0020f0b0
    0020f0b0loc_20f0b0:
    0020f0b0call fn_f4570
    0020f0b5cmp [rax], 4
    0020f0b8jne 0x20f0d0
    0020f0ba
    0020f0baloc_20f0ba:
    0020f0bamov ecx, ebp
    0020f0bcmov rdx, r12
    0020f0bfxor esi, esi
    0020f0c1mov edi, r13l
    0020f0c4call caml_read_fd
    0020f0c9mov ebx, eax
    0020f0cbcmp eax, -1
    0020f0ceje 0x20f0b0
    0020f0d0
    0020f0d0loc_20f0d0:
    0020f0d0add rsp, 8
    0020f0d4mov eax, ebx
    0020f0d6pop rbx
    0020f0d7pop rbp
    0020f0d8pop r12
    0020f0dapop r13
    0020f0dcret
    0020f090
    0020f0dd
    0020f0dd // align 0x10
    0020f0e0
    0020f0e0caml_refill:
    0020f0e0push rbx
    0020f0e1mov rbx, rdi
    0020f0e4jmp 0x20f0fa
    0020f0e6db 0x89
    0020f0e7sti
    0020f0e8jmp 0x20f0fa
    0020f0ea
    0020f0ea 66 0f 1f 44 00 00 f..D..
    0020f0f0
    0020f0f0loc_20f0f0:
    0020f0f0call fn_f4570
    0020f0f5cmp [rax], 4
    0020f0f8jne 0x20f151
    0020f0fa
    0020f0faloc_20f0fa:
    0020f0famov rdi, rbx
    0020f0fdcall fn_20e670
    0020f102mov rdx, [rbx+112]
    0020f106mov ecx, [rbx+16]
    0020f109mov esi, [rbx+104]
    0020f10cmov edi, [rbx]
    0020f10esub ecx, edx
    0020f110call caml_read_fd
    0020f115cmp eax, -1
    0020f118je 0x20f0f0
    0020f11atest eax, eax
    0020f11cje 0x20f15b
    0020f11emov rdx, [rbx+112]
    0020f122cdqe
    0020f124mov esi, 1
    0020f129add [rbx+8], rax
    0020f12dmovq x2, rax
    0020f132movq x1, rsi
    0020f137movq x0, rdx
    0020f13cpunpcklqdq x1, x2
    0020f140punpcklqdq x0, x0
    0020f144paddq x0, x1
    0020f148movups [rbx+24], x0
    0020f14cmovzx eax, [rdx]
    0020f14fpop rbx
    0020f150ret
    0020f151
    0020f151loc_20f151:
    0020f151mov edi, 1
    0020f156call caml_sys_io_error
    0020f15b
    0020f15bloc_20f15b:
    0020f15bcall caml_raise_end_of_file
    0020f0e0
    0020f160
    0020f160caml_getch:
    0020f160mov rax, [rdi+24]
    0020f164cmp rax, [rdi+32]
    0020f168jae 0x20f180
    0020f16alea rdx, [rax+1]
    0020f16emov [rdi+24], rdx
    0020f172movzx eax, [rax]
    0020f175ret
    0020f176db 0x0f
    0020f177mov dh, 0
    0020f179ret
    0020f17a
    0020f17a 66 0f 1f 44 00 00 f..D..
    0020f180
    0020f180loc_20f180:
    0020f180jmp 0x20f0e0
    0020f160
    0020f185
    0020f185 // align 0x10
    0020f190
    0020f190caml_getword:
    0020f190push r12
    0020f192push rbp
    0020f193push rbx
    0020f194test [rdi+104], 8
    0020f198jne 0x20f1dd
    0020f19amov rbp, rdi
    0020f19dmov r12l, 4
    0020f1a3xor ebx, ebx
    0020f1a5mov rax, [rbp+24]
    0020f1a9
    0020f1a9loc_20f1a9:
    0020f1a9shl ebx, 8
    0020f1accmp rax, [rbp+32]
    0020f1b0jae 0x20f1d0
    0020f1b2lea rdx, [rax+1]
    0020f1b6mov [rbp+24], rdx
    0020f1bamovzx eax, [rax]
    0020f1bdadd ebx, eax
    0020f1bfsub r12l, 1
    0020f1c3jne 0x20f1a9
    0020f1c5mov eax, ebx
    0020f1c7pop rbx
    0020f1c8pop rbp
    0020f1c9pop r12
    0020f1cbret
    0020f1ccmov rdi, rbp
    0020f1cfcall caml_refill
    0020f1d4movzx eax, al
    0020f1d7jmp 0x20f1c1
    0020f1d9lea rdi, [rip+0x2170c]
    0020f1e0call caml_failwith
    0020f1e5db 0xd7
    0020f1e6ja 0x20f1e7
    0020f1e8db 0xff
    0020f190
    0020f1e9
    0020f1e9 // align 0x10
    0020f1f0
    0020f1f0caml_getblock:
    0020f1f0mov eax, 0x7fffffff
    0020f1f5push r14
    0020f1f7mov r14, rsi
    0020f1facmp rdx, rax
    0020f1fdpush r13
    0020f1ffcmovle rax, rdx
    0020f203push r12
    0020f205push rbp
    0020f206mov r13, rax
    0020f209push rbx
    0020f20amov r12l, eax
    0020f20dmov rbx, rdi
    0020f210jmp 0x20f24a
    0020f212db 0x89
    0020f213sti
    0020f214jmp 0x20f24a
    0020f216
    0020f216 66 2e 0f 1f 84 00 00 00 00 00 f.........
    0020f220
    0020f220loc_20f220:
    0020f220test ebp, ebp
    0020f222jg 0x20f288
    0020f224mov rdx, [rbx+112]
    0020f228mov ecx, [rbx+16]
    0020f22bmov esi, [rbx+104]
    0020f22emov edi, [rbx]
    0020f230sub ecx, edx
    0020f232call caml_read_fd
    0020f237cmp eax, -1
    0020f23ajne 0x20f2b0
    0020f23ccall fn_f4570
    0020f241cmp [rax], 4
    0020f244jne 0x20f2ee
    0020f24a
    0020f24aloc_20f24a:
    0020f24amov rdi, rbx
    0020f24dcall fn_20e670
    0020f252mov rsi, [rbx+24]
    0020f256mov rbp, [rbx+32]
    0020f25asub rbp, rsi
    0020f25dcmp ebp, r12l
    0020f260jl 0x20f220
    0020f262movsxd r13, r13l
    0020f265mov rdi, r14
    0020f268mov rdx, r13
    0020f26bcall fn_f4520
    0020f270add r13, [rbx+24]
    0020f274mov eax, r12l
    0020f277mov [rbx+24], r13
    0020f27bpop rbx
    0020f27cpop rbp
    0020f27dpop r12
    0020f27fpop r13
    0020f281pop r14
    0020f283ret
    0020f284
    0020f284 0f 1f 40 00 ..@.
    0020f288
    0020f288loc_20f288:
    0020f288movsxd r13, ebp
    0020f28bmov rdi, r14
    0020f28emov r12l, ebp
    0020f291mov rdx, r13
    0020f294call fn_f4520
    0020f299add r13, [rbx+24]
    0020f29dmov eax, r12l
    0020f2a0mov [rbx+24], r13
    0020f2a4pop rbx
    0020f2a5pop rbp
    0020f2a6pop r12
    0020f2a8pop r13
    0020f2aapop r14
    0020f2acret
    0020f2ad
    0020f2ad 0f 1f 00 ...
    0020f2b0
    0020f2b0loc_20f2b0:
    0020f2b0mov rsi, [rbx+112]
    0020f2b4movsxd rdx, eax
    0020f2b7add [rbx+8], rdx
    0020f2bbmov rdi, r14
    0020f2beadd rdx, rsi
    0020f2c1cmp eax, r13l
    0020f2c4cmovle r13l, eax
    0020f2c8mov [rbx+32], rdx
    0020f2ccmov r12l, r13l
    0020f2cfmovsxd r13, r13l
    0020f2d2mov rdx, r13
    0020f2d5call fn_f4520
    0020f2daadd r13, [rbx+112]
    0020f2demov eax, r12l
    0020f2e1mov [rbx+24], r13
    0020f2e5pop rbx
    0020f2e6pop rbp
    0020f2e7pop r12
    0020f2e9pop r13
    0020f2ebpop r14
    0020f2edret
    0020f2ee
    0020f2eeloc_20f2ee:
    0020f2eemov edi, 1
    0020f2f3call caml_sys_io_error
    0020f1f0
    0020f2f8
    0020f2f8 // align 0x10
    0020f300
    0020f300caml_really_getblock:
    0020f300test rdx, rdx
    0020f303jle 0x20f371
    0020f305push r13
    0020f307mov r13, rdx
    0020f30apush r12
    0020f30cmov r12, rdi
    0020f30fpush rbp
    0020f310mov rbp, rdx
    0020f313push rbx
    0020f314mov rbx, rsi
    0020f317sub rsp, 8
    0020f31bjmp 0x20f33b
    0020f31ddb 0xec
    0020f31eor bl, ch
    0020f320db 0x1a
    0020f321
    0020f321 0f 1f 80 00 00 00 00 .......
    0020f328
    0020f328loc_20f328:
    0020f328cdqe
    0020f32amov rdx, r13
    0020f32dsub rdx, rax
    0020f330add rbx, rax
    0020f333test rdx, rdx
    0020f336jle 0x20f360
    0020f338mov r13, rdx
    0020f33b
    0020f33bloc_20f33b:
    0020f33bmov rdx, r13
    0020f33emov rsi, rbx
    0020f341mov rdi, r12
    0020f344call caml_getblock
    0020f349test eax, eax
    0020f34bjne 0x20f328
    0020f34dadd rsp, 8
    0020f351mov rax, rbp
    0020f354pop rbx
    0020f355sub rax, r13
    0020f358pop rbp
    0020f359pop r12
    0020f35bpop r13
    0020f35dret
    0020f35e
    0020f35e 66 90 f.
    0020f360
    0020f360loc_20f360:
    0020f360add rsp, 8
    0020f364sub rax, r13
    0020f367pop rbx
    0020f368add rax, rbp
    0020f36bpop rbp
    0020f36cpop r12
    0020f36epop r13
    0020f370ret
    0020f371
    0020f371loc_20f371:
    0020f371xor eax, eax
    0020f373ret
    0020f300
    0020f374
    0020f374 // align 0x10
    0020f380
    0020f380caml_seek_in:
    0020f380push rbp
    0020f381mov rbp, rsi
    0020f384push rbx
    0020f385mov rbx, rdi
    0020f388sub rsp, 8
    0020f38cmov rdx, [rdi+8]
    0020f390mov rax, [rdi+32]
    0020f394mov rcx, rdx
    0020f397mov rsi, rax
    0020f39asub rsi, [rdi+112]
    0020f39esub rcx, rsi
    0020f3a1cmp rcx, rbp
    0020f3a4jg 0x20f3b5
    0020f3a6cmp rdx, rbp
    0020f3a9jl 0x20f3b5
    0020f3abtest [rdi+104], 8
    0020f3afje 0x20f3f0
    0020f3b1call caml_enter_blocking_section_no_pending
    0020f3b6mov edi, [rbx]
    0020f3b8xor edx, edx
    0020f3bamov rsi, rbp
    0020f3bdcall fn_f4660
    0020f3c2test rax, rax
    0020f3c5js 0x20f401
    0020f3c7cmp rbp, rax
    0020f3cajne 0x20f401
    0020f3cccall caml_leave_blocking_section
    0020f3d1mov rax, [rbx+112]
    0020f3d5mov [rbx+8], rbp
    0020f3d9mov [rbx+32], rax
    0020f3ddmov [rbx+24], rax
    0020f3e1add rsp, 8
    0020f3e5pop rbx
    0020f3e6pop rbp
    0020f3e7ret
    0020f3e8db 0x08
    0020f3e9pop rbx
    0020f3eapop rbp
    0020f3ebret
    0020f3ec
    0020f3ec 0f 1f 40 00 ..@.
    0020f3f0
    0020f3f0loc_20f3f0:
    0020f3f0sub rdx, rbp
    0020f3f3sub rax, rdx
    0020f3f6mov [rbx+24], rax
    0020f3faadd rsp, 8
    0020f3fepop rbx
    0020f3ffpop rbp
    0020f400ret
    0020f401
    0020f401loc_20f401:
    0020f401call caml_leave_blocking_section
    0020f406mov edi, 1
    0020f40bcall caml_sys_error
    0020f380
    0020f410
    0020f410caml_pos_in:
    0020f410mov rax, [rdi+8]
    0020f414mov rdx, [rdi+32]
    0020f418sub rdx, [rdi+24]
    0020f41csub rax, rdx
    0020f41fret
    0020f420db 0x48
    0020f421sub eax, edx
    0020f423ret
    0020f410
    0020f424
    0020f424 // align 0x10
    0020f430
    0020f430caml_input_scan_line:
    0020f430push rbp
    0020f431push rbx
    0020f432mov rbx, rdi
    0020f435sub rsp, 8
    0020f439mov rdi, rbx
    0020f43ccall fn_20e670
    0020f441mov rbp, [rbx+24]
    0020f445jmp 0x20f4a0
    0020f447db 0x6b
    0020f448db 0x18
    0020f449db 0xeb
    0020f44apush rbp
    0020f44b
    0020f44b 0f 1f 44 00 00 ..D..
    0020f450
    0020f450loc_20f450:
    0020f450mov rsi, [rbx+24]
    0020f454mov rdi, [rbx+112]
    0020f458cmp rdi, rsi
    0020f45bjb 0x20f4c8
    0020f45dmov rcx, [rbx+16]
    0020f461cmp rdx, rcx
    0020f464jae 0x20f4ff
    0020f46a
    0020f46aloc_20f46a:
    0020f46amov esi, [rbx+104]
    0020f46dmov edi, [rbx]
    0020f46fsub ecx, edx
    0020f471call caml_read_fd
    0020f476cmp eax, -1
    0020f479je 0x20f510
    0020f47fmov rdx, [rbx+32]
    0020f483test eax, eax
    0020f485je 0x20f4ff
    0020f487cdqe
    0020f489add [rbx+8], rax
    0020f48dadd rdx, rax
    0020f490mov rax, rbp
    0020f493add rbp, 1
    0020f497mov [rbx+32], rdx
    0020f49bcmp [rax], 10
    0020f49eje 0x20f4b5
    0020f4a0
    0020f4a0loc_20f4a0:
    0020f4a0mov rdx, [rbx+32]
    0020f4a4cmp rbp, rdx
    0020f4a7jae 0x20f450
    0020f4a9mov rax, rbp
    0020f4acadd rbp, 1
    0020f4b0cmp [rax], 10
    0020f4b3jne 0x20f4a0
    0020f4b5
    0020f4b5loc_20f4b5:
    0020f4b5mov rax, rbp
    0020f4b8sub rax, [rbx+24]
    0020f4bcadd rsp, 8
    0020f4c0pop rbx
    0020f4c1pop rbp
    0020f4c2ret
    0020f4c3
    0020f4c3 0f 1f 44 00 00 ..D..
    0020f4c8
    0020f4c8loc_20f4c8:
    0020f4c8sub rdx, rsi
    0020f4cbcall fn_f4520
    0020f4d0mov rdx, [rbx+24]
    0020f4d4mov rcx, [rbx+16]
    0020f4d8mov rax, rdx
    0020f4dbsub rax, [rbx+112]
    0020f4dfcdqe
    0020f4e1sub rdx, rax
    0020f4e4sub rbp, rax
    0020f4e7mov [rbx+24], rdx
    0020f4ebmov rdx, [rbx+32]
    0020f4efsub rdx, rax
    0020f4f2mov [rbx+32], rdx
    0020f4f6cmp rdx, rcx
    0020f4f9jb 0x20f46a
    0020f4ff
    0020f4ffloc_20f4ff:
    0020f4ffsub rdx, [rbx+24]
    0020f503add rsp, 8
    0020f507mov rax, rdx
    0020f50apop rbx
    0020f50bpop rbp
    0020f50cneg rax
    0020f50fret
    0020f510
    0020f510loc_20f510:
    0020f510call fn_f4570
    0020f515cmp [rax], 4
    0020f518je 0x20f43d
    0020f51emov edi, 1
    0020f523call caml_sys_io_error
    0020f430
    0020f528
    0020f528 // align 0x10
    0020f530
    0020f530caml_alloc_channel:
    0020f530push rbx
    0020f531mov ecx, 1
    0020f536mov rbx, rdi
    0020f539xor edx, edx
    0020f53bmov esi, 8
    0020f540lea rdi, [rip+0x168e15]
    0020f547call caml_alloc_custom
    0020f54cmov [rax+8], rbx
    0020f550pop rbx
    0020f551ret
    0020f552db 0x58
    0020f553or [rbx-61], bl
    0020f530
    0020f556
    0020f556 // align 0x10
    0020f560
    0020f560caml_ml_open_descriptor_in_with_flags:
    0020f560push rbp
    0020f561mov ebp, esi
    0020f563push rbx
    0020f564sub rsp, 8
    0020f568call caml_open_descriptor_in
    0020f56dor ebp, [rax+104]
    0020f570mov [rax+96], 1
    0020f578mov rbx, rax
    0020f57bor ebp, 4
    0020f57emov [rax+104], ebp
    0020f581lea rbp, [rip+0x169494]
    0020f588mov rdi, rbp
    0020f58bcall fn_f4710
    0020f590test eax, eax
    0020f592jne 0x20f5e2
    0020f594mov rax, [rip+0x1694a9]
    0020f59bmov [rbx+80], rax
    0020f59ftest rax, rax
    0020f5a2je 0x20f5ac
    0020f5a4mov [rax+88], rbx
    0020f5a8mov rdi, rbp
    0020f5abmov [rip+0x169492], rbx
    0020f5b2call fn_f47c0
    0020f5b7test eax, eax
    0020f5b9jne 0x20f5f0
    0020f5bbmov ecx, 1
    0020f5c0xor edx, edx
    0020f5c2mov esi, 8
    0020f5c7lea rdi, [rip+0x168d8e]
    0020f5cecall caml_alloc_custom
    0020f5d3mov [rax+8], rbx
    0020f5d7add rsp, 8
    0020f5dbpop rbx
    0020f5dcpop rbp
    0020f5ddret
    0020f5demov esi, eax
    0020f5e0lea rdi, [rip+0x1ff24]
    0020f5e7call caml_plat_fatal_error
    0020f5ecmov esi, eax
    0020f5eelea rdi, [rip+0x1ff21]
    0020f5f5call caml_plat_fatal_error
    0020f5fadb 0xd2
    0020f5fbret
    0020f5fcadd [rax], al
    0020f560
    0020f5fe
    0020f5fe // align 0x10
    0020f600
    0020f600caml_ml_open_descriptor_in:
    0020f600sar rdi, 1
    0020f603xor esi, esi
    0020f605jmp 0x20f560
    0020f60adb 0x52
    0020f60bdb 0xff
    0020f60cdb 0xff
    0020f60ddb 0xff
    0020f600
    0020f60e
    0020f60e // align 0x10
    0020f610
    0020f610caml_ml_open_descriptor_out_with_flags:
    0020f610push rbp
    0020f611mov ebp, esi
    0020f613push rbx
    0020f614sub rsp, 8
    0020f618call caml_open_descriptor_in
    0020f61dor ebp, [rax+104]
    0020f620mov [rax+32], 0
    0020f628mov rbx, rax
    0020f62bor ebp, 4
    0020f62emov [rax+96], 1
    0020f636mov [rax+104], ebp
    0020f639lea rbp, [rip+0x1693dc]
    0020f640mov rdi, rbp
    0020f643call fn_f4710
    0020f648test eax, eax
    0020f64ajne 0x20f69a
    0020f64cmov rax, [rip+0x1693f1]
    0020f653mov [rbx+80], rax
    0020f657test rax, rax
    0020f65aje 0x20f664
    0020f65cmov [rax+88], rbx
    0020f660mov rdi, rbp
    0020f663mov [rip+0x1693da], rbx
    0020f66acall fn_f47c0
    0020f66ftest eax, eax
    0020f671jne 0x20f6a8
    0020f673mov ecx, 1
    0020f678xor edx, edx
    0020f67amov esi, 8
    0020f67flea rdi, [rip+0x168cd6]
    0020f686call caml_alloc_custom
    0020f68bmov [rax+8], rbx
    0020f68fadd rsp, 8
    0020f693pop rbx
    0020f694pop rbp
    0020f695ret
    0020f696mov esi, eax
    0020f698lea rdi, [rip+0x1fe6c]
    0020f69fcall caml_plat_fatal_error
    0020f6a4mov esi, eax
    0020f6a6lea rdi, [rip+0x1fe69]
    0020f6adcall caml_plat_fatal_error
    0020f6b2db 0x1a
    0020f6b3ret
    0020f6b4add [rax], al
    0020f610
    0020f6b6
    0020f6b6 // align 0x10
    0020f6c0
    0020f6c0caml_ml_open_descriptor_out:
    0020f6c0sar rdi, 1
    0020f6c3xor esi, esi
    0020f6c5jmp 0x20f610
    0020f6cadb 0x42
    0020f6cbdb 0xff
    0020f6ccdb 0xff
    0020f6cddb 0xff
    0020f6c0
    0020f6ce
    0020f6ce // align 0x10
    0020f6d0
    0020f6d0caml_ml_set_channel_name:
    0020f6d0push r13
    0020f6d2push r12
    0020f6d4push rbp
    0020f6d5push rbx
    0020f6d6sub rsp, 104
    0020f6damovdqa x0, [rip+0x1a9ea]
    0020f6e2mov [rsp+8], rdi
    0020f6e7movq x1, rsp
    0020f6ecmov [rsp], rsi
    0020f6f0mov rax, [0x28]
    0020f6f9mov [rsp+88], rax
    0020f6femov rax, [rip+0x668df]
    0020f705mov rbp, [rax]
    0020f709lea rax, [rsp+16]
    0020f70emovups [rsp+24], x0
    0020f713mov r12, [rbp+160]
    0020f71amov [rbp+160], rax
    0020f721lea rax, [rsp+8]
    0020f726movq x0, rax
    0020f72bpunpcklqdq x0, x1
    0020f72fmov [rsp+16], r12
    0020f734movups [rsp+40], x0
    0020f739mov rbx, [rdi+8]
    0020f73dlea r13, [rbx+40]
    0020f741mov rdi, r13
    0020f744call fn_f4780
    0020f749cmp eax, 16
    0020f74cje 0x20f7c8
    0020f74etest eax, eax
    0020f750jne 0x20f7f6
    0020f756mov [0xfffffffffffffff0], rbx
    0020f75fmov rdi, [rbx+120]
    0020f763call caml_stat_free
    0020f768mov rdi, [rsp]
    0020f76ccall caml_string_length
    0020f771mov rdx, rax
    0020f774xor eax, eax
    0020f776test rdx, rdx
    0020f779jne 0x20f7d8
    0020f77bmov [rbx+120], rax
    0020f77f
    0020f77floc_20f77f:
    0020f77fmov rdi, r13
    0020f782call fn_f47c0
    0020f787test eax, eax
    0020f789jne 0x20f7e8
    0020f78bmov [0xfffffffffffffff0], 0
    0020f798mov [rbp+160], r12
    0020f79fmov rax, [rsp+88]
    0020f7a4sub rax, [0x28]
    0020f7adjne 0x20f7e3
    0020f7afadd rsp, 104
    0020f7b3mov eax, 1
    0020f7b8pop rbx
    0020f7b9pop rbp
    0020f7bapop r12
    0020f7bcpop r13
    0020f7beret
    0020f7bfdb 0x5c
    0020f7c0pop r13
    0020f7c2ret
    0020f7c3
    0020f7c3 0f 1f 44 00 00 ..D..
    0020f7c8
    0020f7c8loc_20f7c8:
    0020f7c8mov rdi, r13
    0020f7cbcall caml_plat_lock_non_blocking_actual
    0020f7d0jmp 0x20f75a
    0020f7d2
    0020f7d2 66 0f 1f 44 00 00 f..D..
    0020f7d8
    0020f7d8loc_20f7d8:
    0020f7d8mov rdi, [rsp]
    0020f7dccall caml_stat_strdup
    0020f7e1jmp 0x20f77f
    0020f7e3
    0020f7e3loc_20f7e3:
    0020f7e3call fn_f4590
    0020f7e8
    0020f7e8loc_20f7e8:
    0020f7e8mov esi, eax
    0020f7ealea rdi, [rip+0x1fd29]
    0020f7f1call caml_plat_fatal_error
    0020f7f6
    0020f7f6loc_20f7f6:
    0020f7f6mov esi, eax
    0020f7f8lea rdi, [rip+0x1fd28]
    0020f7ffcall caml_plat_fatal_error
    0020f6d0
    0020f804
    0020f804 // align 0x10
    0020f810
    0020f810caml_ml_out_channels_list:
    0020f810push r15
    0020f812lea r15, [rip+0x169203]
    0020f819push r14
    0020f81bmov rdi, r15
    0020f81epush r13
    0020f820push r12
    0020f822push rbp
    0020f823push rbx
    0020f824sub rsp, 136
    0020f82bmovdqa x0, [rip+0x1a8a9]
    0020f833mov rax, [0x28]
    0020f83cmov [rsp+120], rax
    0020f841mov rax, [rip+0x6679c]
    0020f848mov r13, [rax]
    0020f84cmovups [rsp+56], x0
    0020f851mov [rsp+24], 1
    0020f85amov [rsp+32], 1
    0020f863mov rax, [r13+160]
    0020f86amov [rsp+40], 1
    0020f873mov [rsp+8], rax
    0020f878mov [rsp+48], rax
    0020f87dlea rax, [rsp+48]
    0020f882mov [r13+160], rax
    0020f889lea rax, [rsp+24]
    0020f88emovq x0, rax
    0020f893lea rax, [rsp+32]
    0020f898movq x1, rax
    0020f89dlea rax, [rsp+40]
    0020f8a2punpcklqdq x0, x1
    0020f8a6mov [rsp+88], rax
    0020f8abmovups [rsp+72], x0
    0020f8b0call fn_f4710
    0020f8b5test eax, eax
    0020f8b7jne 0x20f9ff
    0020f8bdmov rbx, [rip+0x169180]
    0020f8c4test rbx, rbx
    0020f8c7je 0x20f9d2
    0020f8cdxor r12l, r12l
    0020f8d0xor ebp, ebp
    0020f8d2jmp 0x20f8e9
    0020f8d4db 0x31
    0020f8d5in eax, dx
    0020f8d6jmp 0x20f8e9
    0020f8d8
    0020f8d8 0f 1f 84 00 00 00 00 00 ........
    0020f8e0
    0020f8e0loc_20f8e0:
    0020f8e0mov rbx, [rbx+80]
    0020f8e4test rbx, rbx
    0020f8e7je 0x20f920
    0020f8e9
    0020f8e9loc_20f8e9:
    0020f8e9cmp [rbx+32], 0
    0020f8eejne 0x20f8e0
    0020f8f0add [rbx+96], 1
    0020f8f5mov edi, 16
    0020f8faadd r12, 1
    0020f8fecall caml_stat_alloc_noexc
    0020f903test rax, rax
    0020f906je 0x20f9e5
    0020f90cmov [rax+8], rbp
    0020f910mov rbp, rax
    0020f913mov [rax], rbx
    0020f916mov rbx, [rbx+80]
    0020f91atest rbx, rbx
    0020f91djne 0x20f8e9
    0020f91fnop
    0020f920
    0020f920loc_20f920:
    0020f920mov rdi, r15
    0020f923call fn_f47c0
    0020f928test eax, eax
    0020f92ajne 0x20f9f1
    0020f930mov [rsp+24], 1
    0020f939xor r15l, r15l
    0020f93clea rbx, [rip+0x168a1d]
    0020f943test r12, r12
    0020f946je 0x20f9de
    0020f94cnop [rax]
    0020f950
    0020f950loc_20f950:
    0020f950mov r14, [rbp]
    0020f954mov ecx, 1
    0020f959xor edx, edx
    0020f95bmov esi, 8
    0020f960mov rdi, rbx
    0020f963add r15, 1
    0020f967call caml_alloc_custom
    0020f96cxor edi, edi
    0020f96emov [rax+8], r14
    0020f972mov rdx, [rsp+24]
    0020f977mov rsi, rax
    0020f97amov [rsp+40], rax
    0020f97fmov [rsp+32], rdx
    0020f984call caml_alloc_2
    0020f989mov rdi, rbp
    0020f98cmov rbp, [rbp+8]
    0020f990mov [rsp+24], rax
    0020f995call caml_stat_free
    0020f99acmp r12, r15
    0020f99djne 0x20f950
    0020f99fmov rax, [rsp+24]
    0020f9a4
    0020f9a4loc_20f9a4:
    0020f9a4mov rcx, [rsp+8]
    0020f9a9mov [r13+160], rcx
    0020f9b0mov rdx, [rsp+120]
    0020f9b5sub rdx, [0x28]
    0020f9bejne 0x20fa0d
    0020f9c0add rsp, 136
    0020f9c7pop rbx
    0020f9c8pop rbp
    0020f9c9pop r12
    0020f9cbpop r13
    0020f9cdpop r14
    0020f9cfpop r15
    0020f9d1ret
    0020f9d2
    0020f9d2loc_20f9d2:
    0020f9d2mov rdi, r15
    0020f9d5call fn_f47c0
    0020f9datest eax, eax
    0020f9dcjne 0x20f9f1
    0020f9de
    0020f9deloc_20f9de:
    0020f9demov eax, 1
    0020f9e3jmp 0x20f9a4
    0020f9e5
    0020f9e5loc_20f9e5:
    0020f9e5lea rdi, [rip+0x20f2c]
    0020f9eccall caml_fatal_error
    0020f9f1
    0020f9f1loc_20f9f1:
    0020f9f1mov esi, eax
    0020f9f3lea rdi, [rip+0x1fb20]
    0020f9facall caml_plat_fatal_error
    0020f9ff
    0020f9ffloc_20f9ff:
    0020f9ffmov esi, eax
    0020fa01lea rdi, [rip+0x1fb07]
    0020fa08call caml_plat_fatal_error
    0020fa0d
    0020fa0dloc_20fa0d:
    0020fa0dcall fn_f4590
    0020f810
    0020fa12
    0020fa12 // align 0x10
    0020fa20
    0020fa20caml_channel_descriptor:
    0020fa20mov rax, [rdi+8]
    0020fa24movsxd rax, [rax]
    0020fa27cmp eax, -1
    0020fa2aje 0x20fa36
    0020fa2clea rax, [rax+rax+1]
    0020fa31ret
    0020fa32push rax
    0020fa33call fn_f4570
    0020fa38mov edi, 1
    0020fa3dmov [rax], 9
    0020fa43call caml_sys_error
    0020fa48db 0xd4
    0020fa49db 0x25
    0020fa4aadd [rax], eax
    0020fa20
    0020fa4c
    0020fa4c // align 0x10
    0020fa50
    0020fa50caml_ml_close_channel:
    0020fa50push r14
    0020fa52push r13
    0020fa54push r12
    0020fa56push rbp
    0020fa57push rbx
    0020fa58sub rsp, 96
    0020fa5cmov [rsp+8], rdi
    0020fa61mov rax, [0x28]
    0020fa6amov [rsp+88], rax
    0020fa6fmov rax, [rip+0x6656e]
    0020fa76mov rbp, [rax]
    0020fa7alea rax, [rsp+16]
    0020fa7fmov r12, [rbp+160]
    0020fa86mov [rbp+160], rax
    0020fa8dmov eax, 1
    0020fa92movq x0, rax
    0020fa97lea rax, [rsp+8]
    0020fa9cpunpcklqdq x0, x0
    0020faa0mov [rsp+16], r12
    0020faa5mov [rsp+40], rax
    0020faaamovups [rsp+24], x0
    0020faafmov rbx, [rdi+8]
    0020fab3lea r13, [rbx+40]
    0020fab7mov rdi, r13
    0020fabacall fn_f4780
    0020fabfcmp eax, 16
    0020fac2je 0x20fb80
    0020fac8test eax, eax
    0020facajne 0x20fbaa
    0020fad0mov [0xfffffffffffffff0], rbx
    0020fad9mov r14l, [rbx]
    0020fadccmp r14l, -1
    0020fae0je 0x20fb3a
    0020fae2mov [rbx], -1
    0020fae8mov rdi, [rbx+112]
    0020faeccall caml_stat_free
    0020faf1lea rdx, [rip+0x168f54]
    0020faf8cmp [rbx+32], 0
    0020fafdlea rcx, [rdx+1]
    0020fb01mov [rbx+112], rdx
    0020fb05mov rax, rcx
    0020fb08mov [rbx+16], rcx
    0020fb0ccmovne rax, rdx
    0020fb10movq x0, rax
    0020fb15punpcklqdq x0, x0
    0020fb19movups [rbx+24], x0
    0020fb1dcall caml_enter_blocking_section_no_pending
    0020fb22mov edi, r14l
    0020fb25call fn_f4140
    0020fb2amov ebx, eax
    0020fb2ccall caml_leave_blocking_section
    0020fb31cmp ebx, -1
    0020fb34je 0x20fba0
    0020fb36mov rdi, r13
    0020fb39call fn_f47c0
    0020fb3etest eax, eax
    0020fb40jne 0x20fb92
    0020fb42mov [0xfffffffffffffff0], 0
    0020fb4fmov [rbp+160], r12
    0020fb56mov rax, [rsp+88]
    0020fb5bsub rax, [0x28]
    0020fb64jne 0x20fb8d
    0020fb66add rsp, 96
    0020fb6amov eax, 1
    0020fb6fpop rbx
    0020fb70pop rbp
    0020fb71pop r12
    0020fb73pop r13
    0020fb75pop r14
    0020fb77ret
    0020fb78db 0x5d
    0020fb79pop r14
    0020fb7bret
    0020fb7c
    0020fb7c 0f 1f 40 00 ..@.
    0020fb80
    0020fb80loc_20fb80:
    0020fb80mov rdi, r13
    0020fb83call caml_plat_lock_non_blocking_actual
    0020fb88jmp 0x20fad4
    0020fb8d
    0020fb8dloc_20fb8d:
    0020fb8dcall fn_f4590
    0020fb92
    0020fb92loc_20fb92:
    0020fb92mov esi, eax
    0020fb94lea rdi, [rip+0x1f97f]
    0020fb9bcall caml_plat_fatal_error
    0020fba0
    0020fba0loc_20fba0:
    0020fba0mov edi, 1
    0020fba5call caml_sys_error
    0020fbaa
    0020fbaaloc_20fbaa:
    0020fbaamov esi, eax
    0020fbaclea rdi, [rip+0x1f974]
    0020fbb3call caml_plat_fatal_error
    0020fa50
    0020fbb8
    0020fbb8 // align 0x10
    0020fbc0
    0020fbc0caml_ml_channel_size:
    0020fbc0sub rsp, 8
    0020fbc4call fn_20eb80
    0020fbc9mov rdx, 0x3fffffffffffffff
    0020fbd3cmp rax, rdx
    0020fbd6jg 0x20fbe6
    0020fbd8lea rax, [rax+rax+1]
    0020fbddadd rsp, 8
    0020fbe1ret
    0020fbe2call fn_f4570
    0020fbe7mov edi, 1
    0020fbecmov [rax], 75
    0020fbf2call caml_sys_error
    0020fbf7db 0x25
    0020fbf8and al, 1
    0020fbfadb 0x00
    0020fbc0
    0020fbfb
    0020fbfb // align 0x10
    0020fc00
    0020fc00caml_ml_channel_size_64:
    0020fc00sub rsp, 8
    0020fc04call fn_20eb80
    0020fc09add rsp, 8
    0020fc0dmov rdi, rax
    0020fc10jmp 0x20d9d0
    0020fc15db 0xb7
    0020fc16db 0xdd
    0020fc17db 0xff
    0020fc18db 0xff
    0020fc00
    0020fc19
    0020fc19 // align 0x10
    0020fc20
    0020fc20caml_ml_set_binary_mode:
    0020fc20mov eax, 1
    0020fc25ret
    0020fc26db 0x00
    0020fc27add [rax], al
    0020fc29ret
    0020fc20
    0020fc2a
    0020fc2a // align 0x10
    0020fc30
    0020fc30caml_ml_is_binary_mode:
    0020fc30mov rax, [rdi+8]
    0020fc34mov eax, [rax+104]
    0020fc37and eax, 8
    0020fc3acmp eax, 1
    0020fc3dsbb rax, rax
    0020fc40and eax, 2
    0020fc43add rax, 1
    0020fc47ret
    0020fc48db 0x83
    0020fc49rol [rcx], -61
    0020fc30
    0020fc4c
    0020fc4c // align 0x10
    0020fc50
    0020fc50caml_ml_flush:
    0020fc50push r13
    0020fc52push r12
    0020fc54push rbp
    0020fc55push rbx
    0020fc56sub rsp, 104
    0020fc5amov [rsp+8], rdi
    0020fc5fmov rax, [0x28]
    0020fc68mov [rsp+88], rax
    0020fc6dmov rax, [rip+0x66370]
    0020fc74mov rbp, [rax]
    0020fc78lea rax, [rsp+16]
    0020fc7dmov r13, [rbp+160]
    0020fc84mov [rbp+160], rax
    0020fc8bmov eax, 1
    0020fc90movq x0, rax
    0020fc95lea rax, [rsp+8]
    0020fc9apunpcklqdq x0, x0
    0020fc9emov [rsp+16], r13
    0020fca3mov [rsp+40], rax
    0020fca8movups [rsp+24], x0
    0020fcadmov rbx, [rdi+8]
    0020fcb1lea r12, [rbx+40]
    0020fcb5mov rdi, r12
    0020fcb8call fn_f4780
    0020fcbdcmp eax, 16
    0020fcc0je 0x20fd30
    0020fcc2test eax, eax
    0020fcc4jne 0x20fd4d
    0020fccamov [0xfffffffffffffff0], rbx
    0020fcd3cmp [rbx], -1
    0020fcd6je 0x20fcec
    0020fcd8nop [rax]
    0020fcdcmov rdi, rbx
    0020fcdfcall caml_flush_partial
    0020fce4test eax, eax
    0020fce6je 0x20fce0
    0020fce8mov rdi, r12
    0020fcebcall fn_f47c0
    0020fcf0test eax, eax
    0020fcf2jne 0x20fd3f
    0020fcf4mov [0xfffffffffffffff0], 0
    0020fd01mov [rbp+160], r13
    0020fd08mov rax, [rsp+88]
    0020fd0dsub rax, [0x28]
    0020fd16jne 0x20fd3a
    0020fd18add rsp, 104
    0020fd1cmov eax, 1
    0020fd21pop rbx
    0020fd22pop rbp
    0020fd23pop r12
    0020fd25pop r13
    0020fd27ret
    0020fd28db 0x5c
    0020fd29pop r13
    0020fd2bret
    0020fd2c
    0020fd2c 0f 1f 40 00 ..@.
    0020fd30
    0020fd30loc_20fd30:
    0020fd30mov rdi, r12
    0020fd33call caml_plat_lock_non_blocking_actual
    0020fd38jmp 0x20fcce
    0020fd3a
    0020fd3aloc_20fd3a:
    0020fd3acall fn_f4590
    0020fd3f
    0020fd3floc_20fd3f:
    0020fd3fmov esi, eax
    0020fd41lea rdi, [rip+0x1f7d2]
    0020fd48call caml_plat_fatal_error
    0020fd4d
    0020fd4dloc_20fd4d:
    0020fd4dmov esi, eax
    0020fd4flea rdi, [rip+0x1f7d1]
    0020fd56call caml_plat_fatal_error
    0020fc50
    0020fd5b
    0020fd5b // align 0x10
    0020fd60
    0020fd60caml_ml_set_buffered:
    0020fd60push r13
    0020fd62push r12
    0020fd64push rbp
    0020fd65push rbx
    0020fd66sub rsp, 104
    0020fd6amovdqa x0, [rip+0x1a35a]
    0020fd72mov [rsp+8], rdi
    0020fd77movq x1, rsp
    0020fd7cmov [rsp], rsi
    0020fd80mov rax, [0x28]
    0020fd89mov [rsp+88], rax
    0020fd8emov rax, [rip+0x6624f]
    0020fd95mov rbp, [rax]
    0020fd99lea rax, [rsp+16]
    0020fd9emovups [rsp+24], x0
    0020fda3mov r13, [rbp+160]
    0020fdaamov [rbp+160], rax
    0020fdb1lea rax, [rsp+8]
    0020fdb6movq x0, rax
    0020fdbbpunpcklqdq x0, x1
    0020fdbfmov [rsp+16], r13
    0020fdc4movups [rsp+40], x0
    0020fdc9mov rbx, [rdi+8]
    0020fdcdlea r12, [rbx+40]
    0020fdd1mov rdi, r12
    0020fdd4call fn_f4780
    0020fdd9cmp eax, 16
    0020fddcje 0x20fe80
    0020fde2test eax, eax
    0020fde4jne 0x20fea0
    0020fdeamov [0xfffffffffffffff0], rbx
    0020fdf3mov rax, [rsp]
    0020fdf7mov edx, [rbx+104]
    0020fdfasar rax, 1
    0020fdfdtest eax, eax
    0020fdffje 0x20fe50
    0020fe01and edx, -17
    0020fe04mov [rbx+104], edx
    0020fe07mov rdi, r12
    0020fe0acall fn_f47c0
    0020fe0ftest eax, eax
    0020fe11jne 0x20fe92
    0020fe13mov [0xfffffffffffffff0], 0
    0020fe20mov [rbp+160], r13
    0020fe27mov rax, [rsp+88]
    0020fe2csub rax, [0x28]
    0020fe35jne 0x20fe8d
    0020fe37add rsp, 104
    0020fe3bmov eax, 1
    0020fe40pop rbx
    0020fe41pop rbp
    0020fe42pop r12
    0020fe44pop r13
    0020fe46ret
    0020fe47db 0x5c
    0020fe48pop r13
    0020fe4aret
    0020fe4b
    0020fe4b 0f 1f 44 00 00 ..D..
    0020fe50
    0020fe50loc_20fe50:
    0020fe50or edx, 16
    0020fe53cmp [rbx], -1
    0020fe56mov [rbx+104], edx
    0020fe59je 0x20fe0b
    0020fe5bnop [rax+rax]
    0020fe60
    0020fe60loc_20fe60:
    0020fe60mov rdi, rbx
    0020fe63call caml_flush_partial
    0020fe68test eax, eax
    0020fe6ajne 0x20fe0b
    0020fe6cmov rdi, rbx
    0020fe6fcall caml_flush_partial
    0020fe74test eax, eax
    0020fe76je 0x20fe60
    0020fe78jmp 0x20fe0b
    0020fe7a
    0020fe7a 66 0f 1f 44 00 00 f..D..
    0020fe80
    0020fe80loc_20fe80:
    0020fe80mov rdi, r12
    0020fe83call caml_plat_lock_non_blocking_actual
    0020fe88jmp 0x20fdee
    0020fe8d
    0020fe8dloc_20fe8d:
    0020fe8dcall fn_f4590
    0020fe92
    0020fe92loc_20fe92:
    0020fe92mov esi, eax
    0020fe94lea rdi, [rip+0x1f67f]
    0020fe9bcall caml_plat_fatal_error
    0020fea0
    0020fea0loc_20fea0:
    0020fea0mov esi, eax
    0020fea2lea rdi, [rip+0x1f67e]
    0020fea9call caml_plat_fatal_error
    0020fd60
    0020feae
    0020feae // align 0x10
    0020feb0
    0020feb0caml_ml_is_buffered:
    0020feb0mov rax, [rdi+8]
    0020feb4mov eax, [rax+104]
    0020feb7and eax, 16
    0020febacmp eax, 1
    0020febdsbb rax, rax
    0020fec0and eax, 2
    0020fec3add rax, 1
    0020fec7ret
    0020fec8db 0x83
    0020fec9rol [rcx], -61
    0020feb0
    0020fecc
    0020fecc // align 0x10
    0020fed0
    0020fed0caml_ml_output_char:
    0020fed0push r13
    0020fed2push r12
    0020fed4push rbp
    0020fed5push rbx
    0020fed6sub rsp, 104
    0020fedamovdqa x0, [rip+0x1a1ea]
    0020fee2mov [rsp+8], rdi
    0020fee7movq x1, rsp
    0020feecmov [rsp], rsi
    0020fef0mov rax, [0x28]
    0020fef9mov [rsp+88], rax
    0020fefemov rax, [rip+0x660df]
    0020ff05mov rbp, [rax]
    0020ff09lea rax, [rsp+16]
    0020ff0emovups [rsp+24], x0
    0020ff13mov r13, [rbp+160]
    0020ff1amov [rbp+160], rax
    0020ff21lea rax, [rsp+8]
    0020ff26movq x0, rax
    0020ff2bpunpcklqdq x0, x1
    0020ff2fmov [rsp+16], r13
    0020ff34movups [rsp+40], x0
    0020ff39mov rbx, [rdi+8]
    0020ff3dlea r12, [rbx+40]
    0020ff41mov rdi, r12
    0020ff44call fn_f4780
    0020ff49cmp eax, 16
    0020ff4cje 0x20fff0
    0020ff52test eax, eax
    0020ff54jne 0x210011
    0020ff5amov [0xfffffffffffffff0], rbx
    0020ff63mov rax, [rbx+24]
    0020ff67cmp rax, [rbx+16]
    0020ff6bjae 0x210000
    0020ff71mov rdx, [rsp]
    0020ff75
    0020ff75loc_20ff75:
    0020ff75lea rcx, [rax+1]
    0020ff79mov [rbx+24], rcx
    0020ff7dsar rdx, 1
    0020ff80mov [rax], dl
    0020ff82test [rbx+104], 16
    0020ff86jne 0x20ffd0
    0020ff88mov rdi, r12
    0020ff8bcall fn_f47c0
    0020ff90test eax, eax
    0020ff92jne 0x210024
    0020ff98mov [0xfffffffffffffff0], 0
    0020ffa5mov [rbp+160], r13
    0020ffacmov rax, [rsp+88]
    0020ffb1sub rax, [0x28]
    0020ffbajne 0x21001f
    0020ffbcadd rsp, 104
    0020ffc0mov eax, 1
    0020ffc5pop rbx
    0020ffc6pop rbp
    0020ffc7pop r12
    0020ffc9pop r13
    0020ffcbret
    0020ffccmov rdi, rbx
    0020ffcfcall caml_flush_partial
    0020ffd4test eax, eax
    0020ffd6jne 0x20ff8c
    0020ffd8mov rdi, rbx
    0020ffdbcall caml_flush_partial
    0020ffe0test eax, eax
    0020ffe2je 0x20ffd0
    0020ffe4jmp 0x20ff8c
    0020ffe6db 0x74
    0020ffe7db 0xe8
    0020ffe8jmp 0x20ff8c
    0020ffea
    0020ffea 66 0f 1f 44 00 00 f..D..
    0020fff0
    0020fff0loc_20fff0:
    0020fff0mov rdi, r12
    0020fff3call caml_plat_lock_non_blocking_actual
    0020fff8jmp 0x20ff5e
    0020fffd
    0020fffd 0f 1f 00 ...
    00210000
    00210000loc_210000:
    00210000mov rdi, rbx
    00210003call caml_flush_partial
    00210008mov rax, [rbx+24]
    0021000cjmp 0x20ff75
    00210011
    00210011loc_210011:
    00210011mov esi, eax
    00210013lea rdi, [rip+0x1f50d]
    0021001acall caml_plat_fatal_error
    0021001f
    0021001floc_21001f:
    0021001fcall fn_f4590
    00210024
    00210024loc_210024:
    00210024mov esi, eax
    00210026lea rdi, [rip+0x1f4ed]
    0021002dcall caml_plat_fatal_error
    0020fed0
    00210032
    00210032 // align 0x10
    00210040
    00210040caml_ml_output_int:
    00210040push r13
    00210042push r12
    00210044push rbp
    00210045push rbx
    00210046sub rsp, 104
    0021004amovdqa x0, [rip+0x1a07a]
    00210052mov [rsp+8], rdi
    00210057movq x1, rsp
    0021005cmov [rsp], rsi
    00210060mov rax, [0x28]
    00210069mov [rsp+88], rax
    0021006emov rax, [rip+0x65f6f]
    00210075mov rbp, [rax]
    00210079lea rax, [rsp+16]
    0021007emovups [rsp+24], x0
    00210083mov r13, [rbp+160]
    0021008amov [rbp+160], rax
    00210091lea rax, [rsp+8]
    00210096movq x0, rax
    0021009bpunpcklqdq x0, x1
    0021009fmov [rsp+16], r13
    002100a4movups [rsp+40], x0
    002100a9mov rbx, [rdi+8]
    002100adlea r12, [rbx+40]
    002100b1mov rdi, r12
    002100b4call fn_f4780
    002100b9cmp eax, 16
    002100bcje 0x210150
    002100c2test eax, eax
    002100c4jne 0x210170
    002100camov [0xfffffffffffffff0], rbx
    002100d3mov rsi, [rsp]
    002100d7mov rdi, rbx
    002100dasar rsi, 1
    002100ddcall caml_putword
    002100e2test [rbx+104], 16
    002100e6jne 0x210130
    002100e8mov rdi, r12
    002100ebcall fn_f47c0
    002100f0test eax, eax
    002100f2jne 0x210162
    002100f4mov [0xfffffffffffffff0], 0
    00210101mov [rbp+160], r13
    00210108mov rax, [rsp+88]
    0021010dsub rax, [0x28]
    00210116jne 0x21015d
    00210118add rsp, 104
    0021011cmov eax, 1
    00210121pop rbx
    00210122pop rbp
    00210123pop r12
    00210125pop r13
    00210127ret
    00210128db 0x5c
    00210129pop r13
    0021012bret
    0021012c
    0021012c 0f 1f 40 00 ..@.
    00210130
    00210130loc_210130:
    00210130mov rdi, rbx
    00210133call caml_flush_partial
    00210138test eax, eax
    0021013ajne 0x2100ec
    0021013cmov rdi, rbx
    0021013fcall caml_flush_partial
    00210144test eax, eax
    00210146je 0x210130
    00210148jmp 0x2100ec
    0021014a
    0021014a 66 0f 1f 44 00 00 f..D..
    00210150
    00210150loc_210150:
    00210150mov rdi, r12
    00210153call caml_plat_lock_non_blocking_actual
    00210158jmp 0x2100ce
    0021015d
    0021015dloc_21015d:
    0021015dcall fn_f4590
    00210162
    00210162loc_210162:
    00210162mov esi, eax
    00210164lea rdi, [rip+0x1f3af]
    0021016bcall caml_plat_fatal_error
    00210170
    00210170loc_210170:
    00210170mov esi, eax
    00210172lea rdi, [rip+0x1f3ae]
    00210179call caml_plat_fatal_error
    00210040
    0021017e
    0021017e // align 0x10
    00210180
    00210180caml_ml_output_bytes:
    00210180push r15
    00210182push r14
    00210184push r13
    00210186mov r13, rdx
    00210189push r12
    0021018bmov r12, rcx
    0021018esar r13, 1
    00210191push rbp
    00210192sar r12, 1
    00210195push rbx
    00210196sub rsp, 136
    0021019dmovdqa x0, [rip+0x19f47]
    002101a5mov [rsp+40], rdi
    002101aamov [rsp+32], rsi
    002101afmov [rsp+24], rdx
    002101b4mov [rsp+16], rcx
    002101b9mov rax, [0x28]
    002101c2mov [rsp+120], rax
    002101c7mov rax, [rip+0x65e16]
    002101cemov rbp, [rax]
    002101d2movups [rsp+56], x0
    002101d7mov rax, [rbp+160]
    002101demov [rsp+48], rax
    002101e3mov [rsp+8], rax
    002101e8lea rax, [rsp+48]
    002101edmov [rbp+160], rax
    002101f4lea rax, [rsp+40]
    002101f9movq x0, rax
    002101felea rax, [rsp+32]
    00210203movq x1, rax
    00210208lea rax, [rsp+24]
    0021020dpunpcklqdq x0, x1
    00210211movups [rsp+72], x0
    00210216movq x0, rax
    0021021blea rax, [rsp+16]
    00210220movq x2, rax
    00210225punpcklqdq x0, x2
    00210229movups [rsp+88], x0
    0021022emov r14, [rdi+8]
    00210232lea rax, [r14+40]
    00210236mov rdi, rax
    00210239mov [rsp], rax
    0021023dcall fn_f4780
    00210242cmp eax, 16
    00210245je 0x210350
    0021024btest eax, eax
    0021024djne 0x210371
    00210253mov [0xfffffffffffffff0], r14
    0021025ctest r12, r12
    0021025fjg 0x21028d
    00210261jmp 0x2102dc
    00210263db 0x7f
    00210264sub bl, ch
    00210266db 0x75
    00210267
    00210267 66 0f 1f 84 00 00 00 00 00 f........
    00210270
    00210270loc_210270:
    00210270movsxd rbx, eax
    00210273mov rdx, rbx
    00210276call fn_f4520
    0021027bmovsxd rax, r15l
    0021027eadd [r14+24], rbx
    00210282sub r12, rax
    00210285add r13, rax
    00210288test r12, r12
    0021028bjle 0x2102dc
    0021028d
    0021028dloc_21028d:
    0021028dmov rsi, [rsp+32]
    00210292mov eax, 0x7fffffff
    00210297mov rdi, [r14+24]
    0021029bmov rbx, [r14+16]
    0021029fadd rsi, r13
    002102a2cmp r12, rax
    002102a5cmovle rax, r12
    002102a9sub rbx, rdi
    002102acmov r15l, eax
    002102afcmp eax, ebx
    002102b1jl 0x210270
    002102b3movsxd rdx, ebx
    002102b6mov r15l, ebx
    002102b9call fn_f4520
    002102bemov rax, [r14+16]
    002102c2mov rdi, r14
    002102c5mov [r14+24], rax
    002102c9call caml_flush_partial
    002102cemovsxd rax, r15l
    002102d1sub r12, rax
    002102d4add r13, rax
    002102d7test r12, r12
    002102dajg 0x21028d
    002102dc
    002102dcloc_2102dc:
    002102dctest [r14+104], 16
    002102e1jne 0x210330
    002102e3
    002102e3loc_2102e3:
    002102e3mov rdi, [rsp]
    002102e7call fn_f47c0
    002102ectest eax, eax
    002102eejne 0x210363
    002102f0mov [0xfffffffffffffff0], 0
    002102fdmov rax, [rsp+8]
    00210302mov [rbp+160], rax
    00210309mov rax, [rsp+120]
    0021030esub rax, [0x28]
    00210317jne 0x21035e
    00210319add rsp, 136
    00210320mov eax, 1
    00210325pop rbx
    00210326pop rbp
    00210327pop r12
    00210329pop r13
    0021032bpop r14
    0021032dpop r15
    0021032fret
    00210330
    00210330loc_210330:
    00210330mov rdi, r14
    00210333call caml_flush_partial
    00210338test eax, eax
    0021033ajne 0x2102e3
    0021033cmov rdi, r14
    0021033fcall caml_flush_partial
    00210344test eax, eax
    00210346je 0x210330
    00210348jmp 0x2102e3
    0021034a
    0021034a 66 0f 1f 44 00 00 f..D..
    00210350
    00210350loc_210350:
    00210350mov rdi, [rsp]
    00210354call caml_plat_lock_non_blocking_actual
    00210359jmp 0x210257
    0021035e
    0021035eloc_21035e:
    0021035ecall fn_f4590
    00210363
    00210363loc_210363:
    00210363mov esi, eax
    00210365lea rdi, [rip+0x1f1ae]
    0021036ccall caml_plat_fatal_error
    00210371
    00210371loc_210371:
    00210371mov esi, eax
    00210373lea rdi, [rip+0x1f1ad]
    0021037acall caml_plat_fatal_error
    00210180
    0021037f
    0021037f // align 0x10
    00210380
    00210380caml_ml_output:
    00210380jmp 0x210180
    00210385db 0xf7
    00210386std
    00210387db 0xff
    00210388db 0xff
    00210380
    00210389
    00210389 // align 0x10
    00210390
    00210390caml_ml_output_bigarray:
    00210390push r15
    00210392push r14
    00210394push r13
    00210396push r12
    00210398mov r12, rdx
    0021039bpush rbp
    0021039csar r12, 1
    0021039fpush rbx
    002103a0sub rsp, 152
    002103a7movdqa x0, [rip+0x19d3d]
    002103afmov [rsp+56], rdi
    002103b4mov [rsp+48], rsi
    002103b9mov [rsp+40], rdx
    002103bemov [rsp+32], rcx
    002103c3mov rax, [0x28]
    002103ccmov [rsp+136], rax
    002103d4mov rax, [rip+0x65c09]
    002103dbmov rcx, [rax]
    002103dfmovups [rsp+72], x0
    002103e4mov rax, [rcx+160]
    002103ebmov [rsp+16], rcx
    002103f0mov [rsp+64], rax
    002103f5mov [rsp+24], rax
    002103falea rax, [rsp+64]
    002103ffmov [rcx+160], rax
    00210406lea rax, [rsp+56]
    0021040bmovq x0, rax
    00210410lea rax, [rsp+48]
    00210415movq x1, rax
    0021041alea rax, [rsp+40]
    0021041fpunpcklqdq x0, x1
    00210423movups [rsp+88], x0
    00210428movq x0, rax
    0021042dlea rax, [rsp+32]
    00210432movq x2, rax
    00210437punpcklqdq x0, x2
    0021043bmovups [rsp+104], x0
    00210440mov r13, [rdi+8]
    00210444mov r14, [rsp+32]
    00210449lea rax, [r13+40]
    0021044dsar r14, 1
    00210450mov rdi, rax
    00210453mov [rsp+8], rax
    00210458call fn_f4780
    0021045dcmp eax, 16
    00210460je 0x210558
    00210466test eax, eax
    00210468jne 0x21057a
    0021046emov [0xfffffffffffffff0], r13
    00210477mov rax, [rsp+48]
    0021047cadd r12, [rax+8]
    00210480test r14, r14
    00210483jg 0x2104b0
    00210485jmp 0x2104fd
    00210487db 0x7f
    00210488db 0x27
    00210489jmp 0x2104fd
    0021048b
    0021048b 0f 1f 44 00 00 ..D..
    00210490
    00210490loc_210490:
    00210490movsxd rbx, ebx
    00210493mov rsi, r12
    00210496mov rdx, rbx
    00210499add r12, rbx
    0021049ccall fn_f4520
    002104a1movsxd r8, ebp
    002104a4add [r13+24], rbx
    002104a8sub r14, r8
    002104abtest r14, r14
    002104aejle 0x2104fd
    002104b0
    002104b0loc_2104b0:
    002104b0mov ebx, 0x7fffffff
    002104b5mov rdi, [r13+24]
    002104b9mov r15, [r13+16]
    002104bdcmp r14, rbx
    002104c0cmovle rbx, r14
    002104c4sub r15, rdi
    002104c7mov ebp, ebx
    002104c9cmp ebx, r15l
    002104ccjl 0x210490
    002104cemovsxd rbx, r15l
    002104d1mov rsi, r12
    002104d4mov ebp, r15l
    002104d7mov rdx, rbx
    002104daadd r12, rbx
    002104ddcall fn_f4520
    002104e2mov rax, [r13+16]
    002104e6mov rdi, r13
    002104e9mov [r13+24], rax
    002104edcall caml_flush_partial
    002104f2movsxd r8, ebp
    002104f5sub r14, r8
    002104f8test r14, r14
    002104fbjg 0x2104b0
    002104fd
    002104fdloc_2104fd:
    002104fdmov rdi, [rsp+8]
    00210502call fn_f47c0
    00210507test eax, eax
    00210509jne 0x21056c
    0021050bmov [0xfffffffffffffff0], 0
    00210518mov rax, [rsp+16]
    0021051dmov rdx, [rsp+24]
    00210522mov [rax+160], rdx
    00210529mov rax, [rsp+136]
    00210531sub rax, [0x28]
    0021053ajne 0x210567
    0021053cadd rsp, 152
    00210543mov eax, 1
    00210548pop rbx
    00210549pop rbp
    0021054apop r12
    0021054cpop r13
    0021054epop r14
    00210550pop r15
    00210552ret
    00210553
    00210553 0f 1f 44 00 00 ..D..
    00210558
    00210558loc_210558:
    00210558mov rdi, [rsp+8]
    0021055dcall caml_plat_lock_non_blocking_actual
    00210562jmp 0x210472
    00210567
    00210567loc_210567:
    00210567call fn_f4590
    0021056c
    0021056cloc_21056c:
    0021056cmov esi, eax
    0021056elea rdi, [rip+0x1efa5]
    00210575call caml_plat_fatal_error
    0021057a
    0021057aloc_21057a:
    0021057amov esi, eax
    0021057clea rdi, [rip+0x1efa4]
    00210583call caml_plat_fatal_error
    00210390