Function at 0x2e3d9fd00
Capabilities:
Link many functions at runtime

Disassembly:
push r14
push r13
push r12
push rdi
push rbx
sub rsp, 0x40
mov r13, rcx
test rcx, rcx
je 0x2e3da08b8
mov r14, qword [0x2e3f0f520]
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov rcx, qword [0x2e3f0fbb0]
mov edx, 0x308
call fcn.2e3d7d700
mov rcx, r14
mov rbx, rax
lea r12, [rax + 0x10]
mov qword [rax + 8], 1
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
lea rdi, [rbx + 0x18]
mov rcx, r12
xor eax, eax
and rdi, 0xfffffffffffffff8
mov rdx, r13
mov qword [rbx + 0x300], 0
sub rcx, rdi
add ecx, 0x2f8
shr ecx, 3
rep stosq qword [rdi], rax
mov qword [rbx + 0x10], r13
lea rcx, [rsp + 0x20]
call fcn.2e3d9d8f0
movdqu xmm0, xmmword [rsp + 0x20]
mov rbx, qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, r13
lea rdx, [0x2e3ef6219]
movups xmmword [r12 + 0x250], xmm0
mov rax, qword [rsp + 0x30]
mov qword [r12 + 0x260], rax
call rbx
test rax, rax
je 0x2e3d9fdea
lea rdx, [0x2e3ef622a]
mov rcx, r13
call rbx
test rax, rax
je 0x2e3d9fdea
lea rdx, [0x2e3ef623c]
mov rcx, r13
call rbx
test rax, rax
je 0x2e3d9fdea
mov qword [0x2e3f56d60], 0x10
lea r14, str._Py_BuildValue_SizeT
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 8], rax
test rax, rax
je 0x2e3da0f50
lea r14, str.PyTuple_New
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x10], rax
test rax, rax
je 0x2e3da0f40
lea r14, str.PyTuple_Size
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x18], rax
test rax, rax
je 0x2e3da0f30
lea r14, str.PyTuple_GetItem
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x20], rax
test rax, rax
je 0x2e3da0f20
lea r14, str.PyTuple_SetItem
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x28], rax
test rax, rax
je 0x2e3da0f10
lea r14, str._Py_NoneStruct
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x30], rax
test rax, rax
je 0x2e3da0f00
lea r14, str.PyType_Ready
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x38], rax
test rax, rax
je 0x2e3da0ef0
lea r14, str.PyType_GenericNew
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x40], rax
test rax, rax
je 0x2e3da0ee0
lea r14, [0x2e3ef62c7]
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x48], rax
test rax, rax
je 0x2e3da0ed0
lea r14, str.PyList_New
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x50], rax
test rax, rax
je 0x2e3da0ec0
lea r14, str.PyList_Size
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x58], rax
test rax, rax
je 0x2e3da0eb0
lea r14, str.PyList_GetItem
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x60], rax
test rax, rax
je 0x2e3da0ea0
lea r14, str.PyList_SetItem
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x68], rax
test rax, rax
je 0x2e3da0e90
lea r14, str.PyObject_Call
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x70], rax
test rax, rax
je 0x2e3da0e80
lea r14, str.PyObject_IsTrue
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x78], rax
test rax, rax
je 0x2e3da0e70
lea r14, str.PyObject_GetAttrString
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x80], rax
test rax, rax
je 0x2e3da0e60
lea r14, str.PyObject_SetAttrString
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x88], rax
test rax, rax
je 0x2e3da0e50
lea r14, str.PyObject_Dir
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x90], rax
test rax, rax
je 0x2e3da0e40
lea r14, str.PyObject_Str
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x98], rax
test rax, rax
je 0x2e3da0e30
lea r14, str.PyObject_GetIter
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0xa0], rax
test rax, rax
je 0x2e3da0e20
lea r14, str.PyObject_GetItem
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0xa8], rax
test rax, rax
je 0x2e3da0e10
lea r14, str.PyObject_SetItem
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0xb0], rax
test rax, rax
je 0x2e3da0e00
lea r14, str.PyObject_RichCompareBool
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0xb8], rax
test rax, rax
je 0x2e3da0df0
lea rdx, str.PyObject_GetBuffer
mov rcx, r13
lea r14, str.PyIter_Next
call rbx
lea rdx, str.PyBuffer_Release
mov rcx, r13
mov qword [r12 + 0xc0], rax
call rbx
mov rdx, r14
mov rcx, r13
mov qword [r12 + 0xc8], rax
call rbx
mov qword [r12 + 0xd8], rax
test rax, rax
je 0x2e3da0de0
lea r14, str.PyNumber_Long
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0xe0], rax
test rax, rax
je 0x2e3da0dd0
lea r14, str.PyLong_AsLongLong
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0xe8], rax
test rax, rax
je 0x2e3da0dc0
lea r14, str.PyLong_AsUnsignedLongLong
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0xf0], rax
test rax, rax
je 0x2e3da0db0
lea r14, str.PyFloat_AsDouble
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0xf8], rax
test rax, rax
je 0x2e3da0da0
lea r14, str.PyBool_FromLong
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x100], rax
test rax, rax
je 0x2e3da0d90
lea r14, str.PyBool_Type
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x108], rax
test rax, rax
je 0x2e3da0d80
lea r14, str.PyFloat_Type
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x110], rax
test rax, rax
je 0x2e3da0d70
lea r14, str.PyComplex_Type
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x118], rax
test rax, rax
je 0x2e3da0d60
lea r14, str.PyCapsule_Type
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x120], rax
test rax, rax
je 0x2e3da0d50
lea r14, str.PyTuple_Type
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x128], rax
test rax, rax
je 0x2e3da0d40
lea r14, str.PyList_Type
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x130], rax
test rax, rax
je 0x2e3da0d30
lea r14, str.PyUnicode_Type
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x140], rax
test rax, rax
je 0x2e3da0d20
lea r14, str.PySuper_Type
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x148], rax
test rax, rax
je 0x2e3da0d10
lea rdx, str.PyBytes_Type
mov rcx, r13
call rbx
mov qword [r12 + 0x138], rax
test rax, rax
je 0x2e3da0ce0
lea rdx, str.PyUnicode_FromString
mov rcx, r13
call rbx
mov qword [r12 + 0x188], rax
test rax, rax
je 0x2e3da0cb0
lea r14, str.PyType_IsSubtype
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x150], rax
test rax, rax
je 0x2e3da0ca0
lea rdx, str.PyComplex_AsCComplex
mov rcx, r13
call rbx
mov qword [r12 + 0x158], rax
test rax, rax
je 0x2e3da0c50
lea rdx, str.PyUnicode_CompareWithASCIIString
mov rcx, r13
call rbx
mov qword [r12 + 0x190], rax
test rax, rax
je 0x2e3da0c20
lea rdx, str.PyUnicode_AsUTF8String
mov rcx, r13
call rbx
mov qword [r12 + 0x170], rax
test rax, rax
je 0x2e3da0bd0
lea rdx, str.PyBytes_AsStringAndSize
mov rcx, r13
call rbx
lea rdx, str.PyBytes_FromStringAndSize
mov rcx, r13
mov qword [r12 + 0x180], rax
call rbx
cmp qword [r12 + 0x180], 0
mov qword [r12 + 0x178], rax
je 0x2e3da0b80
lea r14, str.PyDict_Type
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x1a0], rax
test rax, rax
je 0x2e3da0b70
lea r14, str.PyDict_New
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x1a8], rax
test rax, rax
je 0x2e3da0b60
lea r14, str.PyDict_Size
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x1b0], rax
test rax, rax
je 0x2e3da0b50
lea r14, str.PyDict_GetItemString
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x1b8], rax
test rax, rax
je 0x2e3da0b40
lea r14, str.PyDict_SetItemString
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x1c0], rax
test rax, rax
je 0x2e3da0b30
lea r14, str.PyDict_GetItem
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x1c8], rax
test rax, rax
je 0x2e3da0b20
lea r14, str.PyDict_SetItem
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x1d0], rax
test rax, rax
je 0x2e3da0b10
lea r14, str.PyDict_Keys
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x1d8], rax
test rax, rax
je 0x2e3da0b00
lea r14, str.PyDict_Values
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x1e0], rax
test rax, rax
je 0x2e3da0af0
lea r14, str.PyDict_Contains
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x1e8], rax
test rax, rax
je 0x2e3da0ae0
lea r14, str.PyErr_Clear
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x1f8], rax
test rax, rax
je 0x2e3da0ad0
lea r14, str.PyErr_SetString
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x200], rax
test rax, rax
je 0x2e3da0ac0
lea r14, str.PyErr_Occurred
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x208], rax
test rax, rax
je 0x2e3da0ab0
lea r14, str.PyExc_TypeError
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x210], rax
test rax, rax
je 0x2e3da0a98
mov rax, qword [rax]
lea r14, str.PyCapsule_New
mov rcx, r13
mov rdx, r14
mov qword [r12 + 0x210], rax
call rbx
mov qword [r12 + 0x218], rax
test rax, rax
je 0x2e3da0a88
lea r14, str.PyCapsule_GetPointer
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x220], rax
test rax, rax
je 0x2e3da0a78
lea r14, str.PyImport_ImportModule
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x228], rax
test rax, rax
je 0x2e3da0a68
lea r14, str.PyEval_GetBuiltins
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x230], rax
test rax, rax
je 0x2e3da0a58
mov rax, qword [rax]
mov qword [r12 + 0x2e8], rax
lea rax, [0x2e3d9ad90]
mov qword [r12 + 0x1f0], rax
mov rax, r12
add rsp, 0x40
pop rbx
pop rdi
pop r12
pop r13
pop r14
ret
lea rcx, [0x2e3ef74c0]
call fcn.2e3d78780
nop dword [rax]
mov rcx, r14
call fcn.2e3d9fad0
mov rax, qword [r12 + 0x2e8]
jmp 0x2e3da0889
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da0598
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da0578
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da0558
mov rcx, r14
call fcn.2e3d9fad0
mov rax, qword [r12 + 0x210]
jmp 0x2e3da052d
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da050d
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da04ed
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da04cd
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da04ad
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da048d
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da046d
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da044d
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da042d
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da040d
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da03ed
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da03cd
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da03ad
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da038d
lea r14, str.PyString_AsStringAndSize
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x180], rax
test rax, rax
je 0x2e3da0f70
lea r14, str.PyString_FromStringAndSize
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x178], rax
test rax, rax
jne 0x2e3da036d
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da036d
lea rdx, str.PyUnicodeUCS4_AsUTF8String
mov rcx, r13
call rbx
mov qword [r12 + 0x170], rax
test rax, rax
jne 0x2e3da0336
lea r14, str.PyUnicodeUCS2_AsUTF8String
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x170], rax
test rax, rax
jne 0x2e3da0336
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da0336
lea r14, str.PyString_AsString
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x198], rax
test rax, rax
jne 0x2e3da0319
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da0319
lea r14, str.PyComplex_RealAsDouble
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x160], rax
test rax, rax
je 0x2e3da0f60
lea r14, str.PyComplex_ImagAsDouble
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x168], rax
test rax, rax
jne 0x2e3da02fc
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da02fc
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da02df
lea r14, str.PyString_FromString
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x188], rax
test rax, rax
jne 0x2e3da02bf
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da02bf
lea r14, str.PyString_Type
mov rcx, r13
mov rdx, r14
call rbx
mov qword [r12 + 0x138], rax
test rax, rax
jne 0x2e3da02a2
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da02a2
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da0285
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da0265
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da0245
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da0225
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da0205
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da01e5
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da01c5
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da01a5
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da0185
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da0165
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da0145
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da0125
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da0105
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da00e5
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da009d
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da007d
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da005d
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da003d
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da001d
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3d9fffd
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3d9ffdd
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3d9ffbd
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3d9ff9d
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3d9ff80
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3d9ff63
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3d9ff46
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3d9ff29
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3d9ff0c
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3d9feef
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3d9fed2
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3d9feb5
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3d9fe98
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3d9fe7b
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3d9fe5e
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3d9fe41
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3d9fe24
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3d9fe07
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da0c70
mov rcx, r14
call fcn.2e3d9fad0
jmp 0x2e3da0ba0