File hevea_f46f610a6b0078f4aa208dda361f21de574cc56ad64b32889301afc466d33979.elf
Function:
    002202b0
    002202b0caml_install_signal_handler:
    002202b0push r13
    002202b2push r12
    002202b4push rbp
    002202b5push rbx
    002202b6sub rsp, 488
    002202bdmovdqa x1, [rip+40455]
    002202c5mov [rsp+8], rdi
    002202camovq x2, rsp
    002202cfmov [rsp], rsi
    002202d3mov rax, [0x28]
    002202dcmov [rsp+472], rax
    002202e4mov rax, [rip+0x55cf9]
    002202ebmov rbp, [rax]
    002202eflea rax, [rsp+8]
    002202f4movups [rsp+40], x1
    002202f9movq x0, rax
    002202felea rax, [rsp+32]
    00220303movups [rsp+104], x1
    00220308mov [rsp+96], rax
    0022030dlea rax, [rsp+96]
    00220312mov r12, [rbp+160]
    00220319punpcklqdq x0, x2
    0022031dmov [rbp+160], rax
    00220324lea rax, [rsp+16]
    00220329movups [rsp+56], x0
    0022032emovq x0, rax
    00220333lea rax, [rsp+24]
    00220338movq x3, rax
    0022033dmov rax, rdi
    00220340mov [rsp+32], r12
    00220345mov [rsp+16], 1
    0022034epunpcklqdq x0, x3
    00220352sar rax, 1
    00220355mov [rsp+24], 1
    0022035emovups [rsp+120], x0
    00220363cmp eax, -28
    00220366jb 0x2204b8
    0022036cnot eax
    0022036elea rdx, [rip+0x121c7]
    00220375cdqe
    00220377movsxd rbx, [rdx+4*rax]
    0022037bmov edx, ebx
    0022037dsub edx, 1
    00220380cmp edx, 63
    00220383ja 0x22056a
    00220389mov rdx, [rsp]
    0022038dxor eax, eax
    0022038fcmp rdx, 1
    00220393je 0x2203ad
    00220395cmp rdx, 3
    00220399lea rax, [rip-2884]
    002203a0mov edx, 1
    002203a5cmove rax, rdx
    002203a9lea rdi, [rsp+168]
    002203b1lea r13, [rsp+160]
    002203b9mov [rsp+160], rax
    002203c1call fn_f46c0
    002203c6lea rdx, [rsp+320]
    002203cemov rsi, r13
    002203d1mov edi, ebx
    002203d3mov [rsp+296], 0x8000000
    002203decall fn_f4480
    002203e3cmp eax, -1
    002203e6je 0x220560
    002203ecmov rax, [rsp+320]
    002203f4lea rdx, [rip-2975]
    002203fbcmp rax, rdx
    002203feje 0x2204e0
    00220404cmp rax, 1
    00220408sete al
    0022040bmovzx eax, al
    0022040elea rax, [rax+rax+1]
    00220413mov [rsp+16], rax
    00220418test [rsp], 1
    0022041c
    0022041cloc_22041c:
    0022041cjne 0x220477
    0022041ecmp [rip+0x158c46], 0
    00220426je 0x220538
    0022042clea r13, [rip+0x158c49]
    00220433mov rdi, r13
    00220436call fn_f4710
    0022043btest eax, eax
    0022043djne 0x22057b
    00220443mov rax, [rip+0x158c22]
    0022044atest rax, rax
    0022044dje 0x220510
    00220453mov rdx, [rsp]
    00220457
    00220457loc_220457:
    00220457lea rdi, [rax+8*rbx]
    0022045bmov rsi, [rdx]
    0022045ecall caml_modify
    00220463mov rdi, r13
    00220466call fn_f47c0
    0022046btest eax, eax
    0022046djne 0x22054e
    00220473mov rax, [rip+0x158be2]
    0022047atest rax, rax
    0022047djne 0x2204c8
    0022047fmov [rbp+160], r12
    00220486mov rax, [rsp+16]
    0022048bmov rdx, [rsp+472]
    00220493sub rdx, [0x28]
    0022049cjne 0x220576
    002204a2add rsp, 488
    002204a9pop rbx
    002204aapop rbp
    002204abpop r12
    002204adpop r13
    002204afret
    002204b0db 0x5c
    002204b1pop r13
    002204b3ret
    002204b4
    002204b4 0f 1f 40 00 ..@.
    002204b8
    002204b8loc_2204b8:
    002204b8movsxd rbx, eax
    002204bbmov edx, eax
    002204bdjmp 0x220381
    002204c2
    002204c2 66 0f 1f 44 00 00 f..D..
    002204c8
    002204c8loc_2204c8:
    002204c8call fn_21fac0
    002204cdtest eax, eax
    002204cfje 0x220483
    002204d1mov rdi, rdx
    002204d4call caml_raise
    002204d9nop [rax]
    002204e0
    002204e0loc_2204e0:
    002204e0xor esi, esi
    002204e2mov edi, 1
    002204e7call caml_alloc_small
    002204ecmov rcx, [rip+0x158b7d]
    002204f3movsxd rdx, ebx
    002204f6mov [rsp+16], rax
    002204fblea rdx, [rcx+8*rdx]
    002204ffmov rdx, [rdx]
    00220502mov [rax], rdx
    00220505jmp 0x22041c
    0022050a
    0022050a 66 0f 1f 44 00 00 f..D..
    00220510
    00220510loc_220510:
    00220510mov rax, [rsp+24]
    00220515lea rdi, [rip+0x158b54]
    0022051cmov [rip+0x158b4d], rax
    00220523call caml_register_global_root
    00220528mov rax, [rip+0x158b41]
    0022052fjmp 0x220457
    00220534
    00220534 0f 1f 40 00 ..@.
    00220538
    00220538loc_220538:
    00220538xor esi, esi
    0022053amov edi, 65
    0022053fcall caml_alloc
    00220544mov [rsp+24], rax
    00220549jmp 0x220430
    0022054e
    0022054eloc_22054e:
    0022054emov esi, eax
    00220550lea rdi, [rip+61379]
    00220557call caml_plat_fatal_error
    0022055cnop [rax]
    00220560
    00220560loc_220560:
    00220560mov edi, 1
    00220565call caml_sys_error
    0022056a
    0022056aloc_22056a:
    0022056alea rdi, [rip+0x10ea7]
    00220571call caml_invalid_argument
    00220576
    00220576loc_220576:
    00220576call fn_f4590
    0022057b
    0022057bloc_22057b:
    0022057bmov esi, eax
    0022057dlea rdi, [rip+61323]
    00220584call caml_plat_fatal_error
    002202b0
    00220589
    00220589 // align 0x10
    00220590
    00220590caml_skiplist_init:
    00220590mov [rdi], 0
    00220597mov rdx, rdi
    0022059alea rdi, [rdi+8]
    0022059exor eax, eax
    002205a0mov [rdi+120], 0
    002205a8mov rcx, rdx
    002205aband rdi, -8
    002205afsub rcx, rdi
    002205b2add ecx, 136
    002205b8shr ecx, 3
    002205bbrep stosq [rdi], rax
    002205bemov [rdx+136], 0
    002205c8ret
    002205c9db 0x00
    002205caadd [rax], al
    002205ccret
    00220590
    002205cd
    002205cd // align 0x10
    002205d0
    002205d0caml_skiplist_find:
    002205d0mov ecx, [rdi+136]
    002205d6test ecx, ecx
    002205d8js 0x220645
    002205damovsxd rax, ecx
    002205ddmov ecx, ecx
    002205dflea r8, [8*rax]
    002205e7sub rax, rcx
    002205ealea r9, [8*rax]
    002205f2mov rax, [rdi+r8]
    002205f6
    002205f6loc_2205f6:
    002205f6test rax, rax
    002205f9jne 0x22061b
    002205fbjmp 0x220623
    002205fddb 0x75
    002205fesbb al, -21
    00220600db 0x22
    00220601
    00220601 0f 1f 80 00 00 00 00 .......
    00220608
    00220608loc_220608:
    00220608cmp rcx, rsi
    0022060bje 0x220638
    0022060dlea rdi, [rax+16]
    00220611mov rax, [rax+r8+16]
    00220616test rax, rax
    00220619je 0x220623
    0022061b
    0022061bloc_22061b:
    0022061bmov rcx, [rax]
    0022061ecmp rsi, rcx
    00220621jae 0x220608
    00220623
    00220623loc_220623:
    00220623lea rax, [r8-8]
    00220627cmp r8, r9
    0022062aje 0x220645
    0022062cmov r8, rax
    0022062fjmp 0x2205f6
    00220631
    00220631 0f 1f 80 00 00 00 00 .......
    00220638
    00220638loc_220638:
    00220638mov rax, [rax+8]
    0022063cmov [rdx], rax
    0022063fmov eax, 1
    00220644ret
    00220645
    00220645loc_220645:
    00220645xor eax, eax
    00220647ret
    002205d0
    00220648
    00220648 // align 0x20
    00220660
    00220660caml_skiplist_find_below:
    00220660mov eax, [rdi+136]
    00220666mov r10, rdx
    00220669mov r11, rcx
    0022066ctest eax, eax
    0022066ejs 0x2206ea
    00220670movsxd r9, eax
    00220673mov eax, eax
    00220675xor r8l, r8l
    00220678lea rcx, [8*r9]
    00220680sub r9, rax
    00220683shl r9, 3
    00220687nop [rax+rax]
    0022068cmov rax, [rdi+rcx]
    00220690
    00220690loc_220690:
    00220690test rax, rax
    00220693jne 0x2206b4
    00220695jmp 0x2206b9
    00220697db 0x75
    00220698sbb ebp, ebx
    0022069adb 0x1e
    0022069b
    0022069b 0f 1f 44 00 00 ..D..
    002206a0
    002206a0loc_2206a0:
    002206a0mov rdx, [rax+rcx+16]
    002206a5lea rdi, [rax+16]
    002206a9mov r8, rax
    002206actest rdx, rdx
    002206afje 0x2206b9
    002206b1mov rax, rdx
    002206b4
    002206b4loc_2206b4:
    002206b4cmp rsi, [rax]
    002206b7jae 0x2206a0
    002206b9
    002206b9loc_2206b9:
    002206b9lea rax, [rcx-8]
    002206bdcmp rcx, r9
    002206c0je 0x2206d0
    002206c2mov rcx, rax
    002206c5jmp 0x220690
    002206c7
    002206c7 66 0f 1f 84 00 00 00 00 00 f........
    002206d0
    002206d0loc_2206d0:
    002206d0xor eax, eax
    002206d2test r8, r8
    002206d5je 0x2206ec
    002206d7mov rax, [r8]
    002206damov [r10], rax
    002206ddmov rax, [r8+8]
    002206e1mov [r11], rax
    002206e4mov eax, 1
    002206e9ret
    002206ea
    002206ealoc_2206ea:
    002206eaxor eax, eax
    002206ec
    002206ecloc_2206ec:
    002206ecret
    00220660
    002206ed
    002206ed // align 0x20
    00220700
    00220700caml_skiplist_insert:
    00220700push r12
    00220702mov r9, rdi
    00220705mov rcx, rdi
    00220708push rbp
    00220709push rbx
    0022070amov rbx, rsi
    0022070dsub rsp, 144
    00220714mov edi, [rdi+136]
    0022071amov r12, [0x28]
    00220723mov [rsp+136], r12
    0022072bmov r12, rdx
    0022072etest edi, edi
    00220730js 0x220790
    00220732movsxd r10, edi
    00220735mov eax, edi
    00220737mov r8, rsp
    0022073alea rsi, [8*r10]
    00220742sub r10, rax
    00220745shl r10, 3
    00220749jmp 0x220769
    0022074bdb 0xe2
    0022074cadd ebp, ebx
    0022074edb 0x1a
    0022074f
    0022074f 66 f
    00220750 66 2e 0f 1f 84 00 00 00 00 00 66 0f 1f 44 00 00 f.........f..D..
    00220760
    00220760loc_220760:
    00220760cmp [rax], rbx
    00220763jae 0x220775
    00220765lea rcx, [rax+16]
    00220769
    00220769loc_220769:
    00220769lea rdx, [rcx+rsi]
    0022076dmov rax, [rdx]
    00220770test rax, rax
    00220773jne 0x220760
    00220775
    00220775loc_220775:
    00220775mov [r8+rsi], rdx
    00220779lea rax, [rsi-8]
    0022077dcmp r10, rsi
    00220780je 0x220790
    00220782mov rsi, rax
    00220785jmp 0x220769
    00220787
    00220787 66 0f 1f 84 00 00 00 00 00 f........
    00220790
    00220790loc_220790:
    00220790mov rax, [rcx]
    00220793test rax, rax
    00220796je 0x2207a1
    00220798cmp [rax], rbx
    0022079bje 0x22089e
    002207a1
    002207a1loc_2207a1:
    002207a1imul eax, [rip+0x1588fd], 0x10dcd
    002207abadd eax, 25173
    002207b0mov edx, eax
    002207b2mov [rip+0x1588f0], eax
    002207b8not edx
    002207baand edx, 0xffffffffc0000000
    002207c0jne 0x2208a9
    002207c6xor ebp, ebp
    002207c8nop [rax+rax]
    002207d3nop [rax+rax]
    002207denop
    002207e0
    002207e0loc_2207e0:
    002207e0shl eax, 2
    002207e3mov ecx, ebp
    002207e5add ebp, 1
    002207e8mov edx, eax
    002207eanot edx
    002207ecand edx, 0xffffffffc0000000
    002207f2je 0x2207e0
    002207f4lea eax, [rcx+2]
    002207f7cdqe
    002207f9lea rsi, [8*rax+16]
    00220801cmp edi, ebp
    00220803jl 0x220879
    00220805
    00220805loc_220805:
    00220805mov rdi, rsi
    00220808call caml_stat_alloc
    0022080dmov [rax], rbx
    00220810mov [rax+8], r12
    00220814test ebp, ebp
    00220816js 0x220858
    00220818
    00220818loc_220818:
    00220818lea edi, [rbp+1]
    0022081bxor edx, edx
    0022081dmov r8, rsp
    00220820shl rdi, 3
    00220824nop [rax+rax]
    0022082fnop [rax+rax]
    0022083anop [rax+rax]
    00220840
    00220840loc_220840:
    00220840mov rcx, [r8+rdx]
    00220844mov rsi, [rcx]
    00220847mov [rax+rdx+16], rsi
    0022084cadd rdx, 8
    00220850mov [rcx], rax
    00220853cmp rdx, rdi
    00220856jne 0x220840
    00220858
    00220858loc_220858:
    00220858xor eax, eax
    0022085a
    0022085aloc_22085a:
    0022085amov rdx, [rsp+136]
    00220862sub rdx, [0x28]
    0022086bjne 0x2208d1
    0022086dadd rsp, 144
    00220874pop rbx
    00220875pop rbp
    00220876pop r12
    00220878ret
    00220879
    00220879loc_220879:
    00220879lea eax, [rdi+1]
    0022087ccmp eax, ebp
    0022087ejg 0x220892
    00220880
    00220880loc_220880:
    00220880movsxd rdx, eax
    00220883add eax, 1
    00220886lea rcx, [r9+8*rdx]
    0022088amov [rsp+8*rdx], rcx
    0022088ecmp ebp, eax
    00220890jge 0x220880
    00220892
    00220892loc_220892:
    00220892mov [r9+136], ebp
    00220899jmp 0x220805
    0022089e
    0022089eloc_22089e:
    0022089emov [rax+8], r12
    002208a2mov eax, 1
    002208a7jmp 0x22085a
    002208a9
    002208a9loc_2208a9:
    002208a9test edi, edi
    002208abjns 0x2208b9
    002208adlea eax, [rdi+1]
    002208b0mov esi, 24
    002208b5xor ebp, ebp
    002208b7jmp 0x220880
    002208b9
    002208b9loc_2208b9:
    002208b9mov edi, 24
    002208bexor ebp, ebp
    002208c0call caml_stat_alloc
    002208c5mov [rax], rbx
    002208c8mov [rax+8], r12
    002208ccjmp 0x220818
    002208d1
    002208d1loc_2208d1:
    002208d1call fn_f4590
    00220700
    002208d6
    002208d6 // align 0x10
    002208e0
    002208e0caml_skiplist_remove:
    002208e0push rbx
    002208e1sub rsp, 144
    002208e8mov eax, [rdi+136]
    002208eemov rbx, [0x28]
    002208f7mov [rsp+136], rbx
    002208ffmov rbx, rdi
    00220902test eax, eax
    00220904js 0x220a38
    0022090amovsxd r8, eax
    0022090dmov eax, eax
    0022090fmov rcx, rdi
    00220912mov r9, rsp
    00220915lea rdi, [8*r8]
    0022091dsub r8, rax
    00220920shl r8, 3
    00220924jmp 0x220949
    00220926db 0xe0
    00220927add ebp, ebx
    00220929db 0x1f
    0022092a
    0022092a 66 66 2e 0f 1f 84 ff....
    00220930 00 00 00 00 00 66 66 2e 0f 1f 84 00 00 00 00 00 .....ff.........
    00220940
    00220940loc_220940:
    00220940cmp [rax], rsi
    00220943jae 0x220955
    00220945lea rcx, [rax+16]
    00220949
    00220949loc_220949:
    00220949lea rdx, [rcx+rdi]
    0022094dmov rax, [rdx]
    00220950test rax, rax
    00220953jne 0x220940
    00220955
    00220955loc_220955:
    00220955mov [r9+rdi], rdx
    00220959lea rax, [rdi-8]
    0022095dcmp rdi, r8
    00220960je 0x220970
    00220962mov rdi, rax
    00220965jmp 0x220949
    00220967
    00220967 66 0f 1f 84 00 00 00 00 00 f........
    00220970
    00220970loc_220970:
    00220970mov rdi, [rcx]
    00220973test rdi, rdi
    00220976je 0x220a45
    0022097ccmp [rdi], rsi
    0022097fjne 0x220a45
    00220985xor eax, eax
    00220987jmp 0x2209ac
    00220989
    00220989 66 66 2e 0f 1f 84 00 ff.....
    00220990 00 00 00 00 66 66 2e 0f 1f 84 00 00 00 00 00 90 ....ff..........
    002209a0
    002209a0loc_2209a0:
    002209a0add rax, 1
    002209a4cmp [rbx+136], eax
    002209aajl 0x2209c9
    002209ac
    002209acloc_2209ac:
    002209acmov rdx, [r9+8*rax]
    002209b0cmp [rdx], rdi
    002209b3jne 0x2209a0
    002209b5mov rcx, [rdi+8*rax+16]
    002209baadd rax, 1
    002209bemov [rdx], rcx
    002209c1cmp [rbx+136], eax
    002209c7jge 0x2209ac
    002209c9
    002209c9loc_2209c9:
    002209c9call caml_stat_free
    002209cemov eax, [rbx+136]
    002209d4test eax, eax
    002209d6jle 0x220a17
    002209d8movsxd rdx, eax
    002209dblea rdx, [rbx+8*rdx]
    002209dfjmp 0x220a11
    002209e1
    002209e1 66 66 2e 0f 1f 84 00 00 00 00 00 66 66 2e 0f ff.........ff..
    002209f0 1f 84 00 00 00 00 00 66 0f 1f 84 00 00 00 00 00 .......f........
    00220a00
    00220a00loc_220a00:
    00220a00sub eax, 1
    00220a03sub rdx, 8
    00220a07mov [rbx+136], eax
    00220a0dtest eax, eax
    00220a0fje 0x220a17
    00220a11
    00220a11loc_220a11:
    00220a11cmp [rdx], 0
    00220a15je 0x220a00
    00220a17
    00220a17loc_220a17:
    00220a17mov eax, 1
    00220a1c
    00220a1cloc_220a1c:
    00220a1cmov rdx, [rsp+136]
    00220a24sub rdx, [0x28]
    00220a2djne 0x220a49
    00220a2fadd rsp, 144
    00220a36pop rbx
    00220a37ret
    00220a38
    00220a38loc_220a38:
    00220a38mov rdi, [rbx]
    00220a3btest rdi, rdi
    00220a3eje 0x220a45
    00220a40cmp rsi, [rdi]
    00220a43je 0x2209c9
    00220a45
    00220a45loc_220a45:
    00220a45xor eax, eax
    00220a47jmp 0x220a1c
    00220a49
    00220a49loc_220a49:
    00220a49call fn_f4590
    002208e0
    00220a4e
    00220a4e // align 0x10
    00220a50
    00220a50caml_skiplist_empty:
    00220a50push rbp
    00220a51mov rbp, rdi
    00220a54push rbx
    00220a55sub rsp, 8
    00220a59mov rbx, [rdi]
    00220a5ctest rbx, rbx
    00220a5fje 0x220a81
    00220a61nop [rax+rax]
    00220a6cmov rdi, rbx
    00220a6fmov rbx, [rbx+16]
    00220a73call caml_stat_free
    00220a78test rbx, rbx
    00220a7bjne 0x220a70
    00220a7dmov eax, [rbp+136]
    00220a83test eax, eax
    00220a85js 0x220a9c
    00220a87lea edx, [rax+1]
    00220a8axor esi, esi
    00220a8cmov rdi, rbp
    00220a8fshl rdx, 3
    00220a93call fn_f40e0
    00220a98mov [rbp+136], 0
    00220aa2add rsp, 8
    00220aa6pop rbx
    00220aa7pop rbp
    00220aa8ret
    00220aa9db 0x08
    00220aaapop rbx
    00220aabpop rbp
    00220aacret
    00220a50
    00220aad
    00220aad // align 0x10
    00220ab0
    00220ab0fn_220ab0:
    00220ab0push r13
    00220ab2push r12
    00220ab4push rbp
    00220ab5mov rbp, rsi
    00220ab8lea rsi, [rip+59869]
    00220abfpush rbx
    00220ac0mov rbx, rdi
    00220ac3sub rsp, 24
    00220ac7mov rax, [0x28]
    00220ad0mov [rsp+8], rax
    00220ad5xor eax, eax
    00220ad7lea r13, [rsp+3]
    00220adclea r12, [rsp+4]
    00220ae1mov [rsp+3], 32
    00220ae6mov rcx, r13
    00220ae9mov rdx, r12
    00220aecmov [rsp+4], 1
    00220af4call fn_f4200
    00220af9mov rdx, r12
    00220afcmov rcx, r13
    00220affmov rdi, rbx
    00220b02lea rsi, [rip+59801]
    00220b09xor eax, eax
    00220b0bcall fn_f4200
    00220b10movzx edx, [rsp+3]
    00220b15mov eax, [rsp+4]
    00220b19cmp dl, 77
    00220b1cje 0x220b60
    00220b1ecmp dl, 107
    00220b21je 0x220b50
    00220b23mov rcx, rax
    00220b26shl rcx, 30
    00220b2acmp dl, 71
    00220b2dcmove rax, rcx
    00220b31
    00220b31loc_220b31:
    00220b31mov [rbp], rax
    00220b35mov rax, [rsp+8]
    00220b3asub rax, [0x28]
    00220b43jne 0x220b66
    00220b45add rsp, 24
    00220b49pop rbx
    00220b4apop rbp
    00220b4bpop r12
    00220b4dpop r13
    00220b4fret
    00220b50
    00220b50loc_220b50:
    00220b50shl rax, 10
    00220b54jmp 0x220b31
    00220b56
    00220b56 66 2e 0f 1f 84 00 00 00 00 00 f.........
    00220b60
    00220b60loc_220b60:
    00220b60shl rax, 20
    00220b64jmp 0x220b31
    00220b66
    00220b66loc_220b66:
    00220b66call fn_f4590
    00220ab0
    00220b6b
    00220b6b // align 0x10
    00220b70
    00220b70caml_parse_ocamlrunparam:
    00220b70push rbp
    00220b71lea rdi, [rip+59694]
    00220b78push rbx
    00220b79sub rsp, 24
    00220b7dmovdqa x1, [rip+38407]
    00220b85movdqa x0, [rip+38383]
    00220b8dmov rax, [0x28]
    00220b96mov [rsp+8], rax
    00220b9bxor eax, eax
    00220b9dmov [rip+0x1585d4], 128
    00220ba8movaps [rip+0x15857d], x1
    00220bafmovdqa x1, [rip+38373]
    00220bb7movups [rip+0x158546], x0
    00220bbepxor x0, x0
    00220bc2movaps [rip+0x158573], x1
    00220bc9movdqa x1, [rip+38363]
    00220bd1movaps [rip+0x158544], x0
    00220bd8movaps [rip+0x15856d], x1
    00220bdfmovaps [rip+0x158586], x0
    00220be6call caml_secure_getenv
    00220bebmov rbx, rax
    00220beetest rax, rax
    00220bf1je 0x220da7
    00220bf7lea rbp, [rip+0x119ae]
    00220bfemovzx eax, [rbx]
    00220c01test al, al
    00220c03je 0x220c46
    00220c05sub eax, 44
    00220c08add rbx, 1
    00220c0ccmp al, 74
    00220c0eja 0x220c38
    00220c10movzx eax, al
    00220c13movsxd rax, [rbp+4*rax]
    00220c18add rax, rbp
    00220c1bjmp rax
    00220c1enop [rax+rax]
    00220c29nop [rax]
    00220c2cadd rbx, 1
    00220c30
    00220c30loc_220c30:
    00220c30cmp al, 44
    00220c32je 0x220c02
    00220c34movzx eax, [rbx]
    00220c37test al, al
    00220c39jne 0x220c30
    00220c3bmovzx eax, [rbx]
    00220c3etest al, al
    00220c40jne 0x220c09
    00220c42mov rax, [rip+0x158533]
    00220c49test rax, rax
    00220c4cje 0x220dc4
    00220c52cmp rax, 4096
    00220c58ja 0x220dd7
    00220c5emov rax, [rsp+8]
    00220c63sub rax, [0x28]
    00220c6cjne 0x220dd2
    00220c72add rsp, 24
    00220c76pop rbx
    00220c77pop rbp
    00220c78ret
    00220c79mov rsi, rsp
    00220c7cmov rdi, rbx
    00220c7fcall fn_220ab0
    00220c84mov rax, [rsp]
    00220c88mov [rip+0x157f9d], rax
    00220c8fjmp 0x220c38
    00220c91lea rsi, [rip+0x15846c]
    00220c98mov rdi, rbx
    00220c9bcall fn_220ab0
    00220ca0jmp 0x220c38
    00220ca2lea rsi, [rip+0x15848b]
    00220ca9mov rdi, rbx
    00220caccall fn_220ab0
    00220cb1jmp 0x220c38
    00220cb3lea rsi, [rip+0x158442]
    00220cbamov rdi, rbx
    00220cbdcall fn_220ab0
    00220cc2jmp 0x220c38
    00220cc7lea rsi, [rip+0x15845e]
    00220ccemov rdi, rbx
    00220cd1call fn_220ab0
    00220cd6jmp 0x220c38
    00220cdblea rsi, [rip+0x15846a]
    00220ce2mov rdi, rbx
    00220ce5call fn_220ab0
    00220ceajmp 0x220c38
    00220ceflea rsi, [rip+0x15844e]
    00220cf6mov rdi, rbx
    00220cf9call fn_220ab0
    00220cfejmp 0x220c38
    00220d03lea rsi, [rip+0x15844a]
    00220d0amov rdi, rbx
    00220d0dcall fn_220ab0
    00220d12jmp 0x220c38
    00220d17lea rsi, [rip+0x1583ee]
    00220d1emov rdi, rbx
    00220d21call fn_220ab0
    00220d26jmp 0x220c38
    00220d2blea rsi, [rip+0x15844a]
    00220d32mov rdi, rbx
    00220d35call fn_220ab0
    00220d3ajmp 0x220c38
    00220d3flea rsi, [rip+0x158426]
    00220d46mov rdi, rbx
    00220d49call fn_220ab0
    00220d4ejmp 0x220c38
    00220d53lea rsi, [rip+0x158402]
    00220d5amov rdi, rbx
    00220d5dcall fn_220ab0
    00220d62jmp 0x220c38
    00220d67lea rsi, [rip+0x157eae]
    00220d6emov rdi, rbx
    00220d71call fn_220ab0
    00220d76jmp 0x220c38
    00220d7blea rsi, [rip+0x158392]
    00220d82mov rdi, rbx
    00220d85call fn_220ab0
    00220d8ajmp 0x220c38
    00220d8flea rsi, [rip+0x1583a6]
    00220d96mov rdi, rbx
    00220d99call fn_220ab0
    00220d9ejmp 0x220c38
    00220da3lea rdi, [rip+59133]
    00220daacall caml_secure_getenv
    00220dafmov rbx, rax
    00220db2test rax, rax
    00220db5je 0x220c46
    00220dbbjmp 0x220bfb
    00220dc0lea rdi, [rip+0x1066d]
    00220dc7xor eax, eax
    00220dc9call caml_fatal_error
    00220dcecall fn_f4590
    00220dd3mov esi, 4096
    00220dd8lea rdi, [rip+0x1068d]
    00220ddfxor eax, eax
    00220de1call caml_fatal_error
    00220de6db 0x46
    00220de7db 0xa0
    00220de8db 0xff
    00220de9db 0xff
    00220b70
    00220dea
    00220dea // align 0x10
    00220df0
    00220df0caml_startup_aux:
    00220df0sub rsp, 8
    00220df4cmp [rip+0x1582c1], 1
    00220dfbje 0x220e3c
    00220dfdmov eax, [rip+0x1582bd]
    00220e03xor edx, edx
    00220e05add eax, 1
    00220e08mov [rip+0x1582b2], eax
    00220e0ecmp eax, 1
    00220e11jg 0x220e20
    00220e13test edi, edi
    00220e15jne 0x220e30
    00220e17mov edx, 1
    00220e1cmov eax, edx
    00220e1eadd rsp, 8
    00220e22ret
    00220e23db 0x83
    00220e24db 0xc4
    00220e25or bl, al
    00220e27
    00220e27 66 0f 1f 84 00 00 00 00 00 f........
    00220e30
    00220e30loc_220e30:
    00220e30call caml_stat_create_pool
    00220e35mov edx, 1
    00220e3ajmp 0x220e20
    00220e3c
    00220e3cloc_220e3c:
    00220e3clea rdi, [rip+0x10675]
    00220e43xor eax, eax
    00220e45call caml_fatal_error
    00220df0
    00220e4a
    00220e4a // align 0x10
    00220e50
    00220e50caml_shutdown:
    00220e50sub rsp, 8
    00220e54mov rax, [rip+0x55189]
    00220e5bcmp [rax], 0
    00220e60je 0x220ef0
    00220e66mov eax, [rip+0x158254]
    00220e6ctest eax, eax
    00220e6ejle 0x220ef5
    00220e74sub eax, 1
    00220e77mov [rip+0x158243], eax
    00220e7dtest eax, eax
    00220e7fjle 0x220e90
    00220e81add rsp, 8
    00220e85ret
    00220e86db 0x83
    00220e87db 0xc4
    00220e88or bl, al
    00220e8a
    00220e8a 66 0f 1f 44 00 00 f..D..
    00220e90
    00220e90loc_220e90:
    00220e90lea rdi, [rip+58913]
    00220e97call caml_named_value
    00220e9ctest rax, rax
    00220e9fje 0x220eae
    00220ea1mov rdi, [rax]
    00220ea4mov esi, 1
    00220ea9call caml_callback_res
    00220eae
    00220eaeloc_220eae:
    00220eaelea rdi, [rip+58905]
    00220eb5call caml_named_value
    00220ebatest rax, rax
    00220ebdje 0x220ecc
    00220ebfmov rdi, [rax]
    00220ec2mov esi, 1
    00220ec7call caml_callback_res
    00220ecc
    00220eccloc_220ecc:
    00220ecccall caml_finalise_heap
    00220ed1call caml_free_locale
    00220ed6call caml_stat_destroy_pool
    00220edbcall caml_terminate_signals
    00220ee0mov [rip+0x1581d6], 1
    00220eeaadd rsp, 8
    00220eeeret
    00220eef
    00220eef 90 .
    00220ef0
    00220ef0loc_220ef0:
    00220ef0call caml_bad_caml_state
    00220ef5
    00220ef5loc_220ef5:
    00220ef5lea rdi, [rip+0x1060c]
    00220efcxor eax, eax
    00220efecall caml_fatal_error
    00220e50
    00220f03
    00220f03 // align 0x10
    00220f10
    00220f10caml_init_exe_name:
    00220f10mov [rip+0x1581c5], rdi
    00220f17ret
    00220f18db 0x81
    00220f19db 0x15
    00220f1aadd bl, al
    00220f10
    00220f1c
    00220f1c // align 0x10
    00220f20
    00220f20caml_init_section_table:
    00220f20mov [rip+0x1581bd], rdi
    00220f27mov [rip+0x1581be], rsi
    00220f2eret
    00220f2fdb 0x81
    00220f30db 0x15
    00220f31add bl, al
    00220f20
    00220f33
    00220f33 // align 0x10
    00220f40
    00220f40caml_string_length:
    00220f40mov rdx, [rdi-8]
    00220f44shr rdx, 10
    00220f48shl rdx, 3
    00220f4clea rax, [rdx-1]
    00220f50movsx rdx, [rdi+rdx-1]
    00220f56sub rax, rdx
    00220f59ret
    00220f5adb 0x48
    00220f5bsub eax, edx
    00220f5dret
    00220f40
    00220f5e
    00220f5e // align 0x10
    00220f60
    00220f60caml_ml_string_length:
    00220f60mov rax, [rdi-8]
    00220f64shr rax, 10
    00220f68shl rax, 3
    00220f6cmovsx rcx, [rdi+rax-1]
    00220f72lea rdx, [rax-1]
    00220f76mov rax, rdx
    00220f79sub rax, rcx
    00220f7clea rax, [rax+rax+1]
    00220f81ret
    00220f82db 0x44
    00220f83add [rcx], al
    00220f85ret
    00220f60
    00220f86
    00220f86 // align 0x10
    00220f90
    00220f90caml_ml_bytes_length:
    00220f90mov rax, [rdi-8]
    00220f94shr rax, 10
    00220f98shl rax, 3
    00220f9cmovsx rcx, [rdi+rax-1]
    00220fa2lea rdx, [rax-1]
    00220fa6mov rax, rdx
    00220fa9sub rax, rcx
    00220faclea rax, [rax+rax+1]
    00220fb1ret
    00220fb2db 0x44
    00220fb3add [rcx], al
    00220fb5ret
    00220f90
    00220fb6
    00220fb6 // align 0x10
    00220fc0
    00220fc0caml_string_is_c_safe:
    00220fc0push rbx
    00220fc1mov rbx, rdi
    00220fc4call fn_f43a0
    00220fc9mov rcx, rax
    00220fccmov rax, [rbx-8]
    00220fd0shr rax, 10
    00220fd4shl rax, 3
    00220fd8movsx rsi, [rbx+rax-1]
    00220fdelea rdx, [rax-1]
    00220fe2pop rbx
    00220fe3mov rax, rdx
    00220fe6sub rax, rsi
    00220fe9cmp rax, rcx
    00220fecsete al
    00220fefmovzx eax, al
    00220ff2ret
    00220ff3db 0x0f
    00220ff4mov dh, 192
    00220ff6ret
    00220fc0
    00220ff7
    00220ff7 // align 0x10
    00221000
    00221000caml_create_string:
    00221000mov rax, 0x1fffffffffffff7
    0022100asar rdi, 1
    0022100dcmp rax, rdi
    00221010jb 0x22101b
    00221012jmp 0x1f8ac0
    00221017push rax
    00221018lea rdi, [rip+58558]
    0022101fcall caml_invalid_argument
    00221024db 0xd8
    00221025pop rcx
    00221026db 0xfe
    00221027db 0xff
    00221000
    00221028
    00221028 // align 0x10
    00221030
    00221030caml_create_bytes:
    00221030mov rax, 0x1fffffffffffff7
    0022103asar rdi, 1
    0022103dcmp rax, rdi
    00221040jb 0x22104b
    00221042jmp 0x1f8ac0
    00221047push rax
    00221048lea rdi, [rip+58524]
    0022104fcall caml_invalid_argument
    00221054db 0xa8
    00221055pop rcx
    00221056db 0xfe
    00221057db 0xff
    00221030
    00221058
    00221058 // align 0x10
    00221060
    00221060caml_string_get:
    00221060sar rsi, 1
    00221063js 0x221094
    00221065mov rax, [rdi-8]
    00221069shr rax, 10
    0022106dshl rax, 3
    00221071movsx rcx, [rdi+rax-1]
    00221077lea rdx, [rax-1]
    0022107bmov rax, rdx
    0022107esub rax, rcx
    00221081cmp rsi, rax
    00221084jae 0x221094
    00221086movzx eax, [rsi+rdi]
    0022108alea rax, [rax+rax+1]
    0022108fret
    00221090push rax
    00221091call caml_array_bound_error
    00221096db 0x66
    00221097pop rdx
    00221098db 0xfe
    00221099db 0xff
    00221060
    0022109a
    0022109a // align 0x10
    002210a0
    002210a0caml_bytes_get:
    002210a0sar rsi, 1
    002210a3js 0x2210d4
    002210a5mov rax, [rdi-8]
    002210a9shr rax, 10
    002210adshl rax, 3
    002210b1movsx rcx, [rdi+rax-1]
    002210b7lea rdx, [rax-1]
    002210bbmov rax, rdx
    002210besub rax, rcx
    002210c1cmp rsi, rax
    002210c4jae 0x2210d4
    002210c6movzx eax, [rsi+rdi]
    002210calea rax, [rax+rax+1]
    002210cfret
    002210d0push rax
    002210d1call caml_array_bound_error
    002210d6db 0x26
    002210d7pop rdx
    002210d8db 0xfe
    002210d9db 0xff
    002210a0
    002210da
    002210da // align 0x10
    002210e0
    002210e0caml_bytes_set:
    002210e0sar rsi, 1
    002210e3js 0x221116
    002210e5mov rax, [rdi-8]
    002210e9shr rax, 10
    002210edshl rax, 3
    002210f1movsx r8, [rdi+rax-1]
    002210f7lea rcx, [rax-1]
    002210fbmov rax, rcx
    002210fesub rax, r8
    00221101cmp rsi, rax
    00221104jae 0x221116
    00221106sar rdx, 1
    00221109mov eax, 1
    0022110emov [rsi+rdi], dl
    00221111ret
    00221112push rax
    00221113call caml_array_bound_error
    00221118db 0xe4
    00221119pop rcx
    0022111adb 0xfe
    0022111bdb 0xff
    002210e0
    0022111c
    0022111c // align 0x10
    00221120
    00221120caml_string_set:
    00221120sar rsi, 1
    00221123js 0x221156
    00221125mov rax, [rdi-8]
    00221129shr rax, 10
    0022112dshl rax, 3
    00221131movsx r8, [rdi+rax-1]
    00221137lea rcx, [rax-1]
    0022113bmov rax, rcx
    0022113esub rax, r8
    00221141cmp rsi, rax
    00221144jae 0x221156
    00221146sar rdx, 1
    00221149mov eax, 1
    0022114emov [rsi+rdi], dl
    00221151ret
    00221152push rax
    00221153call caml_array_bound_error
    00221158db 0xa4
    00221159pop rcx
    0022115adb 0xfe
    0022115bdb 0xff
    00221120
    0022115c
    0022115c // align 0x10
    00221160
    00221160caml_string_get16:
    00221160sar rsi, 1
    00221163js 0x2211a5
    00221165mov rax, [rdi-8]
    00221169lea rcx, [rsi+1]
    0022116dshr rax, 10
    00221171shl rax, 3
    00221175movsx r8, [rdi+rax-1]
    0022117blea rdx, [rax-1]
    0022117fmov rax, rdx
    00221182sub rax, r8
    00221185cmp rcx, rax
    00221188jae 0x2211a5
    0022118aadd rsi, rdi
    0022118dmovzx eax, [rsi+1]
    00221191movzx edx, [rsi]
    00221194shl eax, 8
    00221197or eax, edx
    00221199cdqe
    0022119blea rax, [rax+rax+1]
    002211a0ret
    002211a1push rax
    002211a2call caml_array_bound_error
    002211a7push rbp
    002211a8pop rcx
    002211a9db 0xfe
    002211aadb 0xff
    00221160
    002211ab
    002211ab // align 0x10
    002211b0
    002211b0caml_bytes_get16:
    002211b0sar rsi, 1
    002211b3js 0x2211f5
    002211b5mov rax, [rdi-8]
    002211b9lea rcx, [rsi+1]
    002211bdshr rax, 10
    002211c1shl rax, 3
    002211c5movsx r8, [rdi+rax-1]
    002211cblea rdx, [rax-1]
    002211cfmov rax, rdx
    002211d2sub rax, r8
    002211d5cmp rcx, rax
    002211d8jae 0x2211f5
    002211daadd rsi, rdi
    002211ddmovzx eax, [rsi+1]
    002211e1movzx edx, [rsi]
    002211e4shl eax, 8
    002211e7or eax, edx
    002211e9cdqe
    002211eblea rax, [rax+rax+1]
    002211f0ret
    002211f1push rax
    002211f2call caml_array_bound_error
    002211f7db 0x05
    002211f8pop rcx
    002211f9db 0xfe
    002211fadb 0xff
    002211b0
    002211fb
    002211fb // align 0x10
    00221200
    00221200caml_string_get32:
    00221200sar rsi, 1
    00221203js 0x221254
    00221205mov rax, [rdi-8]
    00221209lea rcx, [rsi+3]
    0022120dshr rax, 10
    00221211shl rax, 3
    00221215movsx r8, [rdi+rax-1]
    0022121blea rdx, [rax-1]
    0022121fmov rax, rdx
    00221222sub rax, r8
    00221225cmp rcx, rax
    00221228jae 0x221254
    0022122aadd rsi, rdi
    0022122dmovzx edi, [rsi+3]
    00221231movzx eax, [rsi+2]
    00221235shl edi, 24
    00221238shl eax, 16
    0022123bor edi, eax
    0022123dmovzx eax, [rsi]
    00221240or edi, eax
    00221242movzx eax, [rsi+1]
    00221246shl eax, 8
    00221249or edi, eax
    0022124bjmp 0x20d4a0
    00221250push rax
    00221251call caml_array_bound_error
    00221256db 0xa6
    00221257pop rax
    00221258db 0xfe
    00221259db 0xff
    00221200
    0022125a
    0022125a // align 0x10
    00221260
    00221260caml_bytes_get32:
    00221260jmp 0x221200
    00221265db 0x97
    00221266db 0xff
    00221267db 0xff
    00221268db 0xff
    00221260
    00221269
    00221269 // align 0x10
    00221270
    00221270caml_string_get64:
    00221270sar rsi, 1
    00221273js 0x2212f6
    00221275mov rax, [rdi-8]
    00221279lea rcx, [rsi+7]
    0022127dshr rax, 10
    00221281shl rax, 3
    00221285movsx r8, [rdi+rax-1]
    0022128blea rdx, [rax-1]
    0022128fmov rax, rdx
    00221292sub rax, r8
    00221295cmp rcx, rax
    00221298jae 0x2212f6
    0022129aadd rsi, rdi
    0022129dmovzx edi, [rsi+7]
    002212a1movzx eax, [rsi+6]
    002212a5shl rdi, 56
    002212a9shl rax, 48
    002212ador rdi, rax
    002212b0movzx eax, [rsi]
    002212b3or rdi, rax
    002212b6movzx eax, [rsi+5]
    002212bashl rax, 40
    002212beor rdi, rax
    002212c1movzx eax, [rsi+4]
    002212c5shl rax, 32
    002212c9or rdi, rax
    002212ccmovzx eax, [rsi+3]
    002212d0shl rax, 24
    002212d4or rdi, rax
    002212d7movzx eax, [rsi+2]
    002212dbshl rax, 16
    002212dfor rdi, rax
    002212e2movzx eax, [rsi+1]
    002212e6shl rax, 8
    002212eaor rdi, rax
    002212edjmp 0x20d9d0
    002212f2push rax
    002212f3call caml_array_bound_error
    002212f8db 0x04
    002212f9pop rax
    002212fadb 0xfe
    002212fbdb 0xff
    00221270
    002212fc
    002212fc // align 0x10
    00221300
    00221300caml_bytes_get64:
    00221300jmp 0x221270
    00221305db 0x67
    00221306db 0xff
    00221307db 0xff
    00221308db 0xff
    00221300
    00221309
    00221309 // align 0x10
    00221310
    00221310caml_bytes_set16:
    00221310sar rsi, 1
    00221313js 0x221356
    00221315mov rax, [rdi-8]
    00221319lea r8, [rsi+1]
    0022131dshr rax, 10
    00221321shl rax, 3
    00221325movsx r9, [rdi+rax-1]
    0022132blea rcx, [rax-1]
    0022132fmov rax, rcx
    00221332sub rax, r9
    00221335cmp r8, rax
    00221338jae 0x221356
    0022133amov rax, rdx
    0022133dadd rsi, rdi
    00221340sar rdx, 9
    00221344sar rax, 1
    00221347mov [rsi+1], dl
    0022134amov [rsi], al
    0022134cmov eax, 1
    00221351ret
    00221352push rax
    00221353call caml_array_bound_error
    00221358db 0xa4
    00221359push rdi
    0022135adb 0xfe
    0022135bdb 0xff
    00221310
    0022135c
    0022135c // align 0x10
    00221360
    00221360caml_bytes_set32:
    00221360sar rsi, 1
    00221363js 0x22139a
    00221365mov rax, [rdi-8]
    00221369lea r8, [rsi+3]
    0022136dshr rax, 10
    00221371shl rax, 3
    00221375movsx r9, [rdi+rax-1]
    0022137blea rcx, [rax-1]
    0022137fmov rax, rcx
    00221382sub rax, r9
    00221385cmp r8, rax
    00221388jae 0x22139a
    0022138amov eax, [rdx+8]
    0022138dmov [rsi+rdi], eax
    00221390mov eax, 1
    00221395ret
    00221396push rax
    00221397call caml_array_bound_error
    0022139cdb 0x60
    0022139dpush rdi
    0022139edb 0xfe
    0022139fdb 0xff
    00221360
    002213a0
    002213a0caml_bytes_set64:
    002213a0sar rsi, 1
    002213a3js 0x2213dc
    002213a5mov rax, [rdi-8]
    002213a9lea r8, [rsi+7]
    002213adshr rax, 10
    002213b1shl rax, 3
    002213b5movsx r9, [rdi+rax-1]
    002213bblea rcx, [rax-1]
    002213bfmov rax, rcx
    002213c2sub rax, r9
    002213c5cmp r8, rax
    002213c8jae 0x2213dc
    002213camov rax, [rdx+8]
    002213cemov [rsi+rdi], rax
    002213d2mov eax, 1
    002213d7ret
    002213d8push rax
    002213d9call caml_array_bound_error
    002213dedb 0x1e
    002213dfpush rdi
    002213e0db 0xfe
    002213e1db 0xff
    002213a0
    002213e2
    002213e2 // align 0x20
    00221400
    00221400caml_string_equal:
    00221400cmp rdi, rsi
    00221403je 0x221460
    00221405mov rax, [rdi-8]
    00221409mov rdx, [rsi-8]
    0022140dmov ecx, 1
    00221412shr rax, 10
    00221416shr rdx, 10
    0022141acmp rax, rdx
    0022141djne 0x221458
    0022141ftest rax, rax
    00221422je 0x221460
    00221424sub rsi, rdi
    00221427jmp 0x22144a
    00221429db 0x29
    0022142adb 0xfe
    0022142bjmp 0x22144a
    0022142d
    0022142d 66 66 2e ff.
    00221430 0f 1f 84 00 00 00 00 00 0f 1f 84 00 00 00 00 00 ................
    00221440
    00221440loc_221440:
    00221440add rdi, 8
    00221444sub rax, 1
    00221448je 0x221460
    0022144a
    0022144aloc_22144a:
    0022144amov rcx, [rdi+rsi]
    0022144ecmp [rdi], rcx
    00221451je 0x221440
    00221453mov ecx, 1
    00221458
    00221458loc_221458:
    00221458mov rax, rcx
    0022145bret
    0022145c
    0022145c 0f 1f 40 00 ..@.
    00221460
    00221460loc_221460:
    00221460mov ecx, 3
    00221465mov rax, rcx
    00221468ret
    00221400
    00221469
    00221469 // align 0x10
    00221470
    00221470caml_bytes_equal:
    00221470jmp 0x221400
    00221475db 0x87
    00221476db 0xff
    00221477db 0xff
    00221478db 0xff
    00221470
    00221479
    00221479 // align 0x10
    00221480
    00221480caml_string_notequal:
    00221480call caml_string_equal
    00221485mov rdx, rax
    00221488mov eax, 4
    0022148dsub rax, rdx
    00221490ret
    00221491db 0x48
    00221492sub eax, edx
    00221494ret
    00221480
    00221495
    00221495 // align 0x10
    002214a0
    002214a0caml_bytes_notequal:
    002214a0call caml_string_equal
    002214a5mov rdx, rax
    002214a8mov eax, 4
    002214adsub rax, rdx
    002214b0ret
    002214b1db 0x48
    002214b2sub eax, edx
    002214b4ret
    002214a0
    002214b5
    002214b5 // align 0x10
    002214c0
    002214c0caml_string_compare:
    002214c0cmp rdi, rsi
    002214c3je 0x221538
    002214c5push rbp
    002214c6push rbx
    002214c7sub rsp, 8
    002214cbmov rax, [rdi-8]
    002214cfshr rax, 10
    002214d3shl rax, 3
    002214d7lea rbp, [rax-1]
    002214dbmovsx rax, [rdi+rax-1]
    002214e1sub rbp, rax
    002214e4mov rax, [rsi-8]
    002214e8mov rdx, rbp
    002214ebshr rax, 10
    002214efshl rax, 3
    002214f3lea rbx, [rax-1]
    002214f7movsx rax, [rsi+rax-1]
    002214fdsub rbx, rax
    00221500cmp rbx, rbp
    00221503cmovbe rdx, rbx
    00221507call fn_f4600
    0022150ctest eax, eax
    0022150ejs 0x22153e
    00221510mov eax, 3
    00221515jg 0x22152a
    00221517cmp rbp, rbx
    0022151ajb 0x22153e
    0022151ccmp rbx, rbp
    0022151fjb 0x22152a
    00221521mov eax, 1
    00221526add rsp, 8
    0022152a
    0022152aloc_22152a:
    0022152apop rbx
    0022152bpop rbp
    0022152cret
    0022152ddb 0x08
    0022152epop rbx
    0022152fpop rbp
    00221530ret
    00221531
    00221531 0f 1f 80 00 00 00 00 .......
    00221538
    00221538loc_221538:
    00221538mov eax, 1
    0022153dret
    0022153e
    0022153eloc_22153e:
    0022153emov rax, -1
    00221545jmp 0x22152a
    002214c0
    00221547
    00221547 // align 0x10
    00221550
    00221550caml_bytes_compare:
    00221550jmp 0x2214c0
    00221555db 0x67
    00221556db 0xff
    00221557db 0xff
    00221558db 0xff
    00221550
    00221559
    00221559 // align 0x10
    00221560
    00221560caml_string_lessthan:
    00221560sub rsp, 8
    00221564call caml_string_compare
    00221569test rax, rax
    0022156csetle al
    0022156fadd rsp, 8
    00221573movzx eax, al
    00221576lea rax, [rax+rax+1]
    0022157bret
    0022157cdb 0x44
    0022157dadd [rcx], al
    0022157fret
    00221560
    00221580
    00221580caml_bytes_lessthan:
    00221580sub rsp, 8
    00221584call caml_string_compare
    00221589test rax, rax
    0022158csetle al
    0022158fadd rsp, 8
    00221593movzx eax, al
    00221596lea rax, [rax+rax+1]
    0022159bret
    0022159cdb 0x44
    0022159dadd [rcx], al
    0022159fret
    00221580
    002215a0
    002215a0caml_string_lessequal:
    002215a0sub rsp, 8
    002215a4call caml_string_compare
    002215a9cmp rax, 1
    002215adsetle al
    002215b0add rsp, 8
    002215b4movzx eax, al
    002215b7lea rax, [rax+rax+1]
    002215bcret
    002215bddb 0x44
    002215beadd [rcx], al
    002215c0ret
    002215a0
    002215c1
    002215c1 // align 0x10
    002215d0
    002215d0caml_bytes_lessequal:
    002215d0sub rsp, 8
    002215d4call caml_string_compare
    002215d9cmp rax, 1
    002215ddsetle al
    002215e0add rsp, 8
    002215e4movzx eax, al
    002215e7lea rax, [rax+rax+1]
    002215ecret
    002215eddb 0x44
    002215eeadd [rcx], al
    002215f0ret
    002215d0
    002215f1
    002215f1 // align 0x10
    00221600
    00221600caml_string_greaterthan:
    00221600sub rsp, 8
    00221604call caml_string_compare
    00221609cmp rax, 1
    0022160dsetg al
    00221610add rsp, 8
    00221614movzx eax, al
    00221617lea rax, [rax+rax+1]
    0022161cret
    0022161ddb 0x44
    0022161eadd [rcx], al
    00221620ret
    00221600
    00221621
    00221621 // align 0x10
    00221630
    00221630caml_bytes_greaterthan:
    00221630sub rsp, 8
    00221634call caml_string_compare
    00221639cmp rax, 1
    0022163dsetg al
    00221640add rsp, 8
    00221644movzx eax, al
    00221647lea rax, [rax+rax+1]
    0022164cret
    0022164ddb 0x44
    0022164eadd [rcx], al
    00221650ret
    00221630
    00221651
    00221651 // align 0x10
    00221660
    00221660caml_string_greaterequal:
    00221660sub rsp, 8
    00221664call caml_string_compare
    00221669test rax, rax
    0022166csetg al
    0022166fadd rsp, 8
    00221673movzx eax, al
    00221676lea rax, [rax+rax+1]
    0022167bret
    0022167cdb 0x44
    0022167dadd [rcx], al
    0022167fret
    00221660
    00221680
    00221680caml_bytes_greaterequal:
    00221680sub rsp, 8
    00221684call caml_string_compare
    00221689test rax, rax
    0022168csetg al
    0022168fadd rsp, 8
    00221693movzx eax, al
    00221696lea rax, [rax+rax+1]
    0022169bret
    0022169cdb 0x44
    0022169dadd [rcx], al
    0022169fret
    00221680
    002216a0
    002216a0caml_blit_bytes:
    002216a0sar rcx, 1
    002216a3mov rax, rdx
    002216a6sar rsi, 1
    002216a9mov rdx, r8
    002216acsub rsp, 8
    002216b0add rsi, rdi
    002216b3sar rdx, 1
    002216b6lea rdi, [rcx+rax]
    002216bacall fn_f4520
    002216bfmov eax, 1
    002216c4add rsp, 8
    002216c8ret
    002216c9db 0x83
    002216cadb 0xc4
    002216cbor bl, al
    002216a0
    002216cd
    002216cd // align 0x10
    002216d0
    002216d0caml_blit_string:
    002216d0sar rcx, 1
    002216d3mov rax, rdx
    002216d6sar rsi, 1
    002216d9mov rdx, r8
    002216dcsub rsp, 8
    002216e0add rsi, rdi
    002216e3sar rdx, 1
    002216e6lea rdi, [rcx+rax]
    002216eacall fn_f4520
    002216efmov eax, 1
    002216f4add rsp, 8
    002216f8ret
    002216f9db 0x83
    002216fadb 0xc4
    002216fbor bl, al
    002216d0
    002216fd
    002216fd // align 0x10
    00221700
    00221700caml_fill_bytes:
    00221700sar rcx, 1
    00221703sar rsi, 1
    00221706sub rsp, 8
    0022170aadd rdi, rsi
    0022170dsar rdx, 1
    00221710mov esi, ecx
    00221712call fn_f40e0
    00221717mov eax, 1
    0022171cadd rsp, 8
    00221720ret
    00221721db 0x83
    00221722db 0xc4
    00221723or bl, al
    00221700
    00221725
    00221725 // align 0x10
    00221730
    00221730caml_fill_string:
    00221730sar rcx, 1
    00221733sar rsi, 1
    00221736sub rsp, 8
    0022173aadd rdi, rsi
    0022173dsar rdx, 1
    00221740mov esi, ecx
    00221742call fn_f40e0
    00221747mov eax, 1
    0022174cadd rsp, 8
    00221750ret
    00221751db 0x83
    00221752db 0xc4
    00221753or bl, al
    00221730
    00221755
    00221755 // align 0x10
    00221760
    00221760caml_alloc_sprintf:
    00221760push r14
    00221762push r13
    00221764push r12
    00221766push rbp
    00221767mov rbp, rdi
    0022176apush rbx
    0022176bsub rsp, 352
    00221772mov [rsp+184], rsi
    0022177amov [rsp+192], rdx
    00221782mov [rsp+200], rcx
    0022178amov [rsp+208], r8
    00221792mov [rsp+216], r9
    0022179atest al, al
    0022179cje 0x2217e2
    0022179emovaps [rsp+224], x0
    002217a6movaps [rsp+240], x1
    002217aemovaps [rsp+256], x2
    002217b6movaps [rsp+272], x3
    002217bemovaps [rsp+288], x4
    002217c6movaps [rsp+304], x5
    002217cemovaps [rsp+320], x6
    002217d6movaps [rsp+336], x7
    002217demov rax, [0x28]
    002217e7mov [rsp+168], rax
    002217efxor eax, eax
    002217f1lea r12, [rsp+8]
    002217f6lea r13, [rsp+32]
    002217fbmov r8, rbp
    002217femov r9, r12
    00221801mov ecx, 128
    00221806mov edx, 1
    0022180bmov rdi, r13
    0022180elea rax, [rsp+400]
    00221816mov esi, 128
    0022181bmov [rsp+8], 8
    00221823mov [rsp+16], rax
    00221828lea rax, [rsp+176]
    00221830mov [rsp+12], 48
    00221838mov [rsp+24], rax
    0022183dcall fn_f4310
    00221842mov ebx, eax
    00221844test eax, eax
    00221846js 0x221905
    0022184cmovsxd r14, eax
    0022184fcmp eax, 127
    00221852jbe 0x2218f0
    00221858mov rdi, rbp
    0022185bcall caml_stat_strdup
    00221860mov rdi, r14
    00221863mov r13, rax
    00221866call caml_alloc_string
    0022186blea esi, [rbx+1]
    0022186emov r9, r12
    00221871mov r8, r13
    00221874mov rbp, rax
    00221877lea rax, [rsp+400]
    0022187fmovsxd rsi, esi
    00221882mov rcx, -1
    00221889mov [rsp+16], rax
    0022188emov rdi, rbp
    00221891lea rax, [rsp+176]
    00221899mov edx, 1
    0022189emov [rsp+8], 8
    002218a6mov [rsp+12], 48
    002218aemov [rsp+24], rax
    002218b3call fn_f4310
    002218b8mov rdi, r13
    002218bbcall caml_stat_free
    002218c0mov rax, [rsp+168]
    002218c8sub rax, [0x28]
    002218d1jne 0x221900
    002218d3add rsp, 352
    002218damov rax, rbp
    002218ddpop rbx
    002218depop rbp
    002218dfpop r12
    002218e1pop r13
    002218e3pop r14
    002218e5ret
    002218e6db 0x5d
    002218e7pop r14
    002218e9ret
    002218ea
    002218ea 66 0f 1f 44 00 00 f..D..
    002218f0
    002218f0loc_2218f0:
    002218f0mov rsi, r13
    002218f3mov rdi, r14
    002218f6call caml_alloc_initialized_string
    002218fbmov rbp, rax
    002218fejmp 0x2218c4
    00221900
    00221900loc_221900:
    00221900call fn_f4590
    00221905
    00221905loc_221905:
    00221905call caml_raise_out_of_memory
    00221760
    0022190a
    0022190a // align 0x10
    00221910
    00221910caml_string_of_bytes:
    00221910mov rax, rdi
    00221913ret
    00221914db 0x48
    00221915mov eax, edi
    00221917ret
    00221910
    00221918
    00221918 // align 0x10
    00221920
    00221920caml_bytes_of_string:
    00221920mov rax, rdi
    00221923ret
    00221924db 0x48
    00221925mov eax, edi
    00221927ret
    00221920
    00221928
    00221928 // align 0x10
    00221930
    00221930fn_221930:
    00221930mov rdx, [rsi+8]
    00221934xor eax, eax
    00221936cmp [rdi+8], rdx
    0022193aje 0x221945
    0022193csbb eax, eax
    0022193eor eax, 1
    00221941ret
    00221942db 0x83
    00221943db 0xc8
    00221944add ebx, eax
    00221930
    00221946
    00221946 // align 0x10
    00221950
    00221950fn_221950:
    00221950mov rax, [rdi+8]
    00221954ret
    00221955db 0x8b
    00221956or r11b, r8b
    00221950
    00221959
    00221959 // align 0x10
    00221960
    00221960fn_221960:
    00221960mov rdx, [rsi+8]
    00221964xor eax, eax
    00221966cmp [rdi+8], rdx
    0022196aje 0x221975
    0022196csbb eax, eax
    0022196eor eax, 1
    00221971ret
    00221972db 0x83
    00221973db 0xc8
    00221974add ebx, eax
    00221960
    00221976
    00221976 // align 0x10
    00221980
    00221980fn_221980:
    00221980mov rax, [rdi+8]
    00221984ret
    00221985db 0x8b
    00221986or r11b, r8b
    00221980
    00221989
    00221989 // align 0x10
    00221990
    00221990fn_221990:
    00221990push r15
    00221992mov edx, 1024
    00221997push r14
    00221999push r13
    0022199bpush r12
    0022199dpush rbp
    0022199epush rbx
    0022199fsub rsp, 1048
    002219a6mov r14, [0x28]
    002219afmov [rsp+1032], r14
    002219b7mov r14, rsi
    002219bamov rsi, rsp
    002219bdcall caml_strerror
    002219c2mov r12, rax
    002219c5mov rdi, r14
    002219c8call fn_f43a0
    002219cdmov rdi, r12
    002219d0mov rbx, rax
    002219d3call fn_f43a0
    002219d8movsxd r15, ebx
    002219dblea edi, [rax+rbx+2]
    002219dfmov r13, rax
    002219e2movsxd rdi, edi
    002219e5call caml_alloc_string
    002219eamov rdx, r15
    002219edmov rsi, r14
    002219f0mov rdi, rax
    002219f3mov rbp, rax
    002219f6call fn_f47d0
    002219fbmov eax, 8250
    00221a00lea edi, [rbx+2]
    00221a03movsxd rdx, r13l
    00221a06mov [r15+rbp], ax
    00221a0bmovsxd rdi, edi
    00221a0emov rsi, r12
    00221a11add rdi, rbp
    00221a14call fn_f47d0
    00221a19mov rdi, rbp
    00221a1ccall caml_raise_sys_error
    00221990
    00221a21
    00221a21 // align 0x10
    00221a30
    00221a30fn_221a30:
    00221a30push rbx
    00221a31mov rbx, [rdi+8]
    00221a35mov rdi, rbx
    00221a38call fn_f4060
    00221a3dmov rdi, rbx
    00221a40pop rbx
    00221a41jmp 0x216690
    00221a46db 0x46
    00221a47db 0x4c
    00221a48db 0xff
    00221a49db 0xff
    00221a30
    00221a4a
    00221a4a // align 0x10
    00221a50
    00221a50fn_221a50:
    00221a50push rbx
    00221a51mov rbx, [rdi+8]
    00221a55mov rdi, rbx
    00221a58call fn_f4750
    00221a5dmov rdi, rbx
    00221a60pop rbx
    00221a61jmp 0x216690
    00221a66db 0x26
    00221a67db 0x4c
    00221a68db 0xff
    00221a69db 0xff
    00221a50
    00221a6a
    00221a6a // align 0x10
    00221a70
    00221a70caml_mutex_lock:
    00221a70jmp 0xf4710
    00221a75db 0x97
    00221a76sub al, -19
    00221a78db 0xff
    00221a70
    00221a79
    00221a79 // align 0x10
    00221a80
    00221a80caml_mutex_unlock:
    00221a80jmp 0xf47c0
    00221a85db 0x37
    00221a86db 0x2d
    00221a87in eax, dx
    00221a88db 0xff
    00221a80
    00221a89
    00221a89 // align 0x10
    00221a90
    00221a90caml_ml_mutex_new:
    00221a90push r12
    00221a92push rbp
    00221a93push rbx
    00221a94sub rsp, 16
    00221a98mov rbp, [0x28]
    00221aa1mov [rsp+8], rbp
    00221aa6lea rbp, [rsp+4]
    00221aabmov rdi, rbp
    00221aaecall fn_f4410
    00221ab3mov ebx, eax
    00221ab5test eax, eax
    00221ab7je 0x221ad0
    00221ab9cmp ebx, 12
    00221abcje 0x221afd
    00221abelea rsi, [rip+55859]
    00221ac5mov edi, ebx
    00221ac7call fn_221990
    00221accmov esi, 2
    00221ad1mov rdi, rbp
    00221ad4call fn_f45f0
    00221ad9mov ebx, eax
    00221adbtest eax, eax
    00221addjne 0x221b10
    00221adfmov edi, 40
    00221ae4call caml_stat_alloc_noexc
    00221ae9mov r12, rax
    00221aectest rax, rax
    00221aefjne 0x221b20
    00221af1mov rdi, rbp
    00221af4call fn_f40d0
    00221af9call caml_raise_out_of_memory
    00221afenop [rax+rax]
    00221b04mov rdi, r12
    00221b07call caml_stat_free
    00221b0cmov rdi, rbp
    00221b0fcall fn_f40d0
    00221b14jmp 0x221abd
    00221b16db 0xed
    00221b17db 0xff
    00221b18jmp 0x221abd
    00221b1a
    00221b1a 66 0f 1f 44 00 00 f..D..
    00221b20
    00221b20loc_221b20:
    00221b20mov rsi, rbp
    00221b23mov rdi, rax
    00221b26call fn_f4300
    00221b2bmov ebx, eax
    00221b2dtest eax, eax
    00221b2fjne 0x221b08
    00221b31mov rdi, rbp
    00221b34call fn_f40d0
    00221b39mov ecx, 1
    00221b3exor edx, edx
    00221b40mov esi, 8
    00221b45lea rdi, [rip+0x53e14]
    00221b4ccall caml_alloc_custom
    00221b51mov [rax+8], r12
    00221b55mov rdx, [rsp+8]
    00221b5asub rdx, [0x28]
    00221b63jne 0x221b6e
    00221b65add rsp, 16
    00221b69pop rbx
    00221b6apop rbp
    00221b6bpop r12
    00221b6dret
    00221b6e
    00221b6eloc_221b6e:
    00221b6ecall fn_f4590
    00221a90
    00221b73
    00221b73 // align 0x10
    00221b80
    00221b80caml_ml_mutex_lock:
    00221b80push r12
    00221b82push rbp
    00221b83push rbx
    00221b84sub rsp, 96
    00221b88mov [rsp+8], rdi
    00221b8dmov rax, [0x28]
    00221b96mov [rsp+88], rax
    00221b9bmov rax, [rip+0x54442]
    00221ba2mov rbx, [rax]
    00221ba6lea rax, [rsp+16]
    00221babmov rbp, [rbx+160]
    00221bb2mov [rbx+160], rax
    00221bb9mov eax, 1
    00221bbemovq x0, rax
    00221bc3lea rax, [rsp+8]
    00221bc8punpcklqdq x0, x0
    00221bccmov [rsp+16], rbp
    00221bd1mov [rsp+40], rax
    00221bd6movups [rsp+24], x0
    00221bdbmov r12, [rdi+8]
    00221bdfmov rdi, r12
    00221be2call fn_f4780
    00221be7test eax, eax
    00221be9jne 0x221c18
    00221bebmov [rbx+160], rbp
    00221bf2mov rax, [rsp+88]
    00221bf7sub rax, [0x28]
    00221c00jne 0x221c55
    00221c02add rsp, 96
    00221c06mov eax, 1
    00221c0bpop rbx
    00221c0cpop rbp
    00221c0dpop r12
    00221c0fret
    00221c10db 0x5d
    00221c11pop r12
    00221c13ret
    00221c14
    00221c14 0f 1f 40 00 ..@.
    00221c18
    00221c18loc_221c18:
    00221c18call caml_enter_blocking_section
    00221c1dmov rdi, r12
    00221c20call fn_f4710
    00221c25mov r12l, eax
    00221c28call caml_leave_blocking_section
    00221c2dtest r12l, r12l
    00221c30je 0x221bef
    00221c32cmp r12l, 12
    00221c36je 0x221c50
    00221c38lea rsi, [rip+55498]
    00221c3fmov edi, r12l
    00221c42call fn_221990
    00221c47nop [rax+rax]
    00221c50
    00221c50loc_221c50:
    00221c50call caml_raise_out_of_memory
    00221c55
    00221c55loc_221c55:
    00221c55call fn_f4590
    00221b80
    00221c5a
    00221c5a // align 0x10
    00221c60
    00221c60caml_ml_mutex_unlock:
    00221c60sub rsp, 8
    00221c64mov rdi, [rdi+8]
    00221c68call fn_f47c0
    00221c6dtest eax, eax
    00221c6fje 0x221c98
    00221c71cmp eax, 12
    00221c74je 0x221c90
    00221c76lea rsi, [rip+55443]
    00221c7dmov edi, eax
    00221c7fcall fn_221990
    00221c84nop [rax+rax]
    00221c8ccall caml_raise_out_of_memory
    00221c91nop [rax]
    00221c94mov eax, 1
    00221c99add rsp, 8
    00221c9dret
    00221c9edb 0x83
    00221c9fdb 0xc4
    00221ca0or bl, al
    00221c60
    00221ca2
    00221ca2 // align 0x10
    00221cb0
    00221cb0caml_ml_mutex_try_lock:
    00221cb0sub rsp, 8
    00221cb4mov rdi, [rdi+8]
    00221cb8call fn_f4780
    00221cbdmov edi, eax
    00221cbfmov eax, 1
    00221cc4cmp edi, 16
    00221cc7jne 0x221cd8
    00221cc9add rsp, 8
    00221ccdret
    00221ccedb 0x83
    00221ccfdb 0xc4
    00221cd0or bl, al
    00221cd2
    00221cd2 66 0f 1f 44 00 00 f..D..
    00221cd8
    00221cd8loc_221cd8:
    00221cd8test edi, edi
    00221cdaje 0x221cf0
    00221cdccmp edi, 12
    00221cdfje 0x221d00
    00221ce1lea rsi, [rip+55353]
    00221ce8call fn_221990
    00221cednop [rax]
    00221cf0
    00221cf0loc_221cf0:
    00221cf0mov eax, 3
    00221cf5add rsp, 8
    00221cf9ret
    00221cfa
    00221cfa 66 0f 1f 44 00 00 f..D..
    00221d00
    00221d00loc_221d00:
    00221d00call caml_raise_out_of_memory
    00221cb0
    00221d05
    00221d05 // align 0x10
    00221d10
    00221d10caml_ml_condition_new:
    00221d10push rbp
    00221d11mov edi, 48
    00221d16push rbx
    00221d17sub rsp, 8
    00221d1bcall caml_stat_alloc_noexc
    00221d20test rax, rax
    00221d23je 0x221d80
    00221d25xor esi, esi
    00221d27mov rdi, rax
    00221d2amov rbx, rax
    00221d2dcall fn_f43d0
    00221d32mov ebp, eax
    00221d34test eax, eax
    00221d36jne 0x221d60
    00221d38mov ecx, 1
    00221d3dxor edx, edx
    00221d3fmov esi, 8
    00221d44lea rdi, [rip+0x1566b1]
    00221d4bcall caml_alloc_custom
    00221d50mov [rax+8], rbx
    00221d54add rsp, 8
    00221d58pop rbx
    00221d59pop rbp
    00221d5aret
    00221d5bdb 0x08
    00221d5cpop rbx
    00221d5dpop rbp
    00221d5eret
    00221d5f
    00221d5f 90 .
    00221d60
    00221d60loc_221d60:
    00221d60mov rdi, rbx
    00221d63call caml_stat_free
    00221d68cmp ebp, 12
    00221d6bje 0x221d80
    00221d6dlea rsi, [rip+55228]
    00221d74mov edi, ebp
    00221d76call fn_221990
    00221d7bnop [rax+rax]
    00221d80
    00221d80loc_221d80:
    00221d80call caml_raise_out_of_memory
    00221d10
    00221d85
    00221d85 // align 0x10
    00221d90
    00221d90caml_ml_condition_wait:
    00221d90push r13
    00221d92push r12
    00221d94push rbp
    00221d95push rbx
    00221d96sub rsp, 104
    00221d9amovdqa x0, [rip+33578]
    00221da2mov [rsp], rsi
    00221da6movq x1, rsp
    00221dabmov [rsp+8], rdi
    00221db0mov rax, [0x28]
    00221db9mov [rsp+88], rax
    00221dbemov rax, [rip+0x5421f]
    00221dc5mov rbp, [rax]
    00221dc9lea rax, [rsp+16]
    00221dcemovups [rsp+24], x0
    00221dd3mov r12, [rbp+160]
    00221ddamov [rbp+160], rax
    00221de1lea rax, [rsp+8]
    00221de6movq x0, rax
    00221debpunpcklqdq x0, x1
    00221defmov [rsp+16], r12
    00221df4movups [rsp+40], x0
    00221df9mov rbx, [rdi+8]
    00221dfdmov r13, [rsi+8]
    00221e01mov edi, 42
    00221e06call caml_ev_begin
    00221e0bcall caml_enter_blocking_section
    00221e10mov rdi, rbx
    00221e13mov rsi, r13
    00221e16call fn_f45e0
    00221e1bmov ebx, eax
    00221e1dcall caml_leave_blocking_section
    00221e22test ebx, ebx
    00221e24je 0x221e48
    00221e26cmp ebx, 12
    00221e29je 0x221e40
    00221e2blea rsi, [rip+55051]
    00221e32mov edi, ebx
    00221e34call fn_221990
    00221e39nop [rax]
    00221e3ccall caml_raise_out_of_memory
    00221e41nop [rax]
    00221e44mov edi, 42
    00221e49call caml_ev_end
    00221e4emov [rbp+160], r12
    00221e55mov rax, [rsp+88]
    00221e5asub rax, [0x28]
    00221e63jne 0x221e79
    00221e65add rsp, 104
    00221e69mov eax, 1
    00221e6epop rbx
    00221e6fpop rbp
    00221e70pop r12
    00221e72pop r13
    00221e74ret
    00221e75call fn_f4590
    00221e7adb 0x12
    00221e7bdb 0x27
    00221e7cin eax, dx
    00221e7ddb 0xff
    00221d90
    00221e7e
    00221e7e // align 0x10
    00221e80
    00221e80caml_ml_condition_signal:
    00221e80sub rsp, 8
    00221e84mov rdi, [rdi+8]
    00221e88call fn_f41f0
    00221e8dtest eax, eax
    00221e8fje 0x221eb8
    00221e91cmp eax, 12
    00221e94je 0x221eb0
    00221e96lea rsi, [rip+54959]
    00221e9dmov edi, eax
    00221e9fcall fn_221990
    00221ea4nop [rax+rax]
    00221eaccall caml_raise_out_of_memory
    00221eb1nop [rax]
    00221eb4mov eax, 1
    00221eb9add rsp, 8
    00221ebdret
    00221ebedb 0x83
    00221ebfdb 0xc4
    00221ec0or bl, al
    00221e80
    00221ec2
    00221ec2 // align 0x10
    00221ed0
    00221ed0caml_ml_condition_broadcast:
    00221ed0sub rsp, 8
    00221ed4mov rdi, [rdi+8]
    00221ed8call fn_f4770
    00221eddtest eax, eax
    00221edfje 0x221f08
    00221ee1cmp eax, 12
    00221ee4je 0x221f00
    00221ee6lea rsi, [rip+54896]
    00221eedmov edi, eax
    00221eefcall fn_221990
    00221ef4nop [rax+rax]
    00221efccall caml_raise_out_of_memory
    00221f01nop [rax]
    00221f04mov eax, 1
    00221f09add rsp, 8
    00221f0dret
    00221f0edb 0x83
    00221f0fdb 0xc4
    00221f10or bl, al
    00221ed0
    00221f12
    00221f12 // align 0x10
    00221f20
    00221f20fn_221f20:
    00221f20push rbp
    00221f21push rbx
    00221f22sub rsp, 168
    00221f29mov rbx, [0x28]
    00221f32mov [rsp+152], rbx
    00221f3amov rbx, rdi
    00221f3dcall caml_string_is_c_safe
    00221f42test eax, eax
    00221f44je 0x221fa0
    00221f46mov rdi, rbx
    00221f49call caml_stat_strdup
    00221f4emov rbx, rax
    00221f51call caml_enter_blocking_section
    00221f56mov rdi, rbx
    00221f59mov rsi, rsp
    00221f5ccall fn_f43b0
    00221f61mov ebp, eax
    00221f63call caml_leave_blocking_section
    00221f68mov rdi, rbx
    00221f6bcall caml_stat_free
    00221f70cmp ebp, -1
    00221f73je 0x221fab
    00221f75mov eax, [rsp+24]
    00221f79
    00221f79loc_221f79:
    00221f79mov rdx, [rsp+152]
    00221f81sub rdx, [0x28]
    00221f8ajne 0x221fb2
    00221f8cadd rsp, 168
    00221f93pop rbx
    00221f94pop rbp
    00221f95ret
    00221f96
    00221f96 66 2e 0f 1f 84 00 00 00 00 00 f.........
    00221fa0
    00221fa0loc_221fa0:
    00221fa0call fn_f4570
    00221fa5mov [rax], 2
    00221fab
    00221fabloc_221fab:
    00221fabmov eax, -1
    00221fb0jmp 0x221f79
    00221fb2
    00221fb2loc_221fb2:
    00221fb2call fn_f4590
    00221f20
    00221fb7
    00221fb7 // align 0x10
    00221fc0
    00221fc0caml_strerror:
    00221fc0push r12
    00221fc2mov r12l, edi
    00221fc5push rbp
    00221fc6mov rbp, rdx
    00221fc9push rbx
    00221fcamov rbx, rsi
    00221fcdcall fn_f4620
    00221fd2test eax, eax
    00221fd4jne 0x221fe8
    00221fd6mov rax, rbx
    00221fd9pop rbx
    00221fdapop rbp
    00221fdbpop r12
    00221fddret
    00221fdedb 0x5d
    00221fdfpop r12
    00221fe1ret
    00221fe2
    00221fe2 66 0f 1f 44 00 00 f..D..
    00221fe8
    00221fe8loc_221fe8:
    00221fe8mov r9l, r12l
    00221febmov rsi, rbp
    00221feemov rdi, rbx
    00221ff1mov rcx, -1
    00221ff8lea r8, [rip+54664]
    00221fffmov edx, 1
    00222004xor eax, eax
    00222006call fn_f46b0
    0022200bmov rax, rbx
    0022200epop rbx
    0022200fpop rbp
    00222010pop r12
    00222012ret
    00221fc0
    00222013
    00222013 // align 0x10
    00222020
    00222020caml_sys_error:
    00222020push r12
    00222022mov ecx, 1
    00222027push rbp
    00222028movq x0, rcx
    0022202dpush rbx
    0022202epunpcklqdq x0, x0
    00222032sub rsp, 1200
    00222039mov [rsp+8], rdi
    0022203emov rax, [0x28]
    00222047mov [rsp+1192], rax
    0022204fmov rax, [rip+0x53f8e]
    00222056mov rax, [rax]
    0022205amovups [rsp+40], x0
    0022205fmovups [rsp+104], x0
    00222064mov [rsp+24], 1
    0022206dmov rdx, [rax+160]
    00222074mov [rsp+32], rdx
    00222079lea rdx, [rsp+8]
    0022207emov [rsp+56], rdx
    00222083lea rdx, [rsp+32]
    00222088mov [rsp+96], rdx
    0022208dlea rdx, [rsp+96]
    00222092mov [rax+160], rdx
    00222099lea rax, [rsp+24]
    0022209emov [rsp+120], rax
    002220a3call fn_f4570
    002220a8lea rsi, [rsp+160]
    002220b0mov edx, 1024
    002220b5mov edi, [rax]
    002220b7call caml_strerror
    002220bcmov rbp, [rsp+8]
    002220c1mov rbx, rax
    002220c4mov rdi, rax
    002220c7cmp rbp, 1
    002220cbje 0x22212f
    002220cdcall fn_f43a0
    002220d2mov rdi, rbp
    002220d5mov r12, rax
    002220d8call caml_string_length
    002220ddlea rdi, [rax+r12+2]
    002220e2mov rbp, rax
    002220e5call caml_alloc_string
    002220eamov rsi, [rsp+8]
    002220efmov rdx, rbp
    002220f2mov rdi, rax
    002220f5mov [rsp+24], rax
    002220facall fn_f47d0
    002220ffmov rax, [rsp+24]
    00222104mov rdx, r12
    00222107mov rsi, rbx
    0022210aadd rax, rbp
    0022210dmov [rax], 8250
    00222112mov rax, [rsp+24]
    00222117lea rdi, [rbp+rax+2]
    0022211ccall fn_f47d0
    00222121mov rdi, [rsp+24]
    00222126call caml_raise_sys_error
    0022212bcall caml_copy_string
    00222130mov [rsp+24], rax
    00222135jmp 0x222125
    00222137db 0x24
    00222138sbb bl, ch
    0022213adb 0xea
    00222020
    0022213b
    0022213b // align 0x10
    00222140
    00222140fn_222140:
    00222140push rbx
    00222141mov rbx, rdi
    00222144call fn_f4570
    00222149mov rdi, rbx
    0022214cmov [rax], 2
    00222152call caml_sys_error
    00222140
    00222157
    00222157 // align 0x10
    00222160
    00222160caml_sys_io_error:
    00222160push rbx
    00222161mov rbx, rdi
    00222164call fn_f4570
    00222169cmp [rax], 11
    0022216cje 0x22217a
    0022216emov rdi, rbx
    00222171call caml_sys_error
    00222176call caml_raise_sys_blocked_io
    0022217bdb 0xa1
    0022217cdb 0x49
    0022217ddb 0xfe
    0022217edb 0xff
    00222160
    0022217f
    0022217f // align 0x10
    00222180
    00222180caml_do_exit:
    00222180push r13
    00222182push r12
    00222184push rbp
    00222185push rbx
    00222186sub rsp, 152
    0022218dmov rbp, [rip+0x53e50]
    00222194mov rbx, [0x28]
    0022219dmov [rsp+136], rbx
    002221a5mov ebx, edi
    002221a7mov r12, [rbp]
    002221acmov rax, [rip+0x156a79]
    002221b3test ah, 4
    002221b6jne 0x2221e2
    002221b8call caml_runtime_events_destroy
    002221bdmov rax, [rip+0x53790]
    002221c4cmp [rax+144], 0
    002221ccjne 0x22238b
    002221d2call caml_terminate_signals
    002221d7mov edi, ebx
    002221d9call fn_f4210
    002221delea rdi, [rsp+32]
    002221e3call caml_compute_gc_stats
    002221e8mov rax, [r12+24]
    002221edsub rax, [r12+8]
    002221f2pxor x1, x1
    002221f6sar rax, 3
    002221facvtsi2sd x1, rax
    002221ffmov rax, [rsp+32]
    00222204test rax, rax
    00222207js 0x222395
    0022220dpxor x0, x0
    00222211cvtsi2sd x0, rax
    00222216addsd x1, x0
    0022221a
    0022221aloc_22221a:
    0022221amov rax, [rsp+48]
    0022221fmovsd_xmm [rsp+8], x1
    00222225test rax, rax
    00222228js 0x2223ef
    0022222epxor x1, x1
    00222232cvtsi2sd x1, rax
    00222237mov rax, [r12+128]
    0022223ftest rax, rax
    00222242js 0x2223d1
    00222248pxor x0, x0
    0022224ccvtsi2sd x0, rax
    00222251addsd x1, x0
    00222255
    00222255loc_222255:
    00222255mov rax, [rsp+40]
    0022225amovsd_xmm x0, [rsp+8]
    00222260movsd_xmm [rsp+16], x1
    00222266addsd x0, x1
    0022226atest rax, rax
    0022226djs 0x2223b3
    00222273pxor x1, x1
    00222277cvtsi2sd x1, rax
    0022227cmov rax, [rsp+104]
    00222281mov r12, [rsp+112]
    00222286subsd x0, x1
    0022228aadd r12, [rsp+72]
    0022228fadd rax, [rsp+64]
    00222294mov r13, rax
    00222297je 0x222432
    0022229dtest r12, r12
    002222a0je 0x22240d
    002222a6cvttsd2si rdx, x0
    002222abxor eax, eax
    002222admov edi, 1024
    002222b2lea rsi, [rip+53979]
    002222b9call caml_gc_message
    002222becvttsd2si rdx, [rsp+8]
    002222c5xor eax, eax
    002222c7lea rsi, [rip+53980]
    002222cemov edi, 1024
    002222d3call caml_gc_message
    002222d8mov rdx, [rsp+40]
    002222ddxor eax, eax
    002222dflea rsi, [rip+53974]
    002222e6mov edi, 1024
    002222ebcall caml_gc_message
    002222f0cvttsd2si rdx, [rsp+16]
    002222f7xor eax, eax
    002222f9lea rsi, [rip+53969]
    00222300mov edi, 1024
    00222305call caml_gc_message
    0022230axor eax, eax
    0022230cmov edi, 1024
    00222311lea rsi, [rip+53963]
    00222318mov rdx, [rip+0x1568d5]
    0022231fcall caml_gc_message
    00222324mov rdx, [rip+0x156739]
    0022232bxor eax, eax
    0022232dlea rsi, [rip+53959]
    00222334mov edi, 1024
    00222339call caml_gc_message
    0022233emov rdx, [rsp+56]
    00222343xor eax, eax
    00222345lea rsi, [rip+61952]
    0022234cmov edi, 1024
    00222351call caml_gc_message
    00222356mov rdx, r13
    00222359xor eax, eax
    0022235bmov edi, 1024
    00222360lea rsi, [rip+53936]
    00222367call caml_gc_message
    0022236cmov rdx, r12
    0022236fmov edi, 1024
    00222374xor eax, eax
    00222376lea rsi, [rip+53910]
    0022237dcall caml_gc_message
    00222382jmp 0x2221bc
    00222387call caml_shutdown
    0022238cjmp 0x2221d6
    00222391mov rdx, rax
    00222394and eax, 1
    00222397pxor x0, x0
    0022239bshr rdx, 1
    0022239eor rdx, rax
    002223a1cvtsi2sd x0, rdx
    002223a6addsd x0, x0
    002223aajmp 0x22221a
    002223afmov rdx, rax
    002223b2and eax, 1
    002223b5pxor x1, x1
    002223b9shr rdx, 1
    002223bcor rdx, rax
    002223bfcvtsi2sd x1, rdx
    002223c4addsd x1, x1
    002223c8jmp 0x222280
    002223cdmov rdx, rax
    002223d0and eax, 1
    002223d3pxor x0, x0
    002223d7shr rdx, 1
    002223daor rdx, rax
    002223ddcvtsi2sd x0, rdx
    002223e2addsd x0, x0
    002223e6jmp 0x222255
    002223ebmov rdx, rax
    002223eeand eax, 1
    002223f1pxor x1, x1
    002223f5shr rdx, 1
    002223f8or rdx, rax
    002223fbcvtsi2sd x1, rdx
    00222400addsd x1, x1
    00222404jmp 0x22223b
    00222409movsd_xmm [rsp+24], x0
    0022240fmov rax, [rbp]
    00222414mov rdi, [rax+280]
    0022241bcall caml_top_heap_words
    00222420movsd_xmm x0, [rsp+24]
    00222426mov r12, rax
    00222429jmp 0x2222aa
    0022242emovsd_xmm [rsp+24], x0
    00222434mov rax, [rbp]
    00222439mov rdi, [rax+280]
    00222440call caml_heap_size
    00222445movsd_xmm x0, [rsp+24]
    0022244bshr rax, 3
    0022244fmov r13, rax
    00222452jmp 0x2222a1
    00222457db 0x46
    00222458db 0xfe
    00222459db 0xff
    0022245adb 0xff
    00222180
    0022245b
    0022245b // align 0x10
    00222460
    00222460caml_sys_exit:
    00222460push rax
    00222461pop rax
    00222462sub rsp, 8
    00222466sar rdi, 1
    00222469call caml_do_exit
    0022246edb 0x0e
    0022246fstd
    00222470db 0xff
    00222471db 0xff
    00222460
    00222472
    00222472 // align 0x10