Function at 0x102297d0
Capabilities:
Use bigint function

Disassembly:
push ebp
mov ebp, esp
push ecx
dec ecx
mov eax, 1
mov dword [ebp - 4], eax
test ecx, ecx
jle 0x102297e9
add eax, eax
dec ecx
jne 0x102297e1
mov dword [ebp - 4], eax
push ebx
add eax, eax
push edi
add eax, eax
push eax
call sym.lime.ndll__ax_malloc_4
mov edi, dword [esi + 4]
mov ecx, dword [ebp + 8]
mov dword [esi + 0x30], eax
movsx ebx, word [ecx + 4]
test edi, edi
je 0x10229874
mov edx, dword [edi]
dec dword [esi + 0x3c]
mov dword [esi + 4], edx
cmp dword [edi + 8], 0
je 0x10229826
push str.alloc:_refs_was_not_0_n
call fcn.10231b66
add esp, 4
call fcn.10235661
movsx eax, word [edi + 6]
cmp ebx, eax
jle 0x1022984c
add eax, eax
cmp eax, ebx
jg 0x10229836
mov eax, ebx
mov ecx, dword [edi + 0xc]
mov word [edi + 6], ax
cwde
add eax, eax
add eax, eax
push eax
push ecx
call sym.lime.ndll__ax_realloc_8
mov dword [edi + 0xc], eax
movsx eax, word [edi + 4]
cmp ebx, eax
jle 0x1022986e
mov ecx, dword [edi + 0xc]
mov edx, ebx
sub edx, eax
add edx, edx
add edx, edx
push edx
lea edx, [ecx + eax*4]
push 0
push edx
call fcn.10230cc0
add esp, 0xc
mov word [edi + 4], bx
jmp 0x10229891
push 0x10
call sym.lime.ndll__ax_malloc_4
mov edi, eax
lea eax, [ebx*4]
push eax
call sym.lime.ndll__ax_malloc_4
mov dword [edi + 0xc], eax
mov word [edi + 6], bx
mov eax, dword [ebp + 8]
mov word [edi + 4], bx
mov ebx, 1
mov dword [edi + 8], ebx
mov dword [edi], 0
add dword [esi + 0x38], ebx
movsx ecx, word [eax + 4]
mov edx, dword [eax + 0xc]
mov eax, dword [edi + 0xc]
add ecx, ecx
add ecx, ecx
push ecx
push edx
push eax
call fcn.10230070
mov ecx, dword [esi + 0x30]
mov dword [ecx], edi
mov edx, dword [esi + 0x30]
mov edi, dword [edx]
add esp, 0xc
cmp dword [edi + 8], ebx
je 0x102298e3
push str.bi_permanent:_refs_was_not_1_n
call fcn.10231b66
add esp, 4
call fcn.10235661
mov dword [edi + 8], 0x7fff55aa
mov eax, dword [esi + 0x30]
mov eax, dword [eax]
push eax
push esi
call fcn.10228f00
push eax
push esi
call fcn.10229670
mov ecx, dword [ebp - 4]
mov edi, 1
add esp, 0x10
mov ebx, eax
cmp ecx, edi
jle 0x10229975
mov edi, edi
mov eax, dword [ebx + 8]
cmp eax, 0x7fff55aa
je 0x1022991e
inc eax
mov dword [ebx + 8], eax
mov ecx, dword [esi + 0x30]
mov eax, dword [ecx + edi*4 - 4]
push 0
push 0
push ebx
push eax
push esi
call fcn.10228d70
push eax
push esi
call fcn.10229670
mov edx, dword [esi + 0x30]
mov dword [edx + edi*4], eax
mov eax, dword [esi + 0x30]
mov eax, dword [eax + edi*4]
add esp, 0x1c
cmp dword [eax + 8], 1
mov dword [ebp + 8], eax
je 0x10229965
push str.bi_permanent:_refs_was_not_1_n
call fcn.10231b66
add esp, 4
call fcn.10235661
mov eax, dword [ebp + 8]
inc edi
mov dword [eax + 8], 0x7fff55aa
cmp edi, dword [ebp - 4]
jl 0x10229910
mov ecx, dword [ebp - 4]
mov eax, dword [ebx + 8]
cmp eax, 0x7fff55aa
je 0x102299b5
dec eax
mov dword [ebx + 8], eax
test eax, eax
jg 0x102299b5
mov edx, dword [esi + 4]
mov dword [ebx], edx
inc dword [esi + 0x3c]
dec dword [esi + 0x38]
mov dword [esi + 4], ebx
jns 0x102299b5
push str.bi_free:_active_count_went_negative___double_freed_bigint__n
call fcn.10231b66
add esp, 4
call fcn.10235661
mov eax, dword [ebp - 4]
pop edi
mov dword [esi + 0x34], eax
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
mov dword [esi + 0x34], ecx
pop ebx
mov esp, ebp
pop ebp
ret