File hevea_f46f610a6b0078f4aa208dda361f21de574cc56ad64b32889301afc466d33979.elf
Function:
    00223180
    00223180caml_unix_random_seed:
    00223180push r15
    00223182mov esi, 12
    00223187push r14
    00223189push r13
    0022318bpush r12
    0022318dmov r12l, 12
    00223193push rbp
    00223194push rbx
    00223195sub rsp, 56
    00223199mov rbp, [0x28]
    002231a2mov [rsp+40], rbp
    002231a7mov rbp, rdi
    002231aalea rbx, [rsp+28]
    002231afmov rdi, rbx
    002231b2call fn_f43f0
    002231b7cmp eax, -1
    002231baje 0x223290
    002231c0lea ecx, [r12-1]
    002231c5movsxd rax, ecx
    002231c8mov ecx, ecx
    002231calea rdx, [rbx+rax]
    002231celea rsi, [rbp+8*rcx+8]
    002231d3mov rax, rbp
    002231d6nop [rax+rax]
    002231dcmovzx ecx, [rdx]
    002231dfadd rax, 8
    002231e3sub rdx, 1
    002231e7mov [rax-8], rcx
    002231ebcmp rsi, rax
    002231eejne 0x2231e0
    002231f0cmp r12l, 11
    002231f4jle 0x223220
    002231f6mov rax, [rsp+40]
    002231fbsub rax, [0x28]
    00223204jne 0x2232f8
    0022320aadd rsp, 56
    0022320emov eax, r12l
    00223211pop rbx
    00223212pop rbp
    00223213pop r12
    00223215pop r13
    00223217pop r14
    00223219pop r15
    0022321bret
    0022321clea r14l, [r12+1]
    00223221lea ebx, [r12+3]
    00223226movsxd rax, r12l
    00223229lea r13l, [r12+2]
    0022322emovsxd r14, r14l
    00223231movsxd rbx, ebx
    00223234add r12l, 4
    00223238lea r15, [rbp+8*rax]
    0022323dshl r14, 3
    00223241movsxd r13, r13l
    00223244shl rbx, 3
    00223248shl r13, 3
    0022324cmov rdi, rsp
    0022324fxor esi, esi
    00223251call fn_f4220
    00223256mov rax, [rsp+8]
    0022325bmov [r15], rax
    0022325emov rax, [rsp]
    00223262mov [rbp+r14], rax
    00223267call fn_f42f0
    0022326ccdqe
    0022326emov [rbp+r13], rax
    00223273call fn_f46e0
    00223278cdqe
    0022327amov [rbp+rbx], rax
    0022327fjmp 0x2231fa
    00223284db 0x72
    00223285db 0xff
    00223286db 0xff
    00223287db 0xff
    00223288
    00223288 0f 1f 84 00 00 00 00 00 ........
    00223290
    00223290loc_223290:
    00223290xor edx, edx
    00223292xor esi, esi
    00223294lea rdi, [rip+50065]
    0022329bxor eax, eax
    0022329dcall fn_f4470
    002232a2mov r13l, eax
    002232a5cmp eax, -1
    002232a8jne 0x2232d0
    002232aa
    002232aaloc_2232aa:
    002232aamov r15, rbp
    002232admov r13l, 16
    002232b3mov ebx, 24
    002232b8mov r12l, 4
    002232bemov r14l, 8
    002232c4jmp 0x223250
    002232c6
    002232c6 66 2e 0f 1f 84 00 00 00 00 00 f.........
    002232d0
    002232d0loc_2232d0:
    002232d0mov edi, eax
    002232d2mov edx, 12
    002232d7mov rsi, rbx
    002232dacall fn_f4230
    002232dfmov edi, r13l
    002232e2mov r14, rax
    002232e5mov r12l, eax
    002232e8call fn_f4140
    002232edtest r14l, r14l
    002232f0jg 0x2231c4
    002232f6jmp 0x2232aa
    002232f8
    002232f8loc_2232f8:
    002232f8call fn_f4590
    00223180
    002232fd
    002232fd // align 0x10
    00223300
    00223300caml_sys_random_seed:
    00223300push r12
    00223302push rbp
    00223303push rbx
    00223304sub rsp, 144
    0022330bmov rbx, [0x28]
    00223314mov [rsp+136], rbx
    0022331cmov rbx, rsp
    0022331fmov rdi, rsp
    00223322call caml_unix_random_seed
    00223327xor esi, esi
    00223329movsxd r12, eax
    0022332cmov rdi, r12
    0022332fcall caml_alloc_small
    00223334lea rdi, [rax+8*r12]
    00223338sub rbx, rax
    0022333btest r12l, r12l
    0022333ejle 0x223376
    00223340mov rdx, rax
    00223343mov rsi, rbx
    00223346nop [rax+rax]
    00223351nop [rax+rax]
    0022335cmov rcx, [rsi+rdx]
    00223360
    00223360loc_223360:
    00223360add rdx, 8
    00223364lea rcx, [rcx+rcx+1]
    00223369mov [rdx-8], rcx
    0022336dcmp rdi, rdx
    00223370jne 0x223360
    00223372mov rdx, [rsp+136]
    0022337asub rdx, [0x28]
    00223383jne 0x223395
    00223385add rsp, 144
    0022338cpop rbx
    0022338dpop rbp
    0022338epop r12
    00223390ret
    00223391call fn_f4590
    00223396db 0xf6
    00223397adc ebp, ebp
    00223399db 0xff
    00223300
    0022339a
    0022339a // align 0x10
    002233a0
    002233a0caml_sys_const_big_endian:
    002233a0mov eax, 1
    002233a5ret
    002233a6db 0x00
    002233a7add [rax], al
    002233a9ret
    002233a0
    002233aa
    002233aa // align 0x10
    002233b0
    002233b0caml_sys_const_word_size:
    002233b0mov eax, 129
    002233b5ret
    002233b6db 0x00
    002233b7add [rax], al
    002233b9ret
    002233b0
    002233ba
    002233ba // align 0x10
    002233c0
    002233c0caml_sys_const_int_size:
    002233c0mov eax, 127
    002233c5ret
    002233c6db 0x00
    002233c7add [rax], al
    002233c9ret
    002233c0
    002233ca
    002233ca // align 0x10
    002233d0
    002233d0caml_sys_const_max_wosize:
    002233d0mov rax, 0x7fffffffffffff
    002233daret
    002233dbdb 0xff
    002233dcjg 0x2233de
    002233de
    002233deloc_2233de:
    002233deret
    002233d0
    002233df
    002233df // align 0x10
    002233e0
    002233e0caml_sys_const_ostype_unix:
    002233e0mov eax, 3
    002233e5ret
    002233e6db 0x00
    002233e7add [rax], al
    002233e9ret
    002233e0
    002233ea
    002233ea // align 0x10
    002233f0
    002233f0caml_sys_const_ostype_win32:
    002233f0mov eax, 1
    002233f5ret
    002233f6db 0x00
    002233f7add [rax], al
    002233f9ret
    002233f0
    002233fa
    002233fa // align 0x10
    00223400
    00223400caml_sys_const_ostype_cygwin:
    00223400mov eax, 1
    00223405ret
    00223406db 0x00
    00223407add [rax], al
    00223409ret
    00223400
    0022340a
    0022340a // align 0x10
    00223410
    00223410caml_sys_const_backend_type:
    00223410mov eax, 3
    00223415ret
    00223416db 0x00
    00223417add [rax], al
    00223419ret
    00223410
    0022341a
    0022341a // align 0x10
    00223420
    00223420caml_sys_get_config:
    00223420push rbp
    00223421lea rdi, [rip+49677]
    00223428push rbx
    00223429sub rsp, 104
    0022342dmovdqa x0, [rip+27799]
    00223435mov rax, [0x28]
    0022343emov [rsp+88], rax
    00223443mov rax, [rip+0x52b9a]
    0022344amov rbx, [rax]
    0022344elea rax, [rsp+16]
    00223453movups [rsp+24], x0
    00223458movq x0, rsp
    0022345dmov [rsp], 1
    00223465mov [rsp+8], 1
    0022346emov rbp, [rbx+160]
    00223475mov [rbx+160], rax
    0022347clea rax, [rsp+8]
    00223481movq x1, rax
    00223486mov [rsp+16], rbp
    0022348bpunpcklqdq x0, x1
    0022348fmovups [rsp+40], x0
    00223494call caml_copy_string
    00223499xor esi, esi
    0022349bmov edi, 3
    002234a0mov [rsp+8], rax
    002234a5call caml_alloc_small
    002234aamov rdx, [rsp+8]
    002234afmov [rsp], rax
    002234b3mov [rax], rdx
    002234b6mov rax, [rsp]
    002234bamov [rax+8], 129
    002234c2mov rax, [rsp]
    002234c6mov [rax+16], 1
    002234cemov rax, [rsp]
    002234d2mov [rbx+160], rbp
    002234d9mov rdx, [rsp+88]
    002234desub rdx, [0x28]
    002234e7jne 0x2234f4
    002234e9add rsp, 104
    002234edpop rbx
    002234eepop rbp
    002234efret
    002234f0call fn_f4590
    002234f5db 0x97
    002234f6adc ch, ch
    002234f8db 0xff
    00223420
    002234f9
    002234f9 // align 0x10
    00223500
    00223500caml_sys_read_directory:
    00223500push r14
    00223502push r13
    00223504push r12
    00223506push rbp
    00223507push rbx
    00223508mov rbx, rdi
    0022350bsub rsp, 192
    00223512mov [rsp+8], rdi
    00223517mov rax, [0x28]
    00223520mov [rsp+184], rax
    00223528mov rax, [rip+0x52ab5]
    0022352fmov r12, [rax]
    00223533mov eax, 1
    00223538mov [rsp+24], 1
    00223541movq x0, rax
    00223546lea rax, [rsp+8]
    0022354bmov [rsp+72], rax
    00223550lea rax, [rsp+48]
    00223555mov r13, [r12+160]
    0022355dpunpcklqdq x0, x0
    00223561mov [rsp+112], rax
    00223566lea rax, [rsp+112]
    0022356bmov [r12+160], rax
    00223573lea rax, [rsp+24]
    00223578mov [rsp+48], r13
    0022357dmov [rsp+136], rax
    00223585movups [rsp+56], x0
    0022358amovups [rsp+120], x0
    0022358fcall caml_string_is_c_safe
    00223594test eax, eax
    00223596je 0x22363b
    0022359clea rbp, [rsp+32]
    002235a1mov esi, 50
    002235a6mov rdi, rbp
    002235a9call caml_ext_table_init
    002235aemov rdi, [rsp+8]
    002235b3call caml_stat_strdup
    002235b8mov rbx, rax
    002235bbcall caml_enter_blocking_section
    002235c0mov rdi, rbx
    002235c3mov rsi, rbp
    002235c6call caml_read_directory
    002235cbmov r14l, eax
    002235cecall caml_leave_blocking_section
    002235d3mov rdi, rbx
    002235d6call caml_stat_free
    002235dbcmp r14l, -1
    002235dfje 0x223648
    002235e1xor esi, esi
    002235e3mov rdi, rbp
    002235e6call caml_ext_table_add
    002235ebmov rdi, [rsp+40]
    002235f0call caml_copy_string_array
    002235f5mov esi, 1
    002235famov rdi, rbp
    002235fdmov [rsp+24], rax
    00223602call caml_ext_table_free
    00223607mov [r12+160], r13
    0022360fmov rax, [rsp+24]
    00223614mov rdx, [rsp+184]
    0022361csub rdx, [0x28]
    00223625jne 0x223643
    00223627add rsp, 192
    0022362epop rbx
    0022362fpop rbp
    00223630pop r12
    00223632pop r13
    00223634pop r14
    00223636ret
    00223637mov rdi, rbx
    0022363acall fn_222140
    0022363fcall fn_f4590
    00223644mov rdi, rbp
    00223647mov esi, 1
    0022364ccall caml_ext_table_free
    00223651mov rdi, [rsp+8]
    00223656call caml_sys_error
    0022365bdb 0xc1
    0022365cdb 0xe9
    0022365ddb 0xff
    0022365edb 0xff
    00223500
    0022365f
    0022365f // align 0x10
    00223660
    00223660caml_sys_isatty:
    00223660sub rsp, 8
    00223664mov rax, [rdi+8]
    00223668mov edi, [rax]
    0022366acall fn_f41d0
    0022366fcmp eax, 1
    00223672sbb rax, rax
    00223675add rsp, 8
    00223679and rax, -2
    0022367dadd rax, 3
    00223681ret
    00223682db 0x83
    00223683rol [rbx], -61
    00223660
    00223686
    00223686 // align 0x10
    00223690
    00223690caml_xdg_defaults:
    00223690mov eax, 1
    00223695ret
    00223696db 0x00
    00223697add [rax], al
    00223699ret
    00223690
    0022369a
    0022369a // align 0x10
    002236a0
    002236a0caml_read_fd:
    002236a0push r12
    002236a2mov r12, rdx
    002236a5push rbp
    002236a6mov ebp, edi
    002236a8push rbx
    002236a9mov ebx, ecx
    002236abcall caml_enter_blocking_section_no_pending
    002236b0movsxd rdx, ebx
    002236b3mov rsi, r12
    002236b6mov edi, ebp
    002236b8call fn_f4230
    002236bdmov rbx, rax
    002236c0call caml_leave_blocking_section
    002236c5mov eax, ebx
    002236c7pop rbx
    002236c8pop rbp
    002236c9pop r12
    002236cbret
    002236ccdb 0x5d
    002236cdpop r12
    002236cfret
    002236a0
    002236d0
    002236d0caml_write_fd:
    002236d0push r14
    002236d2push r13
    002236d4mov r13l, edi
    002236d7push r12
    002236d9mov r12, rdx
    002236dcpush rbp
    002236ddmov ebp, ecx
    002236dfpush rbx
    002236e0nop [rax+rax]
    002236ebnop
    002236eccall caml_enter_blocking_section_no_pending
    002236f1movsxd rdx, ebp
    002236f4mov rsi, r12
    002236f7mov edi, r13l
    002236facall fn_f4760
    002236ffmov rbx, rax
    00223702mov r14l, eax
    00223705call caml_leave_blocking_section
    0022370acmp ebx, -1
    0022370djne 0x22372d
    0022370fcall fn_f4570
    00223714cmp [rax], 11
    00223717sete dl
    0022371acmp ebp, 1
    0022371dmov ebp, 1
    00223722setg al
    00223725test dl, al
    00223727jne 0x2236f0
    00223729pop rbx
    0022372amov eax, r14l
    0022372d
    0022372dloc_22372d:
    0022372dpop rbp
    0022372epop r12
    00223730pop r13
    00223732pop r14
    00223734ret
    00223735db 0x5d
    00223736pop r14
    00223738ret
    002236d0
    00223739
    00223739 // align 0x10
    00223740
    00223740caml_decompose_path:
    00223740push r12
    00223742push rbp
    00223743push rbx
    00223744test rsi, rsi
    00223747je 0x2237c6
    00223749mov rbp, rdi
    0022374cmov rdi, rsi
    0022374fcall caml_stat_strdup
    00223754mov rsi, rax
    00223757mov r12, rax
    0022375amovzx eax, [rsi]
    0022375dtest al, al
    0022375fje 0x2237ae
    00223761nop [rax+rax]
    0022376ccmp al, 58
    0022376eje 0x2237ae
    00223770
    00223770loc_223770:
    00223770lea rax, [rsi+1]
    00223774nop [rax+rax]
    0022377cmovzx edx, [rax]
    0022377fmov rbx, rax
    00223782add rax, 1
    00223786test dl, dl
    00223788je 0x223793
    0022378acmp dl, 58
    0022378djne 0x223780
    0022378fmov rdi, rbp
    00223792call caml_ext_table_add
    00223797cmp [rbx], 0
    0022379aje 0x2237be
    0022379clea rsi, [rbx+1]
    002237a0
    002237a0loc_2237a0:
    002237a0mov [rbx], 0
    002237a3movzx eax, [rsi]
    002237a6test al, al
    002237a8jne 0x223770
    002237aamov rbx, rsi
    002237admov rdi, rbp
    002237b0call caml_ext_table_add
    002237b5cmp [rbx], 0
    002237b8jne 0x2237a0
    002237bamov rax, r12
    002237bdpop rbx
    002237be
    002237beloc_2237be:
    002237bepop rbp
    002237bfpop r12
    002237c1ret
    002237c2xor r12l, r12l
    002237c5pop rbx
    002237c6
    002237c6loc_2237c6:
    002237c6pop rbp
    002237c7mov rax, r12
    002237capop r12
    002237ccret
    002237cddb 0xe0
    002237cepop r12
    002237d0ret
    00223740
    002237d1
    002237d1 // align 0x10
    002237e0
    002237e0caml_search_in_path:
    002237e0push r15
    002237e2push r14
    002237e4push r13
    002237e6push r12
    002237e8push rbp
    002237e9mov rbp, rdi
    002237ecpush rbx
    002237edsub rsp, 184
    002237f4movzx eax, [rsi]
    002237f7mov r12, [0x28]
    00223800mov [rsp+168], r12
    00223808mov r12, rsi
    0022380btest al, al
    0022380dje 0x223870
    0022380fmov rdx, r12
    00223812jmp 0x22382c
    00223814db 0x89
    00223815loop 0x223802
    00223817db 0x14
    00223818
    00223818 0f 1f 84 00 00 00 00 00 ........
    00223820
    00223820loc_223820:
    00223820movzx eax, [rdx+1]
    00223824add rdx, 1
    00223828test al, al
    0022382aje 0x223870
    0022382c
    0022382cloc_22382c:
    0022382ccmp al, 47
    0022382ejne 0x223820
    00223830
    00223830loc_223830:
    00223830mov rdi, r12
    00223833call caml_stat_strdup
    00223838mov r14, rax
    0022383b
    0022383bloc_22383b:
    0022383bmov rax, [rsp+168]
    00223843sub rax, [0x28]
    0022384cjne 0x2238ff
    00223852add rsp, 184
    00223859mov rax, r14
    0022385cpop rbx
    0022385dpop rbp
    0022385epop r12
    00223860pop r13
    00223862pop r14
    00223864pop r15
    00223866ret
    00223867
    00223867 66 0f 1f 84 00 00 00 00 00 f........
    00223870
    00223870loc_223870:
    00223870mov eax, [rbp]
    00223873test eax, eax
    00223875jle 0x223830
    00223877lea rax, [rsp+16]
    0022387cxor ebx, ebx
    0022387elea r15, [rip+48571]
    00223885mov [rsp+8], rax
    0022388alea r13, [rip+48557]
    00223891nop [rax+rax]
    0022389cnop [rax]
    002238a0
    002238a0loc_2238a0:
    002238a0mov rax, [rbp+8]
    002238a4mov edi, 3
    002238a9mov rcx, r12
    002238acmov rdx, r15
    002238afmov rsi, [rax+8*rbx]
    002238b3cmp [rsi], 0
    002238b6cmove rsi, r13
    002238baxor eax, eax
    002238bccall caml_stat_strconcat
    002238c1mov rsi, [rsp+8]
    002238c6mov rdi, rax
    002238c9mov r14, rax
    002238cccall fn_f43b0
    002238d1test eax, eax
    002238d3jne 0x2238e9
    002238d5mov eax, [rsp+40]
    002238d9and eax, 61440
    002238decmp eax, 32768
    002238e3je 0x22383b
    002238e9
    002238e9loc_2238e9:
    002238e9mov rdi, r14
    002238ecadd rbx, 1
    002238f0call caml_stat_free
    002238f5cmp [rbp], ebx
    002238f8jg 0x2238a0
    002238fajmp 0x223830
    002238ff
    002238ffloc_2238ff:
    002238ffcall fn_f4590
    002237e0
    00223904
    00223904 // align 0x10
    00223910
    00223910caml_search_exe_in_path:
    00223910push r12
    00223912mov esi, 8
    00223917push rbp
    00223918push rbx
    00223919sub rsp, 32
    0022391dmov r12, [0x28]
    00223926mov [rsp+24], r12
    0022392bmov r12, rdi
    0022392emov rdi, rsp
    00223931call caml_ext_table_init
    00223936lea rdi, [rip+48385]
    0022393dcall fn_f4540
    00223942mov rdi, rsp
    00223945mov rsi, rax
    00223948call caml_decompose_path
    0022394dmov rdi, rsp
    00223950mov rbp, rax
    00223953mov rsi, r12
    00223956call caml_search_in_path
    0022395bmov rdi, rbp
    0022395emov r12, rax
    00223961call caml_stat_free
    00223966xor esi, esi
    00223968mov rdi, rsp
    0022396bcall caml_ext_table_free
    00223970mov rax, [rsp+24]
    00223975sub rax, [0x28]
    0022397ejne 0x223990
    00223980add rsp, 32
    00223984mov rax, r12
    00223987pop rbx
    00223988pop rbp
    00223989pop r12
    0022398bret
    0022398ccall fn_f4590
    00223991db 0xfb
    00223992or ebp, ebp
    00223994db 0xff
    00223910
    00223995
    00223995 // align 0x10
    002239a0
    002239a0caml_search_dll_in_path:
    002239a0push rbp
    002239a1lea rdx, [rip+48283]
    002239a8mov rbp, rdi
    002239abxor eax, eax
    002239adpush rbx
    002239aemov edi, 2
    002239b3sub rsp, 8
    002239b7call caml_stat_strconcat
    002239bcmov rdi, rbp
    002239bfmov rbx, rax
    002239c2mov rsi, rax
    002239c5call caml_search_in_path
    002239camov rdi, rbx
    002239cdmov rbp, rax
    002239d0call caml_stat_free
    002239d5add rsp, 8
    002239d9mov rax, rbp
    002239dcpop rbx
    002239ddpop rbp
    002239deret
    002239dfdb 0xe8
    002239e0pop rbx
    002239e1pop rbp
    002239e2ret
    002239a0
    002239e3
    002239e3 // align 0x10
    002239f0
    002239f0caml_dlopen:
    002239f0cmp esi, 1
    002239f3sbb esi, esi
    002239f5xor sil, sil
    002239f8add esi, 258
    002239fejmp 0xf44a0
    00223a03db 0x99
    00223a04or ch, ch
    00223a06db 0xff
    002239f0
    00223a07
    00223a07 // align 0x10
    00223a10
    00223a10caml_dlclose:
    00223a10jmp 0xf4840
    00223a15db 0x27
    00223a16db 0x0e
    00223a17in eax, dx
    00223a18db 0xff
    00223a10
    00223a19
    00223a19 // align 0x10
    00223a20
    00223a20caml_dlsym:
    00223a20jmp 0xf46f0
    00223a25db 0xc7
    00223a26or al, 237
    00223a28db 0xff
    00223a20
    00223a29
    00223a29 // align 0x10
    00223a30
    00223a30caml_globalsym:
    00223a30mov rsi, rdi
    00223a33xor edi, edi
    00223a35jmp 0xf46f0
    00223a3adb 0xb2
    00223a3bor al, 237
    00223a3ddb 0xff
    00223a30
    00223a3e
    00223a3e // align 0x10
    00223a40
    00223a40caml_dlerror:
    00223a40jmp 0xf40c0
    00223a45db 0x77
    00223a46db 0x06
    00223a47in eax, dx
    00223a48db 0xff
    00223a40
    00223a49
    00223a49 // align 0x10
    00223a50
    00223a50caml_read_directory:
    00223a50push rbp
    00223a51mov rbp, rsi
    00223a54push rbx
    00223a55sub rsp, 8
    00223a59call fn_f43c0
    00223a5emov rbx, rax
    00223a61test rax, rax
    00223a64je 0x223ac8
    00223a66nop [rax+rax]
    00223a6cmov rdi, rbx
    00223a6fcall fn_f4800
    00223a74test rax, rax
    00223a77je 0x223ad0
    00223a79cmp [rax+19], 46
    00223a7dlea rdi, [rax+19]
    00223a81jne 0x223a8d
    00223a83cmp [rdi+1], 0
    00223a87je 0x223a70
    00223a89cmp [rax+19], 46
    00223a8d
    00223a8dloc_223a8d:
    00223a8djne 0x223aa0
    00223a8fcmp [rdi+1], 46
    00223a93jne 0x223aa0
    00223a95cmp [rdi+2], 0
    00223a99je 0x223a70
    00223a9bnop
    00223a9ccall caml_stat_strdup
    00223aa1mov rdi, rbp
    00223aa4mov rsi, rax
    00223aa7call caml_ext_table_add_noexc
    00223aaccmp eax, -1
    00223aafjne 0x223a70
    00223ab1mov rdi, rbx
    00223ab4call fn_f4680
    00223ab9call fn_f4570
    00223abemov [rax], 12
    00223ac4or eax, -1
    00223ac7jmp 0x223ada
    00223ac9db 0xc8
    00223acadb 0xff
    00223acbjmp 0x223ada
    00223acd
    00223acd 0f 1f 00 ...
    00223ad0
    00223ad0loc_223ad0:
    00223ad0mov rdi, rbx
    00223ad3call fn_f4680
    00223ad8xor eax, eax
    00223ada
    00223adaloc_223ada:
    00223adaadd rsp, 8
    00223adepop rbx
    00223adfpop rbp
    00223ae0ret
    00223a50
    00223ae1
    00223ae1 // align 0x10
    00223af0
    00223af0caml_executable_name:
    00223af0push r14
    00223af2push r13
    00223af4lea r13, [rip+47948]
    00223afbpush r12
    00223afdpush rbp
    00223afemov ebp, 256
    00223b03push rbx
    00223b04sub rsp, 160
    00223b0bmov r12, [0x28]
    00223b14mov [rsp+152], r12
    00223b1cmov r12l, 13
    00223b22jmp 0x223b32
    00223b24db 0x00
    00223b25add bl, ch
    00223b27db 0x0a
    00223b28
    00223b28 0f 1f 84 00 00 00 00 00 ........
    00223b30
    00223b30loc_223b30:
    00223b30add ebp, ebp
    00223b32
    00223b32loc_223b32:
    00223b32movsxd r14, ebp
    00223b35mov rdi, r14
    00223b38call caml_stat_alloc
    00223b3dmov rdx, r14
    00223b40mov rdi, r13
    00223b43mov rsi, rax
    00223b46mov rbx, rax
    00223b49call fn_f44c0
    00223b4ecmp eax, -1
    00223b51je 0x223bb6
    00223b53cmp ebp, eax
    00223b55jg 0x223b90
    00223b57mov rdi, rbx
    00223b5acall caml_stat_free
    00223b5fsub r12l, 1
    00223b63jne 0x223b30
    00223b65
    00223b65loc_223b65:
    00223b65xor ebx, ebx
    00223b67
    00223b67loc_223b67:
    00223b67mov rax, [rsp+152]
    00223b6fsub rax, [0x28]
    00223b78jne 0x223bc0
    00223b7aadd rsp, 160
    00223b81mov rax, rbx
    00223b84pop rbx
    00223b85pop rbp
    00223b86pop r12
    00223b88pop r13
    00223b8apop r14
    00223b8cret
    00223b8d
    00223b8d 0f 1f 00 ...
    00223b90
    00223b90loc_223b90:
    00223b90cdqe
    00223b92mov rsi, rsp
    00223b95mov rdi, rbx
    00223b98mov [rbx+rax], 0
    00223b9ccall fn_f43b0
    00223ba1cmp eax, -1
    00223ba4je 0x223bb6
    00223ba6mov eax, [rsp+24]
    00223baaand eax, 61440
    00223bafcmp eax, 32768
    00223bb4je 0x223b67
    00223bb6
    00223bb6loc_223bb6:
    00223bb6mov rdi, rbx
    00223bb9call caml_stat_free
    00223bbejmp 0x223b65
    00223bc0
    00223bc0loc_223bc0:
    00223bc0call fn_f4590
    00223af0
    00223bc5
    00223bc5 // align 0x10
    00223bd0
    00223bd0caml_secure_getenv:
    00223bd0jmp 0xf4380
    00223bd5db 0xa7
    00223bd6db 0x07
    00223bd7in eax, dx
    00223bd8db 0xff
    00223bd0
    00223bd9
    00223bd9 // align 0x10
    00223be0
    00223be0caml_time_counter:
    00223be0sub rsp, 40
    00223be4mov edi, 1
    00223be9mov rsi, [0x28]
    00223bf2mov [rsp+24], rsi
    00223bf7mov rsi, rsp
    00223bfacall fn_f4190
    00223bffimul rax, [rsp], 0x3b9aca00
    00223c07add rax, [rsp+8]
    00223c0cmov rdx, [rsp+24]
    00223c11sub rdx, [0x28]
    00223c1ajne 0x223c25
    00223c1cadd rsp, 40
    00223c20ret
    00223c21call fn_f4590
    00223c26db 0x66
    00223c27or ebp, ebp
    00223c29db 0xff
    00223be0
    00223c2a
    00223c2a // align 0x10
    00223c30
    00223c30caml_num_rows_fd:
    00223c30sub rsp, 24
    00223c34mov edx, -1
    00223c39mov esi, 21523
    00223c3emov rax, [0x28]
    00223c47mov [rsp+8], rax
    00223c4cxor eax, eax
    00223c4emov [rsp], dx
    00223c52mov rdx, rsp
    00223c55call fn_f4150
    00223c5atest eax, eax
    00223c5cjne 0x223c80
    00223c5emovzx eax, [rsp]
    00223c62mov rdx, [rsp+8]
    00223c67sub rdx, [0x28]
    00223c70jne 0x223c87
    00223c72add rsp, 24
    00223c76ret
    00223c77db 0x83
    00223c78db 0xc4
    00223c79sbb bl, al
    00223c7b
    00223c7b 0f 1f 44 00 00 ..D..
    00223c80
    00223c80loc_223c80:
    00223c80mov eax, -1
    00223c85jmp 0x223c66
    00223c87
    00223c87loc_223c87:
    00223c87call fn_f4590
    00223c30
    00223c8c
    00223c8c // align 0x10
    00223c90
    00223c90caml_init_os_params:
    00223c90sub rsp, 8
    00223c94mov edi, 30
    00223c99call fn_f42e0
    00223c9emov [rip+0x154fcf], rax
    00223ca5mov [rip+0x154fc0], rax
    00223cacadd rsp, 8
    00223cb0ret
    00223cb1db 0x83
    00223cb2db 0xc4
    00223cb3or bl, al
    00223c90
    00223cb5
    00223cb5 // align 0x10
    00223cc0
    00223cc0caml_plat_mem_map:
    00223cc0sub rsp, 8
    00223cc4cmp esi, 1
    00223cc7mov r8l, -1
    00223ccdmov rsi, rdi
    00223cd0sbb edx, edx
    00223cd2mov ecx, 34
    00223cd7xor r9l, r9l
    00223cdaxor edi, edi
    00223cdcand edx, 3
    00223cdfcall fn_f4110
    00223ce4xor edx, edx
    00223ce6cmp rax, -1
    00223ceacmove rax, rdx
    00223ceeadd rsp, 8
    00223cf2ret
    00223cf3db 0x83
    00223cf4db 0xc4
    00223cf5or bl, al
    00223cc0
    00223cf7
    00223cf7 // align 0x10
    00223d00
    00223d00caml_plat_mem_commit:
    00223d00push rbx
    00223d01xor r9l, r9l
    00223d04mov r8l, -1
    00223d0amov ecx, 50
    00223d0fmov edx, 3
    00223d14mov rbx, rdi
    00223d17call fn_f4110
    00223d1ccmp rax, -1
    00223d20mov eax, 0
    00223d25cmove rbx, rax
    00223d29mov rax, rbx
    00223d2cpop rbx
    00223d2dret
    00223d2edb 0x89
    00223d2ffcomp [rbx-61]
    00223d00
    00223d32
    00223d32 // align 0x10
    00223d40
    00223d40caml_plat_mem_decommit:
    00223d40xor r9l, r9l
    00223d43mov r8l, -1
    00223d49mov ecx, 50
    00223d4exor edx, edx
    00223d50jmp 0xf4110
    00223d55db 0xb7
    00223d56add ebp, ebp
    00223d58db 0xff
    00223d40
    00223d59
    00223d59 // align 0x10
    00223d60
    00223d60caml_plat_mem_unmap:
    00223d60jmp 0xf4610
    00223d65db 0xa7
    00223d66or ch, ch
    00223d68db 0xff
    00223d60
    00223d69
    00223d69 // align 0x10
    00223d70
    00223d70fn_223d70:
    00223d70lea rax, [rdi+8*rsi]
    00223d74test dl, 1
    00223d77jne 0x223de0
    00223d79cmp rdx, [rip+0x154848]
    00223d80jae 0x223de0
    00223d82cmp [rip+0x154847], rdx
    00223d89jae 0x223de0
    00223d8bpush rbp
    00223d8cpush rbx
    00223d8dmov rbx, rdi
    00223d90sub rsp, 24
    00223d94mov rcx, [rax]
    00223d97mov [rax], rdx
    00223d9atest cl, 1
    00223d9djne 0x223da8
    00223d9fcmp rcx, [rip+0x154822]
    00223da6jb 0x223de8
    00223da8
    00223da8loc_223da8:
    00223da8mov rax, [rip+0x52239]
    00223dafmov rax, [rax]
    00223db3mov rbp, [rax+96]
    00223db7mov rax, [rbp+80]
    00223dbbcmp rax, [rbp+88]
    00223dbfjae 0x223df8
    00223dc1
    00223dc1loc_223dc1:
    00223dc1lea rdx, [rax+16]
    00223dc5mov [rbp+80], rdx
    00223dc9mov [rax], rbx
    00223dccmov [rax+8], rsi
    00223dd0
    00223dd0loc_223dd0:
    00223dd0add rsp, 24
    00223dd4pop rbx
    00223dd5pop rbp
    00223dd6ret
    00223dd7
    00223dd7 66 0f 1f 84 00 00 00 00 00 f........
    00223de0
    00223de0loc_223de0:
    00223de0mov [rax], rdx
    00223de3ret
    00223de4
    00223de4 0f 1f 40 00 ..@.
    00223de8
    00223de8loc_223de8:
    00223de8cmp [rip+0x1547e1], rcx
    00223defjb 0x223dd0
    00223df1jmp 0x223da8
    00223df3
    00223df3 0f 1f 44 00 00 ..D..
    00223df8
    00223df8loc_223df8:
    00223df8lea rdi, [rbp+56]
    00223dfcmov [rsp+8], rsi
    00223e01call caml_realloc_ephe_ref_table
    00223e06mov rax, [rbp+80]
    00223e0amov rsi, [rsp+8]
    00223e0fjmp 0x223dc1
    00223d70
    00223e11
    00223e11 // align 0x10
    00223e20
    00223e20fn_223e20:
    00223e20push r15
    00223e22push r14
    00223e24mov r14, rdi
    00223e27push r13
    00223e29push r12
    00223e2bpush rbp
    00223e2cpush rbx
    00223e2dsub rsp, 24
    00223e31mov rax, [rdi-8]
    00223e35mov r15, rax
    00223e38shr r15, 10
    00223e3ccmp rax, 3071
    00223e42jbe 0x22400b
    00223e48mov [rsp+12], 0
    00223e50mov rbx, [rip+0x1545f9]
    00223e57mov r13l, 2
    00223e5dnop [rax]
    00223e60
    00223e60loc_223e60:
    00223e60lea r12, [r14+8*r13]
    00223e64mov rax, [r12]
    00223e68cmp rax, rbx
    00223e6bje 0x223f30
    00223e71test al, 1
    00223e73je 0x223e90
    00223e75jmp 0x223f86
    00223e7a
    00223e7a 66 0f 1f 44 00 00 f..D..
    00223e80
    00223e80loc_223e80:
    00223e80cmp [rip+0x1545c9], rbx
    00223e87je 0x223f30
    00223e8d
    00223e8dloc_223e8d:
    00223e8dmov rax, rbx
    00223e90
    00223e90loc_223e90:
    00223e90movzx edx, [rax-8]
    00223e94lea rcx, [rax-8]
    00223e98cmp dl, -6
    00223e9bjne 0x223f68
    00223ea1mov rbx, [rax]
    00223ea4test bl, 1
    00223ea7jne 0x223f68
    00223eadmovzx edx, [rbx-8]
    00223eb1cmp dl, -6
    00223eb4je 0x223f68
    00223ebamovzx edx, [rbx-8]
    00223ebecmp dl, -10
    00223ec1je 0x223f68
    00223ec7movzx edx, [rbx-8]
    00223ecbcmp dl, -12
    00223eceje 0x223f68
    00223ed4movzx edx, [rbx-8]
    00223ed8cmp dl, -3
    00223edbje 0x223f68
    00223ee1mov [r12], rbx
    00223ee5cmp rbx, [rip+0x1546dc]
    00223eecjae 0x223e80
    00223eeecmp [rip+0x1546db], rbx
    00223ef5jae 0x223e80
    00223ef7mov rax, [rip+0x520ea]
    00223efemov rax, [rax]
    00223f02mov rbp, [rax+96]
    00223f06mov rax, [rbp+80]
    00223f0acmp rax, [rbp+88]
    00223f0ejae 0x223fe0
    00223f14
    00223f14loc_223f14:
    00223f14lea rcx, [rax+16]
    00223f18mov [rbp+80], rcx
    00223f1cmov [rax], r14
    00223f1fcmp [rip+0x15452a], rbx
    00223f26mov [rax+8], r13
    00223f2ajne 0x223e8d
    00223f30
    00223f30loc_223f30:
    00223f30add r13, 1
    00223f34cmp r15, r13
    00223f37jne 0x223e60
    00223f3d
    00223f3dloc_223f3d:
    00223f3dmov edx, [rsp+12]
    00223f41mov rax, [r14+8]
    00223f45test edx, edx
    00223f47je 0x223f52
    00223f49cmp rax, rbx
    00223f4cje 0x223f52
    00223f4emov [r14+8], rbx
    00223f52
    00223f52loc_223f52:
    00223f52add rsp, 24
    00223f56pop rbx
    00223f57pop rbp
    00223f58pop r12
    00223f5apop r13
    00223f5cpop r14
    00223f5epop r15
    00223f60ret
    00223f61
    00223f61 0f 1f 80 00 00 00 00 .......
    00223f68
    00223f68loc_223f68:
    00223f68movzx edx, [rcx]
    00223f6bcmp dl, -7
    00223f6eje 0x223ff8
    00223f74
    00223f74loc_223f74:
    00223f74cmp rax, [rip+0x15464d]
    00223f7bjae 0x223fa0
    00223f7dcmp [rip+0x15464c], rax
    00223f84jae 0x223fa0
    00223f86
    00223f86loc_223f86:
    00223f86add r13, 1
    00223f8amov rbx, [rip+0x1544bf]
    00223f91cmp r15, r13
    00223f94jne 0x223e60
    00223f9ajmp 0x223f3d
    00223f9c
    00223f9c 0f 1f 40 00 ..@.
    00223fa0
    00223fa0loc_223fa0:
    00223fa0mov rax, [rax-8]
    00223fa4mov rbx, [rip+0x1544a5]
    00223faband eax, 768
    00223fb0cmp [rip+0x154411], rax
    00223fb7jne 0x223f30
    00223fbdadd r13, 1
    00223fc1mov [r12], rbx
    00223fc5mov [rsp+12], 1
    00223fcdcmp r15, r13
    00223fd0jne 0x223e60
    00223fd6jmp 0x223f3d
    00223fdb
    00223fdb 0f 1f 44 00 00 ..D..
    00223fe0
    00223fe0loc_223fe0:
    00223fe0lea rdi, [rbp+56]
    00223fe4call caml_realloc_ephe_ref_table
    00223fe9mov rax, [rbp+80]
    00223fedjmp 0x223f14
    00223ff2
    00223ff2 66 0f 1f 44 00 00 f..D..
    00223ff8
    00223ff8loc_223ff8:
    00223ff8mov rdx, [rcx]
    00223ffbshr rdx, 10
    00223fffshl rdx, 3
    00224003sub rax, rdx
    00224006jmp 0x223f74
    0022400b
    0022400bloc_22400b:
    0022400bmov rax, [rdi+8]
    0022400fadd rsp, 24
    00224013pop rbx
    00224014pop rbp
    00224015pop r12
    00224017pop r13
    00224019pop r14
    0022401bpop r15
    0022401dret
    00223e20
    0022401e
    0022401e // align 0x10
    00224020
    00224020fn_224020:
    00224020mov eax, [rip+0x154a3a]
    00224026cmp rsi, 1
    0022402ajne 0x224038
    0022402ccmp eax, 2
    0022402fje 0x224098
    00224031
    00224031loc_224031:
    00224031ret
    00224032
    00224032 66 0f 1f 44 00 00 f..D..
    00224038
    00224038loc_224038:
    00224038cmp eax, 2
    0022403bjne 0x224031
    0022403dlea rdx, [rdi+8*rsi]
    00224041mov rax, [rdx]
    00224044cmp rax, [rip+0x154405]
    0022404bje 0x224031
    0022404dtest al, 1
    0022404fjne 0x224031
    00224051cmp rax, [rip+0x154570]
    00224058jae 0x224063
    0022405acmp [rip+0x15456f], rax
    00224061jb 0x224031
    00224063
    00224063loc_224063:
    00224063movzx esi, [rax-8]
    00224067lea rcx, [rax-8]
    0022406bcmp sil, -7
    0022406fje 0x2240a0
    00224071
    00224071loc_224071:
    00224071mov rax, [rcx]
    00224074and eax, 768
    00224079cmp [rip+0x154348], rax
    00224080jne 0x224031
    00224082mov rax, [rip+0x1543c7]
    00224089mov [rdx], rax
    0022408cmov [rdi+8], rax
    00224090ret
    00224091
    00224091 0f 1f 80 00 00 00 00 .......
    00224098
    00224098loc_224098:
    00224098jmp 0x223e20
    0022409d
    0022409d 0f 1f 00 ...
    002240a0
    002240a0loc_2240a0:
    002240a0mov rax, [rax-8]
    002240a4shr rax, 10
    002240a8shl rax, 3
    002240acsub rcx, rax
    002240afjmp 0x224071
    00224020
    002240b1
    002240b1 // align 0x10
    002240c0
    002240c0fn_2240c0:
    002240c0push r13
    002240c2mov eax, 1
    002240c7push r12
    002240c9movq x0, rax
    002240cepush rbp
    002240cfpunpcklqdq x0, x0
    002240d3push rbx
    002240d4sub rsp, 184
    002240dbmov r13, [rip+0x51f06]
    002240e2mov [rsp+8], rdi
    002240e7lea rax, [rsp+8]
    002240ecmov rbx, [0x28]
    002240f5mov [rsp+168], rbx
    002240fdmov rbx, rsi
    00224100mov rbp, [r13]
    00224105mov [rsp+56], rax
    0022410alea rax, [rsp+32]
    0022410fmov [rsp+96], rax
    00224114lea rax, [rsp+96]
    00224119movups [rsp+40], x0
    0022411emov r12, [rbp+160]
    00224125movdqa x0, [rip+24483]
    0022412dmov [rbp+160], rax
    00224134lea rax, [rsp+16]
    00224139movups [rsp+104], x0
    0022413emovq x0, rax
    00224143lea rax, [rsp+24]
    00224148movq x1, rax
    0022414dmov [rsp+32], r12
    00224152mov [rsp+16], 1
    0022415bpunpcklqdq x0, x1
    0022415fmov [rsp+24], 1
    00224168movups [rsp+120], x0
    0022416dcall fn_224020
    00224172mov rax, [rsp+8]
    00224177lea rax, [rax+8*rbx]
    0022417bmov rsi, [rax]
    0022417ecmp rsi, [rip+0x1542cb]
    00224185mov [rsp+24], rsi
    0022418ajne 0x2241d0
    0022418cmov [rsp+16], 1
    00224195
    00224195loc_224195:
    00224195call caml_process_pending_actions
    0022419amov [rbp+160], r12
    002241a1mov rax, [rsp+16]
    002241a6mov rdx, [rsp+168]
    002241aesub rdx, [0x28]
    002241b7jne 0x2241f7
    002241b9add rsp, 184
    002241c0pop rbx
    002241c1pop rbp
    002241c2pop r12
    002241c4pop r13
    002241c6ret
    002241c7
    002241c7 66 0f 1f 84 00 00 00 00 00 f........
    002241d0
    002241d0loc_2241d0:
    002241d0mov rdi, [r13]
    002241d5xor edx, edx
    002241d7call caml_darken
    002241dcxor esi, esi
    002241demov edi, 1
    002241e3call caml_alloc_small
    002241e8mov rdx, [rsp+24]
    002241edmov [rsp+16], rax
    002241f2mov [rax], rdx
    002241f5jmp 0x224195
    002241f7
    002241f7loc_2241f7:
    002241f7call fn_f4590
    002240c0
    002241fc
    002241fc // align 0x10
    00224200
    00224200fn_224200:
    00224200push r15
    00224202push r14
    00224204push r13
    00224206push r12
    00224208push rbp
    00224209push rbx
    0022420asub rsp, 232
    00224211mov rax, [rip+0x51dd0]
    00224218mov [rsp+40], rdi
    0022421dmov rbx, [0x28]
    00224226mov [rsp+216], rbx
    0022422emov rbx, rsi
    00224231mov r12, [rax]
    00224235mov eax, 1
    0022423amov [rsp+56], 1
    00224243mov [rsp+64], 1
    0022424cmovq x0, rax
    00224251lea rax, [rsp+40]
    00224256punpcklqdq x0, x0
    0022425amov [rsp+104], rax
    0022425flea rax, [rsp+80]
    00224264mov r13, [r12+160]
    0022426cmov [rsp+144], rax
    00224274lea rax, [rsp+144]
    0022427cmovups [rsp+88], x0
    00224281movdqa x0, [rip+24151]
    00224289lea rbp, [8*rbx]
    00224291mov [r12+160], rax
    00224299lea rax, [rsp+56]
    0022429emovups [rsp+152], x0
    002242a6movq x0, rax
    002242ablea rax, [rsp+64]
    002242b0movq x1, rax
    002242b5lea rax, [rsp+72]
    002242bamov [rsp+80], r13
    002242bfpunpcklqdq x0, x1
    002242c3mov [rsp+184], rax
    002242cbmov [rsp+72], 1
    002242d4movups [rsp+168], x0
    002242dcjmp 0x22431c
    002242de
    002242de 66 90 f.
    002242e0
    002242e0loc_2242e0:
    002242e0mov rcx, [rsp+72]
    002242e5cmp rcx, 1
    002242e9je 0x2242ff
    002242ebmovzx esi, [rax]
    002242eemovzx edx, [rcx-8]
    002242f2lea r14, [rcx-8]
    002242f6cmp sil, dl
    002242f9je 0x224390
    002242ff
    002242ffloc_2242ff:
    002242ffmovzx esi, [rax]
    00224302mov rdi, [rax]
    00224305shr rdi, 10
    00224309call caml_alloc
    0022430emov [rsp+64], 1
    00224317mov [rsp+72], rax
    0022431c
    0022431cloc_22431c:
    0022431cmov rdi, [rsp+40]
    00224321mov rsi, rbx
    00224324call fn_224020
    00224329mov rax, [rsp+40]
    0022432eadd rax, rbp
    00224331mov rdi, [rax]
    00224334cmp rdi, [rip+0x154115]
    0022433bmov [rsp+64], rdi
    00224340je 0x2244c0
    00224346test dil, 1
    0022434ajne 0x224470
    00224350movzx edx, [rdi-8]
    00224354lea rax, [rdi-8]
    00224358cmp dl, -1
    0022435bje 0x224470
    00224361movzx edx, [rdi-8]
    00224365xor r15l, r15l
    00224368cmp dl, -7
    0022436bjne 0x2242e0
    00224371mov r15, [rdi-8]
    00224375shr r15, 10
    00224379shl r15, 3
    0022437dsub rdi, r15
    00224380mov [rsp+64], rdi
    00224385lea rax, [rdi-8]
    00224389jmp 0x2242e0
    0022438e
    0022438e 66 90 f.
    00224390
    00224390loc_224390:
    00224390mov rax, [rax]
    00224393mov r9, [rcx-8]
    00224397mov rsi, [rsp+64]
    0022439cxor r9, rax
    0022439fshr r9, 10
    002243a3lea rax, [rsi-8]
    002243a7jne 0x2242ff
    002243admovzx eax, [rsi-8]
    002243b1cmp al, -5
    002243b3ja 0x2244c7
    002243b9movzx eax, [rsi-8]
    002243bdxor edx, edx
    002243bfxor ebp, ebp
    002243c1cmp al, -9
    002243c3jne 0x2243dc
    002243c5mov r9, [rsi+8]
    002243c9shl r9, 8
    002243cdshr r9, 9
    002243d1lea rbp, [8*r9]
    002243d9mov rdx, rbp
    002243dc
    002243dcloc_2243dc:
    002243dcmov rdi, rcx
    002243dfmov [rsp+32], r9
    002243e4mov [rsp+8], rsi
    002243e9call fn_f47d0
    002243eemov rsi, [rsp+8]
    002243f3mov r9, [rsp+32]
    002243f8mov rcx, rax
    002243fbmov rax, [rip+0x51be6]
    00224402sub rcx, rsi
    00224405add rbp, rsi
    00224408mov rax, [rax]
    0022440cmov [rsp+24], rcx
    00224411mov [rsp+16], rax
    00224416jmp 0x224456
    00224418
    00224418 0f 1f 84 00 00 00 00 00 ........
    00224420
    00224420loc_224420:
    00224420mov rbx, [rbp]
    00224424mov rdi, [rsp+16]
    00224429xor edx, edx
    0022442bmov [rsp+8], r9
    00224430mov rsi, rbx
    00224433call caml_darken
    00224438mov rax, [rsp+24]
    0022443dmov rsi, rbx
    00224440lea rdi, [rax+rbp]
    00224444add rbp, 8
    00224448call caml_modify
    0022444dmov r9, [rsp+8]
    00224452add r9, 1
    00224456
    00224456loc_224456:
    00224456mov rax, [r14]
    00224459shr rax, 10
    0022445dcmp r9, rax
    00224460jb 0x224420
    00224462mov rdi, [rsp+72]
    00224467add rdi, r15
    0022446ajmp 0x224475
    0022446c
    0022446c 0f 1f 40 00 ..@.
    00224470
    00224470loc_224470:
    00224470mov [rsp+72], rdi
    00224475
    00224475loc_224475:
    00224475call caml_alloc_some
    0022447a
    0022447aloc_22447a:
    0022447amov [rsp+56], rax
    0022447fcall caml_process_pending_actions
    00224484mov [r12+160], r13
    0022448cmov rax, [rsp+56]
    00224491mov rdx, [rsp+216]
    00224499sub rdx, [0x28]
    002244a2jne 0x2244df
    002244a4add rsp, 232
    002244abpop rbx
    002244acpop rbp
    002244adpop r12
    002244afpop r13
    002244b1pop r14
    002244b3pop r15
    002244b5ret
    002244b6
    002244b6 66 2e 0f 1f 84 00 00 00 00 00 f.........
    002244c0
    002244c0loc_2244c0:
    002244c0mov eax, 1
    002244c5jmp 0x22447a
    002244c7
    002244c7loc_2244c7:
    002244c7mov r9, [rcx-8]
    002244cbshr r9, 10
    002244cflea rbp, [8*r9]
    002244d7mov rdx, rbp
    002244dajmp 0x2243dc
    002244df
    002244dfloc_2244df:
    002244dfcall fn_f4590
    00224200
    002244e4
    002244e4 // align 0x10
    002244f0
    002244f0fn_2244f0:
    002244f0push r12
    002244f2push rbp
    002244f3push rbx
    002244f4sub rsp, 176
    002244fbmov rax, [rip+0x51ae6]
    00224502mov [rsp+8], rdi
    00224507mov rbx, [0x28]
    00224510mov [rsp+168], rbx
    00224518mov rbx, rsi
    0022451bmov rbp, [rax]
    0022451fmov eax, 1
    00224524mov [rsp+24], 1
    0022452dmovq x0, rax
    00224532lea rax, [rsp+8]
    00224537mov [rsp+56], rax
    0022453clea rax, [rsp+32]
    00224541mov r12, [rbp+160]
    00224548punpcklqdq x0, x0
    0022454cmov [rsp+96], rax
    00224551lea rax, [rsp+96]
    00224556mov [rbp+160], rax
    0022455dlea rax, [rsp+24]
    00224562mov [rsp+120], rax
    00224567mov [rsp+32], r12
    0022456cmovups [rsp+40], x0
    00224571movups [rsp+104], x0
    00224576call fn_224020
    0022457bmov rax, [rsp+8]
    00224580lea rax, [rax+8*rbx]
    00224584mov rax, [rax]
    00224587mov [rbp+160], r12
    0022458ecmp rax, [rip+0x153ebb]
    00224595setne al
    00224598mov rdx, [rsp+168]
    002245a0sub rdx, [0x28]
    002245a9jne 0x2245bf
    002245abadd rsp, 176
    002245b2movzx eax, al
    002245b5pop rbx
    002245b6lea rax, [rax+rax+1]
    002245bbpop rbp
    002245bcpop r12
    002245beret
    002245bf
    002245bfloc_2245bf:
    002245bfcall fn_f4590
    002244f0
    002245c4
    002245c4 // align 0x10
    002245d0
    002245d0fn_2245d0:
    002245d0push r15
    002245d2push r14
    002245d4push r13
    002245d6push r12
    002245d8push rbp
    002245d9push rbx
    002245dasub rsp, 184
    002245e1movdqa x0, [rip+23271]
    002245e9mov [rsp+8], rdi
    002245eemovq x1, rsp
    002245f3mov [rsp], rdx
    002245f7mov rax, [0x28]
    00224600mov [rsp+168], rax
    00224608mov rax, [rip+0x519d9]
    0022460fmov r13, [rax]
    00224613lea rax, [rsp+8]
    00224618movups [rsp+40], x0
    0022461dmov [rsp+24], 1
    00224626movq x0, rax
    0022462blea rax, [rsp+32]
    00224630mov [rsp+96], rax
    00224635lea rax, [rsp+96]
    0022463amov r14, [r13+160]
    00224641punpcklqdq x0, x1
    00224645mov [r13+160], rax
    0022464cmov eax, 1
    00224651movups [rsp+56], x0
    00224656movq x0, rax
    0022465blea rax, [rsp+24]
    00224660punpcklqdq x0, x0
    00224664mov [rsp+32], r14
    00224669mov [rsp+120], rax
    0022466emovups [rsp+104], x0
    00224673test r8, r8
    00224676je 0x2246d3
    00224678cmp [rip+0x1543e1], 2
    0022467fmov r12, rsi
    00224682mov rbx, rcx
    00224685mov r15, r8
    00224688je 0x224740
    0022468e
    0022468eloc_22468e:
    0022468ecmp rbx, r12
    00224691jb 0x224708
    00224693
    00224693loc_224693:
    00224693mov rbp, r15
    00224696sub rbp, 1
    0022469ajs 0x2246d3
    0022469clea r12, [r12+r15-1]
    002246a1shl r12, 3
    002246a5nop [rax+rax]
    002246b0
    002246b0loc_2246b0:
    002246b0mov rax, [rsp+8]
    002246b5mov rdi, [rsp]
    002246b9lea rsi, [rbp+rbx]
    002246beadd rax, r12
    002246c1sub r12, 8
    002246c5mov rdx, [rax]
    002246c8call fn_223d70
    002246cdsub rbp, 1
    002246d1jns 0x2246b0
    002246d3
    002246d3loc_2246d3:
    002246d3mov [r13+160], r14
    002246damov rax, [rsp+168]
    002246e2sub rax, [0x28]
    002246ebjne 0x224766
    002246edadd rsp, 184
    002246f4mov eax, 1
    002246f9pop rbx
    002246fapop rbp
    002246fbpop r12
    002246fdpop r13
    002246ffpop r14
    00224701pop r15
    00224703ret
    00224704
    00224704 0f 1f 40 00 ..@.
    00224708
    00224708loc_224708:
    00224708shl r12, 3
    0022470cadd r15, rbx
    0022470fnop
    00224710
    00224710loc_224710:
    00224710mov rax, [rsp+8]
    00224715mov rdi, [rsp]
    00224719mov rsi, rbx
    0022471cadd rbx, 1
    00224720add rax, r12
    00224723add r12, 8
    00224727mov rdx, [rax]
    0022472acall fn_223d70
    0022472fcmp rbx, r15
    00224732jne 0x224710
    00224734jmp 0x2246d3
    00224736
    00224736 66 2e 0f 1f 84 00 00 00 00 00 f.........
    00224740
    00224740loc_224740:
    00224740call fn_223e20
    00224745cmp [rip+0x154314], 2
    0022474cmov rdi, [rsp]
    00224750jne 0x22468e
    00224756call fn_223e20
    0022475bcmp rbx, r12
    0022475ejae 0x224693
    00224764jmp 0x224708
    00224766
    00224766loc_224766:
    00224766call fn_f4590
    002245d0
    0022476b
    0022476b // align 0x10
    00224770
    00224770caml_alloc_ephe_info:
    00224770sub rsp, 8
    00224774mov edi, 48
    00224779call caml_stat_alloc_noexc
    0022477etest rax, rax
    00224781je 0x224796
    00224783pxor x0, x0
    00224787movups [rax], x0
    0022478amovups [rax+16], x0
    0022478emovups [rax+32], x0
    00224792add rsp, 8
    00224796
    00224796loc_224796:
    00224796ret
    00224797db 0x83
    00224798db 0xc4
    00224799or bl, al
    00224770
    0022479b
    0022479b // align 0x10
    002247a0
    002247a0caml_ephe_create:
    002247a0push rbp
    002247a1sar rdi, 1
    002247a4push rbx
    002247a5sub rsp, 8
    002247a9mov rax, [rip+0x51834]
    002247b0mov rbp, [rax]
    002247b4mov rax, 0x3ffffffffffffd
    002247becmp rax, rdi
    002247c1jb 0x224823
    002247c3lea rbx, [rdi+2]
    002247c7mov esi, 251
    002247ccmov rdi, rbx
    002247cfcall caml_alloc_shr
    002247d4mov edx, 1
    002247d9mov rdi, rax
    002247dcmov rax, [rbp+168]
    002247e3lea rcx, [rdi+8]
    002247e7mov rax, [rax+8]
    002247ebmov [rdi], rax
    002247eemov rax, [rbp+168]
    002247f5mov [rax+8], rdi
    002247f9nop [rax]
    002247fcmov rsi, [rip+0x153c49]
    00224803add rdx, 1
    00224807add rcx, 8
    0022480bmov [rcx-8], rsi
    0022480fcmp rdx, rbx
    00224812jb 0x224800
    00224814add rsp, 8
    00224818pop rbx
    00224819pop rbp
    0022481ajmp 0x21fee0
    0022481flea rdi, [rip+44592]
    00224826call caml_invalid_argument
    0022482bdb 0xd1
    0022482cand esi, edi
    0022482edb 0xff
    002247a0
    0022482f
    0022482f // align 0x10
    00224830
    00224830caml_weak_create:
    00224830jmp 0x2247a0
    00224835db 0x67
    00224836db 0xff
    00224837db 0xff
    00224838db 0xff
    00224830
    00224839
    00224839 // align 0x10
    00224840
    00224840caml_ephe_clean:
    00224840cmp [rip+0x154215], 2
    00224847je 0x224850
    00224849ret
    0022484adb 0x02
    0022484bje 0x224850
    0022484dret
    0022484e
    0022484e 66 90 f.
    00224850
    00224850loc_224850:
    00224850jmp 0x223e20
    00224840
    00224855
    00224855 // align 0x10
    00224860
    00224860caml_ephe_set_key:
    00224860push r12
    00224862sar rsi, 1
    00224865push rbp
    00224866push rbx
    00224867sub rsp, 96
    0022486bmov rcx, [0x28]
    00224874mov [rsp+88], rcx
    00224879lea rcx, [rsp+8]
    0022487emovq x0, rsp
    00224883movq x2, rcx
    00224888punpcklqdq x0, x2
    0022488ccmp rsi, -2
    00224890jae 0x224927
    00224896mov rax, [rdi-8]
    0022489alea rbx, [rsi+2]
    0022489eshr rax, 10
    002248a2cmp rbx, rax
    002248a5jae 0x224927
    002248a7mov rax, [rip+0x51736]
    002248aemov [rsp], rdi
    002248b2mov rsi, rbx
    002248b5mov [rsp+8], rdx
    002248bamovdqa x1, [rip+22538]
    002248c2mov rbp, [rax]
    002248c6lea rax, [rsp+16]
    002248cbmovups [rsp+40], x0
    002248d0movups [rsp+24], x1
    002248d5mov r12, [rbp+160]
    002248dcmov [rbp+160], rax
    002248e3mov [rsp+16], r12
    002248e8call fn_224020
    002248edmov rdx, [rsp+8]
    002248f2mov rdi, [rsp]
    002248f6mov rsi, rbx
    002248f9call fn_223d70
    002248femov [rbp+160], r12
    00224905mov rax, [rsp+88]
    0022490asub rax, [0x28]
    00224913jne 0x224933
    00224915add rsp, 96
    00224919mov eax, 1
    0022491epop rbx
    0022491fpop rbp
    00224920pop r12
    00224922ret
    00224923lea rdi, [rip+44344]
    0022492acall caml_invalid_argument
    0022492fcall fn_f4590
    00224934db 0x58
    00224935cld
    00224936in al, dx
    00224937db 0xff
    00224860
    00224938
    00224938 // align 0x10
    00224940
    00224940caml_ephe_unset_key:
    00224940mov rdx, [rip+0x153b05]
    00224947jmp 0x224860
    0022494cdb 0x10
    0022494ddb 0xff
    0022494edb 0xff
    0022494fdb 0xff
    00224940
    00224950
    00224950caml_ephe_set_key_option:
    00224950test dl, 1
    00224953jne 0x224968
    00224955mov rdx, [rdx]
    00224958jmp 0x224860
    0022495ddb 0xff
    0022495edb 0xfe
    0022495fdb 0xff
    00224960db 0xff
    00224961
    00224961 0f 1f 80 00 00 00 00 .......
    00224968
    00224968loc_224968:
    00224968mov rdx, [rip+0x153ae1]
    0022496fjmp 0x224860
    00224950
    00224974
    00224974 // align 0x10
    00224980
    00224980caml_weak_set:
    00224980test dl, 1
    00224983jne 0x224998
    00224985mov rdx, [rdx]
    00224988jmp 0x224860
    0022498ddb 0xcf
    0022498edb 0xfe
    0022498fdb 0xff
    00224990db 0xff
    00224991
    00224991 0f 1f 80 00 00 00 00 .......
    00224998
    00224998loc_224998:
    00224998mov rdx, [rip+0x153ab1]
    0022499fjmp 0x224860
    00224980
    002249a4
    002249a4 // align 0x10
    002249b0
    002249b0caml_ephe_set_data:
    002249b0push rbp
    002249b1mov rdx, rsi
    002249b4push rbx
    002249b5sub rsp, 104
    002249b9movdqa x0, [rip+22283]
    002249c1mov rax, [0x28]
    002249camov [rsp+88], rax
    002249cfxor eax, eax
    002249d1mov rax, [rip+0x5160c]
    002249d8mov [rsp], rdi
    002249dcmov [rsp+8], rsi
    002249e1cmp [rip+0x154074], 2
    002249e8mov rbx, [rax]
    002249eclea rax, [rsp+16]
    002249f1movups [rsp+24], x0
    002249f6movq x0, rsp
    002249fbmov rbp, [rbx+160]
    00224a02mov [rbx+160], rax
    00224a09lea rax, [rsp+8]
    00224a0emovq x1, rax
    00224a13punpcklqdq x0, x1
    00224a17mov [rsp+16], rbp
    00224a1cmovups [rsp+40], x0
    00224a21je 0x224a58
    00224a23mov esi, 1
    00224a28call fn_223d70
    00224a2dmov [rbx+160], rbp
    00224a34mov rax, [rsp+88]
    00224a39sub rax, [0x28]
    00224a42jne 0x224a68
    00224a44add rsp, 104
    00224a48mov eax, 1
    00224a4dpop rbx
    00224a4epop rbp
    00224a4fret
    00224a50db 0x00
    00224a51pop rbx
    00224a52pop rbp
    00224a53ret
    00224a54
    00224a54 0f 1f 40 00 ..@.
    00224a58
    00224a58loc_224a58:
    00224a58call fn_223e20
    00224a5dmov rdx, [rsp+8]
    00224a62mov rdi, [rsp]
    00224a66jmp 0x224a27
    00224a68
    00224a68loc_224a68:
    00224a68call fn_f4590
    002249b0
    00224a6d
    00224a6d // align 0x10
    00224a70
    00224a70caml_ephe_unset_data:
    00224a70push rbp
    00224a71push rbx
    00224a72sub rsp, 104
    00224a76mov rax, [rip+0x51567]
    00224a7dmovdqa x0, [rip+22087]
    00224a85mov rdx, [0x28]
    00224a8emov [rsp+88], rdx
    00224a93mov rdx, [rip+0x1539b2]
    00224a9amov [rsp], rdi
    00224a9ecmp [rip+0x153fb7], 2
    00224aa5mov [rsp+8], rdx
    00224aaamov rbx, [rax]
    00224aaelea rax, [rsp+16]
    00224ab3movups [rsp+24], x0
    00224ab8movq x0, rsp
    00224abdmov rbp, [rbx+160]
    00224ac4mov [rbx+160], rax
    00224acblea rax, [rsp+8]
    00224ad0movq x1, rax
    00224ad5punpcklqdq x0, x1
    00224ad9mov [rsp+16], rbp
    00224ademovups [rsp+40], x0
    00224ae3je 0x224b20
    00224ae5mov esi, 1
    00224aeacall fn_223d70
    00224aefmov [rbx+160], rbp
    00224af6mov rax, [rsp+88]
    00224afbsub rax, [0x28]
    00224b04jne 0x224b30
    00224b06add rsp, 104
    00224b0amov eax, 1
    00224b0fpop rbx
    00224b10pop rbp
    00224b11ret
    00224b12db 0x00
    00224b13pop rbx
    00224b14pop rbp
    00224b15ret
    00224b16
    00224b16 66 2e 0f 1f 84 00 00 00 00 00 f.........
    00224b20
    00224b20loc_224b20:
    00224b20call fn_223e20
    00224b25mov rdx, [rsp+8]
    00224b2amov rdi, [rsp]
    00224b2ejmp 0x224ae9
    00224b30
    00224b30loc_224b30:
    00224b30call fn_f4590
    00224a70
    00224b35
    00224b35 // align 0x10
    00224b40
    00224b40caml_ephe_get_key:
    00224b40sar rsi, 1
    00224b43cmp rsi, -2
    00224b47jae 0x224b66
    00224b49mov rax, [rdi-8]
    00224b4dlea rdx, [rsi+2]
    00224b51shr rax, 10
    00224b55cmp rdx, rax
    00224b58jae 0x224b66
    00224b5amov rsi, rdx
    00224b5djmp 0x2240c0
    00224b62push rax
    00224b63lea rdi, [rip+43777]
    00224b6acall caml_invalid_argument
    00224b6fdb 0x8d
    00224b70db 0x1e
    00224b71db 0xfe
    00224b72db 0xff
    00224b40
    00224b73
    00224b73 // align 0x10
    00224b80
    00224b80caml_weak_get:
    00224b80sar rsi, 1
    00224b83cmp rsi, -2
    00224b87jae 0x224ba6
    00224b89mov rax, [rdi-8]
    00224b8dlea rdx, [rsi+2]
    00224b91shr rax, 10
    00224b95cmp rdx, rax
    00224b98jae 0x224ba6
    00224b9amov rsi, rdx
    00224b9djmp 0x2240c0
    00224ba2push rax
    00224ba3lea rdi, [rip+43713]
    00224baacall caml_invalid_argument
    00224bafdb 0x4d
    00224bb0db 0x1e
    00224bb1db 0xfe
    00224bb2db 0xff
    00224b80
    00224bb3
    00224bb3 // align 0x10
    00224bc0
    00224bc0caml_ephe_get_key_copy:
    00224bc0sar rsi, 1
    00224bc3cmp rsi, -2
    00224bc7jae 0x224be6
    00224bc9mov rax, [rdi-8]
    00224bcdlea rdx, [rsi+2]
    00224bd1shr rax, 10
    00224bd5cmp rdx, rax
    00224bd8jae 0x224be6
    00224bdamov rsi, rdx
    00224bddjmp 0x224200
    00224be2push rax
    00224be3lea rdi, [rip+43649]
    00224beacall caml_invalid_argument
    00224befdb 0x0d
    00224bf0db 0x1e
    00224bf1db 0xfe
    00224bf2db 0xff
    00224bc0
    00224bf3
    00224bf3 // align 0x10
    00224c00
    00224c00caml_weak_get_copy:
    00224c00sar rsi, 1
    00224c03cmp rsi, -2
    00224c07jae 0x224c26
    00224c09mov rax, [rdi-8]
    00224c0dlea rdx, [rsi+2]
    00224c11shr rax, 10
    00224c15cmp rdx, rax
    00224c18jae 0x224c26
    00224c1amov rsi, rdx
    00224c1djmp 0x224200
    00224c22push rax
    00224c23lea rdi, [rip+43585]
    00224c2acall caml_invalid_argument
    00224c2fdb 0xcd
    00224c30db 0x1d
    00224c31db 0xfe
    00224c32db 0xff
    00224c00
    00224c33
    00224c33 // align 0x10
    00224c40
    00224c40caml_ephe_get_data:
    00224c40mov esi, 1
    00224c45jmp 0x2240c0
    00224c4adb 0x72
    00224c4bhlt
    00224c4cdb 0xff
    00224c4ddb 0xff
    00224c40
    00224c4e
    00224c4e // align 0x10
    00224c50
    00224c50caml_ephe_get_data_copy:
    00224c50mov esi, 1
    00224c55jmp 0x224200
    00224c5adb 0xa2
    00224c5bcmc
    00224c5cdb 0xff
    00224c5ddb 0xff
    00224c50
    00224c5e
    00224c5e // align 0x10
    00224c60
    00224c60caml_ephe_check_key:
    00224c60sar rsi, 1
    00224c63cmp rsi, -2
    00224c67jae 0x224c86
    00224c69mov rax, [rdi-8]
    00224c6dlea rdx, [rsi+2]
    00224c71shr rax, 10
    00224c75cmp rdx, rax
    00224c78jae 0x224c86
    00224c7amov rsi, rdx
    00224c7djmp 0x2244f0
    00224c82push rax
    00224c83lea rdi, [rip+43498]
    00224c8acall caml_invalid_argument
    00224c8fdb 0x6d
    00224c90db 0x1d
    00224c91db 0xfe
    00224c92db 0xff
    00224c60
    00224c93
    00224c93 // align 0x10
    00224ca0
    00224ca0caml_weak_check:
    00224ca0sar rsi, 1
    00224ca3cmp rsi, -2
    00224ca7jae 0x224cc6
    00224ca9mov rax, [rdi-8]
    00224cadlea rdx, [rsi+2]
    00224cb1shr rax, 10
    00224cb5cmp rdx, rax
    00224cb8jae 0x224cc6
    00224cbamov rsi, rdx
    00224cbdjmp 0x2244f0
    00224cc2push rax
    00224cc3lea rdi, [rip+43434]
    00224ccacall caml_invalid_argument
    00224ccfdb 0x2d
    00224cd0db 0x1d
    00224cd1db 0xfe
    00224cd2db 0xff
    00224ca0
    00224cd3
    00224cd3 // align 0x10
    00224ce0
    00224ce0caml_ephe_check_data:
    00224ce0push rbp
    00224ce1push rbx
    00224ce2sub rsp, 168
    00224ce9mov rax, [0x28]
    00224cf2mov [rsp+152], rax
    00224cfaxor eax, eax
    00224cfcmov rax, [rip+0x512e1]
    00224d03mov [rsp], rdi
    00224d07cmp [rip+0x153d4e], 2
    00224d0emov rbx, [rax]
    00224d12mov eax, 1
    00224d17mov [rsp+40], rsp
    00224d1cmov [rsp+8], 1
    00224d25movq x0, rax
    00224d2alea rax, [rsp+16]
    00224d2fmov rbp, [rbx+160]
    00224d36mov [rsp+80], rax
    00224d3bpunpcklqdq x0, x0
    00224d3flea rax, [rsp+80]
    00224d44mov [rbx+160], rax
    00224d4blea rax, [rsp+8]
    00224d50mov [rsp+16], rbp
    00224d55mov [rsp+104], rax
    00224d5amovups [rsp+24], x0
    00224d5fmovups [rsp+88], x0
    00224d64je 0x224da8
    00224d66mov rax, [rdi+8]
    00224d6a
    00224d6aloc_224d6a:
    00224d6amov [rbx+160], rbp
    00224d71cmp rax, [rip+0x1536d4]
    00224d78setne al
    00224d7bmovzx eax, al
    00224d7elea rax, [rax+rax+1]
    00224d83mov rdx, [rsp+152]
    00224d8bsub rdx, [0x28]
    00224d94jne 0x224db3
    00224d96add rsp, 168
    00224d9dpop rbx
    00224d9epop rbp
    00224d9fret
    00224da0db 0x00
    00224da1pop rbx
    00224da2pop rbp
    00224da3ret
    00224da4
    00224da4 0f 1f 40 00 ..@.
    00224da8
    00224da8loc_224da8:
    00224da8call fn_223e20
    00224dadmov rdi, [rsp]
    00224db1jmp 0x224d6a
    00224db3
    00224db3loc_224db3:
    00224db3call fn_f4590
    00224ce0
    00224db8
    00224db8 // align 0x10
    00224dc0
    00224dc0caml_ephe_blit_key:
    00224dc0sar rcx, 1
    00224dc3sar rsi, 1
    00224dc6add rcx, 2
    00224dcasar r8, 1
    00224dcdcmp rsi, -2
    00224dd1jae 0x224e0b
    00224dd3mov rax, [rdi-8]
    00224dd7lea r9, [rsi+2]
    00224ddblea rsi, [r9+r8]
    00224ddfshr rax, 10
    00224de3cmp rax, rsi
    00224de6jb 0x224e0b
    00224de8cmp rcx, 1
    00224decjbe 0x224e0b
    00224deemov rax, [rdx-8]
    00224df2lea rsi, [rcx+r8]
    00224df6shr rax, 10
    00224dfacmp rax, rsi
    00224dfdjb 0x224e0b
    00224dffmov rsi, r9
    00224e02jmp 0x2245d0
    00224e07sub rsp, 8
    00224e0b
    00224e0bloc_224e0b:
    00224e0blea rdi, [rip+43117]
    00224e12call caml_invalid_argument
    00224e17db 0xe5
    00224e18sbb edi, esi
    00224e1adb 0xff
    00224dc0
    00224e1b
    00224e1b // align 0x10
    00224e20
    00224e20caml_ephe_blit_data:
    00224e20push rbx
    00224e21mov rdx, rsi
    00224e24mov rbx, rsi
    00224e27mov r8l, 1
    00224e2dmov ecx, 1
    00224e32mov esi, 1
    00224e37call fn_2245d0
    00224e3cmov rsi, [rbx+8]
    00224e40xor edx, edx
    00224e42xor edi, edi
    00224e44call caml_darken
    00224e49mov eax, 1
    00224e4epop rbx
    00224e4fret
    00224e50db 0x00
    00224e51add [rbx-61], bl
    00224e20
    00224e54
    00224e54 // align 0x10
    00224e60
    00224e60caml_weak_blit:
    00224e60jmp 0x224dc0
    00224e65db 0x57
    00224e66db 0xff
    00224e67db 0xff
    00224e68db 0xff
    00224e60
    00224e69
    00224e69 // align 0x10
    00224e70
    00224e70fn_224e70:
    00224e70push r14
    00224e72push r13
    00224e74push r12
    00224e76push rbp
    00224e77mov rbp, rdi
    00224e7apush rbx
    00224e7bsub rsp, 96
    00224e7fmov rax, [rip+0x51162]
    00224e86mov rbx, [0x28]
    00224e8fmov [rsp+88], rbx
    00224e94mov rbx, rsi
    00224e97xor esi, esi
    00224e99mov r12, [rax]
    00224e9dlea rax, [rsp+16]
    00224ea2mov [rsp+8], 1
    00224eabmov r13, [r12+160]
    00224eb3mov [r12+160], rax
    00224ebbmov eax, 1
    00224ec0movq x0, rax
    00224ec5lea rax, [rsp+8]
    00224ecapunpcklqdq x0, x0
    00224ecemov rdi, rbx
    00224ed1mov [rsp+16], r13
    00224ed6mov [rsp+40], rax
    00224edbmovups [rsp+24], x0
    00224ee0call caml_alloc
    00224ee5mov [rsp+8], rax
    00224eeatest rbx, rbx
    00224eedje 0x224f23
    00224eefxor r14l, r14l
    00224ef2xor edx, edx
    00224ef4jmp 0x224f05
    00224ef6
    00224ef6 66 2e 0f 1f 84 00 00 00 00 00 f.........
    00224f00
    00224f00loc_224f00:
    00224f00mov rax, [rsp+8]
    00224f05
    00224f05loc_224f05:
    00224f05mov rsi, [rbp+8*rdx]
    00224f0alea rdi, [rax+8*rdx]
    00224f0eadd r14l, 1
    00224f12or rsi, 1
    00224f16call caml_modify
    00224f1bmovsxd rdx, r14l
    00224f1ecmp rdx, rbx
    00224f21jb 0x224f00
    00224f23
    00224f23loc_224f23:
    00224f23mov rdi, rbp
    00224f26call caml_stat_free
    00224f2bmov [r12+160], r13
    00224f33mov rax, [rsp+8]
    00224f38mov rdx, [rsp+88]
    00224f3dsub rdx, [0x28]
    00224f46jne 0x224f55
    00224f48add rsp, 96
    00224f4cpop rbx
    00224f4dpop rbp
    00224f4epop r12
    00224f50pop r13
    00224f52pop r14
    00224f54ret
    00224f55
    00224f55loc_224f55:
    00224f55call fn_f4590
    00224e70
    00224f5a
    00224f5a // align 0x10
    00224f60
    00224f60fn_224f60:
    00224f60push r15
    00224f62mov r15, rdx
    00224f65push r14
    00224f67push r13
    00224f69push r12
    00224f6bxor r12l, r12l
    00224f6epush rbp
    00224f6fpush rbx
    00224f70mov rbx, rdi
    00224f73sub rsp, 88
    00224f77mov r14, [r8]
    00224f7amov [rsp], rsi
    00224f7emov [rsp+32], rcx
    00224f83mov [rsp+40], r8
    00224f88mov r13, [0x28]
    00224f91mov [rsp+72], r13
    00224f96mov r13, [rcx]
    00224f99call caml_get_frame_descrs
    00224f9elea rdx, [rsp+64]
    00224fa3mov rdi, rbx
    00224fa6mov rbp, rax
    00224fa9lea rax, [rsp+56]
    00224faemov [rsp+24], rdx
    00224fb3mov rsi, rax
    00224fb6mov [rsp+16], rax
    00224fbbcall caml_get_stack_sp_pc
    00224fc0cmp [rsp], 0
    00224fc5je 0x225057
    00224fcbnop [rax+rax]
    00224fd0
    00224fd0loc_224fd0:
    00224fd0mov rsi, [rsp+64]
    00224fd5jmp 0x22501b
    00224fd7
    00224fd7 66 0f 1f 84 00 00 00 00 00 f........
    00224fe0
    00224fe0loc_224fe0:
    00224fe0movzx ecx, [rax+8]
    00224fe4mov rax, [rsp+56]
    00224fe9cmp cx, -1
    00224fedjne 0x225090
    00224ff3mov rcx, [rbx+16]
    00224ff7lea rdx, [rax+32]
    00224ffbmov [rsp+56], rdx
    00225000cmp rdx, rcx
    00225003je 0x2250c0
    00225009mov rsi, [rax+32]
    0022500dlea rdx, [rax+40]
    00225011mov [rsp+56], rdx
    00225016mov [rsp+64], rsi
    0022501b
    0022501bloc_22501b:
    0022501bmov rdi, rbp
    0022501ecall caml_find_frame_descr
    00225023mov rdx, rax
    00225026test rax, rax
    00225029jne 0x224fe0
    0022502bmov rcx, [rbx+16]
    0022502f
    0022502floc_22502f:
    0022502fmov rbx, [rcx+24]
    00225033test rbx, rbx
    00225036je 0x225057
    00225038mov rdx, [rsp+24]
    0022503dmov rsi, [rsp+16]
    00225042mov rdi, rbx
    00225045call caml_get_stack_sp_pc
    0022504a
    0022504aloc_22504a:
    0022504amov rax, [rsp]
    0022504ecmp r12, rax
    00225051jb 0x224fd0
    00225057
    00225057loc_225057:
    00225057mov rax, [rsp+40]
    0022505cmov [rax], r14
    0022505fmov rax, [rsp+32]
    00225064mov [rax], r13
    00225067
    00225067loc_225067:
    00225067mov rax, [rsp+72]
    0022506csub rax, [0x28]
    00225075jne 0x225190
    0022507badd rsp, 88
    0022507fmov rax, r12
    00225082pop rbx
    00225083pop rbp
    00225084pop r12
    00225086pop r13
    00225088pop r14
    0022508apop r15
    0022508cret
    0022508d
    0022508d 0f 1f 00 ...
    00225090
    00225090loc_225090:
    00225090and ecx, 65532
    00225096add rax, rcx
    00225099mov [rsp+56], rax
    0022509emov rax, [rax-8]
    002250a2mov [rsp+64], rax
    002250a7cmp r14, r12
    002250aaje 0x225118
    002250ac
    002250acloc_2250ac:
    002250actest r15, r15
    002250afjns 0x2250d0
    002250b1
    002250b1loc_2250b1:
    002250b1mov [r13+8*r12], rdx
    002250b6add r12, 1
    002250bajmp 0x22504a
    002250bc
    002250bc 0f 1f 40 00 ..@.
    002250c0
    002250c0loc_2250c0:
    002250c0mov [rsp+64], 0
    002250c9jmp 0x22502f
    002250ce
    002250ce 66 90 f.
    002250d0
    002250d0loc_2250d0:
    002250d0movzx ecx, [rdx+8]
    002250d4test cl, 1
    002250d7je 0x225184
    002250ddmovzx eax, [rdx+10]
    002250e1and ecx, 2
    002250e4lea rax, [rdx+2*rax+12]
    002250e9je 0x225178
    002250efmovzx ecx, [rax]
    002250f2lea rax, [rax+rcx+4]
    002250f7and rax, -4
    002250fblea rax, [rax+4*r15]
    002250ffmov ecx, [rax]
    00225101test ecx, ecx
    00225103je 0x225184
    00225105
    00225105loc_225105:
    00225105lea rdx, [rax+rcx+2]
    0022510amov r15, -1
    00225111jmp 0x2250b1
    00225113
    00225113 0f 1f 44 00 00 ..D..
    00225118
    00225118loc_225118:
    00225118test r14, r14
    0022511bje 0x225168
    0022511dmov rsi, r14
    00225120add r14, r14
    00225123shl rsi, 4
    00225127
    00225127loc_225127:
    00225127mov rdi, r13
    0022512amov [rsp+8], rdx
    0022512fcall caml_stat_resize_noexc
    00225134mov rdx, [rsp+8]
    00225139test rax, rax
    0022513cmov r13, rax
    0022513fjne 0x2250ac
    00225145mov rax, [rsp+32]
    0022514axor r12l, r12l
    0022514dmov [rax], 0
    00225154mov rax, [rsp+40]
    00225159mov [rax], 0
    00225160jmp 0x225067
    00225165
    00225165 0f 1f 00 ...
    00225168
    00225168loc_225168:
    00225168mov esi, 128
    0022516dmov r14l, 16
    00225173jmp 0x225127
    00225175
    00225175 0f 1f 00 ...
    00225178
    00225178loc_225178:
    00225178add rax, 3
    0022517cand rax, -4
    00225180mov ecx, [rax]
    00225182jmp 0x225105
    00225184
    00225184loc_225184:
    00225184mov r15, -1
    0022518bjmp 0x2250b1
    00225190
    00225190loc_225190:
    00225190call fn_f4590
    00224f60
    00225195
    00225195 // align 0x10
    002251a0
    002251a0caml_next_frame_descriptor:
    002251a0push r13
    002251a2mov r13, rdx
    002251a5push r12
    002251a7mov r12, rcx
    002251aapush rbp
    002251abmov rbp, rdi
    002251aepush rbx
    002251afmov rbx, rsi
    002251b2sub rsp, 8
    002251b6mov rsi, [rsi]
    002251b9jmp 0x2251ec
    002251bbdb 0x8b
    002251bcjmp 0x2251ec
    002251bf
    002251bf 90 .
    002251c0
    002251c0loc_2251c0:
    002251c0movzx ecx, [rax+8]
    002251c4mov rdx, [r13]
    002251c8cmp cx, -1
    002251ccjne 0x225210
    002251celea rax, [rdx+32]
    002251d2mov [r13], rax
    002251d6cmp rax, [r12+16]
    002251dbje 0x225230
    002251ddlea rax, [rdx+40]
    002251e1mov [r13], rax
    002251e5mov rsi, [rdx+32]
    002251e9mov [rbx], rsi
    002251ec
    002251ecloc_2251ec:
    002251ecmov rdi, rbp
    002251efcall caml_find_frame_descr
    002251f4test rax, rax
    002251f7jne 0x2251c0
    002251f9
    002251f9loc_2251f9:
    002251f9add rsp, 8
    002251fdxor eax, eax
    002251ffpop rbx
    00225200pop rbp
    00225201pop r12
    00225203pop r13
    00225205ret
    00225206
    00225206 66 2e 0f 1f 84 00 00 00 00 00 f.........
    00225210
    00225210loc_225210:
    00225210and ecx, 65532
    00225216add rdx, rcx
    00225219mov [r13], rdx
    0022521dmov rdx, [rdx-8]
    00225221mov [rbx], rdx
    00225224add rsp, 8
    00225228pop rbx
    00225229pop rbp
    0022522apop r12
    0022522cpop r13
    0022522eret
    0022522f
    0022522f 90 .
    00225230
    00225230loc_225230:
    00225230mov [rbx], 0
    00225237jmp 0x2251f9
    002251a0
    00225239
    00225239 // align 0x10
    00225240
    00225240caml_alloc_backtrace_buffer:
    00225240push rbp
    00225241mov edi, 8192
    00225246push rbx
    00225247sub rsp, 8
    0022524bmov rbx, [rip+0x50d92]
    00225252mov rbp, [rbx]
    00225256call caml_stat_alloc_noexc
    0022525bmov [rbp+200], rax
    00225262mov rax, [rbx]
    00225266cmp [rax+200], 1
    0022526esbb eax, eax
    00225270add rsp, 8
    00225274pop rbx
    00225275pop rbp
    00225276ret
    00225277db 0x08
    00225278pop rbx
    00225279pop rbp
    0022527aret
    00225240
    0022527b
    0022527b // align 0x10
    00225280
    00225280caml_free_backtrace_buffer:
    00225280test rdi, rdi
    00225283je 0x225290
    00225285jmp 0x216690
    0022528adb 0x02
    0022528badc al, -1
    0022528ddb 0xff
    0022528e
    0022528e 66 90 f.
    00225290
    00225290loc_225290:
    00225290ret
    00225280
    00225291
    00225291 // align 0x10
    002252a0
    002252a0caml_stash_backtrace:
    002252a0push r15
    002252a2mov r15, rsi
    002252a5push r14
    002252a7mov r14, rdx
    002252aapush r13
    002252acmov r13, rcx
    002252afpush r12
    002252b1push rbp
    002252b2push rbx
    002252b3sub rsp, 8
    002252b7mov rbx, [rip+0x50d26]
    002252bemov r12, [rbx]
    002252c2mov rbp, r12
    002252c5cmp [r12+208], rdi
    002252cdje 0x2252f6
    002252cfmov [r12+184], 0
    002252dblea rax, [r12+208]
    002252e3mov rsi, rdi
    002252e6mov rdi, rax
    002252e9call caml_modify_generational_global_root
    002252eemov rbp, [rbx]
    002252f2cmp [rbp+200], 0
    002252faje 0x2253ae
    00225300call caml_get_frame_descrs
    00225305mov rbx, rax
    00225308nop [rax]
    0022530cmov rbp, [r12+40]
    00225311jmp 0x22533c
    00225313db 0x24
    00225314sub bl, ch
    00225316db 0x25
    00225317
    00225317 66 0f 1f 84 00 00 00 00 00 f........
    00225320
    00225320loc_225320:
    00225320movzx edx, [rax+8]
    00225324cmp dx, -1
    00225328jne 0x225360
    0022532alea rax, [r14+32]
    0022532ecmp [rbp+16], rax
    00225332je 0x22534c
    00225334mov r15, [r14+32]
    00225338add r14, 40
    0022533c
    0022533cloc_22533c:
    0022533cmov rsi, r15
    0022533fmov rdi, rbx
    00225342call caml_find_frame_descr
    00225347test rax, rax
    0022534ajne 0x225320
    0022534c
    0022534cloc_22534c:
    0022534cadd rsp, 8
    00225350pop rbx
    00225351pop rbp
    00225352pop r12
    00225354pop r13
    00225356pop r14
    00225358pop r15
    0022535aret
    0022535b
    0022535b 0f 1f 44 00 00 ..D..
    00225360
    00225360loc_225360:
    00225360and edx, 65532
    00225366add r14, rdx
    00225369mov rdx, [r12+184]
    00225371mov r15, [r14-8]
    00225375cmp rdx, 1023
    0022537cjg 0x22534c
    0022537emov rcx, [r12+200]
    00225386lea rsi, [rdx+1]
    0022538amov [r12+184], rsi
    00225392mov [rcx+8*rdx], rax
    00225396cmp r13, r14
    00225399jae 0x225310
    0022539fadd rsp, 8
    002253a3pop rbx
    002253a4pop rbp
    002253a5pop r12
    002253a7pop r13
    002253a9pop r14
    002253abpop r15
    002253adret
    002253ae
    002253aeloc_2253ae:
    002253aemov edi, 8192
    002253b3call caml_stat_alloc_noexc
    002253b8mov [rbp+200], rax
    002253bfmov rax, [rbx]
    002253c3cmp [rax+200], 0
    002253cbjne 0x225304
    002253d1jmp 0x22534c
    002252a0