File hevea_f46f610a6b0078f4aa208dda361f21de574cc56ad64b32889301afc466d33979.elf
Function:
    00225dc0
    00225dc0caml_natdynlink_run_toplevel:
    00225dc0push r13
    00225dc2push r12
    00225dc4push rbp
    00225dc5push rbx
    00225dc6sub rsp, 200
    00225dcdmovdqa x0, [rip+17143]
    00225dd5mov [rsp+8], rdi
    00225ddamovq x1, rsp
    00225ddfmov [rsp], rsi
    00225de3mov rax, [0x28]
    00225decmov [rsp+184], rax
    00225df4mov rax, [rip+0x501e9]
    00225dfbmov r12, [rax]
    00225dfflea rax, [rsp+8]
    00225e04movups [rsp+56], x0
    00225e09mov [rsp+16], 1
    00225e12movq x0, rax
    00225e17lea rax, [rsp+48]
    00225e1cpunpcklqdq x0, x1
    00225e20mov [rsp+112], rax
    00225e25lea rax, [rsp+112]
    00225e2amov r13, [r12+160]
    00225e32movups [rsp+72], x0
    00225e37movdqa x0, [rip+17069]
    00225e3fmov [r12+160], rax
    00225e47lea rax, [rsp+16]
    00225e4cmovups [rsp+120], x0
    00225e51movq x0, rax
    00225e56lea rax, [rsp+24]
    00225e5bmovq x2, rax
    00225e60lea rax, [rsp+32]
    00225e65mov [rsp+48], r13
    00225e6amov [rsp+24], 1
    00225e73punpcklqdq x0, x2
    00225e77movups [rsp+136], x0
    00225e7fmovq x0, rax
    00225e84lea rax, [rsp+40]
    00225e89mov [rsp+32], 1
    00225e92movq x3, rax
    00225e97mov [rsp+40], 1
    00225ea0punpcklqdq x0, x3
    00225ea4movups [rsp+152], x0
    00225eaccall caml_stat_strdup
    00225eb1mov rbx, rax
    00225eb4call caml_enter_blocking_section
    00225eb9mov rdi, rbx
    00225ebcmov esi, 1
    00225ec1call caml_dlopen
    00225ec6mov rbp, rax
    00225ec9call caml_leave_blocking_section
    00225ecemov rdi, rbx
    00225ed1call caml_stat_free
    00225ed6test rbp, rbp
    00225ed9je 0x225f80
    00225edfmov esi, 251
    00225ee4mov edi, 1
    00225ee9call caml_alloc_small
    00225eeexor esi, esi
    00225ef0mov edi, 1
    00225ef5mov [rax], rbp
    00225ef8mov [rsp+32], rax
    00225efdcall caml_alloc_small
    00225f02mov rdx, [rsp]
    00225f06mov [rsp+40], rax
    00225f0bmov [rax], rdx
    00225f0emov rsi, [rsp+40]
    00225f13mov rdi, [rsp+32]
    00225f18call caml_natdynlink_register
    00225f1dxor esi, esi
    00225f1fmov edi, 1
    00225f24call caml_alloc
    00225f29mov rsi, [rsp]
    00225f2dmov rdi, [rsp+32]
    00225f32mov [rsp+16], rax
    00225f37call caml_natdynlink_run
    00225f3cmov rdi, [rsp+16]
    00225f41mov rsi, rax
    00225f44mov [rsp+24], rax
    00225f49call caml_modify
    00225f4emov [r12+160], r13
    00225f56mov rax, [rsp+16]
    00225f5bmov rdx, [rsp+184]
    00225f63sub rdx, [0x28]
    00225f6cjne 0x225fb5
    00225f6eadd rsp, 200
    00225f75pop rbx
    00225f76pop rbp
    00225f77pop r12
    00225f79pop r13
    00225f7bret
    00225f7cmov esi, 1
    00225f81mov edi, 1
    00225f86call caml_alloc
    00225f8bmov [rsp+16], rax
    00225f90call caml_dlerror
    00225f95mov rdi, rax
    00225f98call caml_copy_string
    00225f9dmov rdi, [rsp+16]
    00225fa2mov rsi, rax
    00225fa5mov [rsp+24], rax
    00225faacall caml_modify
    00225fafjmp 0x225f52
    00225fb1call fn_f4590
    00225fb6db 0xd6
    00225fb7in eax, 236
    00225fb9db 0xff
    00225dc0
    00225fba
    00225fba // align 0x10
    00225fc0
    00225fc0caml_natdynlink_loadsym:
    00225fc0push rbp
    00225fc1push rbx
    00225fc2sub rsp, 184
    00225fc9mov [rsp+8], rdi
    00225fcemov rax, [0x28]
    00225fd7mov [rsp+168], rax
    00225fdfmov rax, [rip+0x4fffe]
    00225fe6mov rbx, [rax]
    00225feamov eax, 1
    00225fefmov [rsp+24], 1
    00225ff8movq x0, rax
    00225ffdlea rax, [rsp+8]
    00226002mov [rsp+56], rax
    00226007lea rax, [rsp+32]
    0022600cmov rbp, [rbx+160]
    00226013punpcklqdq x0, x0
    00226017mov [rsp+96], rax
    0022601clea rax, [rsp+96]
    00226021mov [rbx+160], rax
    00226028lea rax, [rsp+24]
    0022602dmov [rsp+32], rbp
    00226032mov [rsp+120], rax
    00226037movups [rsp+40], x0
    0022603cmovups [rsp+104], x0
    00226041call caml_globalsym
    00226046mov [rsp+24], rax
    0022604btest rax, rax
    0022604eje 0x226078
    00226050mov [rbx+160], rbp
    00226057mov rdx, [rsp+168]
    0022605fsub rdx, [0x28]
    00226068jne 0x226082
    0022606aadd rsp, 184
    00226071pop rbx
    00226072pop rbp
    00226073ret
    00226074mov rdi, [rsp+8]
    00226079call caml_failwith
    0022607ecall fn_f4590
    00226083db 0x09
    00226084in eax, 236
    00226086db 0xff
    00225fc0
    00226087
    00226087 // align 0x20
    002260a0
    002260a0caml_raise:
    002260a0push rbp
    002260a1push rbx
    002260a2sub rsp, 24
    002260a6mov rbp, [rip+0x4ff37]
    002260adcmp [rbp], 0
    002260b3je 0x22612d
    002260b5mov rbx, rdi
    002260b8call caml_channel_cleanup_on_raise
    002260bdmov rdi, rbx
    002260c0call caml_process_pending_actions_with_root_res
    002260c5mov rdi, [rbp]
    002260camov rsi, rdx
    002260cdmov rdx, [rdi+64]
    002260d1test rdx, rdx
    002260d4je 0x226119
    002260d6mov rax, [rdi+160]
    002260ddcmp rax, rdx
    002260e0jb 0x22610f
    002260e2jmp 0x226114
    002260e4db 0x72
    002260e5sub ebx, ebp
    002260e7db 0x2c
    002260e8
    002260e8 66 66 2e 0f 1f 84 00 00 ff......
    002260f0 00 00 00 66 66 2e 0f 1f 84 00 00 00 00 00 66 90 ...ff.........f.
    00226100
    00226100loc_226100:
    00226100mov rax, [rax]
    00226103mov [rdi+160], rax
    0022610acmp rax, rdx
    0022610djae 0x226114
    0022610f
    0022610floc_22610f:
    0022610ftest rax, rax
    00226112jne 0x226100
    00226114
    00226114loc_226114:
    00226114call caml_raise_exception
    00226119
    00226119loc_226119:
    00226119mov [rsp+8], rsi
    0022611ecall caml_terminate_signals
    00226123mov rdi, [rsp+8]
    00226128call caml_fatal_uncaught_exception
    0022612d
    0022612dloc_22612d:
    0022612dcall caml_bad_caml_state
    002260a0
    00226132
    00226132 // align 0x10
    00226140
    00226140caml_exception_failure:
    00226140mov rsi, rdi
    00226143lea rdi, [rip+0x4ff32]
    0022614ajmp 0x2068b0
    0022614fdb 0x5d
    00226150db 0x07
    00226151db 0xfe
    00226152db 0xff
    00226140
    00226153
    00226153 // align 0x10
    00226160
    00226160caml_exception_failure_value:
    00226160mov rsi, rdi
    00226163lea rdi, [rip+0x4ff12]
    0022616ajmp 0x206690
    0022616fdb 0x1d
    00226170db 0x05
    00226171db 0xfe
    00226172db 0xff
    00226160
    00226173
    00226173 // align 0x10
    00226180
    00226180caml_exception_invalid_argument:
    00226180mov rsi, rdi
    00226183lea rdi, [rip+0x4ff1a]
    0022618ajmp 0x2068b0
    0022618fdb 0x1d
    00226190db 0x07
    00226191db 0xfe
    00226192db 0xff
    00226180
    00226193
    00226193 // align 0x10
    002261a0
    002261a0caml_exception_invalid_argument_value:
    002261a0mov rsi, rdi
    002261a3lea rdi, [rip+0x4fefa]
    002261aajmp 0x206690
    002261afdb 0xdd
    002261b0add al, -2
    002261b2db 0xff
    002261a0
    002261b3
    002261b3 // align 0x10
    002261c0
    002261c0caml_exception_out_of_memory:
    002261c0lea rax, [rip+0x4fe55]
    002261c7ret
    002261c8db 0xfe
    002261c9add al, 0
    002261cbret
    002261c0
    002261cc
    002261cc // align 0x10
    002261d0
    002261d0caml_exception_stack_overflow:
    002261d0lea rax, [rip+0x4ffcd]
    002261d7ret
    002261d8db 0xff
    002261d9add al, 0
    002261dbret
    002261d0
    002261dc
    002261dc // align 0x10
    002261e0
    002261e0caml_exception_sys_error:
    002261e0mov rsi, rdi
    002261e3lea rdi, [rip+0x4fe62]
    002261eajmp 0x206690
    002261efdb 0x9d
    002261f0add al, -2
    002261f2db 0xff
    002261e0
    002261f3
    002261f3 // align 0x10
    00226200
    00226200caml_exception_end_of_file:
    00226200lea rax, [rip+0x4fed5]
    00226207ret
    00226208db 0xfe
    00226209add al, 0
    0022620bret
    00226200
    0022620c
    0022620c // align 0x10
    00226210
    00226210caml_exception_zero_divide:
    00226210lea rax, [rip+0x4fef5]
    00226217ret
    00226218db 0xfe
    00226219add al, 0
    0022621bret
    00226210
    0022621c
    0022621c // align 0x10
    00226220
    00226220caml_exception_not_found:
    00226220lea rax, [rip+0x4ff1d]
    00226227ret
    00226228db 0xff
    00226229add al, 0
    0022622bret
    00226220
    0022622c
    0022622c // align 0x10
    00226230
    00226230caml_exception_sys_blocked_io:
    00226230lea rax, [rip+0x4ff9d]
    00226237ret
    00226238db 0xff
    00226239add al, 0
    0022623bret
    00226230
    0022623c
    0022623c // align 0x10
    00226240
    00226240caml_exception_array_bound_error:
    00226240mov rax, [rip+0x152f55]
    00226247test rax, rax
    0022624aje 0x226258
    0022624cmov rax, [rax]
    0022624fret
    00226250db 0x48
    00226251mov eax, [rax]
    00226253ret
    00226254
    00226254 0f 1f 40 00 ..@.
    00226258
    00226258loc_226258:
    00226258sub rsp, 8
    0022625clea rdi, [rip+38020]
    00226263call caml_named_value
    00226268test rax, rax
    0022626bje 0x22627c
    0022626dmov [rip+0x152f2c], rax
    00226274mov rax, [rax]
    00226277add rsp, 8
    0022627bret
    0022627c
    0022627cloc_22627c:
    0022627cmov rcx, [rip+0x15225d]
    00226283mov edx, 63
    00226288mov esi, 1
    0022628dlea rdi, [rip+45868]
    00226294call fn_f4700
    00226299mov edi, 2
    0022629ecall fn_f4210
    00226240
    002262a3
    002262a3 // align 0x10
    002262b0
    002262b0caml_array_bound_error_asm:
    002262b0push rax
    002262b1pop rax
    002262b2sub rsp, 8
    002262b6call caml_exception_array_bound_error
    002262bbmov rsi, rax
    002262bemov rax, [rip+0x4fd1f]
    002262c5mov rdi, [rax]
    002262c9call caml_raise_exception
    002262cedb 0x62
    002262cfadc [rax], eax
    002262d1db 0x00
    002262b0
    002262d2
    002262d2 // align 0x10
    002262e0
    002262e0caml_is_special_exception:
    002262e0lea rdx, [rip+0x4fe8d]
    002262e7mov eax, 1
    002262eccmp rdi, rdx
    002262efje 0x226311
    002262f1lea rdx, [rip+0x4ff0c]
    002262f8cmp rdi, rdx
    002262fbje 0x226311
    002262fdlea rax, [rip+0x4ff30]
    00226304cmp rdi, rax
    00226307sete al
    0022630amovzx eax, al
    0022630dret
    0022630edb 0x0f
    0022630fmov dh, 192
    00226311
    00226311loc_226311:
    00226311ret
    002262e0
    00226312
    00226312 // align 0x10
    00226320
    00226320fn_226320:
    00226320movzx edx, [rdi+8]
    00226324cmp dx, -1
    00226328je 0x226380
    0022632amov ecx, edx
    0022632cmovzx eax, [rdi+10]
    00226330and ecx, 1
    00226333and edx, 2
    00226336lea rax, [rdi+2*rax+12]
    0022633bje 0x226368
    0022633dmovzx esi, [rax]
    00226340lea rax, [rax+rsi+1]
    00226345test cl, cl
    00226347je 0x22635b
    00226349add rax, 3
    0022634dmov rdx, rsi
    00226350and rax, -4
    00226354shl rdx, 2
    00226358
    00226358loc_226358:
    00226358add rax, rdx
    0022635b
    0022635bloc_22635b:
    0022635badd rax, 7
    0022635fand rax, -8
    00226363ret
    00226364
    00226364 0f 1f 40 00 ..@.
    00226368
    00226368loc_226368:
    00226368test cl, cl
    0022636aje 0x22635b
    0022636cadd rax, 3
    00226370mov edx, 4
    00226375and rax, -4
    00226379jmp 0x226358
    0022637b
    0022637b 0f 1f 44 00 00 ..D..
    00226380
    00226380loc_226380:
    00226380lea rax, [rdi+19]
    00226384and rax, -8
    00226388ret
    00226320
    00226389
    00226389 // align 0x20
    002263a0
    002263a0fn_2263a0:
    002263a0mov r9, rdi
    002263a3test rdi, rdi
    002263a6je 0x22642e
    002263acnop [rax]
    002263b0
    002263b0loc_2263b0:
    002263b0mov rax, [r9]
    002263b3mov r8, [rax]
    002263b6add rax, 8
    002263batest r8, r8
    002263bdjle 0x226425
    002263bfxor r10l, r10l
    002263c2nop [rax+rax]
    002263cdnop [rax]
    002263d0
    002263d0loc_2263d0:
    002263d0mov rdx, [rax]
    002263d3movsxd rdi, [rip+0x15208a]
    002263damov rsi, [rip+0x152087]
    002263e1shr rdx, 3
    002263e5and rdx, rdi
    002263e8lea rcx, [rsi+8*rdx]
    002263eccmp [rcx], 0
    002263f0je 0x226411
    002263f2nop [rax+rax]
    002263fdnop [rax]
    00226400
    00226400loc_226400:
    00226400add rdx, 1
    00226404and rdx, rdi
    00226407lea rcx, [rsi+8*rdx]
    0022640bcmp [rcx], 0
    0022640fjne 0x226400
    00226411
    00226411loc_226411:
    00226411mov [rcx], rax
    00226414mov rdi, rax
    00226417add r10, 1
    0022641bcall fn_226320
    00226420cmp r8, r10
    00226423jne 0x2263d0
    00226425
    00226425loc_226425:
    00226425mov r9, [r9+8]
    00226429test r9, r9
    0022642cjne 0x2263b0
    0022642e
    0022642eloc_22642e:
    0022642eret
    002263a0
    0022642f
    0022642f // align 0x10
    00226430
    00226430fn_226430:
    00226430push rbp
    00226431mov rbp, rdi
    00226434push rbx
    00226435sub rsp, 8
    00226439test rdi, rdi
    0022643cje 0x226560
    00226442mov rax, rdi
    00226445nop [rax+rax]
    00226450
    00226450loc_226450:
    00226450mov r11, rax
    00226453mov rax, [rax+8]
    00226457test rax, rax
    0022645ajne 0x226450
    0022645cmov rax, rbp
    0022645fxor edx, edx
    00226461nop [rax+rax]
    0022646cnop [rax]
    00226470
    00226470loc_226470:
    00226470mov rcx, [rax]
    00226473mov rax, [rax+8]
    00226477add rdx, [rcx]
    0022647atest rax, rax
    0022647djne 0x226470
    0022647f
    0022647floc_22647f:
    0022647fmovsxd rsi, [rip+0x151fda]
    00226486mov eax, [rip+0x151fd8]
    0022648cmov rdi, rsi
    0022648fadd eax, 1
    00226492add rsi, rdx
    00226495lea rcx, [rsi+rsi]
    00226499cdqe
    0022649bcmp rax, rcx
    0022649ejge 0x226530
    002264a4mov rax, [rip+0x151fc5]
    002264abmov [r11+8], rax
    002264afmov [rip+0x151fb6], 0
    002264bacmp rcx, 4
    002264bejle 0x22656a
    002264c4mov eax, 4
    002264c9nop [rax]
    002264d0
    002264d0loc_2264d0:
    002264d0add rax, rax
    002264d3cmp rcx, rax
    002264d6jg 0x2264d0
    002264d8lea edx, [rax-1]
    002264dbmov rbx, rax
    002264de
    002264deloc_2264de:
    002264demov rdi, [rip+0x151f83]
    002264e5mov [rip+0x151f75], esi
    002264ebmov [rip+0x151f73], edx
    002264f1test rdi, rdi
    002264f4je 0x2264fb
    002264f6call caml_stat_free
    002264fb
    002264fbloc_2264fb:
    002264fbmov esi, 8
    00226500mov rdi, rbx
    00226503call caml_stat_calloc_noexc
    00226508mov [rip+0x151f59], rax
    0022650ftest rax, rax
    00226512je 0x226579
    00226514mov rdi, rbp
    00226517call fn_2263a0
    0022651cmov [rip+0x151f4d], rbp
    00226523add rsp, 8
    00226527pop rbx
    00226528pop rbp
    00226529ret
    0022652a
    0022652a 66 0f 1f 44 00 00 f..D..
    00226530
    00226530loc_226530:
    00226530add edi, edx
    00226532mov [rip+0x151f28], edi
    00226538mov rdi, rbp
    0022653bcall fn_2263a0
    00226540mov rax, [rip+0x151f29]
    00226547mov [r11+8], rax
    0022654bmov [rip+0x151f1e], rbp
    00226552add rsp, 8
    00226556pop rbx
    00226557pop rbp
    00226558ret
    00226559
    00226559 0f 1f 80 00 00 00 00 .......
    00226560
    00226560loc_226560:
    00226560xor r11l, r11l
    00226563xor edx, edx
    00226565jmp 0x22647f
    0022656a
    0022656aloc_22656a:
    0022656amov ebx, 4
    0022656fmov edx, 3
    00226574jmp 0x2264de
    00226579
    00226579loc_226579:
    00226579call caml_raise_out_of_memory
    00226430
    0022657e
    0022657e // align 0x10
    00226580
    00226580fn_226580:
    00226580push r15
    00226582push r14
    00226584mov r14, rsi
    00226587push r13
    00226589mov r13l, edx
    0022658cpush r12
    0022658epush rbp
    0022658fpush rbx
    00226590sub rsp, 40
    00226594cmp edx, 1
    00226597je 0x226745
    0022659dmov edi, edx
    0022659fcall caml_global_barrier_and_check_final
    002265a4mov r12, rax
    002265a7test rax, rax
    002265aaje 0x2266b4
    002265b0mov rbx, [rip+0x151ebd]
    002265b7test rbx, rbx
    002265baje 0x22676e
    002265c0xor ebp, ebp
    002265c2mov rdi, [rbx]
    002265c5mov r11, [rdi]
    002265c8add rdi, 8
    002265cctest r11, r11
    002265cfjle 0x2266ea
    002265d5mov r9, [rip+0x151e88]
    002265dcmovsxd r8, [rip+0x151e7d]
    002265e3xor r10l, r10l
    002265e6nop [rax+rax]
    002265ecmov rax, [rdi]
    002265efshr rax, 3
    002265f3and rax, r8
    002265f6cmp [r9+8*rax], rdi
    002265faje 0x22660d
    002265fcadd rax, 1
    00226600
    00226600loc_226600:
    00226600and rax, r8
    00226603cmp [r9+8*rax], rdi
    00226607jne 0x226600
    00226609mov [rsp+16], r11
    0022660emov r15, r12
    00226611mov [r9+8*rax], 0
    00226619movsxd r8, [rip+0x151e40]
    00226620lea rdx, [rax+1]
    00226624lea rcx, [8*rax]
    0022662cmov r9, [rip+0x151e31]
    00226633and rdx, r8
    00226636mov rsi, [r9+8*rdx]
    0022663atest rsi, rsi
    0022663dje 0x226706
    00226643mov [rsp+8], rdi
    00226648mov [rsp+24], rcx
    0022664djmp 0x22666d
    0022664fdb 0x24
    00226650sbb bl, ch
    00226652db 0x1a
    00226653
    00226653 0f 1f 44 00 00 ..D..
    00226658
    00226658loc_226658:
    00226658cmp rax, rcx
    0022665bjae 0x22668d
    0022665d
    0022665dloc_22665d:
    0022665dadd rdx, 1
    00226661and rdx, r8
    00226664mov rsi, [r9+8*rdx]
    00226668test rsi, rsi
    0022666bje 0x2266c8
    0022666d
    0022666dloc_22666d:
    0022666dmov rcx, [rsi]
    00226670shr rcx, 3
    00226674and rcx, r8
    00226677cmp rdx, rcx
    0022667asetae r11b
    0022667ecmp rdx, rax
    00226681setb r12b
    00226685mov edi, r11l
    00226688or dil, r12b
    0022668bjne 0x226658
    0022668d
    0022668dloc_22668d:
    0022668dtest r11b, r11b
    00226690je 0x226697
    00226692test r12b, r12b
    00226695jne 0x22665d
    00226697
    00226697loc_226697:
    00226697mov rcx, [rsp+24]
    0022669cmov rdi, [rsp+8]
    002266a1mov rax, rdx
    002266a4mov [r9+rcx], rsi
    002266a8mov r9, [rip+0x151db9]
    002266afjmp 0x226615
    002266b4
    002266b4loc_2266b4:
    002266b4add rsp, 40
    002266b8pop rbx
    002266b9pop rbp
    002266bapop r12
    002266bcpop r13
    002266bepop r14
    002266c0pop r15
    002266c2ret
    002266c3
    002266c3 0f 1f 44 00 00 ..D..
    002266c8
    002266c8loc_2266c8:
    002266c8mov r11, [rsp+16]
    002266cdmov rdi, [rsp+8]
    002266d2mov r12, r15
    002266d5
    002266d5loc_2266d5:
    002266d5call fn_226320
    002266daadd r10, 1
    002266demov rdi, rax
    002266e1cmp r11, r10
    002266e4jne 0x2265f0
    002266ea
    002266ealoc_2266ea:
    002266eamov r15, [rbx+8]
    002266eemov rdi, rbx
    002266f1add rbp, r11
    002266f4call caml_stat_free
    002266f9test r15, r15
    002266fcje 0x226710
    002266femov rbx, r15
    00226701jmp 0x2265c6
    00226706
    00226706loc_226706:
    00226706mov r11, [rsp+16]
    0022670bmov r12, r15
    0022670ejmp 0x2266d5
    00226710
    00226710loc_226710:
    00226710mov rdi, r14
    00226713sub [rip+0x151d47], ebp
    00226719mov [rip+0x151d54], 0
    00226724call fn_226430
    00226729cmp r13l, 1
    0022672dje 0x2266b4
    0022672f
    0022672floc_22672f:
    0022672fadd rsp, 40
    00226733mov rdi, r12
    00226736pop rbx
    00226737pop rbp
    00226738pop r12
    0022673apop r13
    0022673cpop r14
    0022673epop r15
    00226740jmp 0x201620
    00226745
    00226745loc_226745:
    00226745mov rbx, [rip+0x151d2c]
    0022674cxor r12l, r12l
    0022674ftest rbx, rbx
    00226752jne 0x2265c4
    00226758add rsp, 40
    0022675cmov rdi, r14
    0022675fpop rbx
    00226760pop rbp
    00226761pop r12
    00226763pop r13
    00226765pop r14
    00226767pop r15
    00226769jmp 0x226430
    0022676e
    0022676eloc_22676e:
    0022676emov rdi, r14
    00226771call fn_226430
    00226776jmp 0x22672f
    00226580
    00226778
    00226778 // align 0x10
    00226780
    00226780fn_226780:
    00226780push r12
    00226782lea r12, [rip+0x151cf7]
    00226789push rbp
    0022678amov rbp, rdi
    0022678dmov rdi, r12
    00226790push rbx
    00226791mov ebx, esi
    00226793call fn_f4710
    00226798test eax, eax
    0022679ajne 0x226850
    002267a0mov rsi, [rip+0x151cc9]
    002267a7lea r9, [rip+0x151cc2]
    002267aetest rsi, rsi
    002267b1je 0x22683f
    002267b7nop [rax+rax]
    002267c0
    002267c0loc_2267c0:
    002267c0movsxd r8, ebx
    002267c3mov edi, ebx
    002267c5lea rdx, [rbp+8*r8]
    002267catest ebx, ebx
    002267ccjle 0x226832
    002267ce
    002267celoc_2267ce:
    002267cemov rcx, [rsi]
    002267d1mov rax, rbp
    002267d4jmp 0x2267e9
    002267d6
    002267d6 66 2e 0f 1f 84 00 00 00 00 00 f.........
    002267e0
    002267e0loc_2267e0:
    002267e0add rax, 8
    002267e4cmp rax, rdx
    002267e7je 0x226830
    002267e9
    002267e9loc_2267e9:
    002267e9cmp rcx, [rax]
    002267ecjne 0x2267e0
    002267eemov rcx, [rsi+8]
    002267f2mov [r9], rcx
    002267f5mov rcx, [rip+0x151c7c]
    002267fcmov [rsi+8], rcx
    00226800mov [rip+0x151c71], rsi
    00226807sub edi, 1
    0022680aje 0x22683f
    0022680clea ecx, [rbx-1]
    0022680fmov r10, [rax]
    00226812mov rsi, [r9]
    00226815movsxd rcx, ecx
    00226818sub rcx, r8
    0022681bmov r11, [rdx+8*rcx]
    0022681fmov [rax], r11
    00226822mov [rdx+8*rcx], r10
    00226826sub rdx, 8
    0022682ajmp 0x2267ce
    0022682c
    0022682c 0f 1f 40 00 ..@.
    00226830
    00226830loc_226830:
    00226830mov ebx, edi
    00226832
    00226832loc_226832:
    00226832lea r9, [rsi+8]
    00226836mov rsi, [rsi+8]
    0022683atest rsi, rsi
    0022683djne 0x2267c0
    0022683f
    0022683floc_22683f:
    0022683fmov rdi, r12
    00226842call fn_f47c0
    00226847test eax, eax
    00226849jne 0x22685e
    0022684bpop rbx
    0022684cpop rbp
    0022684dpop r12
    0022684fret
    00226850
    00226850loc_226850:
    00226850mov esi, eax
    00226852lea rdi, [rip+36022]
    00226859call caml_plat_fatal_error
    0022685e
    0022685eloc_22685e:
    0022685emov esi, eax
    00226860lea rdi, [rip+36019]
    00226867call caml_plat_fatal_error
    00226780
    0022686c
    0022686c // align 0x10
    00226870
    00226870caml_init_frame_descriptors:
    00226870push r13
    00226872push r12
    00226874push rbp
    00226875push rbx
    00226876sub rsp, 8
    0022687amov rbx, [rip+0x52123]
    00226881test rbx, rbx
    00226884je 0x2268d8
    00226886xor ebp, ebp
    00226888xor eax, eax
    0022688alea r12, [rip+0x52113]
    00226891nop [rax+rax]
    0022689cmov edi, 16
    002268a1add ebp, 1
    002268a4mov r13, rax
    002268a7call caml_stat_alloc
    002268acmovsxd rdx, ebp
    002268afmov [rax], rbx
    002268b2mov [rax+8], r13
    002268b6mov rbx, [r12+8*rdx]
    002268batest rbx, rbx
    002268bdjne 0x2268a0
    002268bfadd rsp, 8
    002268c3
    002268c3loc_2268c3:
    002268c3mov rdi, rax
    002268c6pop rbx
    002268c7pop rbp
    002268c8pop r12
    002268capop r13
    002268ccjmp 0x226430
    002268d1db 0x5b
    002268d2sti
    002268d3db 0xff
    002268d4db 0xff
    002268d5
    002268d5 0f 1f 00 ...
    002268d8
    002268d8loc_2268d8:
    002268d8xor eax, eax
    002268dajmp 0x2268c3
    00226870
    002268dc
    002268dc // align 0x10
    002268e0
    002268e0caml_register_frametables:
    002268e0push r12
    002268e2push rbp
    002268e3push rbx
    002268e4sub rsp, 16
    002268e8test esi, esi
    002268eajle 0x226960
    002268ecmovsxd rsi, esi
    002268efmov rbp, rdi
    002268f2xor ebx, ebx
    002268f4lea r12, [rdi+8*rsi]
    002268f8nop [rax]
    002268fcmovq x0, [rbp]
    00226901movq x1, rbx
    00226906mov edi, 16
    0022690badd rbp, 8
    0022690fpunpcklqdq x0, x1
    00226913movaps [rsp], x0
    00226917call caml_stat_alloc
    0022691cmovdqa x0, [rsp]
    00226921mov rbx, rax
    00226924movups [rax], x0
    00226927cmp rbp, r12
    0022692ajne 0x226900
    0022692clea rbp, [rip-951]
    00226933nop [rax+rax]
    0022693cxor edx, edx
    0022693emov rsi, rbx
    00226941mov rdi, rbp
    00226944call caml_try_run_on_all_domains
    00226949test eax, eax
    0022694bje 0x226940
    0022694dadd rsp, 16
    00226951pop rbx
    00226952pop rbp
    00226953pop r12
    00226955ret
    00226956db 0x5d
    00226957pop r12
    00226959ret
    0022695a
    0022695a 66 0f 1f 44 00 00 f..D..
    00226960
    00226960loc_226960:
    00226960xor ebx, ebx
    00226962jmp 0x226930
    002268e0
    00226964
    00226964 // align 0x10
    00226970
    00226970caml_copy_and_register_frametables:
    00226970push r15
    00226972push r14
    00226974push r13
    00226976push r12
    00226978push rbp
    00226979push rbx
    0022697asub rsp, 8
    0022697etest edx, edx
    00226980jle 0x226a10
    00226986movsxd rdx, edx
    00226989mov rbp, rsi
    0022698cmov r12, rdi
    0022698fxor ebx, ebx
    00226991lea r13, [rsi+4*rdx]
    00226995nop [rax]
    0022699cmovsxd r14, [rbp]
    002269a0
    002269a0loc_2269a0:
    002269a0mov r15, rbx
    002269a3add rbp, 4
    002269a7add r12, 8
    002269ablea rdi, [r14+16]
    002269afcall caml_stat_alloc
    002269b4mov rsi, [r12-8]
    002269b9mov rdx, r14
    002269bclea rcx, [rax+16]
    002269c0mov rbx, rax
    002269c3mov rdi, rcx
    002269c6call fn_f47d0
    002269cbmov [r12-8], rax
    002269d0mov [rbx], rax
    002269d3mov [rbx+8], r15
    002269d7cmp rbp, r13
    002269dajne 0x2269a0
    002269dclea rbp, [rip-1127]
    002269e3nop [rax+rax]
    002269ecxor edx, edx
    002269eemov rsi, rbx
    002269f1mov rdi, rbp
    002269f4call caml_try_run_on_all_domains
    002269f9test eax, eax
    002269fbje 0x2269f0
    002269fdadd rsp, 8
    00226a01pop rbx
    00226a02pop rbp
    00226a03pop r12
    00226a05pop r13
    00226a07pop r14
    00226a09pop r15
    00226a0bret
    00226a0cxor ebx, ebx
    00226a0ejmp 0x2269e0
    00226a10db 0x31
    00226a11fucomi f3
    00226a13int 3
    00226970
    00226a14
    00226a14 // align 0x10
    00226a20
    00226a20caml_unregister_frametables:
    00226a20jmp 0x226780
    00226a25db 0x57
    00226a26std
    00226a27db 0xff
    00226a28db 0xff
    00226a20
    00226a29
    00226a29 // align 0x10
    00226a30
    00226a30caml_register_frametable:
    00226a30push rbp
    00226a31mov rbp, rdi
    00226a34mov edi, 16
    00226a39push rbx
    00226a3asub rsp, 8
    00226a3ecall caml_stat_alloc
    00226a43mov [rax+8], 0
    00226a4bmov rbx, rax
    00226a4emov [rax], rbp
    00226a51lea rbp, [rip-1244]
    00226a58nop [rax]
    00226a5cxor edx, edx
    00226a5emov rsi, rbx
    00226a61mov rdi, rbp
    00226a64call caml_try_run_on_all_domains
    00226a69test eax, eax
    00226a6bje 0x226a60
    00226a6dadd rsp, 8
    00226a71pop rbx
    00226a72pop rbp
    00226a73ret
    00226a74db 0x08
    00226a75pop rbx
    00226a76pop rbp
    00226a77ret
    00226a30
    00226a78
    00226a78 // align 0x10
    00226a80
    00226a80caml_copy_and_register_frametable:
    00226a80push r13
    00226a82mov r13, rdi
    00226a85push r12
    00226a87push rbp
    00226a88movsxd rbp, esi
    00226a8bpush rbx
    00226a8clea rdi, [rbp+16]
    00226a90sub rsp, 8
    00226a94call caml_stat_alloc
    00226a99mov rdx, rbp
    00226a9cmov rsi, r13
    00226a9flea rbp, [rip-1322]
    00226aa6lea r12, [rax+16]
    00226aaamov rbx, rax
    00226aadmov rdi, r12
    00226ab0call fn_f47d0
    00226ab5mov [rbx], r12
    00226ab8mov [rbx+8], 0
    00226ac0nop [rax+rax]
    00226acbnop
    00226accxor edx, edx
    00226acemov rsi, rbx
    00226ad1mov rdi, rbp
    00226ad4call caml_try_run_on_all_domains
    00226ad9test eax, eax
    00226adbje 0x226ad0
    00226addadd rsp, 8
    00226ae1mov rax, r12
    00226ae4pop rbx
    00226ae5pop rbp
    00226ae6pop r12
    00226ae8pop r13
    00226aearet
    00226aebdb 0x5c
    00226aecpop r13
    00226aeeret
    00226a80
    00226aef
    00226aef // align 0x10
    00226af0
    00226af0caml_unregister_frametable:
    00226af0sub rsp, 24
    00226af4mov esi, 1
    00226af9mov [rsp+8], rdi
    00226afelea rdi, [rsp+8]
    00226b03call fn_226780
    00226b08add rsp, 24
    00226b0cret
    00226b0ddb 0x83
    00226b0edb 0xc4
    00226b0fsbb bl, al
    00226af0
    00226b11
    00226b11 // align 0x10
    00226b20
    00226b20caml_get_frame_descrs:
    00226b20lea rax, [rip+0x151935]
    00226b27ret
    00226b28db 0x19
    00226b29db 0x15
    00226b2aadd bl, al
    00226b20
    00226b2c
    00226b2c // align 0x20
    00226b40
    00226b40caml_find_frame_descr:
    00226b40movsxd r8, [rdi+4]
    00226b44mov rax, rsi
    00226b47mov rcx, [rdi+8]
    00226b4bshr rax, 3
    00226b4fand rax, r8
    00226b52mov rdx, [rcx+8*rax]
    00226b56test rdx, rdx
    00226b59jne 0x226b90
    00226b5bjmp 0x226b95
    00226b5ddb 0x75
    00226b5exor ebx, ebp
    00226b60db 0x34
    00226b61
    00226b61 66 66 2e 0f 1f 84 00 00 00 00 00 66 66 2e 0f ff.........ff..
    00226b70 1f 84 00 00 00 00 00 66 0f 1f 84 00 00 00 00 00 .......f........
    00226b80
    00226b80loc_226b80:
    00226b80add rax, 1
    00226b84and rax, r8
    00226b87mov rdx, [rcx+8*rax]
    00226b8btest rdx, rdx
    00226b8eje 0x226b95
    00226b90
    00226b90loc_226b90:
    00226b90cmp [rdx], rsi
    00226b93jne 0x226b80
    00226b95
    00226b95loc_226b95:
    00226b95mov rax, rdx
    00226b98ret
    00226b40
    00226b99
    00226b99 // align 0x40
    00226bc0
    00226bc0caml_startup_common:
    00226bc0push rbp
    00226bc1mov ebp, esi
    00226bc3push rbx
    00226bc4mov rbx, rdi
    00226bc7sub rsp, 8
    00226bcbcall caml_parse_ocamlrunparam
    00226bd0mov rax, [rip+0x4ed7d]
    00226bd7cmp [rax+144], 0
    00226bdfje 0x226bea
    00226be1mov ebp, 1
    00226be6mov edi, ebp
    00226be8mov ebp, 1
    00226bedcall caml_startup_aux
    00226bf2test eax, eax
    00226bf4jne 0x226c08
    00226bf6add rsp, 8
    00226bfamov rax, rbp
    00226bfdpop rbx
    00226bfepop rbp
    00226bffret
    00226c00db 0xe8
    00226c01pop rbx
    00226c02pop rbp
    00226c03ret
    00226c04
    00226c04 0f 1f 40 00 ..@.
    00226c08
    00226c08loc_226c08:
    00226c08call caml_init_codefrag
    00226c0dcall caml_init_locale
    00226c12call caml_init_custom_operations
    00226c17call caml_init_os_params
    00226c1ccall caml_init_gc
    00226c21call caml_runtime_events_init
    00226c26mov rdx, [rip+0x51733]
    00226c2dmov rdi, [rip+0x5171c]
    00226c34mov rsi, [rip+0x5171d]
    00226c3btest rdx, rdx
    00226c3eje 0x226cad
    00226c40mov ecx, 1
    00226c45lea r8, [rip+0x51704]
    00226c4cmov eax, 1
    00226c51nop [rax+rax]
    00226c5cnop [rax+rax]
    00226c67nop [rax+rax]
    00226c72nop [rax+rax]
    00226c7dnop [rax]
    00226c80
    00226c80loc_226c80:
    00226c80cmp rdi, rdx
    00226c83cmova rdi, rdx
    00226c87shl rax, 4
    00226c8bmov rax, [r8+rax+8]
    00226c90cmp rsi, rax
    00226c93cmovb rsi, rax
    00226c97add ecx, 1
    00226c9amovsxd rax, ecx
    00226c9dmov rdx, rax
    00226ca0shl rdx, 4
    00226ca4mov rdx, [r8+rdx]
    00226ca8test rdx, rdx
    00226cabjne 0x226c80
    00226cad
    00226cadloc_226cad:
    00226cadxor ecx, ecx
    00226cafxor edx, edx
    00226cb1call caml_register_code_fragment
    00226cb6xor ecx, ecx
    00226cb8lea rdi, [rip+304]
    00226cbfmov edx, 3
    00226cc4lea rsi, [rip+2426]
    00226ccbcall caml_register_code_fragment
    00226cd0call caml_init_signals
    00226cd5call caml_debugger_init
    00226cdamov rbp, [rbx]
    00226cddlea rax, [rip+33352]
    00226ce4test rbp, rbp
    00226ce7cmove rbp, rax
    00226cebcall caml_executable_name
    00226cf0mov rdi, rax
    00226cf3test rax, rax
    00226cf6je 0x226d30
    00226cf8
    00226cf8loc_226cf8:
    00226cf8mov rsi, rbx
    00226cfbcall caml_sys_init
    00226d00call caml_maybe_expand_stack
    00226d05mov rax, [rip+0x4f2dc]
    00226d0cmov rdi, [rax]
    00226d10call caml_start_program
    00226d15mov rbp, rax
    00226d18call caml_terminate_signals
    00226d1dadd rsp, 8
    00226d21mov rax, rbp
    00226d24pop rbx
    00226d25pop rbp
    00226d26ret
    00226d27
    00226d27 66 0f 1f 84 00 00 00 00 00 f........
    00226d30
    00226d30loc_226d30:
    00226d30mov rdi, rbp
    00226d33call caml_search_exe_in_path
    00226d38mov rdi, rax
    00226d3bjmp 0x226cf8
    00226bc0
    00226d3d
    00226d3d // align 0x10
    00226d40
    00226d40caml_startup_exn:
    00226d40xor esi, esi
    00226d42jmp 0x226bc0
    00226d47db 0x75
    00226d48db 0xfe
    00226d49db 0xff
    00226d4adb 0xff
    00226d40
    00226d4b
    00226d4b // align 0x10
    00226d50
    00226d50caml_startup:
    00226d50sub rsp, 8
    00226d54xor esi, esi
    00226d56call caml_startup_common
    00226d5bmov rdx, rax
    00226d5eand edx, 3
    00226d61cmp rdx, 2
    00226d65je 0x226d70
    00226d67add rsp, 8
    00226d6bret
    00226d6cand rax, -4
    00226d70
    00226d70loc_226d70:
    00226d70mov rdi, rax
    00226d73call caml_fatal_uncaught_exception
    00226d78db 0x34
    00226d79sub [rax], al
    00226d7bdb 0x00
    00226d50
    00226d7c
    00226d7c // align 0x10
    00226d80
    00226d80caml_main:
    00226d80sub rsp, 8
    00226d84xor esi, esi
    00226d86call caml_startup_common
    00226d8bmov rdx, rax
    00226d8eand edx, 3
    00226d91cmp rdx, 2
    00226d95je 0x226da0
    00226d97add rsp, 8
    00226d9bret
    00226d9cand rax, -4
    00226da0
    00226da0loc_226da0:
    00226da0mov rdi, rax
    00226da3call caml_fatal_uncaught_exception
    00226da8db 0x04
    00226da9sub [rax], al
    00226dabdb 0x00
    00226d80
    00226dac
    00226dac // align 0x10
    00226db0
    00226db0caml_startup_pooled_exn:
    00226db0mov esi, 1
    00226db5jmp 0x226bc0
    00226dbadb 0x02
    00226dbbdb 0xfe
    00226dbcdb 0xff
    00226dbddb 0xff
    00226db0
    00226dbe
    00226dbe // align 0x10
    00226dc0
    00226dc0caml_startup_pooled:
    00226dc0sub rsp, 8
    00226dc4mov esi, 1
    00226dc9call caml_startup_common
    00226dcemov rdx, rax
    00226dd1and edx, 3
    00226dd4cmp rdx, 2
    00226dd8je 0x226de3
    00226ddaadd rsp, 8
    00226dderet
    00226ddfand rax, -4
    00226de3
    00226de3loc_226de3:
    00226de3mov rdi, rax
    00226de6call caml_fatal_uncaught_exception
    00226debdb 0xc1
    00226decdb 0x27
    00226dedadd [rax], al
    00226dc0
    00226def
    00226def c3 .
    00226df0
    00226df0caml_call_realloc_stack:
    00226df0mov [r14+8], r15
    00226df4mov r15, [r14+80]
    00226df8mov [r15+88], r11
    00226dfcmov r11, [r15]
    00226dffmov [r14+80], r11
    00226e03mov [r15], rax
    00226e06mov [r15+8], rbx
    00226e0amov [r15+16], rdi
    00226e0emov [r15+24], rsi
    00226e12mov [r15+32], rdx
    00226e16mov [r15+40], rcx
    00226e1amov [r15+48], r8
    00226e1emov [r15+56], r9
    00226e22mov [r15+64], r12
    00226e26mov [r15+72], r13
    00226e2amov [r15+80], r10
    00226e2emov [r15+96], rbp
    00226e32movsd_xmm [r15+104], x0
    00226e38movsd_xmm [r15+112], x1
    00226e3emovsd_xmm [r15+120], x2
    00226e44movsd_xmm [r15+128], x3
    00226e4dmovsd_xmm [r15+136], x4
    00226e56movsd_xmm [r15+144], x5
    00226e5fmovsd_xmm [r15+152], x6
    00226e68movsd_xmm [r15+160], x7
    00226e71movsd_xmm [r15+168], x8
    00226e7amovsd_xmm [r15+176], x9
    00226e83movsd_xmm [r15+184], x10
    00226e8cmovsd_xmm [r15+192], x11
    00226e95movsd_xmm [r15+200], x12
    00226e9emovsd_xmm [r15+208], x13
    00226ea7movsd_xmm [r15+216], x14
    00226eb0movsd_xmm [r15+224], x15
    00226eb9mov rdi, [rsp+8]
    00226ebemov r10, [r14+40]
    00226ec2mov [r10], rsp
    00226ec5mov r11, [r14+64]
    00226ec9mov [r11+8], rsp
    00226ecdmov [r11], r10
    00226ed0mov rsp, r11
    00226ed3call caml_try_realloc_stack
    00226ed8mov rsp, [rsp+8]
    00226eddcmp rax, 0
    00226ee1je 0x226fb1
    00226ee7mov rax, [r15]
    00226eeamov r11, [r14+80]
    00226eeemov [r15], r11
    00226ef1mov [r14+80], r15
    00226ef5mov rbx, [r15+8]
    00226ef9mov rdi, [r15+16]
    00226efdmov rsi, [r15+24]
    00226f01mov rdx, [r15+32]
    00226f05mov rcx, [r15+40]
    00226f09mov r8, [r15+48]
    00226f0dmov r9, [r15+56]
    00226f11mov r12, [r15+64]
    00226f15mov r13, [r15+72]
    00226f19mov r10, [r15+80]
    00226f1dmov r11, [r15+88]
    00226f21mov rbp, [r15+96]
    00226f25movsd_xmm x0, [r15+104]
    00226f2bmovsd_xmm x1, [r15+112]
    00226f31movsd_xmm x2, [r15+120]
    00226f37movsd_xmm x3, [r15+128]
    00226f40movsd_xmm x4, [r15+136]
    00226f49movsd_xmm x5, [r15+144]
    00226f52movsd_xmm x6, [r15+152]
    00226f5bmovsd_xmm x7, [r15+160]
    00226f64movsd_xmm x8, [r15+168]
    00226f6dmovsd_xmm x9, [r15+176]
    00226f76movsd_xmm x10, [r15+184]
    00226f7fmovsd_xmm x11, [r15+192]
    00226f88movsd_xmm x12, [r15+200]
    00226f91movsd_xmm x13, [r15+208]
    00226f9amovsd_xmm x14, [r15+216]
    00226fa3movsd_xmm x15, [r15+224]
    00226facmov r15, [r14+8]
    00226fb0ret
    00226fb1
    00226fb1loc_226fb1:
    00226fb1mov rax, [r15]
    00226fb4mov r11, [r14+80]
    00226fb8mov [r15], r11
    00226fbbmov [r14+80], r15
    00226fbfmov rbx, [r15+8]
    00226fc3mov rdi, [r15+16]
    00226fc7mov rsi, [r15+24]
    00226fcbmov rdx, [r15+32]
    00226fcfmov rcx, [r15+40]
    00226fd3mov r8, [r15+48]
    00226fd7mov r9, [r15+56]
    00226fdbmov r12, [r15+64]
    00226fdfmov r13, [r15+72]
    00226fe3mov r10, [r15+80]
    00226fe7mov r11, [r15+88]
    00226febmov rbp, [r15+96]
    00226fefmovsd_xmm x0, [r15+104]
    00226ff5movsd_xmm x1, [r15+112]
    00226ffbmovsd_xmm x2, [r15+120]
    00227001movsd_xmm x3, [r15+128]
    0022700amovsd_xmm x4, [r15+136]
    00227013movsd_xmm x5, [r15+144]
    0022701cmovsd_xmm x6, [r15+152]
    00227025movsd_xmm x7, [r15+160]
    0022702emovsd_xmm x8, [r15+168]
    00227037movsd_xmm x9, [r15+176]
    00227040movsd_xmm x10, [r15+184]
    00227049movsd_xmm x11, [r15+192]
    00227052movsd_xmm x12, [r15+200]
    0022705bmovsd_xmm x13, [r15+208]
    00227064movsd_xmm x14, [r15+216]
    0022706dmovsd_xmm x15, [r15+224]
    00227076mov r15, [r14+8]
    0022707alea rax, [rip+0x4f127]
    00227081add rsp, 16
    00227085jmp 0x2273c0
    00226df0
    0022708a
    0022708a 66 90 f.
    0022708c
    0022708ccaml_call_gc:
    0022708cmov [r14+8], r15
    00227090mov r15, [r14+80]
    00227094mov [r15+88], r11
    00227098mov r11, [r15]
    0022709bmov [r14+80], r11
    0022709fmov [r15], rax
    002270a2mov [r15+8], rbx
    002270a6mov [r15+16], rdi
    002270aamov [r15+24], rsi
    002270aemov [r15+32], rdx
    002270b2mov [r15+40], rcx
    002270b6mov [r15+48], r8
    002270bamov [r15+56], r9
    002270bemov [r15+64], r12
    002270c2mov [r15+72], r13
    002270c6mov [r15+80], r10
    002270camov [r15+96], rbp
    002270cemovsd_xmm [r15+104], x0
    002270d4movsd_xmm [r15+112], x1
    002270damovsd_xmm [r15+120], x2
    002270e0movsd_xmm [r15+128], x3
    002270e9movsd_xmm [r15+136], x4
    002270f2movsd_xmm [r15+144], x5
    002270fbmovsd_xmm [r15+152], x6
    00227104movsd_xmm [r15+160], x7
    0022710dmovsd_xmm [r15+168], x8
    00227116movsd_xmm [r15+176], x9
    0022711fmovsd_xmm [r15+184], x10
    00227128movsd_xmm [r15+192], x11
    00227131movsd_xmm [r15+200], x12
    0022713amovsd_xmm [r15+208], x13
    00227143movsd_xmm [r15+216], x14
    0022714cmovsd_xmm [r15+224], x15
    00227155mov [r14+88], r15
    00227159mov r10, [r14+40]
    0022715dmov [r10], rsp
    00227160mov r11, [r14+64]
    00227164mov [r11+8], rsp
    00227168mov [r11], r10
    0022716bmov rsp, r11
    0022716ecall caml_garbage_collection
    00227173mov rsp, [rsp+8]
    00227178mov r15, [r14+88]
    0022717cmov rax, [r15]
    0022717fmov r11, [r14+80]
    00227183mov [r15], r11
    00227186mov [r14+80], r15
    0022718amov rbx, [r15+8]
    0022718emov rdi, [r15+16]
    00227192mov rsi, [r15+24]
    00227196mov rdx, [r15+32]
    0022719amov rcx, [r15+40]
    0022719emov r8, [r15+48]
    002271a2mov r9, [r15+56]
    002271a6mov r12, [r15+64]
    002271aamov r13, [r15+72]
    002271aemov r10, [r15+80]
    002271b2mov r11, [r15+88]
    002271b6mov rbp, [r15+96]
    002271bamovsd_xmm x0, [r15+104]
    002271c0movsd_xmm x1, [r15+112]
    002271c6movsd_xmm x2, [r15+120]
    002271ccmovsd_xmm x3, [r15+128]
    002271d5movsd_xmm x4, [r15+136]
    002271demovsd_xmm x5, [r15+144]
    002271e7movsd_xmm x6, [r15+152]
    002271f0movsd_xmm x7, [r15+160]
    002271f9movsd_xmm x8, [r15+168]
    00227202movsd_xmm x9, [r15+176]
    0022720bmovsd_xmm x10, [r15+184]
    00227214movsd_xmm x11, [r15+192]
    0022721dmovsd_xmm x12, [r15+200]
    00227226movsd_xmm x13, [r15+208]
    0022722fmovsd_xmm x14, [r15+216]
    00227238movsd_xmm x15, [r15+224]
    00227241mov r15, [r14+8]
    00227245ret
    0022708c
    00227246
    00227246 66 90 f.
    00227248
    00227248caml_alloc1:
    00227248sub r15, 16
    0022724ccmp r15, [r14]
    0022724fjb 0x22708c
    00227255ret
    00227248
    00227256
    00227256 66 90 f.
    00227258
    00227258caml_alloc2:
    00227258sub r15, 24
    0022725ccmp r15, [r14]
    0022725fjb 0x22708c
    00227265ret
    00227258
    00227266
    00227266 66 90 f.
    00227268
    00227268caml_alloc3:
    00227268sub r15, 32
    0022726ccmp r15, [r14]
    0022726fjb 0x22708c
    00227275ret
    00227268
    00227276
    00227276 66 90 f.
    00227278
    00227278caml_allocN:
    00227278cmp r15, [r14]
    0022727bjb 0x22708c
    00227281ret
    00227278
    00227282
    00227282 66 90 f.
    00227284
    00227284caml_c_call:
    00227284mov r10, [r14+40]
    00227288mov [r10], rsp
    0022728bmov r11, [r14+64]
    0022728fmov [r11+8], rsp
    00227293mov [r11], r10
    00227296mov rsp, r11
    00227299mov [r14+8], r15
    0022729dcall rax
    0022729fmov r15, [r14+8]
    002272a3mov rsp, [rsp+8]
    002272a8cmp [r14+56], 0
    002272adjne 0x2272b0
    002272afret
    002272b0
    002272b0loc_2272b0:
    002272b0mov [r14], -1
    002272b7ret
    00227284
    002272b8
    002272b8caml_c_call_stack_args:
    002272b8mov r10, [r14+40]
    002272bcmov [r10], rsp
    002272bfmov r11, [r14+64]
    002272c3mov [r11+8], rsp
    002272c7mov [r11], r10
    002272camov rsp, r11
    002272cdmov rbx, rsp
    002272d0mov [r14+8], r15
    002272d4
    002272d4loc_2272d4:
    002272d4sub r12, 8
    002272d8cmp r12, r13
    002272dbjb 0x2272e3
    002272ddpush [r12]
    002272e1jmp 0x2272d4
    002272e3
    002272e3loc_2272e3:
    002272e3call rax
    002272e5mov rsp, [r14+64]
    002272e9mov r15, [r14+8]
    002272edmov rsp, [rsp+8]
    002272f2cmp [r14+56], 0
    002272f7jne 0x2272fa
    002272f9ret
    002272fa
    002272faloc_2272fa:
    002272famov [r14], -1
    00227301ret
    002272b8
    00227302
    00227302 66 90 f.
    00227304
    00227304caml_start_program:
    00227304push rbx
    00227305push rbp
    00227306push r12
    00227308push r13
    0022730apush r14
    0022730cpush r15
    0022730emov r14, rdi
    00227311lea r12, [rip-0x132968]
    00227318mov r15, [r14+8]
    0022731csub rsp, 24
    00227320mov [rsp], 0
    00227328mov [rsp+8], 0
    00227331mov r10, [r14+64]
    00227335mov [rsp+16], r10
    0022733amov [r14+64], rsp
    0022733emov r11, [r14+40]
    00227342mov r10, [r11]
    00227345sub r10, 16
    00227349mov [r10], rsp
    0022734cmov r11, [r14+88]
    00227350mov [r10+8], r11
    00227354sub r10, 16
    00227358lea r11, [rip+85]
    0022735fmov [r10+8], r11
    00227363mov r11, [r14+48]
    00227367mov [r10], r11
    0022736amov [r14+48], r10
    0022736emov rsp, r10
    00227371call r12
    00227374mov r11, [rsp]
    00227378mov [r14+48], r11
    0022737clea r10, [rsp+16]
    00227381
    00227381loc_227381:
    00227381mov r11, [r10+8]
    00227385mov [r14+88], r11
    00227389add r10, 16
    0022738dmov [r14+8], r15
    00227391mov r11, [r14+40]
    00227395mov [r11], r10
    00227398mov rsp, [r14+64]
    0022739cmov r10, [rsp+16]
    002273a1mov [r14+64], r10
    002273a5add rsp, 24
    002273a9pop r15
    002273abpop r14
    002273adpop r13
    002273afpop r12
    002273b1pop rbp
    002273b2pop rbx
    002273b3ret
    002273b4or rax, 2
    002273b8mov r10, rsp
    002273bbjmp 0x227381
    00227304
    002273bd
    002273bd // align 0x10
    002273c0
    002273c0caml_raise_exn:
    002273c0test [r14+192], 1
    002273cbjne 0x2273d9
    002273cdmov rsp, [r14+48]
    002273d1lea r11, [r14+48]
    002273d5pop [r11]
    002273d8ret
    002273d9
    002273d9loc_2273d9:
    002273d9mov [r14+184], 0
    002273e4mov r13, rsp
    002273e7mov r12, rax
    002273eamov rsp, [r14+64]
    002273eemov rdi, rax
    002273f1mov rsi, [r13]
    002273f5lea rdx, [r13+8]
    002273f9mov rcx, [r14+48]
    002273fdcall caml_stash_backtrace
    00227402mov rax, r12
    00227405mov rsp, [r14+48]
    00227409lea r11, [r14+48]
    0022740dpop [r11]
    00227410ret
    002273c0
    00227411
    00227411 0f 1f 00 ...
    00227414
    00227414caml_reraise_exn:
    00227414test [r14+192], 1
    0022741fjne 0x2273e4
    00227425mov rsp, [r14+48]
    00227429lea r11, [r14+48]
    0022742dpop [r11]
    00227430ret
    00227414
    00227431
    00227431 0f 1f 00 ...
    00227434
    00227434caml_raise_exception:
    00227434mov r14, rdi
    00227437mov rax, rsi
    0022743amov r15, [r14+8]
    0022743emov r10, [r14+40]
    00227442mov rsp, [r10]
    00227445jmp 0x2273c0
    00227434
    0022744a
    0022744a 66 90 f.
    0022744c
    0022744ccaml_callback_asm:
    0022744cpush rbx
    0022744dpush rbp
    0022744epush r12
    00227450push r13
    00227452push r14
    00227454push r15
    00227456mov r14, rdi
    00227459mov rbx, rsi
    0022745cmov rax, [rdx]
    0022745fmov r12, [rbx]
    00227462mov rdi, 0
    00227469mov rsi, 0
    00227470jmp 0x227318
    0022744c
    00227475
    00227475 0f 1f 00 ...
    00227478
    00227478caml_callback2_asm:
    00227478push rbx
    00227479push rbp
    0022747apush r12
    0022747cpush r13
    0022747epush r14
    00227480push r15
    00227482mov r14, rdi
    00227485mov rdi, rsi
    00227488mov rax, [rdx]
    0022748bmov rbx, [rdx+8]
    0022748flea r12, [rip-0x1300b6]
    00227496mov rsi, 0
    0022749djmp 0x227318
    00227478
    002274a2
    002274a2 66 90 f.
    002274a4
    002274a4caml_callback3_asm:
    002274a4push rbx
    002274a5push rbp
    002274a6push r12
    002274a8push r13
    002274aapush r14
    002274acpush r15
    002274aemov r14, rdi
    002274b1mov rax, [rdx]
    002274b4mov rbx, [rdx+8]
    002274b8mov rsi, rsi
    002274bbmov rdi, [rdx+16]
    002274bflea r12, [rip-0x130156]
    002274c6jmp 0x227318
    002274a4
    002274cb
    002274cb 90 .
    002274cc
    002274cccaml_perform:
    002274ccmov rsi, [r14+40]
    002274d0lea rdi, [rsi+1]
    002274d4mov [rbx], rdi
    002274d7mov [rbx+8], rdi
    002274dbmov r11, [rsi+16]
    002274dfmov r10, [r11+24]
    002274e3cmp r10, 0
    002274e7je 0x227514
    002274e9mov [rsi], rsp
    002274ecmov r12, [r14+48]
    002274f0mov [rsi+8], r12
    002274f4mov [r14+40], r10
    002274f8mov rsp, [r10]
    002274fbmov r12, [r10+8]
    002274ffmov [r14+48], r12
    00227503mov [r11+24], 0
    0022750bmov rsi, [r11+16]
    0022750fjmp 0xf7370
    00227514
    00227514loc_227514:
    00227514mov r10, [rbx]
    00227517sub r10, 1
    0022751bmov rsi, [r14+40]
    0022751fmov [rsi], rsp
    00227522mov r12, [r14+48]
    00227526mov [rsi+8], r12
    0022752amov [r14+40], r10
    0022752emov rsp, [r10]
    00227531mov r12, [r10+8]
    00227535mov [r14+48], r12
    00227539mov rdi, rax
    0022753clea rax, [rip-0x1fff3]
    00227543jmp 0x227284
    002274cc
    00227548
    00227548caml_reperform:
    00227548mov rsi, [r14+40]
    0022754cmov r10, [rdi+15]
    00227550mov [r10+24], rsi
    00227554lea rdi, [rsi+1]
    00227558jmp 0x2274d7
    00227548
    0022755d
    0022755d // align 0x10
    00227560
    00227560caml_resume:
    00227560lea r10, [rax-1]
    00227564mov rax, rdi
    00227567test r10, r10
    0022756aje 0x227594
    0022756cmov rdi, [rsi+15]
    00227570mov rsi, [r14+40]
    00227574mov [rdi+24], rsi
    00227578mov [rsi], rsp
    0022757bmov r12, [r14+48]
    0022757fmov [rsi+8], r12
    00227583mov [r14+40], r10
    00227587mov rsp, [r10]
    0022758amov r12, [r10+8]
    0022758emov [r14+48], r12
    00227592jmp [rbx]
    00227594
    00227594loc_227594:
    00227594lea rax, [rip-0x2018b]
    0022759bjmp 0x227284
    00227560
    002275a0
    002275a0caml_runstack:
    002275a0and rax, -2
    002275a4mov rcx, [r14+40]
    002275a8mov r10, [r14+48]
    002275acmov [rcx], rsp
    002275afmov [rcx+8], r10
    002275b3mov r11, [rax+16]
    002275b7mov [r11+24], rcx
    002275bbmov [r14+40], rax
    002275bfmov r11, [rax]
    002275c2sub r11, 32
    002275c6lea r10, [rip+74]
    002275cdmov [r11+8], r10
    002275d1mov r10, [rax+8]
    002275d5mov [r11], r10
    002275d8mov [r14+48], r11
    002275dcmov rsp, r11
    002275dfmov rax, rdi
    002275e2call [rbx]
    002275e4lea r11, [rsp+32]
    002275e9mov rbx, [r11]
    002275ec
    002275ecloc_2275ec:
    002275ecmov rdi, [r14+40]
    002275f0mov r10, [r11+24]
    002275f4mov r11, [r10+8]
    002275f8mov [r14+40], r10
    002275fcmov [r14+48], r11
    00227600mov r13, [r10]
    00227603mov r12, rax
    00227606mov rsp, [r14+64]
    0022760acall caml_free_stack
    0022760fmov rsp, r13
    00227612mov rax, r12
    00227615jmp [rbx]
    00227617lea r11, [rsp+16]
    0022761cmov rbx, [r11+8]
    00227620jmp 0x2275ec
    002275a0
    00227622
    00227622 66 90 f.
    00227624
    00227624caml_ml_array_bound_error:
    00227624lea rax, [rip-4987]
    0022762bjmp 0x227284
    00227624
    00227630
    00227630caml_assert_stack_invariants:
    00227630mov r11, [r14+40]
    00227634mov r10, rsp
    00227637sub r10, r11
    0022763acmp r10, 296
    00227641jge 0x227644
    00227643int 3
    00227644
    00227644loc_227644:
    00227644ret
    00227630
    00227645
    00227645 // align 0x10
    00227650
    00227650caml_addrmap_contains:
    00227650mov r8, [rdi]
    00227653test r8, r8
    00227656je 0x2276aa
    00227658mov eax, 0xffffffffcc9e2d51
    0022765dmov rdi, [rdi+8]
    00227661mov ecx, 100
    00227666imul rax, rsi
    0022766asub rdi, 1
    0022766emov rdx, rax
    00227671shr rdx, 17
    00227675xor rax, rdx
    00227678and rax, rdi
    0022767bjmp 0x22769a
    0022767ddb 0x21
    0022767eclc
    0022767fjmp 0x22769a
    00227681
    00227681 0f 1f 80 00 00 00 00 .......
    00227688
    00227688loc_227688:
    00227688cmp rdx, rsi
    0022768bje 0x2276b0
    0022768dadd rax, 1
    00227691and rax, rdi
    00227694sub rcx, 1
    00227698je 0x2276aa
    0022769a
    0022769aloc_22769a:
    0022769amov rdx, rax
    0022769dshl rdx, 4
    002276a1mov rdx, [r8+rdx]
    002276a5test rdx, rdx
    002276a8jne 0x227688
    002276aa
    002276aaloc_2276aa:
    002276aaxor eax, eax
    002276acret
    002276ad
    002276ad 0f 1f 00 ...
    002276b0
    002276b0loc_2276b0:
    002276b0mov eax, 1
    002276b5ret
    00227650
    002276b6
    002276b6 // align 0x10
    002276c0
    002276c0caml_addrmap_lookup:
    002276c0mov eax, 0xffffffffcc9e2d51
    002276c5mov rcx, [rdi+8]
    002276c9mov rdi, [rdi]
    002276ccimul rax, rsi
    002276d0sub rcx, 1
    002276d4mov rdx, rax
    002276d7shr rdx, 17
    002276dbxor rax, rdx
    002276deand rax, rcx
    002276e1mov rdx, rax
    002276e4shl rdx, 4
    002276e8add rdx, rdi
    002276ebcmp rsi, [rdx]
    002276eeje 0x227716
    002276f0nop [rax+rax]
    002276fbnop
    002276fcadd rax, 1
    00227700
    00227700loc_227700:
    00227700and rax, rcx
    00227703mov rdx, rax
    00227706shl rdx, 4
    0022770aadd rdx, rdi
    0022770dcmp [rdx], rsi
    00227710jne 0x227700
    00227712mov rax, [rdx+8]
    00227716
    00227716loc_227716:
    00227716ret
    00227717db 0x8b
    00227718or bl, al
    002276c0
    0022771b
    0022771b // align 0x10
    00227720
    00227720caml_addrmap_init:
    00227720mov [rdi], 0
    00227727mov [rdi+8], 0
    0022772fret
    00227730db 0x00
    00227731add [rax], al
    00227733ret
    00227720
    00227734
    00227734 // align 0x10
    00227740
    00227740caml_addrmap_clear:
    00227740push rbx
    00227741mov rbx, rdi
    00227744mov rdi, [rdi]
    00227747call caml_stat_free
    0022774cmov [rbx], 0
    00227753mov [rbx+8], 0
    0022775bpop rbx
    0022775cret
    0022775ddb 0x00
    0022775eadd [rbx-61], bl
    00227740
    00227761
    00227761 // align 0x20
    00227780
    00227780caml_addrmap_insert_pos:
    00227780mov eax, 0xffffffffcc9e2d51
    00227785push r15
    00227787imul rax, rsi
    0022778bpush r14
    0022778dmov r14, rsi
    00227790push r13
    00227792push r12
    00227794mov r12, rdi
    00227797push rbp
    00227798mov r15, rax
    0022779bpush rbx
    0022779cshr r15, 17
    002277a0xor r15, rax
    002277a3sub rsp, 24
    002277a7mov rbp, [r12]
    002277ab
    002277abloc_2277ab:
    002277abtest rbp, rbp
    002277aeje 0x227828
    002277b0mov rax, [r12+8]
    002277b5mov ebx, 100
    002277balea rdx, [rax-1]
    002277beand rdx, r15
    002277c1jmp 0x2277ea
    002277c3db 0x21
    002277c4cli
    002277c5jmp 0x2277ea
    002277c7
    002277c7 66 0f 1f 84 00 00 00 00 00 f........
    002277d0
    002277d0loc_2277d0:
    002277d0mov r13, [r12+8]
    002277d5add rdx, 1
    002277d9lea rax, [r13-1]
    002277ddand rdx, rax
    002277e0sub rbx, 1
    002277e4je 0x2278b0
    002277ea
    002277ealoc_2277ea:
    002277eamov rsi, rdx
    002277edshl rsi, 4
    002277f1lea rax, [rbp+rsi]
    002277f6mov rcx, [rax]
    002277f9test rcx, rcx
    002277fcjne 0x22780d
    002277femov [rax], r14
    00227801mov rbp, [r12]
    00227805lea rax, [rbp+rsi]
    0022780amov rcx, [rax]
    0022780d
    0022780dloc_22780d:
    0022780dcmp r14, rcx
    00227810jne 0x2277d0
    00227812add rsp, 24
    00227816add rax, 8
    0022781apop rbx
    0022781bpop rbp
    0022781cpop r12
    0022781epop r13
    00227820pop r14
    00227822pop r15
    00227824ret
    00227825
    00227825 0f 1f 00 ...
    00227828
    00227828loc_227828:
    00227828mov edi, 4096
    0022782dcall caml_stat_alloc
    00227832mov [r12+8], 256
    0022783bmov [r12], rax
    0022783fmov rbp, rax
    00227842xor eax, eax
    00227844nop [rax+rax]
    0022784fnop [rax+rax]
    0022785anop [rax+rax]
    00227865nop [rax+rax]
    00227870nop [rax+rax]
    0022787bnop [rax+rax]
    00227880
    00227880loc_227880:
    00227880mov [rbp+rax], 0
    00227889mov rdx, [r12]
    0022788dmov [rdx+rax+8], 0
    00227896add rax, 16
    0022789amov rbp, [r12]
    0022789ecmp rax, 4096
    002278a4jne 0x227880
    002278a6jmp 0x2277b4
    002278ab
    002278ab 0f 1f 44 00 00 ..D..
    002278b0
    002278b0loc_2278b0:
    002278b0mov rdi, r13
    002278b3lea rsi, [r13+r13]
    002278b8shl rdi, 5
    002278bcmov [rsp+8], rsi
    002278c1call caml_stat_alloc
    002278c6mov rsi, [rsp+8]
    002278cbmov [r12], rax
    002278cfmov [r12+8], rsi
    002278d4test rsi, rsi
    002278d7je 0x227929
    002278d9mov [rax], 0
    002278e0mov rax, [r12]
    002278e4mov [rax+8], 0
    002278ecmov eax, 1
    002278f1nop [rax+rax]
    002278fcnop [rax]
    00227900
    00227900loc_227900:
    00227900mov rcx, [r12]
    00227904mov rdx, rax
    00227907add rax, 1
    0022790bshl rdx, 4
    0022790fmov [rcx+rdx], 0
    00227917mov rcx, [r12]
    0022791bmov [rcx+rdx+8], 0
    00227924cmp rax, rsi
    00227927jb 0x227900
    00227929
    00227929loc_227929:
    00227929mov rdx, rbp
    0022792ctest r13, r13
    0022792fje 0x227946
    00227931
    00227931loc_227931:
    00227931mov rsi, [rdx]
    00227934test rsi, rsi
    00227937jne 0x227958
    00227939
    00227939loc_227939:
    00227939add rbx, 1
    0022793dadd rdx, 16
    00227941cmp rbx, r13
    00227944jne 0x227931
    00227946
    00227946loc_227946:
    00227946mov rdi, rbp
    00227949call caml_stat_free
    0022794ejmp 0x2277ab
    00227953
    00227953 0f 1f 44 00 00 ..D..
    00227958
    00227958loc_227958:
    00227958mov rdi, r12
    0022795bmov [rsp+8], rdx
    00227960call caml_addrmap_insert_pos
    00227965mov rdx, [rsp+8]
    0022796amov rcx, [rdx+8]
    0022796emov [rax], rcx
    00227971jmp 0x227939
    00227780
    00227973
    00227973 // align 0x10
    00227980
    00227980caml_addrmap_insert:
    00227980push rbx
    00227981mov rbx, rdx
    00227984call caml_addrmap_insert_pos
    00227989mov [rax], rbx
    0022798cpop rbx
    0022798dret
    0022798edb 0x89
    0022798fsbb [rbx-61], bl
    00227980
    00227992
    00227992 // align 0x10
    002279a0
    002279a0caml_addrmap_iter:
    002279a0mov rax, [rdi]
    002279a3test rax, rax
    002279a6je 0x227a68
    002279acpush r12
    002279aemov r12, rsi
    002279b1push rbp
    002279b2mov rbp, rdi
    002279b5push rbx
    002279b6mov rcx, [rdi+8]
    002279baxor ebx, ebx
    002279bctest rcx, rcx
    002279bfjne 0x2279e9
    002279c1jmp 0x227a5e
    002279c6db 0x94
    002279c7add [rax], al
    002279c9db 0x00
    002279ca
    002279ca 66 66 2e 0f 1f 84 ff....
    002279d0 00 00 00 00 00 66 66 2e 0f 1f 84 00 00 00 00 00 .....ff.........
    002279e0
    002279e0loc_2279e0:
    002279e0add rbx, 1
    002279e4cmp rbx, rcx
    002279e7je 0x227a5e
    002279e9
    002279e9loc_2279e9:
    002279e9mov rdx, rbx
    002279ecshl rdx, 4
    002279f0cmp [rax+rdx], 0
    002279f5je 0x2279e0
    002279f7cmp rbx, rcx
    002279fajae 0x227a5e
    002279fcmov rdi, [rax+rdx]
    00227a00
    00227a00loc_227a00:
    00227a00mov rdx, rbx
    00227a03shl rdx, 4
    00227a07mov rsi, [rax+rdx+8]
    00227a0ccall r12
    00227a0fmov rax, [rbp]
    00227a13test rax, rax
    00227a16je 0x227a5e
    00227a18mov rcx, [rbp+8]
    00227a1cadd rbx, 1
    00227a20cmp rbx, rcx
    00227a23jb 0x227a49
    00227a25jmp 0x227a5e
    00227a27
    00227a27 66 66 2e 0f 1f 84 00 00 00 ff.......
    00227a30 00 00 66 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 00 ..ff............
    00227a40
    00227a40loc_227a40:
    00227a40add rbx, 1
    00227a44cmp rbx, rcx
    00227a47jae 0x227a5e
    00227a49
    00227a49loc_227a49:
    00227a49mov rdx, rbx
    00227a4cshl rdx, 4
    00227a50mov rdi, [rax+rdx]
    00227a54test rdi, rdi
    00227a57je 0x227a40
    00227a59cmp rbx, rcx
    00227a5cjb 0x227a00
    00227a5e
    00227a5eloc_227a5e:
    00227a5epop rbx
    00227a5fpop rbp
    00227a60pop r12
    00227a62ret
    00227a63
    00227a63 0f 1f 44 00 00 ..D..
    00227a68
    00227a68loc_227a68:
    00227a68ret
    002279a0
    00227a69
    00227a69 // align 0x10
    00227a70
    00227a70caml_init_codefrag:
    00227a70sub rsp, 8
    00227a74lea rdi, [rip+0x151761]
    00227a7bcall caml_lf_skiplist_init
    00227a80lea rdi, [rip+0x151735]
    00227a87add rsp, 8
    00227a8bjmp 0x228c40
    00227a90db 0xac
    00227a91adc [rax], eax
    00227a93db 0x00
    00227a70
    00227a94
    00227a94 // align 0x10
    00227aa0
    00227aa0caml_register_code_fragment:
    00227aa0push r14
    00227aa2mov r14, rcx
    00227aa5push r13
    00227aa7mov r13, rsi
    00227aaapush r12
    00227aacmov r12, rdi
    00227aafmov edi, 80
    00227ab4push rbp
    00227ab5mov ebp, edx
    00227ab7push rbx
    00227ab8call caml_stat_alloc
    00227abdmov [rax], r12
    00227ac0mov rbx, rax
    00227ac3mov [rax+8], r13
    00227ac7cmp ebp, 1
    00227acaje 0x227b38
    00227acccmp ebp, 2
    00227acfje 0x227b28
    00227ad1mov [rbx+20], ebp
    00227ad4mov eax, 1
    00227ad9lock xadd [rip+0x1509e7], eax
    00227ae1mov [rbx+16], eax
    00227ae4lea rdi, [rbx+40]
    00227ae8call caml_plat_mutex_init
    00227aedmov rdx, rbx
    00227af0mov rsi, r12
    00227af3lea rdi, [rip+0x1516e2]
    00227afacall caml_lf_skiplist_insert
    00227affmovsxd rsi, [rbx+16]
    00227b03mov rdx, rbx
    00227b06lea rdi, [rip+0x1516af]
    00227b0dcall caml_lf_skiplist_insert
    00227b12mov eax, [rbx+16]
    00227b15pop rbx
    00227b16pop rbp
    00227b17pop r12
    00227b19pop r13
    00227b1bpop r14
    00227b1dret
    00227b1edb 0x5d
    00227b1fpop r14
    00227b21ret
    00227b22
    00227b22 66 0f 1f 44 00 00 f..D..
    00227b28
    00227b28loc_227b28:
    00227b28movdqu x0, [r14]
    00227b2dmovups [rax+24], x0
    00227b31jmp 0x227ad5
    00227b33
    00227b33 0f 1f 44 00 00 ..D..
    00227b38
    00227b38loc_227b38:
    00227b38mov rdx, r13
    00227b3blea rdi, [rax+24]
    00227b3fmov rsi, r12
    00227b42mov ebp, 2
    00227b47sub rdx, r12
    00227b4acall caml_md5_block
    00227b4fjmp 0x227ad5
    00227aa0
    00227b51
    00227b51 // align 0x10
    00227b60
    00227b60caml_remove_code_fragment:
    00227b60push rbx
    00227b61mov rsi, [rdi]
    00227b64mov rbx, rdi
    00227b67lea rdi, [rip+0x15166e]
    00227b6ecall caml_lf_skiplist_remove
    00227b73movsxd rsi, [rbx+16]
    00227b77lea rdi, [rip+0x15163e]
    00227b7ecall caml_lf_skiplist_remove
    00227b83test eax, eax
    00227b85jne 0x227b90
    00227b87pop rbx
    00227b88ret
    00227b89db 0x75
    00227b8adb 0x05
    00227b8b
    00227b8bloc_227b8b:
    00227b8bpop rbx
    00227b8cret
    00227b8d
    00227b8d 0f 1f 00 ...
    00227b90
    00227b90loc_227b90:
    00227b90mov edi, 16
    00227b95call caml_stat_alloc
    00227b9amov [rax], rbx
    00227b9dmov rdx, rax
    00227ba0lea rcx, [rax+8]
    00227ba4
    00227ba4loc_227ba4:
    00227ba4mov rax, [rip+0x151655]
    00227babmov [rdx+8], rax
    00227bafmov rax, [rcx]
    00227bb2lock cmpxchg [rip+0x151645], rdx
    00227bbbje 0x227b8b
    00227bbdmov [rcx], rax
    00227bc0jmp 0x227ba4
    00227b60
    00227bc2
    00227bc2 // align 0x10
    00227bd0
    00227bd0caml_find_code_fragment_by_pc:
    00227bd0push rbx
    00227bd1mov rsi, rdi
    00227bd4sub rsp, 32
    00227bd8mov rbx, [0x28]
    00227be1mov [rsp+24], rbx
    00227be6mov rbx, rdi
    00227be9lea rdx, [rsp+8]
    00227beelea rcx, [rsp+16]
    00227bf3lea rdi, [rip+0x1515e2]
    00227bfacall caml_lf_skiplist_find_below
    00227bffmov edx, eax
    00227c01xor eax, eax
    00227c03test edx, edx
    00227c05je 0x227c16
    00227c07mov rax, [rsp+16]
    00227c0ccmp rbx, [rax+8]
    00227c10jae 0x227c30
    00227c12mov rdx, [rsp+24]
    00227c17sub rdx, [0x28]
    00227c20jne 0x227c34
    00227c22add rsp, 32
    00227c26pop rbx
    00227c27ret
    00227c28db 0xc4
    00227c29and [rbx-61], bl
    00227c2c
    00227c2c 0f 1f 40 00 ..@.
    00227c30
    00227c30loc_227c30:
    00227c30xor eax, eax
    00227c32jmp 0x227c16
    00227c34
    00227c34loc_227c34:
    00227c34call fn_f4590
    00227bd0
    00227c39
    00227c39 // align 0x10
    00227c40
    00227c40caml_find_code_fragment_by_num:
    00227c40sub rsp, 24
    00227c44movsxd rsi, edi
    00227c47lea rdi, [rip+0x15156e]
    00227c4emov rdx, [0x28]
    00227c57mov [rsp+8], rdx
    00227c5cmov rdx, rsp
    00227c5fcall caml_lf_skiplist_find
    00227c64mov edx, eax
    00227c66mov rax, [rsp]
    00227c6atest edx, edx
    00227c6cjne 0x227c74
    00227c6exor eax, eax
    00227c70mov rdx, [rsp+8]
    00227c75sub rdx, [0x28]
    00227c7ejne 0x227c89
    00227c80add rsp, 24
    00227c84ret
    00227c85call fn_f4590
    00227c8adb 0x02
    00227c8bleave
    00227c8cin al, dx
    00227c8ddb 0xff
    00227c40
    00227c8e
    00227c8e // align 0x10
    00227c90
    00227c90caml_digest_of_code_fragment:
    00227c90push r12
    00227c92push rbp
    00227c93lea rbp, [rdi+40]
    00227c97push rbx
    00227c98mov rbx, rdi
    00227c9bmov rdi, rbp
    00227c9ecall fn_f4710
    00227ca3test eax, eax
    00227ca5jne 0x227d03
    00227ca7mov eax, [rbx+20]
    00227caacmp eax, 3
    00227cadje 0x227cf0
    00227caflea r12, [rbx+24]
    00227cb3test eax, eax
    00227cb5je 0x227cd0
    00227cb7mov rdi, rbp
    00227cbacall fn_f47c0
    00227cbftest eax, eax
    00227cc1jne 0x227cf5
    00227cc3mov rax, r12
    00227cc6pop rbx
    00227cc7pop rbp
    00227cc8pop r12
    00227ccaret
    00227ccbdb 0x5d
    00227cccpop r12
    00227cceret
    00227ccf
    00227ccf 90 .
    00227cd0
    00227cd0loc_227cd0:
    00227cd0mov rsi, [rbx]
    00227cd3mov rdx, [rbx+8]
    00227cd7mov rdi, r12
    00227cdasub rdx, rsi
    00227cddcall caml_md5_block
    00227ce2mov [rbx+20], 2
    00227ce9jmp 0x227cbb
    00227ceb
    00227ceb 0f 1f 44 00 00 ..D..
    00227cf0
    00227cf0loc_227cf0:
    00227cf0xor r12l, r12l
    00227cf3jmp 0x227cbb
    00227cf5
    00227cf5loc_227cf5:
    00227cf5mov esi, eax
    00227cf7lea rdi, [rip+30748]
    00227cfecall caml_plat_fatal_error
    00227d03
    00227d03loc_227d03:
    00227d03mov esi, eax
    00227d05lea rdi, [rip+30723]
    00227d0ccall caml_plat_fatal_error
    00227c90
    00227d11
    00227d11 // align 0x10
    00227d20
    00227d20caml_find_code_fragment_by_digest:
    00227d20push r12
    00227d22mov rax, [rip+0x1514b3]
    00227d29push rbp
    00227d2apush rbx
    00227d2bmov rbx, [rax+40]
    00227d2fcmp rbx, [rip+0x1514ae]
    00227d36je 0x227db0
    00227d38mov r12, rdi
    00227d3bjmp 0x227d69
    00227d3ddb 0x89
    00227d3ecld
    00227d3fjmp 0x227d69
    00227d41
    00227d41 66 66 2e 0f 1f 84 00 00 00 00 00 66 66 2e 0f ff.........ff..
    00227d50 1f 84 00 00 00 00 00 66 0f 1f 84 00 00 00 00 00 .......f........
    00227d60
    00227d60loc_227d60:
    00227d60cmp [rip+0x151481], rbx
    00227d67je 0x227db0
    00227d69
    00227d69loc_227d69:
    00227d69mov rax, [rbx+40]
    00227d6dmov rdx, rbx
    00227d70mov rbx, rax
    00227d73and rbx, -2
    00227d77test al, 1
    00227d79jne 0x227d60
    00227d7bmov rbp, [rdx+8]
    00227d7fmov rdi, rbp
    00227d82call caml_digest_of_code_fragment
    00227d87test rax, rax
    00227d8aje 0x227d60
    00227d8cmov rdx, [r12]
    00227d90mov rcx, [r12+8]
    00227d95xor rdx, [rax]
    00227d98xor rcx, [rax+8]
    00227d9cor rdx, rcx
    00227d9fjne 0x227d60
    00227da1mov rax, rbp
    00227da4pop rbx
    00227da5pop rbp
    00227da6pop r12
    00227da8ret
    00227da9
    00227da9 0f 1f 80 00 00 00 00 .......
    00227db0
    00227db0loc_227db0:
    00227db0xor ebp, ebp
    00227db2pop rbx
    00227db3mov rax, rbp
    00227db6pop rbp
    00227db7pop r12
    00227db9ret
    00227d20
    00227dba
    00227dba // align 0x10
    00227dc0
    00227dc0caml_code_fragment_cleanup_from_stw_single:
    00227dc0push r12
    00227dc2lea rdi, [rip+0x151413]
    00227dc9push rbp
    00227dcapush rbx
    00227dcbcall caml_lf_skiplist_free_garbage
    00227dd0lea rdi, [rip+0x1513e5]
    00227dd7call caml_lf_skiplist_free_garbage
    00227ddcmov rbx, [rip+0x151419]
    00227de3test rbx, rbx
    00227de6je 0x227e1a
    00227de8nop [rax]
    00227decmov rbp, rbx
    00227defmov rbx, [rbx+8]
    00227df3mov r12, [rbp]
    00227df7lea rdi, [r12+40]
    00227dfccall caml_plat_mutex_free
    00227e01mov rdi, r12
    00227e04call caml_stat_free
    00227e09mov rdi, rbp
    00227e0ccall caml_stat_free
    00227e11test rbx, rbx
    00227e14jne 0x227df0
    00227e16mov [rip+0x1513db], 0
    00227e21pop rbx
    00227e22pop rbp
    00227e23pop r12
    00227e25ret
    00227e26db 0x5d
    00227e27pop r12
    00227e29ret
    00227dc0