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

Disassembly:
sub esp, 0x40
mov ecx, dword [esi + 0x44]
mov eax, dword [esi + 0x40]
mov edx, dword [esi + 0x38]
push ebx
mov ebx, dword [esi + 0x88]
push ebp
mov ebp, dword [esi + 0x2c]
mov dword [esp + 0x24], ecx
push edi
mov edi, dword [esi + 0x28]
mov dword [esp + 0x24], eax
mov eax, dword [esi + 0x3c]
lea ecx, [ebx*4]
push ecx
mov dword [esp + 0x30], edx
mov dword [esp + 0x34], eax
mov dword [0x5d5e50], 0x8040201
mov dword [0x5d5e54], 0x80402010
call fcn.004b7263
mov dword [esp + 0x18], eax
mov dword [esi + 0x8c], eax
mov eax, ebx
xor ecx, ecx
shld ecx, eax, 2
add eax, eax
add eax, eax
add esp, 4
mov edx, 1
mov dword [esp + 0x20], ecx
mov dword [esp + 0x1c], eax
mov dword [esp + 0xc], edx
test ebp, ebp
jb 0x43e719
ja 0x43e6c3
cmp edi, edx
jbe 0x43e719
mov dword [esp + 0x10], 0
jmp 0x43e6d4
mov edx, dword [esp + 0xc]
mov eax, edx
mov ecx, edi
test edi, edi
je 0x43e6f0
lea esp, [esp]
xor edx, edx
div ecx
mov eax, ecx
mov ecx, edx
test edx, edx
jne 0x43e6e0
mov edx, dword [esp + 0xc]
cmp eax, 1
jne 0x43e707
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov dword [eax + ecx], edx
add eax, 4
mov dword [esp + 0x10], eax
inc edx
mov eax, edx
mov dword [esp + 0xc], edx
cdq
cmp edx, ebp
jb 0x43e6d0
ja 0x43e719
cmp eax, edi
jb 0x43e6d0
cmp dword [esi + 0xb8], 0
mov dword [esi + 0xc0], 0
mov dword [esi + 0xc4], 0x80000000
jne 0x43e779
xor eax, eax
push eax
push ebx
push ebp
push edi
call fcn.004bdf50
push edx
mov edx, dword [esp + 0x2c]
push eax
mov eax, dword [esp + 0x2c]
push edx
push eax
call fcn.004bdc20
push ebp
push edi
push edx
push eax
call fcn.004bdf50
xor ecx, ecx
push ecx
push ebx
push edx
push eax
call fcn.004bdf50
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], edx
mov dword [esi + 0x70], eax
mov dword [esi + 0x74], edx
jmp 0x43e842
lea ecx, [esp + 0x34]
push ecx
call fcn.004565a0
lea edx, [esp + 0x44]
push edx
call fcn.004565a0
mov eax, edi
imul eax, ebx
push eax
mov dword [esp + 0x20], eax
mov eax, dword [esi + 0xb4]
push eax
lea ecx, [esp + 0x44]
push ecx
call fcn.00456800
mov edx, dword [esp + 0x28]
push edx
lea eax, [esp + 0x4c]
push eax
mov ecx, eax
push ecx
call fcn.00459570
mov eax, dword [esi + 0xb4]
lea edx, [esp + 0x54]
push edx
push eax
lea ecx, [esp + 0x68]
push ecx
call fcn.00459720
mov edx, dword [esp + 0x74]
mov ecx, dword [edx]
mov eax, dword [esp + 0x70]
mov edx, eax
neg edx
sbb edx, edx
and edx, ecx
add dword [esp + 0x58], edx
mov edx, eax
adc dword [esp + 0x5c], 0
neg edx
sbb edx, edx
and edx, ecx
add dword [esi + 0x38], edx
mov edx, 0
adc dword [esi + 0x3c], edx
neg eax
sbb eax, eax
and eax, ecx
add dword [esi + 0x40], eax
mov ecx, dword [esi + 0xb4]
lea eax, [esp + 0x60]
adc dword [esi + 0x44], edx
push eax
push ecx
call fcn.00456880
lea edx, [esp + 0x68]
push edx
call fcn.00456900
lea eax, [esp + 0x78]
push eax
call fcn.00456900
mov edx, dword [esp + 0x64]
add esp, 0x3c
xor eax, eax
mov dword [esi + 0x70], eax
mov dword [esi + 0x74], eax
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x2c]
sub ecx, eax
mov eax, dword [esp + 0x30]
push ebp
push edi
sbb eax, edx
push eax
push ecx
call fcn.004bdc20
push ebp
push edi
push edx
push eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], edx
call fcn.004bdc90
or eax, edx
je 0x43e873
mov eax, 1
jmp 0x43e875
xor eax, eax
xor ecx, ecx
add eax, dword [esp + 0x2c]
adc ecx, dword [esp + 0x30]
xor edx, edx
push edx
push ebx
push ecx
push eax
call fcn.004bdf50
mov ecx, eax
mov dword [esp + 0x2c], eax
and ecx, 7
xor eax, eax
or ecx, eax
je 0x43e8a2
lea ecx, [eax + 1]
mov dword [esp + 0x18], eax
jmp 0x43e8a8
xor ecx, ecx
mov dword [esp + 0x18], ecx
mov eax, dword [esp + 0x2c]
shrd eax, edx, 3
shr edx, 3
add eax, ecx
adc edx, dword [esp + 0x18]
xor ecx, ecx
push ecx
push ebx
push edx
push eax
call fcn.004bdb80
or ecx, ebx
je 0x43e8cf
mov ecx, 1
jmp 0x43e8d1
xor ecx, ecx
xor ebx, ebx
add eax, ecx
adc ebx, edx
mov dword [esp + 0x2c], eax
xor ecx, ecx
lea ecx, [ecx]
add ecx, 0x8000
mov eax, ecx
cdq
cmp edx, ebx
jb 0x43e8e0
ja 0x43e8f5
cmp eax, dword [esp + 0x2c]
jbe 0x43e8e0
push ebp
mov eax, ecx
cdq
push edi
mov ebx, eax
push edx
push ebx
mov dword [esp + 0x40], edx
call fcn.004bdf50
shld edx, eax, 3
add eax, eax
add eax, eax
add eax, eax
add eax, dword [esp + 0x24]
mov ecx, ebx
adc edx, dword [esp + 0x28]
shld ebp, edi, 0x12
mov dword [esi + 0x78], eax
mov eax, dword [esp + 0x30]
shl edi, 0x12
mov dword [esi + 0x84], eax
mov dword [esi + 0x10], edi
mov edi, dword [esi + 0x50]
shrd ecx, eax, 0xf
add edi, edi
shr eax, 0xf
add edi, edi
push edi
mov dword [esi + 0x7c], edx
mov dword [esi + 0x80], ebx
mov dword [esi + 0x18], ecx
mov dword [esi + 0x1c], eax
mov dword [esi + 0x14], ebp
call fcn.004b7263
mov edx, dword [esi + 0x50]
mov ecx, dword [esi + 0x54]
shld ecx, edx, 2
add edx, edx
add edx, edx
add esp, 4
add dword [esp + 0x1c], edx
mov dword [esi + 4], eax
adc dword [esp + 0x20], ecx
xor ebp, ebp
cmp eax, ebp
jne 0x43e98e
push str.error_allocating_roots_n
call fcn.004b7f6d
add esp, 4
push 0xffffffffffffffff
call fcn.004b856d
cmp dword [0x5d5f9c], 2
jle 0x43e9a5
push edi
push str.allocated__u_bytes_for_roots_n
call fcn.004b7f6d
add esp, 8
mov eax, 0x8237
cmp dword [esi + 0x54], ebp
ja 0x43e9b4
cmp dword [esi + 0x50], eax
jbe 0x43e9c5
mov dword [esi + 0x58], eax
mov eax, dword [esi + 0x50]
lea edx, [eax - 0x8237]
mov dword [esi + 0x60], edx
jmp 0x43e9ce
mov eax, dword [esi + 0x50]
mov dword [esi + 0x60], ebp
mov dword [esi + 0x58], eax
mov edi, dword [esi + 0x60]
mov ecx, dword [esi + 0x18]
add edi, edi
shl ecx, 0x12
add edi, edi
push edi
mov dword [esi + 0x5c], ecx
mov dword [esi + 0x64], eax
mov dword [esi + 0x68], ebp
call fcn.004b7263
add esp, 4
add dword [esp + 0x1c], edi
mov dword [esi + 8], eax
adc dword [esp + 0x20], ebp
cmp eax, ebp
jne 0x43ea10
push str.error_allocating_lower_mod_prime_n
call fcn.004b7f6d
add esp, 4
push 0xffffffffffffffff
call fcn.004b856d
cmp dword [0x5d5f9c], 2
jle 0x43ea27
push edi
push str.allocated__u_bytes_for_lower_mod_prime_n
call fcn.004b7f6d
add esp, 8
mov eax, dword [esi + 0x88]
lea edx, [eax*4]
push edx
call fcn.004b7263
xor edi, edi
add esp, 4
mov dword [esp + 0x14], eax
mov dword [esi + 0x98], eax
mov dword [esp + 0x28], edi
cmp dword [esi + 0xb0], edi
je 0x43ea9f
mov ecx, dword [esp + 0x30]
mov eax, dword [0x5d6980]
push ecx
cdq
push ebx
push edx
push eax
call fcn.004bdf50
mov ebp, eax
mov dword [esp + 0x28], edx
cmp dword [0x5d5f9c], 2
jle 0x43ea8a
mov eax, dword [esp + 0x28]
push eax
push ebp
push str.allocated__I64u_bytes_for_sieve_lines_n
call fcn.004b7f6d
add esp, 0xc
mov edx, dword [esp + 0x28]
mov eax, ebp
add eax, dword [esp + 0x1c]
pop edi
adc edx, dword [esp + 0x1c]
pop ebp
pop ebx
add esp, 0x40
ret
cmp dword [esi + 0x88], edi
jbe 0x43ea6e
push ebx
call fcn.004b7263
mov ecx, dword [esp + 0x18]
add esp, 4
mov dword [ecx + edi*4], eax
test eax, eax
je 0x43ead0
mov edx, dword [esp + 0x30]
add ebp, ebx
adc dword [esp + 0x28], edx
inc edi
cmp edi, dword [esi + 0x88]
jb 0x43eaa7
jmp 0x43ea6e
push str.error_allocated_sieve_lines_n
call fcn.004b7f6d
add esp, 4
push 0xffffffffffffffff
call fcn.004b856d
int3