Function at 0x40e8f0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x9c
mov eax, dword [esp + 0xc0]
mov edi, dword [esp + 0xb4]
mov esi, dword [esp + 0xbc]
mov ebp, dword [esp + 0xb8]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0xc8]
mov dword [esp + 0x50], edi
mov dword [esp + 0x54], ebp
mov dword [esp + 0x30], esi
mov dword [esp + 0x58], esi
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0xcc]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0xd0]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0xd4]
mov dword [esp + 0x4c], eax
mov eax, edi
shr edi, 0x10
mov byte [esp + 0x3b], al
and eax, 0xf
cmp al, 6
mov byte [esp + 0x28], al
jne 0x40ec05
mov eax, dword [esp + 0xc4]
test eax, eax
js 0x40ec74
mov eax, dword [esp + 0xc4]
mov ecx, dword [esp + 0x30]
movzx ebx, di
add eax, ebx
cmp eax, dword [ecx + 8]
jge 0x40e9b4
mov ecx, dword [esp + 0x30]
mov edx, dword [ecx]
test edx, edx
jle 0x40edd3
cmp edx, 1
je 0x40ed40
cmp byte [esp + 0x28], 6
jne 0x40ec6a
mov eax, dword [esp + 0xc4]
add eax, 1
cmp eax, ebp
mov dword [esp + 0x3c], eax
cmovl eax, ebp
shl ebx, 4
lea esi, [eax + eax*2]
mov dword [esp + 0x34], eax
sar esi, 1
lea eax, [esi + 1]
shl eax, 4
mov dword [esp], eax
call dbg.jv_mem_alloc
mov dword [eax + 8], esi
mov edi, eax
mov dword [eax], 1
mov dword [eax + 4], 0
mov eax, dword [esp + 0x30]
mov dword [esp + 0x2c], ebp
lea esi, [eax + ebx + 0x18]
xor ebx, ebx
jmp 0x40eabb
call sym._jvp_array_length.isra.0.part.1
cmp dword [esp + 0x2c], ebx
jle 0x40ead0
mov dword [esp + 8], 0xd7
mov dword [esp + 4], 0x475f30
mov dword [esp], str.jv_get_kind_a___JV_KIND_ARRAY
call dbg._assert
mov edx, dword [esi + 4]
mov eax, dword [esi - 8]
mov dword [esp + 0x7c], edx
movzx edx, byte [esi - 8]
mov dword [esp + 0x70], eax
mov eax, dword [esi - 4]
and edx, 0xf
mov dword [esp + 0x74], eax
mov eax, dword [esi]
lea ecx, [edx - 5]
cmp cl, 2
mov dword [esp + 0x78], eax
ja 0x40ebf0
add dword [eax], 1
mov ecx, dword [esp + 0x70]
mov ebp, dword [esp + 0x70]
mov edx, ebx
shl edx, 4
mov dword [esp + 0x78], eax
mov dword [esp + 0x88], eax
mov dword [edi + edx + 0x18], eax
add ebx, 1
add esi, 0x10
mov dword [esp + 0x80], ecx
mov ecx, dword [esp + 0x74]
mov dword [edi + edx + 0x10], ebp
mov ebp, dword [esp + 0x74]
mov dword [esp + 0x84], ecx
mov ecx, dword [esp + 0x7c]
mov dword [edi + edx + 0x14], ebp
mov dword [esp + 0x8c], ecx
mov dword [edi + edx + 0x1c], ecx
cmp byte [esp + 0x28], 6
jne 0x40ea10
cmp dword [esp + 0x2c], ebx
jg 0x40ea3b
mov edx, ebx
mov ecx, dword [esp + 0x34]
shl edx, 4
add edx, edi
cmp ebx, dword [esp + 0x34]
jge 0x40eb10
add ebx, 1
add edx, 0x10
mov eax, ebx
shl eax, 4
add eax, edi
mov dword [eax], 0
mov dword [eax + 4], 0
mov dword [eax + 8], 0
mov dword [eax + 0xc], 0
mov byte [edx], 1
cmp ebx, ecx
jne 0x40eae1
mov ebx, dword [esp + 0x34]
movzx eax, byte [esp + 0x3b]
mov esi, edi
mov edx, dword [esp + 0x30]
mov dword [edi + 4], ebx
xor edi, edi
call sym._jvp_array_free.isra.28
mov ebp, dword [esp + 0x3c]
mov dword [esp + 0x60], 0
mov byte [esp + 0x60], 6
mov eax, dword [esp + 0x60]
mov dword [esp + 0x6c], 0
mov dword [esp + 0x64], ebx
shl ebp, 4
mov dword [esp + 0x68], esi
mov dword [esp + 0x54], ebx
mov dword [esp + 0x50], eax
mov dword [esp + 0x58], esi
add ebp, esi
mov dword [esp + 0x5c], 0
mov byte [esp + 0x3b], 6
mov eax, dword [ebp]
mov dword [esp], eax
mov eax, dword [ebp + 4]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0xc], eax
call dbg.jv_free
mov eax, dword [esp + 0x40]
mov word [esp + 0x52], di
mov edi, dword [esp + 0xb0]
mov ecx, dword [esp + 0x34]
mov dword [ebp], eax
mov eax, dword [esp + 0x44]
mov dword [edi + 4], ecx
mov dword [edi + 8], esi
mov dword [ebp + 4], eax
mov eax, dword [esp + 0x48]
mov dword [ebp + 8], eax
mov eax, dword [esp + 0x4c]
mov dword [ebp + 0xc], eax
movzx eax, byte [esp + 0x3b]
mov byte [esp + 0x50], al
mov eax, dword [esp + 0x50]
mov dword [edi], eax
mov eax, dword [esp + 0x5c]
mov dword [edi + 0xc], eax
mov eax, dword [esp + 0xb0]
add esp, 0x9c
pop ebx
pop esi
pop edi
pop ebp
ret
test dl, dl
jne 0x40ea6c
test eax, eax
jne 0x40ea69
jmp 0x40ea6c
mov dword [esp + 8], 0x15a
mov dword [esp + 4], 0x475f30
mov dword [esp], str.jv_get_kind_j___JV_KIND_ARRAY
call dbg._assert
mov edx, dword [esp + 0xc4]
test edx, edx
js 0x40ed20
call sym._jvp_array_ptr.isra.2.part.3
mov dword [esp + 8], 0xd7
mov dword [esp + 4], 0x475f30
movzx ebx, di
mov dword [esp], str.jv_get_kind_a___JV_KIND_ARRAY
call dbg._assert
mov eax, dword [esp + 0xc4]
mov ecx, dword [esp + 0x30]
add eax, ebx
cmp eax, dword [ecx + 8]
jl 0x40e992
call sym._jvp_array_length.isra.0.part.1
jmp 0x40e9b4
add dword [esp + 0xc4], ebp
jns 0x40e97d
mov eax, dword [esp + 0x50]
mov dword [esp], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 0xc], eax
call dbg.jv_free
mov eax, dword [esp + 0x40]
mov dword [esp], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0xc], eax
call dbg.jv_free
lea eax, [esp + 0x60]
mov dword [esp + 8], 0x22
mov dword [esp + 4], str.Out_of_bounds_negative_array_index
mov dword [esp], eax
call dbg.jv_string_sized
mov eax, dword [esp + 0x60]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x64]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xb0]
mov dword [esp], eax
call sym._jv_invalid_with_msg
jmp 0x40ebd4
call sym._jvp_array_length.isra.0.part.1
add dword [esp + 0xc4], ebp
js 0x40ec81
jmp 0x40ec30
mov ebx, dword [esp + 0x30]
mov ecx, dword [ebx + 4]
cmp ecx, eax
mov dword [esp + 0x28], ecx
jg 0x40ee02
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x30]
add eax, 1
mov dword [esp + 0x2c], esi
mov ebx, ecx
mov esi, edx
shl ebx, 4
add ebx, edx
nop
lea esi, [esi]
add ecx, 1
add ebx, 0x10
mov edx, ecx
shl edx, 4
add edx, esi
mov dword [edx], 0
mov dword [edx + 4], 0
mov dword [edx + 8], 0
mov dword [edx + 0xc], 0
mov byte [ebx], 1
cmp ecx, eax
jne 0x40ed70
mov esi, dword [esp + 0x2c]
mov ecx, dword [esp + 0x28]
mov ebx, dword [esp + 0xc4]
cmp eax, ecx
mov edx, ecx
mov ecx, dword [esp + 0x30]
cmovge edx, eax
mov dword [ecx + 4], edx
lea edx, [ebx + 1]
cmp edx, ebp
cmovge ebp, edx
shl eax, 4
mov dword [esp + 0x34], ebp
lea ebp, [ecx + eax]
jmp 0x40eb6c
mov dword [esp + 8], 0x24
mov dword [esp + 4], 0x475f30
mov dword [esp], str.c__count___0
mov dword [esp + 0x2c], eax
call dbg._assert
mov eax, dword [esp + 0x30]
mov edx, dword [eax]
mov eax, dword [esp + 0x2c]
jmp 0x40e9a0
add eax, 1
jmp 0x40eda3