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

Disassembly:
push 0xffffffffffffffff
push 0x5c2954
mov eax, dword fs:[0]
push eax
sub esp, 0xdc
push ebx
push ebp
push esi
push edi
mov eax, dword [0x6385e0]
xor eax, esp
push eax
lea eax, [esp + 0xf0]
mov dword fs:[0], eax
mov ebp, dword [esp + 0x108]
xor ebx, ebx
mov dword [esp + 0x18], ebx
cmp ebp, 1
ja 0x58975d
push ebx
push ebx
lea eax, [esp + 0xb4]
push ebp
push eax
call fcn.00574810
push eax
lea ecx, [esp + 0xa4]
push str.random_prime:_Cant_make_a_prime_of
push ecx
mov dword [esp + 0x114], 1
call fcn.00447490
push str._bits
push eax
lea edx, [esp + 0x98]
push edx
mov byte [esp + 0x120], 2
call fcn.004472f0
add esp, 0x28
push eax
lea ecx, [esp + 0xcc]
mov byte [esp + 0xfc], 3
call fcn.00565b20
push 0x61e764
lea eax, [esp + 0xcc]
push eax
mov dword [esp + 0xd0], vtable.Botan::Invalid_Argument.0
call fcn.00553e2b
cmp ebp, 2
jne 0x589797
mov ecx, dword [esp + 0x104]
call fcn.0059e530
movzx eax, al
and eax, 0x80000001
jns 0x58977d
dec eax
or eax, 0xfffffffe
inc eax
mov esi, dword [esp + 0x100]
neg eax
sbb eax, eax
add eax, 3
cdq
push edx
push eax
mov ecx, esi
call fcn.0056cd00
jmp 0x5897d2
cmp ebp, 3
jne 0x5897ee
mov ecx, dword [esp + 0x104]
call fcn.0059e530
movzx eax, al
and eax, 0x80000001
jns 0x5897b7
dec eax
or eax, 0xfffffffe
inc eax
neg eax
sbb eax, eax
and eax, 0xfffffffe
add eax, 7
mov esi, dword [esp + 0x100]
cdq
push edx
push eax
mov ecx, esi
call fcn.0056cd00
mov eax, esi
mov ecx, dword [esp + 0xf0]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xe8
ret
cmp ebp, 4
jne 0x58981a
mov ecx, dword [esp + 0x104]
call fcn.0059e530
movzx eax, al
and eax, 0x80000001
jns 0x58980e
dec eax
or eax, 0xfffffffe
inc eax
neg eax
sbb eax, eax
and eax, 0xfffffffe
add eax, 0xd
jmp 0x5897c1
push 0
push 0
lea ecx, [esp + 0x38]
call fcn.0056cd00
push 1
lea ecx, [esp + 0x34]
push ecx
mov ecx, dword [esp + 0x114]
mov dword [esp + 0x100], 4
call fcn.0056c8b0
mov ecx, dword [esp + 0x3c]
mov edx, dword [ecx]
mov edx, dword [edx + 4]
test eax, eax
mov eax, dword [esp + 0x38]
setle byte [esp + 0x17]
add eax, eax
add eax, eax
push eax
mov eax, dword [esp + 0x34]
push eax
mov byte [esp + 0x100], 0
call edx
cmp byte [esp + 0x17], 0
je 0x5898aa
push str.random_prime:_coprime_must_be___0
lea ecx, [esp + 0x5c]
call fcn.00406a20
lea eax, [esp + 0x58]
push eax
lea ecx, [esp + 0x34]
mov dword [esp + 0xfc], 5
call fcn.00565b90
push 0x61e764
lea ecx, [esp + 0x34]
push ecx
call fcn.00553e2b
mov eax, dword [esp + 0x114]
test al, 1
jne 0x589d22
test eax, eax
je 0x589d22
mov ecx, dword [esp + 0x110]
cmp ecx, eax
jae 0x589cec
test cl, 1
je 0x589cec
mov esi, ebp
shr esi, 1
mov dword [esp + 0x2c], esi
mov edx, dword [esp + 0x104]
push ebp
push edx
lea ecx, [esp + 0x38]
call fcn.0056cec0
lea eax, [ebp - 2]
push eax
lea ecx, [esp + 0x34]
mov dword [esp + 0xfc], 8
call fcn.0056ca50
push 0
lea ecx, [esp + 0x34]
call fcn.0056ca50
mov eax, dword [esp + 0x114]
push eax
lea ecx, [esp + 0x34]
push ecx
call fcn.00588bb0
add esp, 8
cmp eax, dword [esp + 0x110]
je 0x58998e
mov edx, dword [esp + 0x114]
push edx
lea eax, [esp + 0x34]
push eax
call fcn.00588bb0
mov edx, dword [esp + 0x11c]
mov ecx, dword [esp + 0x118]
add esp, 8
add ecx, edx
sub ecx, eax
push 0
push ecx
lea ecx, [esp + 0x60]
call fcn.0056cd00
lea eax, [esp + 0x58]
push eax
lea ecx, [esp + 0x34]
mov byte [esp + 0xfc], 9
call fcn.0058a830
lea ecx, [esp + 0x58]
mov byte [esp + 0xf8], 8
call fcn.00446f20
mov eax, 0x5da694
cmp esi, 0x198d
ja 0x58999f
lea eax, [esp + 0x2c]
mov eax, dword [eax]
push eax
lea ecx, [esp + 0x20]
call fcn.005694f0
xor esi, esi
mov byte [esp + 0xf8], 0xa
cmp dword [esp + 0x20], esi
je 0x5899e4
jmp 0x5899c0
movzx ecx, word [esi*2 + 0x5dad08]
mov edi, dword [esp + 0x1c]
push ecx
lea edx, [esp + 0x34]
push edx
call fcn.00588bb0
mov dword [edi + esi*4], eax
inc esi
add esp, 8
cmp esi, dword [esp + 0x20]
jne 0x5899c0
xor esi, esi
lea edi, [esi + 0xd]
lea esp, [esp]
lea ecx, [esp + 0x30]
call fcn.0056caa0
cmp eax, ebp
ja 0x589c60
mov eax, dword [esp + 0x114]
push 0
push eax
lea ecx, [esp + 0x7c]
mov byte [esp + 0x1f], 1
inc esi
call fcn.0056cd00
lea ecx, [esp + 0x74]
push ecx
lea ecx, [esp + 0x34]
mov byte [esp + 0xfc], 0xb
call fcn.0058a830
mov eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x80]
mov edx, dword [ecx]
mov edx, dword [edx + 4]
add eax, eax
add eax, eax
push eax
mov eax, dword [esp + 0x78]
push eax
mov byte [esp + 0x100], 0xa
call edx
lea ecx, [esp + 0x30]
call fcn.0056caa0
cmp eax, ebp
ja 0x589c60
xor ecx, ecx
cmp dword [esp + 0x20], ecx
je 0x589aac
lea ecx, [ecx]
mov eax, dword [esp + 0x1c]
mov eax, dword [eax + ecx*4]
movzx edi, word [ecx*2 + 0x5dad08]
add eax, dword [esp + 0x114]
xor edx, edx
div edi
mov eax, dword [esp + 0x1c]
mov dword [eax + ecx*4], edx
mov edx, dword [esp + 0x1c]
cmp dword [edx + ecx*4], 0
jne 0x589aa0
mov byte [esp + 0x17], 0
inc ecx
cmp ecx, dword [esp + 0x20]
jne 0x589a70
mov edi, 0xd
cmp byte [esp + 0x17], 0
je 0x589b5c
push 0
push 1
lea ecx, [esp + 0x98]
call fcn.0056cd00
push 0
or ebx, 2
push 1
lea ecx, [esp + 0x7c]
mov byte [esp + 0x100], 0xc
mov dword [esp + 0x20], ebx
call fcn.0056cd00
lea eax, [esp + 0x74]
push eax
lea ecx, [esp + 0x34]
push ecx
lea edx, [esp + 0x60]
or ebx, 4
push edx
mov dword [esp + 0x104], edi
mov dword [esp + 0x24], ebx
call fcn.00588420
mov ecx, dword [esp + 0x118]
push ecx
push eax
lea edx, [esp + 0xc0]
or ebx, 8
push edx
mov dword [esp + 0x110], 0xe
mov dword [esp + 0x30], ebx
call fcn.0056f610
add esp, 0x18
push 1
lea ecx, [esp + 0x94]
push ecx
or ebx, 0x10
mov ecx, eax
mov dword [esp + 0x100], 0xf
mov dword [esp + 0x20], ebx
call fcn.0056c8b0
mov byte [esp + 0x17], 0
test eax, eax
je 0x589b61
mov byte [esp + 0x17], 1
mov dword [esp + 0xf8], 0xe
test bl, 0x10
je 0x589b9a
mov eax, dword [esp + 0xb4]
mov ecx, dword [esp + 0xb8]
mov edx, dword [ecx]
mov edx, dword [edx + 4]
add eax, eax
add eax, eax
push eax
mov eax, dword [esp + 0xb0]
and ebx, 0xffffffef
push eax
mov dword [esp + 0x20], ebx
call edx
mov dword [esp + 0xf8], edi
test bl, 8
je 0x589bc6
mov edx, dword [esp + 0x60]
mov ecx, dword [esp + 0x64]
mov eax, dword [ecx]
mov eax, dword [eax + 4]
add edx, edx
add edx, edx
push edx
mov edx, dword [esp + 0x5c]
and ebx, 0xfffffff7
push edx
mov dword [esp + 0x20], ebx
call eax
mov dword [esp + 0xf8], 0xc
test bl, 4
je 0x589bf9
mov eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x80]
mov edx, dword [ecx]
mov edx, dword [edx + 4]
add eax, eax
add eax, eax
push eax
mov eax, dword [esp + 0x78]
and ebx, 0xfffffffb
push eax
mov dword [esp + 0x20], ebx
call edx
mov dword [esp + 0xf8], 0xa
test bl, 2
je 0x589c32
mov edx, dword [esp + 0x98]
mov ecx, dword [esp + 0x9c]
mov eax, dword [ecx]
mov eax, dword [eax + 4]
add edx, edx
add edx, edx
push edx
mov edx, dword [esp + 0x94]
and ebx, 0xfffffffd
push edx
mov dword [esp + 0x20], ebx
call eax
cmp byte [esp + 0x17], 0
jne 0x589c54
mov edx, dword [esp + 0x104]
push 1
lea ecx, [esp + 0x34]
push ecx
push edx
call fcn.00570cc0
add esp, 0xc
test al, al
jne 0x589cab
cmp esi, 0x1000
jne 0x5899f0
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x28]
mov eax, dword [ecx]
mov eax, dword [eax + 4]
add edx, edx
add edx, edx
push edx
mov edx, dword [esp + 0x20]
push edx
mov byte [esp + 0x100], 8
call eax
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x3c]
mov edx, dword [ecx]
mov edx, dword [edx + 4]
add eax, eax
add eax, eax
push eax
mov eax, dword [esp + 0x34]
push eax
mov byte [esp + 0x100], 0
call edx
mov esi, dword [esp + 0x2c]
jmp 0x5898e1
mov esi, dword [esp + 0x100]
lea eax, [esp + 0x30]
push eax
mov ecx, esi
call fcn.0056ce00
or ebx, 1
lea ecx, [esp + 0x1c]
mov dword [esp + 0x18], ebx
mov byte [esp + 0xf8], 8
call fcn.00446f00
lea ecx, [esp + 0x30]
mov byte [esp + 0xf8], 0
call fcn.00446f20
jmp 0x5897d2
push str.random_prime:_equiv_must_be___modulo__and_odd
lea ecx, [esp + 0x5c]
call fcn.00406a20
lea ecx, [esp + 0x58]
push ecx
lea ecx, [esp + 0x34]
mov dword [esp + 0xfc], 7
call fcn.00565b90
push 0x61e764
lea edx, [esp + 0x34]
push edx
call fcn.00553e2b
push str.random_prime:_Invalid_modulo_value
lea ecx, [esp + 0x5c]
call fcn.00406a20
lea eax, [esp + 0x58]
push eax
lea ecx, [esp + 0x34]
mov dword [esp + 0xfc], 6
call fcn.00565b90
push 0x61e764
lea ecx, [esp + 0x34]
push ecx
call fcn.00553e2b
int3