File hevea_f46f610a6b0078f4aa208dda361f21de574cc56ad64b32889301afc466d33979.elf
Function:
    0020d8a0
    0020d8a0caml_int32_format:
    0020d8a0push rbp
    0020d8a1push rbx
    0020d8a2sub rsp, 56
    0020d8a6mov rbx, [0x28]
    0020d8afmov [rsp+40], rbx
    0020d8b4mov rbx, rsi
    0020d8b7mov rdx, rsp
    0020d8balea rsi, [rip+0x21667]
    0020d8c1call fn_20cff0
    0020d8c6xor eax, eax
    0020d8c8mov rdi, rsp
    0020d8cbmov esi, [rbx+8]
    0020d8cecall caml_alloc_sprintf
    0020d8d3mov rdx, [rsp+40]
    0020d8d8sub rdx, [0x28]
    0020d8e1jne 0x20d8ee
    0020d8e3add rsp, 56
    0020d8e7pop rbx
    0020d8e8pop rbp
    0020d8e9ret
    0020d8eacall fn_f4590
    0020d8efdb 0x9d
    0020d8f0insb [rdi], dl
    0020d8f1out dx, al
    0020d8f2db 0xff
    0020d8a0
    0020d8f3
    0020d8f3 // align 0x10
    0020d900
    0020d900caml_int32_of_string:
    0020d900push rbx
    0020d901lea rdx, [rip+0x2175c]
    0020d908mov esi, 32
    0020d90dcall fn_20d210
    0020d912mov ecx, 1
    0020d917xor edx, edx
    0020d919mov esi, 4
    0020d91elea rdi, [rip+0x67f97]
    0020d925mov rbx, rax
    0020d928call caml_alloc_custom
    0020d92dmov [rax+8], ebx
    0020d930pop rbx
    0020d931ret
    0020d932db 0x58
    0020d933or [rbx-61], bl
    0020d900
    0020d936
    0020d936 // align 0x10
    0020d940
    0020d940caml_int32_bits_of_float_unboxed:
    0020d940pxor x1, x1
    0020d944cvtsd2ss x1, x0
    0020d948movd eax, x1
    0020d94cret
    0020d94ddb 0x0f
    0020d94ejle 0x20d918
    0020d950ret
    0020d940
    0020d951
    0020d951 // align 0x10
    0020d960
    0020d960caml_int32_float_of_bits_unboxed:
    0020d960movd x1, edi
    0020d964pxor x0, x0
    0020d968cvtss2sd x0, x1
    0020d96cret
    0020d96ddb 0x0f
    0020d96epop rdx
    0020d96fdb 0xc1
    0020d970ret
    0020d960
    0020d971
    0020d971 // align 0x10
    0020d980
    0020d980caml_int32_bits_of_float:
    0020d980push rbx
    0020d981pxor x0, x0
    0020d985mov ecx, 1
    0020d98axor edx, edx
    0020d98cmov esi, 4
    0020d991cvtsd2ss x0, [rdi]
    0020d995lea rdi, [rip+0x67f20]
    0020d99cmovd ebx, x0
    0020d9a0call caml_alloc_custom
    0020d9a5mov [rax+8], ebx
    0020d9a8pop rbx
    0020d9a9ret
    0020d9aadb 0x58
    0020d9abor [rbx-61], bl
    0020d980
    0020d9ae
    0020d9ae // align 0x10
    0020d9b0
    0020d9b0caml_int32_float_of_bits:
    0020d9b0pxor x0, x0
    0020d9b4cvtss2sd x0, [rdi+8]
    0020d9b9jmp 0x2075f0
    0020d9bedb 0x2e
    0020d9bfpushf
    0020d9c0db 0xff
    0020d9c1db 0xff
    0020d9b0
    0020d9c2
    0020d9c2 // align 0x10
    0020d9d0
    0020d9d0caml_copy_int64:
    0020d9d0push rbx
    0020d9d1mov ecx, 1
    0020d9d6mov rbx, rdi
    0020d9d9xor edx, edx
    0020d9dbmov esi, 8
    0020d9e0lea rdi, [rip+0x67e95]
    0020d9e7call caml_alloc_custom
    0020d9ecmov [rax+8], rbx
    0020d9f0pop rbx
    0020d9f1ret
    0020d9f2db 0x58
    0020d9f3or [rbx-61], bl
    0020d9d0
    0020d9f6
    0020d9f6 // align 0x10
    0020da00
    0020da00caml_int64_neg:
    0020da00push rbx
    0020da01mov rbx, [rdi+8]
    0020da05mov ecx, 1
    0020da0axor edx, edx
    0020da0cmov esi, 8
    0020da11lea rdi, [rip+0x67e64]
    0020da18neg rbx
    0020da1bcall caml_alloc_custom
    0020da20mov [rax+8], rbx
    0020da24pop rbx
    0020da25ret
    0020da26db 0x58
    0020da27or [rbx-61], bl
    0020da00
    0020da2a
    0020da2a // align 0x10
    0020da30
    0020da30caml_int64_add:
    0020da30push rbx
    0020da31mov ecx, 1
    0020da36mov rbx, [rsi+8]
    0020da3axor edx, edx
    0020da3cadd rbx, [rdi+8]
    0020da40mov esi, 8
    0020da45lea rdi, [rip+0x67e30]
    0020da4ccall caml_alloc_custom
    0020da51mov [rax+8], rbx
    0020da55pop rbx
    0020da56ret
    0020da57db 0x58
    0020da58or [rbx-61], bl
    0020da30
    0020da5b
    0020da5b // align 0x10
    0020da60
    0020da60caml_int64_sub:
    0020da60push rbx
    0020da61mov ecx, 1
    0020da66mov rbx, [rdi+8]
    0020da6axor edx, edx
    0020da6csub rbx, [rsi+8]
    0020da70lea rdi, [rip+0x67e05]
    0020da77mov esi, 8
    0020da7ccall caml_alloc_custom
    0020da81mov [rax+8], rbx
    0020da85pop rbx
    0020da86ret
    0020da87db 0x58
    0020da88or [rbx-61], bl
    0020da60
    0020da8b
    0020da8b // align 0x10
    0020da90
    0020da90caml_int64_mul:
    0020da90push rbx
    0020da91mov rbx, [rdi+8]
    0020da95mov ecx, 1
    0020da9axor edx, edx
    0020da9cimul rbx, [rsi+8]
    0020daa1lea rdi, [rip+0x67dd4]
    0020daa8mov esi, 8
    0020daadcall caml_alloc_custom
    0020dab2mov [rax+8], rbx
    0020dab6pop rbx
    0020dab7ret
    0020dab8db 0x58
    0020dab9or [rbx-61], bl
    0020da90
    0020dabc
    0020dabc // align 0x10
    0020dac0
    0020dac0caml_int64_div:
    0020dac0push rbx
    0020dac1mov rcx, [rsi+8]
    0020dac5mov rax, [rdi+8]
    0020dac9test rcx, rcx
    0020daccje 0x20db1c
    0020dacemov rdx, 0x8000000000000000
    0020dad8cmp rax, rdx
    0020dadbjne 0x20daf0
    0020daddcmp rcx, -1
    0020dae1jne 0x20daf0
    0020dae3mov rax, rdi
    0020dae6pop rbx
    0020dae7ret
    0020dae8db 0x89
    0020dae9clc
    0020daeapop rbx
    0020daebret
    0020daec
    0020daec 0f 1f 40 00 ..@.
    0020daf0
    0020daf0loc_20daf0:
    0020daf0cqo
    0020daf2lea rdi, [rip+0x67d87]
    0020daf9mov esi, 8
    0020dafeidiv rcx
    0020db01mov ecx, 1
    0020db06xor edx, edx
    0020db08mov rbx, rax
    0020db0bcall caml_alloc_custom
    0020db10mov rdi, rax
    0020db13mov [rax+8], rbx
    0020db17pop rbx
    0020db18mov rax, rdi
    0020db1bret
    0020db1c
    0020db1cloc_20db1c:
    0020db1ccall caml_raise_zero_divide
    0020dac0
    0020db21
    0020db21 // align 0x10
    0020db30
    0020db30caml_int64_mod:
    0020db30push rbx
    0020db31mov rbx, [rsi+8]
    0020db35mov rax, [rdi+8]
    0020db39test rbx, rbx
    0020db3cje 0x20dba6
    0020db3emov rcx, 0x8000000000000000
    0020db48cmp rax, rcx
    0020db4bjne 0x20db80
    0020db4dcmp rbx, -1
    0020db51jne 0x20db80
    0020db53mov ecx, 1
    0020db58xor edx, edx
    0020db5amov esi, 8
    0020db5flea rdi, [rip+0x67d16]
    0020db66call caml_alloc_custom
    0020db6bmov [rax+8], 0
    0020db73pop rbx
    0020db74ret
    0020db75db 0x00
    0020db76add [rbx-61], bl
    0020db79
    0020db79 0f 1f 80 00 00 00 00 .......
    0020db80
    0020db80loc_20db80:
    0020db80cqo
    0020db82mov ecx, 1
    0020db87mov esi, 8
    0020db8cidiv rbx
    0020db8flea rdi, [rip+0x67cea]
    0020db96mov rbx, rdx
    0020db99xor edx, edx
    0020db9bcall caml_alloc_custom
    0020dba0mov [rax+8], rbx
    0020dba4pop rbx
    0020dba5ret
    0020dba6
    0020dba6loc_20dba6:
    0020dba6call caml_raise_zero_divide
    0020db30
    0020dbab
    0020dbab // align 0x10
    0020dbb0
    0020dbb0caml_int64_and:
    0020dbb0push rbx
    0020dbb1mov ecx, 1
    0020dbb6mov rbx, [rdi+8]
    0020dbbaxor edx, edx
    0020dbbcand rbx, [rsi+8]
    0020dbc0lea rdi, [rip+0x67cb5]
    0020dbc7mov esi, 8
    0020dbcccall caml_alloc_custom
    0020dbd1mov [rax+8], rbx
    0020dbd5pop rbx
    0020dbd6ret
    0020dbd7db 0x58
    0020dbd8or [rbx-61], bl
    0020dbb0
    0020dbdb
    0020dbdb // align 0x10
    0020dbe0
    0020dbe0caml_int64_or:
    0020dbe0push rbx
    0020dbe1mov ecx, 1
    0020dbe6mov rbx, [rdi+8]
    0020dbeaxor edx, edx
    0020dbecor rbx, [rsi+8]
    0020dbf0lea rdi, [rip+0x67c85]
    0020dbf7mov esi, 8
    0020dbfccall caml_alloc_custom
    0020dc01mov [rax+8], rbx
    0020dc05pop rbx
    0020dc06ret
    0020dc07db 0x58
    0020dc08or [rbx-61], bl
    0020dbe0
    0020dc0b
    0020dc0b // align 0x10
    0020dc10
    0020dc10caml_int64_xor:
    0020dc10push rbx
    0020dc11mov ecx, 1
    0020dc16mov rbx, [rdi+8]
    0020dc1axor edx, edx
    0020dc1cxor rbx, [rsi+8]
    0020dc20lea rdi, [rip+0x67c55]
    0020dc27mov esi, 8
    0020dc2ccall caml_alloc_custom
    0020dc31mov [rax+8], rbx
    0020dc35pop rbx
    0020dc36ret
    0020dc37db 0x58
    0020dc38or [rbx-61], bl
    0020dc10
    0020dc3b
    0020dc3b // align 0x10
    0020dc40
    0020dc40caml_int64_shift_left:
    0020dc40push rbx
    0020dc41mov rcx, rsi
    0020dc44mov rbx, [rdi+8]
    0020dc48xor edx, edx
    0020dc4asar rcx, 1
    0020dc4dmov esi, 8
    0020dc52lea rdi, [rip+0x67c23]
    0020dc59shl rbx, cl
    0020dc5cmov ecx, 1
    0020dc61call caml_alloc_custom
    0020dc66mov [rax+8], rbx
    0020dc6apop rbx
    0020dc6bret
    0020dc6cdb 0x58
    0020dc6dor [rbx-61], bl
    0020dc40
    0020dc70
    0020dc70caml_int64_shift_right:
    0020dc70push rbx
    0020dc71mov rcx, rsi
    0020dc74mov rbx, [rdi+8]
    0020dc78xor edx, edx
    0020dc7asar rcx, 1
    0020dc7dmov esi, 8
    0020dc82lea rdi, [rip+0x67bf3]
    0020dc89sar rbx, cl
    0020dc8cmov ecx, 1
    0020dc91call caml_alloc_custom
    0020dc96mov [rax+8], rbx
    0020dc9apop rbx
    0020dc9bret
    0020dc9cdb 0x58
    0020dc9dor [rbx-61], bl
    0020dc70
    0020dca0
    0020dca0caml_int64_shift_right_unsigned:
    0020dca0push rbx
    0020dca1mov rcx, rsi
    0020dca4mov rbx, [rdi+8]
    0020dca8xor edx, edx
    0020dcaasar rcx, 1
    0020dcadmov esi, 8
    0020dcb2lea rdi, [rip+0x67bc3]
    0020dcb9shr rbx, cl
    0020dcbcmov ecx, 1
    0020dcc1call caml_alloc_custom
    0020dcc6mov [rax+8], rbx
    0020dccapop rbx
    0020dccbret
    0020dcccdb 0x58
    0020dccdor [rbx-61], bl
    0020dca0
    0020dcd0
    0020dcd0caml_int64_direct_bswap:
    0020dcd0mov rax, rdi
    0020dcd3bswap rax
    0020dcd6ret
    0020dcd7db 0x48
    0020dcd8bswap eax
    0020dcdaret
    0020dcd0
    0020dcdb
    0020dcdb // align 0x10
    0020dce0
    0020dce0caml_int64_bswap:
    0020dce0push rbx
    0020dce1mov ecx, 1
    0020dce6mov rbx, [rdi+8]
    0020dceaxor edx, edx
    0020dcecmov esi, 8
    0020dcf1lea rdi, [rip+0x67b84]
    0020dcf8bswap rbx
    0020dcfbcall caml_alloc_custom
    0020dd00mov [rax+8], rbx
    0020dd04pop rbx
    0020dd05ret
    0020dd06db 0x58
    0020dd07or [rbx-61], bl
    0020dce0
    0020dd0a
    0020dd0a // align 0x10
    0020dd10
    0020dd10caml_int64_of_int:
    0020dd10push rbx
    0020dd11mov ecx, 1
    0020dd16mov rbx, rdi
    0020dd19xor edx, edx
    0020dd1bmov esi, 8
    0020dd20lea rdi, [rip+0x67b55]
    0020dd27sar rbx, 1
    0020dd2acall caml_alloc_custom
    0020dd2fmov [rax+8], rbx
    0020dd33pop rbx
    0020dd34ret
    0020dd35db 0x58
    0020dd36or [rbx-61], bl
    0020dd10
    0020dd39
    0020dd39 // align 0x10
    0020dd40
    0020dd40caml_int64_to_int:
    0020dd40mov rax, [rdi+8]
    0020dd44lea rax, [rax+rax+1]
    0020dd49ret
    0020dd4adb 0x44
    0020dd4badd [rcx], al
    0020dd4dret
    0020dd40
    0020dd4e
    0020dd4e // align 0x10
    0020dd50
    0020dd50caml_int64_of_float_unboxed:
    0020dd50cvttsd2si rax, x0
    0020dd55ret
    0020dd56db 0x0f
    0020dd57sub al, -64
    0020dd59ret
    0020dd50
    0020dd5a
    0020dd5a // align 0x10
    0020dd60
    0020dd60caml_int64_of_float:
    0020dd60push rbx
    0020dd61cvttsd2si rbx, [rdi]
    0020dd66mov ecx, 1
    0020dd6bxor edx, edx
    0020dd6dmov esi, 8
    0020dd72lea rdi, [rip+0x67b03]
    0020dd79call caml_alloc_custom
    0020dd7emov [rax+8], rbx
    0020dd82pop rbx
    0020dd83ret
    0020dd84db 0x58
    0020dd85or [rbx-61], bl
    0020dd60
    0020dd88
    0020dd88 // align 0x10
    0020dd90
    0020dd90caml_int64_to_float_unboxed:
    0020dd90pxor x0, x0
    0020dd94cvtsi2sd x0, rdi
    0020dd99ret
    0020dd9adb 0x0f
    0020dd9bsub al, bh
    0020dd9dret
    0020dd90
    0020dd9e
    0020dd9e // align 0x10
    0020dda0
    0020dda0caml_int64_to_float:
    0020dda0pxor x0, x0
    0020dda4cvtsi2sd x0, [rdi+8]
    0020ddaajmp 0x2075f0
    0020ddafdb 0x3d
    0020ddb0cwde
    0020ddb1db 0xff
    0020ddb2db 0xff
    0020dda0
    0020ddb3
    0020ddb3 // align 0x10
    0020ddc0
    0020ddc0caml_int64_of_int32:
    0020ddc0push rbx
    0020ddc1mov ecx, 1
    0020ddc6movsxd rbx, [rdi+8]
    0020ddcaxor edx, edx
    0020ddccmov esi, 8
    0020ddd1lea rdi, [rip+0x67aa4]
    0020ddd8call caml_alloc_custom
    0020ddddmov [rax+8], rbx
    0020dde1pop rbx
    0020dde2ret
    0020dde3db 0x58
    0020dde4or [rbx-61], bl
    0020ddc0
    0020dde7
    0020dde7 // align 0x10
    0020ddf0
    0020ddf0caml_int64_to_int32:
    0020ddf0push rbx
    0020ddf1mov ecx, 1
    0020ddf6mov rbx, [rdi+8]
    0020ddfaxor edx, edx
    0020ddfcmov esi, 4
    0020de01lea rdi, [rip+0x67ab4]
    0020de08call caml_alloc_custom
    0020de0dmov [rax+8], ebx
    0020de10pop rbx
    0020de11ret
    0020de12db 0x58
    0020de13or [rbx-61], bl
    0020ddf0
    0020de16
    0020de16 // align 0x10
    0020de20
    0020de20caml_int64_of_nativeint:
    0020de20push rbx
    0020de21mov ecx, 1
    0020de26mov rbx, [rdi+8]
    0020de2axor edx, edx
    0020de2cmov esi, 8
    0020de31lea rdi, [rip+0x67a44]
    0020de38call caml_alloc_custom
    0020de3dmov [rax+8], rbx
    0020de41pop rbx
    0020de42ret
    0020de43db 0x58
    0020de44or [rbx-61], bl
    0020de20
    0020de47
    0020de47 // align 0x10
    0020de50
    0020de50caml_int64_to_nativeint:
    0020de50push rbx
    0020de51mov ecx, 1
    0020de56mov rbx, [rdi+8]
    0020de5axor edx, edx
    0020de5cmov esi, 8
    0020de61lea rdi, [rip+0x679d4]
    0020de68call caml_alloc_custom
    0020de6dmov [rax+8], rbx
    0020de71pop rbx
    0020de72ret
    0020de73db 0x58
    0020de74or [rbx-61], bl
    0020de50
    0020de77
    0020de77 // align 0x10
    0020de80
    0020de80caml_int64_compare_unboxed:
    0020de80xor eax, eax
    0020de82cmp rdi, rsi
    0020de85setl dl
    0020de88setg al
    0020de8bmovzx edx, dl
    0020de8esub rax, rdx
    0020de91ret
    0020de92db 0x48
    0020de93sub eax, edx
    0020de95ret
    0020de80
    0020de96
    0020de96 // align 0x10
    0020dea0
    0020dea0caml_int64_compare:
    0020dea0mov rax, [rdi+8]
    0020dea4cmp [rsi+8], rax
    0020dea8setl al
    0020deabsetg dl
    0020deaemovzx edx, dl
    0020deb1movzx eax, al
    0020deb4sub rax, rdx
    0020deb7lea rax, [rax+rax+1]
    0020debcret
    0020debddb 0x44
    0020debeadd [rcx], al
    0020dec0ret
    0020dea0
    0020dec1
    0020dec1 // align 0x10
    0020ded0
    0020ded0caml_int64_format:
    0020ded0push rbp
    0020ded1push rbx
    0020ded2sub rsp, 56
    0020ded6mov rbx, [0x28]
    0020dedfmov [rsp+40], rbx
    0020dee4mov rbx, rsi
    0020dee7mov rdx, rsp
    0020deealea rsi, [rip+0x2166a]
    0020def1call fn_20cff0
    0020def6xor eax, eax
    0020def8mov rdi, rsp
    0020defbmov rsi, [rbx+8]
    0020deffcall caml_alloc_sprintf
    0020df04mov rdx, [rsp+40]
    0020df09sub rdx, [0x28]
    0020df12jne 0x20df1f
    0020df14add rsp, 56
    0020df18pop rbx
    0020df19pop rbp
    0020df1aret
    0020df1bcall fn_f4590
    0020df20db 0x6c
    0020df21out dx, al
    0020df23db 0xff
    0020ded0
    0020df24
    0020df24 // align 0x10
    0020df30
    0020df30caml_int64_of_string:
    0020df30push r12
    0020df32push rbp
    0020df33push rbx
    0020df34sub rsp, 32
    0020df38mov rbx, [0x28]
    0020df41mov [rsp+24], rbx
    0020df46mov rbx, rdi
    0020df49lea rcx, [rsp+12]
    0020df4elea rdx, [rsp+20]
    0020df53lea rsi, [rsp+16]
    0020df58call fn_20cea0
    0020df5dmovsxd rsi, [rsp+16]
    0020df62movzx edx, [rax]
    0020df65mov rdi, rsi
    0020df68movsx ebp, dl
    0020df6blea ecx, [rdx-48]
    0020df6esub ebp, 48
    0020df71cmp cl, 9
    0020df74jbe 0x20df9a
    0020df76movsx ebp, dl
    0020df79lea ecx, [rdx-65]
    0020df7csub ebp, 55
    0020df7fcmp cl, 5
    0020df82jbe 0x20df9a
    0020df84lea ecx, [rdx-97]
    0020df87cmp cl, 5
    0020df8aja 0x20e069
    0020df90movsx ebp, dl
    0020df93sub ebp, 87
    0020df96cmp edi, ebp
    0020df98jle 0x20e069
    0020df9emovsxd rbp, ebp
    0020dfa1lea r12, [rax+1]
    0020dfa5jmp 0x20dfe8
    0020dfa7db 0x60
    0020dfa8add ebx, ebp
    0020dfaadb 0x3d
    0020dfab
    0020dfab 0f 1f 44 00 00 ..D..
    0020dfb0
    0020dfb0loc_20dfb0:
    0020dfb0lea eax, [rcx-65]
    0020dfb3cmp al, 5
    0020dfb5jbe 0x20e058
    0020dfbblea eax, [rcx-97]
    0020dfbecmp al, 5
    0020dfc0ja 0x20e000
    0020dfc2sub ecx, 87
    0020dfc5
    0020dfc5loc_20dfc5:
    0020dfc5cmp edi, ecx
    0020dfc7jle 0x20e000
    0020dfc9
    0020dfc9loc_20dfc9:
    0020dfc9mov rax, rbp
    0020dfccmul rsi
    0020dfcfmov rbp, rax
    0020dfd2jo 0x20e069
    0020dfd8movsxd rcx, ecx
    0020dfdbadd rbp, rcx
    0020dfdejb 0x20e069
    0020dfe4
    0020dfe4loc_20dfe4:
    0020dfe4add r12, 1
    0020dfe8
    0020dfe8loc_20dfe8:
    0020dfe8movsx ecx, [r12]
    0020dfedcmp cl, 95
    0020dff0je 0x20dfe4
    0020dff2lea eax, [rcx-48]
    0020dff5cmp al, 9
    0020dff7ja 0x20dfb0
    0020dff9sub ecx, 48
    0020dffccmp edi, ecx
    0020dffejg 0x20dfc9
    0020e000
    0020e000loc_20e000:
    0020e000mov rdi, rbx
    0020e003call caml_string_length
    0020e008add rbx, rax
    0020e00bcmp r12, rbx
    0020e00ejne 0x20e069
    0020e010mov edx, [rsp+20]
    0020e014mov eax, [rsp+12]
    0020e018test edx, edx
    0020e01ajne 0x20e060
    0020e01ctest eax, eax
    0020e01ejs 0x20e087
    0020e020
    0020e020loc_20e020:
    0020e020mov ecx, 1
    0020e025xor edx, edx
    0020e027mov esi, 8
    0020e02clea rdi, [rip+0x6784d]
    0020e033call caml_alloc_custom
    0020e038mov [rax+8], rbp
    0020e03cmov rdx, [rsp+24]
    0020e041sub rdx, [0x28]
    0020e04ajne 0x20e08c
    0020e04cadd rsp, 32
    0020e050pop rbx
    0020e051pop rbp
    0020e052pop r12
    0020e054ret
    0020e055
    0020e055 0f 1f 00 ...
    0020e058
    0020e058loc_20e058:
    0020e058sub ecx, 55
    0020e05bjmp 0x20dfc5
    0020e060
    0020e060loc_20e060:
    0020e060test eax, eax
    0020e062js 0x20e078
    0020e064test rbp, rbp
    0020e067jns 0x20e020
    0020e069
    0020e069loc_20e069:
    0020e069lea rdi, [rip+0x21008]
    0020e070call caml_failwith
    0020e075nop [rax]
    0020e078
    0020e078loc_20e078:
    0020e078mov rax, 0x8000000000000000
    0020e082cmp rax, rbp
    0020e085jb 0x20e069
    0020e087
    0020e087loc_20e087:
    0020e087neg rbp
    0020e08ajmp 0x20e020
    0020e08c
    0020e08cloc_20e08c:
    0020e08ccall fn_f4590
    0020df30
    0020e091
    0020e091 // align 0x10
    0020e0a0
    0020e0a0caml_int64_bits_of_float_unboxed:
    0020e0a0movq rax, x0
    0020e0a5ret
    0020e0a6db 0x0f
    0020e0a7jle 0x20e069
    0020e0a9ret
    0020e0a0
    0020e0aa
    0020e0aa // align 0x10
    0020e0b0
    0020e0b0caml_int64_float_of_bits_unboxed:
    0020e0b0movq x0, rdi
    0020e0b5ret
    0020e0b6db 0x0f
    0020e0b7outsb dl, [rsi]
    0020e0b8db 0xc7
    0020e0b9ret
    0020e0b0
    0020e0ba
    0020e0ba // align 0x10
    0020e0c0
    0020e0c0caml_int64_bits_of_float:
    0020e0c0push rbx
    0020e0c1mov ecx, 1
    0020e0c6mov rbx, [rdi]
    0020e0c9xor edx, edx
    0020e0cbmov esi, 8
    0020e0d0lea rdi, [rip+0x677a5]
    0020e0d7call caml_alloc_custom
    0020e0dcmov [rax+8], rbx
    0020e0e0pop rbx
    0020e0e1ret
    0020e0e2db 0x58
    0020e0e3or [rbx-61], bl
    0020e0c0
    0020e0e6
    0020e0e6 // align 0x10
    0020e0f0
    0020e0f0caml_int64_float_of_bits:
    0020e0f0movsd_xmm x0, [rdi+8]
    0020e0f5jmp 0x2075f0
    0020e0fadb 0xf2
    0020e0fbxchg eax, esp
    0020e0fcdb 0xff
    0020e0fddb 0xff
    0020e0f0
    0020e0fe
    0020e0fe // align 0x10
    0020e100
    0020e100caml_copy_nativeint:
    0020e100push rbx
    0020e101mov ecx, 1
    0020e106mov rbx, rdi
    0020e109xor edx, edx
    0020e10bmov esi, 8
    0020e110lea rdi, [rip+0x67725]
    0020e117call caml_alloc_custom
    0020e11cmov [rax+8], rbx
    0020e120pop rbx
    0020e121ret
    0020e122db 0x58
    0020e123or [rbx-61], bl
    0020e100
    0020e126
    0020e126 // align 0x10
    0020e130
    0020e130caml_nativeint_neg:
    0020e130push rbx
    0020e131mov rbx, [rdi+8]
    0020e135mov ecx, 1
    0020e13axor edx, edx
    0020e13cmov esi, 8
    0020e141lea rdi, [rip+0x676f4]
    0020e148neg rbx
    0020e14bcall caml_alloc_custom
    0020e150mov [rax+8], rbx
    0020e154pop rbx
    0020e155ret
    0020e156db 0x58
    0020e157or [rbx-61], bl
    0020e130
    0020e15a
    0020e15a // align 0x10
    0020e160
    0020e160caml_nativeint_add:
    0020e160push rbx
    0020e161mov ecx, 1
    0020e166mov rbx, [rsi+8]
    0020e16axor edx, edx
    0020e16cadd rbx, [rdi+8]
    0020e170mov esi, 8
    0020e175lea rdi, [rip+0x676c0]
    0020e17ccall caml_alloc_custom
    0020e181mov [rax+8], rbx
    0020e185pop rbx
    0020e186ret
    0020e187db 0x58
    0020e188or [rbx-61], bl
    0020e160
    0020e18b
    0020e18b // align 0x10
    0020e190
    0020e190caml_nativeint_sub:
    0020e190push rbx
    0020e191mov ecx, 1
    0020e196mov rbx, [rdi+8]
    0020e19axor edx, edx
    0020e19csub rbx, [rsi+8]
    0020e1a0lea rdi, [rip+0x67695]
    0020e1a7mov esi, 8
    0020e1accall caml_alloc_custom
    0020e1b1mov [rax+8], rbx
    0020e1b5pop rbx
    0020e1b6ret
    0020e1b7db 0x58
    0020e1b8or [rbx-61], bl
    0020e190
    0020e1bb
    0020e1bb // align 0x10
    0020e1c0
    0020e1c0caml_nativeint_mul:
    0020e1c0push rbx
    0020e1c1mov rbx, [rdi+8]
    0020e1c5mov ecx, 1
    0020e1caxor edx, edx
    0020e1ccimul rbx, [rsi+8]
    0020e1d1lea rdi, [rip+0x67664]
    0020e1d8mov esi, 8
    0020e1ddcall caml_alloc_custom
    0020e1e2mov [rax+8], rbx
    0020e1e6pop rbx
    0020e1e7ret
    0020e1e8db 0x58
    0020e1e9or [rbx-61], bl
    0020e1c0
    0020e1ec
    0020e1ec // align 0x10
    0020e1f0
    0020e1f0caml_nativeint_div:
    0020e1f0push rbx
    0020e1f1mov rcx, [rsi+8]
    0020e1f5mov rax, [rdi+8]
    0020e1f9test rcx, rcx
    0020e1fcje 0x20e24c
    0020e1femov rdx, 0x8000000000000000
    0020e208cmp rax, rdx
    0020e20bjne 0x20e220
    0020e20dcmp rcx, -1
    0020e211jne 0x20e220
    0020e213mov rax, rdi
    0020e216pop rbx
    0020e217ret
    0020e218db 0x89
    0020e219clc
    0020e21apop rbx
    0020e21bret
    0020e21c
    0020e21c 0f 1f 40 00 ..@.
    0020e220
    0020e220loc_20e220:
    0020e220cqo
    0020e222lea rdi, [rip+0x67617]
    0020e229mov esi, 8
    0020e22eidiv rcx
    0020e231mov ecx, 1
    0020e236xor edx, edx
    0020e238mov rbx, rax
    0020e23bcall caml_alloc_custom
    0020e240mov rdi, rax
    0020e243mov [rax+8], rbx
    0020e247pop rbx
    0020e248mov rax, rdi
    0020e24bret
    0020e24c
    0020e24cloc_20e24c:
    0020e24ccall caml_raise_zero_divide
    0020e1f0
    0020e251
    0020e251 // align 0x10
    0020e260
    0020e260caml_nativeint_mod:
    0020e260push rbx
    0020e261mov rbx, [rsi+8]
    0020e265mov rax, [rdi+8]
    0020e269test rbx, rbx
    0020e26cje 0x20e2d6
    0020e26emov rcx, 0x8000000000000000
    0020e278cmp rax, rcx
    0020e27bjne 0x20e2b0
    0020e27dcmp rbx, -1
    0020e281jne 0x20e2b0
    0020e283mov ecx, 1
    0020e288xor edx, edx
    0020e28amov esi, 8
    0020e28flea rdi, [rip+0x675a6]
    0020e296call caml_alloc_custom
    0020e29bmov [rax+8], 0
    0020e2a3pop rbx
    0020e2a4ret
    0020e2a5db 0x00
    0020e2a6add [rbx-61], bl
    0020e2a9
    0020e2a9 0f 1f 80 00 00 00 00 .......
    0020e2b0
    0020e2b0loc_20e2b0:
    0020e2b0cqo
    0020e2b2mov ecx, 1
    0020e2b7mov esi, 8
    0020e2bcidiv rbx
    0020e2bflea rdi, [rip+0x6757a]
    0020e2c6mov rbx, rdx
    0020e2c9xor edx, edx
    0020e2cbcall caml_alloc_custom
    0020e2d0mov [rax+8], rbx
    0020e2d4pop rbx
    0020e2d5ret
    0020e2d6
    0020e2d6loc_20e2d6:
    0020e2d6call caml_raise_zero_divide
    0020e260
    0020e2db
    0020e2db // align 0x10
    0020e2e0
    0020e2e0caml_nativeint_and:
    0020e2e0push rbx
    0020e2e1mov ecx, 1
    0020e2e6mov rbx, [rdi+8]
    0020e2eaxor edx, edx
    0020e2ecand rbx, [rsi+8]
    0020e2f0lea rdi, [rip+0x67545]
    0020e2f7mov esi, 8
    0020e2fccall caml_alloc_custom
    0020e301mov [rax+8], rbx
    0020e305pop rbx
    0020e306ret
    0020e307db 0x58
    0020e308or [rbx-61], bl
    0020e2e0
    0020e30b
    0020e30b // align 0x10
    0020e310
    0020e310caml_nativeint_or:
    0020e310push rbx
    0020e311mov ecx, 1
    0020e316mov rbx, [rdi+8]
    0020e31axor edx, edx
    0020e31cor rbx, [rsi+8]
    0020e320lea rdi, [rip+0x67515]
    0020e327mov esi, 8
    0020e32ccall caml_alloc_custom
    0020e331mov [rax+8], rbx
    0020e335pop rbx
    0020e336ret
    0020e337db 0x58
    0020e338or [rbx-61], bl
    0020e310
    0020e33b
    0020e33b // align 0x10
    0020e340
    0020e340caml_nativeint_xor:
    0020e340push rbx
    0020e341mov ecx, 1
    0020e346mov rbx, [rdi+8]
    0020e34axor edx, edx
    0020e34cxor rbx, [rsi+8]
    0020e350lea rdi, [rip+0x674e5]
    0020e357mov esi, 8
    0020e35ccall caml_alloc_custom
    0020e361mov [rax+8], rbx
    0020e365pop rbx
    0020e366ret
    0020e367db 0x58
    0020e368or [rbx-61], bl
    0020e340
    0020e36b
    0020e36b // align 0x10
    0020e370
    0020e370caml_nativeint_shift_left:
    0020e370push rbx
    0020e371mov rcx, rsi
    0020e374mov rbx, [rdi+8]
    0020e378xor edx, edx
    0020e37asar rcx, 1
    0020e37dmov esi, 8
    0020e382lea rdi, [rip+0x674b3]
    0020e389shl rbx, cl
    0020e38cmov ecx, 1
    0020e391call caml_alloc_custom
    0020e396mov [rax+8], rbx
    0020e39apop rbx
    0020e39bret
    0020e39cdb 0x58
    0020e39dor [rbx-61], bl
    0020e370
    0020e3a0
    0020e3a0caml_nativeint_shift_right:
    0020e3a0push rbx
    0020e3a1mov rcx, rsi
    0020e3a4mov rbx, [rdi+8]
    0020e3a8xor edx, edx
    0020e3aasar rcx, 1
    0020e3admov esi, 8
    0020e3b2lea rdi, [rip+0x67483]
    0020e3b9sar rbx, cl
    0020e3bcmov ecx, 1
    0020e3c1call caml_alloc_custom
    0020e3c6mov [rax+8], rbx
    0020e3capop rbx
    0020e3cbret
    0020e3ccdb 0x58
    0020e3cdor [rbx-61], bl
    0020e3a0
    0020e3d0
    0020e3d0caml_nativeint_shift_right_unsigned:
    0020e3d0push rbx
    0020e3d1mov rcx, rsi
    0020e3d4mov rbx, [rdi+8]
    0020e3d8xor edx, edx
    0020e3dasar rcx, 1
    0020e3ddmov esi, 8
    0020e3e2lea rdi, [rip+0x67453]
    0020e3e9shr rbx, cl
    0020e3ecmov ecx, 1
    0020e3f1call caml_alloc_custom
    0020e3f6mov [rax+8], rbx
    0020e3fapop rbx
    0020e3fbret
    0020e3fcdb 0x58
    0020e3fdor [rbx-61], bl
    0020e3d0
    0020e400
    0020e400caml_nativeint_direct_bswap:
    0020e400mov rax, rdi
    0020e403bswap rax
    0020e406ret
    0020e407db 0x48
    0020e408bswap eax
    0020e40aret
    0020e400
    0020e40b
    0020e40b // align 0x10
    0020e410
    0020e410caml_nativeint_bswap:
    0020e410push rbx
    0020e411mov ecx, 1
    0020e416mov rbx, [rdi+8]
    0020e41axor edx, edx
    0020e41cmov esi, 8
    0020e421lea rdi, [rip+0x67414]
    0020e428bswap rbx
    0020e42bcall caml_alloc_custom
    0020e430mov [rax+8], rbx
    0020e434pop rbx
    0020e435ret
    0020e436db 0x58
    0020e437or [rbx-61], bl
    0020e410
    0020e43a
    0020e43a // align 0x10
    0020e440
    0020e440caml_nativeint_of_int:
    0020e440push rbx
    0020e441mov ecx, 1
    0020e446mov rbx, rdi
    0020e449xor edx, edx
    0020e44bmov esi, 8
    0020e450lea rdi, [rip+0x673e5]
    0020e457sar rbx, 1
    0020e45acall caml_alloc_custom
    0020e45fmov [rax+8], rbx
    0020e463pop rbx
    0020e464ret
    0020e465db 0x58
    0020e466or [rbx-61], bl
    0020e440
    0020e469
    0020e469 // align 0x10
    0020e470
    0020e470caml_nativeint_to_int:
    0020e470mov rax, [rdi+8]
    0020e474lea rax, [rax+rax+1]
    0020e479ret
    0020e47adb 0x44
    0020e47badd [rcx], al
    0020e47dret
    0020e470
    0020e47e
    0020e47e // align 0x10
    0020e480
    0020e480caml_nativeint_of_float_unboxed:
    0020e480cvttsd2si rax, x0
    0020e485ret
    0020e486db 0x0f
    0020e487sub al, -64
    0020e489ret
    0020e480
    0020e48a
    0020e48a // align 0x10
    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