Disassembly
uint64_t
_start
(int64_t arg1, int64_t arg2, int64_t arg3)
_start
:
mov
rax
,
qword
[
rsp
+
0x20
{
arg1
}
]
// Type Guard for |this|
shr
rax
,
0x2f
cmp
eax
,
0x1fff3
jne
0x600128
push
0x0
{
var_8
}
jmp
0x60013d
mov
rax
,
qword
[
rsp
+
0x28
{
arg2
}
]
// Type Guard for arg1
shr
rax
,
0x2f
cmp
eax
,
0x1fff1
jne
0x600128
push
0x0
{
var_10
}
jmp
0x5ded10
mov
rax
,
qword
[
rsp
+
0x30
{
arg3
}
]
// Type Guard for arg2
shr
rax
,
0x2f
cmp
eax
,
0x1fff1
jne
0x600128
jmp
0x6000f1
mov
eax
,
dword
[
rsp
+
0x28
{
arg2
}
]
// Load arguments and add
mov
ecx
,
dword
[
rsp
+
0x30
{
arg3
}
]
add
eax
,
ecx
jo
0x60012f
sub
eax
,
ecx
// Overflow Check
jmp
sub_600136
// Box the int32 as
// Int32Value and ret
mov
rcx
,
0xfff8800000000000
or
rcx
,
rax
retn
{
__return_addr
}