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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0xbc
movzx ecx, byte [esp + 0xd0]
movzx ebx, byte [esp + 0xdc]
mov dword [esp + 0x30], edx
mov esi, dword [esp + 0xe0]
mov dword [esp + 0x28], eax
mov byte [esp + 0x43], cl
movzx ecx, byte [esp + 0xdd]
mov byte [esp + 0x4e], bl
mov ebp, dword [esp + 0xec]
mov byte [esp + 0x38], cl
mov dword [esp + 0x44], esi
call sym._strconv__dec_digits
cmp byte [esp + 0x38], 0
mov edi, eax
mov dword [esp + 0x48], eax
setne al
test bl, bl
sete dl
mov ebx, dword [esp + 0xd4]
or eax, edx
movzx eax, al
sub ebx, eax
mov eax, ebx
sub eax, edi
mov dword [esp + 0x2c], eax
test esi, esi
jne 0x409851
cmp byte [esp + 0x43], 0x30
je 0x409e80
mov edi, dword [esp + 0x2c]
test edi, edi
jle 0x409851
mov byte [esp + 0x4f], 0
mov dword [esp + 0x18], 0
mov eax, dword [ebp + 8]
lea esi, [esi]
lea esi, [esi]
movzx edx, byte [esp + 0x43]
mov ebx, dword [ebp + 0xc]
mov byte [esp + 0x60], dl
lea edx, [eax + 1]
cmp edx, ebx
jle 0x409dd0
test byte [ebp + 0x10], 4
jne 0x409f7c
test ebx, ebx
jle 0x409de0
lea esi, [esi]
add ebx, ebx
cmp edx, ebx
jg 0x4097a0
mov esi, ebx
mov eax, esi
mul dword [ebp + 0x14]
mov esi, eax
mov edx, eax
test eax, eax
js 0x409fe7
xor edx, edx
mov eax, esi
call sym._GC_malloc_kind_aligned_global.constprop.24
mov dword [esp + 8], esi
mov dword [esp + 4], 0
mov esi, eax
mov dword [esp], eax
mov dword [esp + 0x20], eax
call sym._memset
mov eax, dword [ebp]
test eax, eax
je 0x4097fa
mov edx, dword [ebp + 8]
imul edx, dword [ebp + 0x14]
mov dword [esp + 4], eax
mov dword [esp], esi
mov dword [esp + 8], edx
call sym._memcpy
mov eax, dword [esp + 0x20]
mov dword [ebp + 4], 0
mov dword [ebp + 0xc], ebx
mov dword [ebp], eax
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0x14]
mov edi, dword [esp + 0x20]
imul eax, edx
mov dword [esp + 8], edx
add edi, eax
lea eax, [esp + 0x60]
mov dword [esp], edi
mov dword [esp + 4], eax
call sym._memcpy
mov eax, dword [ebp + 8]
add dword [esp + 0x18], 1
mov edi, dword [esp + 0x18]
add eax, 1
mov dword [ebp + 8], eax
cmp dword [esp + 0x2c], edi
jg 0x409770
cmp byte [esp + 0x4f], 0
jne 0x409880
cmp byte [esp + 0x4e], 0
je 0x409db0
cmp byte [esp + 0x38], 0
je 0x409880
lea edx, [esp + 0x61]
mov eax, ebp
mov byte [esp + 0x61], 0x2b
call sym._array_push_noscan
lea esi, [esi]
lea esi, [esi]
xor edx, edx
xor eax, eax
mov dword [esp + eax + 0x70], edx
add eax, 4
cmp eax, 0x20
jb 0x409884
mov edi, dword [esp + 0x30]
mov esi, dword [esp + 0x28]
mov eax, edi
or eax, esi
je 0x409e30
mov dword [esp], esi
mov ebx, dword [0x447240]
mov dword [esp + 8], 0x64
mov dword [esp + 0xc], 0
mov dword [esp + 4], edi
call dbg.__udivdi3
mov dword [esp], esi
mov dword [esp + 8], 0x64
mov dword [esp + 0xc], 0
mov dword [esp + 4], edi
mov dword [esp + 0x28], esi
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], edx
call dbg.__umoddi3
shld edx, eax, 1
add eax, eax
movzx ecx, byte [ebx + eax]
add eax, 1
adc edx, 0
xor esi, esi
mov dword [esp + 0x18], eax
mov byte [esp + 0x84], cl
movzx ecx, byte [ebx + eax]
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x28]
mov byte [esp + 0x83], cl
mov ecx, 0x63
cmp ecx, edx
mov ecx, esi
sbb ecx, edi
jae 0x409eb0
mov dword [esp + 8], 0x2710
mov dword [esp + 0xc], 0
mov dword [esp], edx
mov dword [esp + 4], edi
call dbg.__udivdi3
mov ecx, dword [esp + 0x24]
mov dword [esp + 8], 0x64
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x20]
mov dword [esp + 4], ecx
mov dword [esp + 0xc], 0
mov dword [esp], edx
mov dword [esp + 0x30], eax
call dbg.__umoddi3
shld edx, eax, 1
add eax, eax
movzx ecx, byte [ebx + eax]
add eax, 1
adc edx, 0
mov dword [esp + 0x18], eax
mov byte [esp + 0x82], cl
movzx ecx, byte [ebx + eax]
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x28]
mov byte [esp + 0x81], cl
mov ecx, 0x270f
cmp ecx, edx
mov ecx, esi
sbb ecx, edi
jae 0x409ec0
mov dword [esp + 8], 0xf4240
mov dword [esp + 0xc], 0
mov dword [esp], edx
mov dword [esp + 4], edi
call dbg.__udivdi3
mov ecx, dword [esp + 0x34]
mov dword [esp + 8], 0x64
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x30]
mov dword [esp + 4], ecx
mov dword [esp + 0xc], 0
mov dword [esp], edx
mov dword [esp + 0x20], eax
call dbg.__umoddi3
shld edx, eax, 1
add eax, eax
movzx ecx, byte [ebx + eax]
add eax, 1
adc edx, 0
mov dword [esp + 0x18], eax
mov byte [esp + 0x80], cl
movzx ecx, byte [ebx + eax]
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x28]
mov byte [esp + 0x7f], cl
mov ecx, 0xf423f
cmp ecx, edx
mov ecx, esi
sbb ecx, edi
jae 0x409ed0
mov dword [esp + 8], 0x5f5e100
mov dword [esp + 0xc], 0
mov dword [esp], edx
mov dword [esp + 4], edi
call dbg.__udivdi3
mov ecx, dword [esp + 0x24]
mov dword [esp + 8], 0x64
mov dword [esp + 0x3c], edx
mov edx, dword [esp + 0x20]
mov dword [esp + 4], ecx
mov dword [esp + 0xc], 0
mov dword [esp], edx
mov dword [esp + 0x38], eax
call dbg.__umoddi3
shld edx, eax, 1
add eax, eax
movzx ecx, byte [ebx + eax]
add eax, 1
adc edx, 0
mov dword [esp + 0x18], eax
mov byte [esp + 0x7e], cl
movzx ecx, byte [ebx + eax]
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x28]
mov byte [esp + 0x7d], cl
mov ecx, 0x5f5e0ff
cmp ecx, edx
sbb esi, edi
jae 0x409f05
mov dword [esp + 4], edi
mov dword [esp + 8], 0x540be400
mov dword [esp + 0xc], 2
mov dword [esp], edx
mov dword [esp + 0x30], edi
call dbg.__udivdi3
mov dword [esp + 8], 0x64
mov esi, eax
mov edi, edx
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
mov dword [esp + 0xc], 0
mov dword [esp], eax
mov dword [esp + 4], edx
call dbg.__umoddi3
shld edx, eax, 1
add eax, eax
movzx ecx, byte [ebx + eax]
add eax, 1
adc edx, 0
mov dword [esp + 0x18], eax
mov byte [esp + 0x7c], cl
movzx ecx, byte [ebx + eax]
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x28]
mov byte [esp + 0x7b], cl
mov eax, dword [esp + 0x30]
mov ecx, 0x540be3ff
cmp ecx, edx
mov ecx, 2
sbb ecx, eax
jae 0x409f14
mov dword [esp + 8], 0xd4a51000
mov dword [esp + 0xc], 0xe8
mov dword [esp], edx
mov dword [esp + 4], eax
call dbg.__udivdi3
mov dword [esp], esi
mov dword [esp + 4], edi
mov dword [esp + 8], 0x64
mov dword [esp + 0xc], 0
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], edx
call dbg.__umoddi3
mov esi, eax
mov edi, edx
mov edx, dword [esp + 0x28]
add esi, eax
shld edi, eax, 1
movzx ecx, byte [ebx + esi]
add esi, 1
mov dword [esp + 0x18], esi
adc edi, 0
mov byte [esp + 0x7a], cl
movzx ecx, byte [ebx + esi]
mov esi, dword [esp + 0x30]
mov dword [esp + 0x1c], edi
mov byte [esp + 0x79], cl
mov ecx, 0xd4a50fff
cmp ecx, edx
mov ecx, 0xe8
sbb ecx, esi
jae 0x409f23
mov dword [esp + 4], esi
mov dword [esp + 8], 0x107a4000
mov dword [esp + 0xc], 0x5af3
mov dword [esp], edx
call dbg.__udivdi3
mov dword [esp + 8], 0x64
mov esi, eax
mov edi, edx
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
mov dword [esp + 0xc], 0
mov dword [esp], eax
mov dword [esp + 4], edx
call dbg.__umoddi3
shld edx, eax, 1
add eax, eax
movzx ecx, byte [ebx + eax]
add eax, 1
adc edx, 0
mov dword [esp + 0x18], eax
mov byte [esp + 0x78], cl
movzx ecx, byte [ebx + eax]
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x28]
mov byte [esp + 0x77], cl
mov eax, dword [esp + 0x30]
mov ecx, 0x107a3fff
cmp ecx, edx
mov ecx, 0x5af3
sbb ecx, eax
jae 0x409f4f
mov dword [esp + 8], 0x6fc10000
mov dword [esp + 0xc], 0x2386f2
mov dword [esp], edx
mov dword [esp + 4], eax
call dbg.__udivdi3
mov dword [esp], esi
mov dword [esp + 4], edi
mov dword [esp + 8], 0x64
mov dword [esp + 0xc], 0
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], edx
call dbg.__umoddi3
mov esi, eax
mov edi, edx
add esi, eax
shld edi, eax, 1
movzx ecx, byte [ebx + esi]
add esi, 1
adc edi, 0
mov dword [esp + 0x18], esi
mov byte [esp + 0x76], cl
movzx ecx, byte [ebx + esi]
mov dword [esp + 0x1c], edi
mov edi, dword [esp + 0x28]
mov byte [esp + 0x75], cl
mov esi, dword [esp + 0x30]
mov ecx, 0x6fc0ffff
cmp ecx, edi
mov ecx, 0x2386f2
sbb ecx, esi
jae 0x409f5e
mov dword [esp], edi
mov dword [esp + 4], esi
mov dword [esp + 8], 0xa7640000
mov dword [esp + 0xc], 0xde0b6b3
call dbg.__udivdi3
mov dword [esp + 8], 0x64
mov esi, eax
mov edi, edx
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
mov dword [esp + 0xc], 0
mov dword [esp], eax
mov dword [esp + 4], edx
call dbg.__umoddi3
shld edx, eax, 1
add eax, eax
movzx ecx, byte [ebx + eax]
add eax, 1
adc edx, 0
mov dword [esp + 0x18], eax
mov byte [esp + 0x74], cl
movzx ecx, byte [ebx + eax]
mov dword [esp + 0x1c], edx
mov byte [esp + 0x73], cl
mov ecx, 0xa763ffff
cmp ecx, dword [esp + 0x28]
mov ecx, 0xde0b6b3
sbb ecx, dword [esp + 0x30]
jae 0x409f6d
mov eax, esi
mov edx, edi
add eax, esi
shld edx, esi, 1
mov esi, 2
movzx ecx, byte [ebx + eax]
add eax, 1
adc edx, 0
mov dword [esp + 0x18], eax
mov byte [esp + 0x72], cl
movzx ecx, byte [ebx + eax]
mov dword [esp + 0x1c], edx
mov byte [esp + 0x71], cl
mov ecx, 1
mov eax, 0
mov ebx, 0x13
cmp ebx, dword [esp + 0x18]
sbb eax, dword [esp + 0x1c]
mov eax, dword [esp + 0x48]
cmovae ecx, esi
test eax, eax
jg 0x409e60
cmp dword [esp + 0x44], 1
je 0x409df0
add esp, 0xbc
pop ebx
pop esi
pop edi
pop ebp
ret
lea edx, [esp + 0x62]
mov eax, ebp
mov byte [esp + 0x62], 0x2d
call sym._array_push_noscan
jmp 0x409880
mov ebx, dword [ebp]
mov dword [esp + 0x20], ebx
jmp 0x40980e
cmp edx, 2
jle 0x409e50
mov ebx, 2
jmp 0x4097a0
mov esi, dword [esp + 0x2c]
test esi, esi
jle 0x409da5
movzx edi, byte [esp + 0x43]
xor ebx, ebx
nop
mov eax, edi
lea edx, [esp + 0x64]
add ebx, 1
mov byte [esp + 0x64], al
mov eax, ebp
call sym._array_push_noscan
cmp esi, ebx
jne 0x409e00
add esp, 0xbc
pop ebx
pop esi
pop edi
pop ebp
ret
lea edx, [esp + 0x63]
mov eax, ebp
mov byte [esp + 0x63], 0x30
call sym._array_push_noscan
jmp 0x409d9e
mov esi, 2
mov ebx, 2
jmp 0x4097a8
lea edx, [esp + ecx + 0x70]
mov ecx, dword [esp + 0x48]
mov eax, ebp
call sym._array_push_many.part.81
jmp 0x409d9e
cmp byte [esp + 0x4e], 0
je 0x409edf
cmp byte [esp + 0x38], 0
jne 0x409f32
mov eax, dword [esp + 0x2c]
mov byte [esp + 0x4f], 0
test eax, eax
jg 0x40975a
jmp 0x409880
mov esi, 0x14
mov ecx, 0x13
jmp 0x409d7d
mov esi, 0x12
mov ecx, 0x11
jmp 0x409d7d
mov esi, 0x10
mov ecx, 0xf
jmp 0x409d7d
mov eax, ebp
lea edx, [esp + 0x5f]
mov byte [esp + 0x5f], 0x2d
call sym._array_push_noscan
mov eax, dword [esp + 0x2c]
test eax, eax
jle 0x409880
mov byte [esp + 0x4f], 1
jmp 0x40975a
mov esi, 0xe
mov ecx, 0xd
jmp 0x409d7d
mov esi, 0xc
mov ecx, 0xb
jmp 0x409d7d
mov esi, 0xa
mov ecx, 9
jmp 0x409d7d
mov eax, ebp
lea edx, [esp + 0x5e]
mov byte [esp + 0x5e], 0x2b
call sym._array_push_noscan
mov eax, dword [esp + 0x2c]
test eax, eax
jg 0x409efb
jmp 0x409880
mov esi, 8
mov ecx, 7
jmp 0x409d7d
mov esi, 6
mov ecx, 5
jmp 0x409d7d
mov esi, 4
mov ecx, 3
jmp 0x409d7d
lea edi, [esp + 0x84]
mov ecx, 0xb
xor eax, eax
rep stosd dword es:[edi], eax
mov dword [esp + 0x70], str.array.ensure_cap_noscan:_array_with_the_flag__.nogrow__cannot_grow_in_size__array_required_new_size:
mov dword [esp + 0x74], 0x65
mov dword [esp + 0x78], 1
mov dword [esp + 0x7c], 0xfe07
mov dword [esp + 0x80], edx
mov dword [esp + 0x90], 0x4222f5
lea edx, [esp + 0x70]
lea eax, [esp + 0x64]
mov dword [esp + 0x98], 1
call sym._str_intp.constprop.9
mov eax, dword [esp + 0x64]
mov edx, dword [esp + 0x68]
mov ecx, dword [esp + 0x6c]
call sym.__v_panic
lea edi, [esp + 0x88]
mov ecx, 0xa
xor eax, eax
rep stosd dword es:[edi], eax
mov dword [esp + 0x80], edx
sar edx, 0x1f
mov dword [esp + 0x70], str.calloc_noscan_
mov dword [esp + 0x74], 0xe
mov dword [esp + 0x78], 1
mov dword [esp + 0x7c], 0xfe09
mov dword [esp + 0x84], edx
mov dword [esp + 0x90], str.___0_
mov dword [esp + 0x94], 5
jmp 0x409fbe