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

Disassembly:
mov ecx, dword [0x7c4f4c]
mov ecx, dword fs:[ecx]
mov ecx, dword [ecx]
lea eax, [esp - 0x4c]
cmp eax, dword [ecx + 8]
jbe 0x56011f
sub esp, 0xcc
mov eax, dword [esp + 0xd0]
mov dword [esp], eax
mov ecx, dword [esp + 0xd4]
mov dword [esp + 4], ecx
call sym.crypto_internal_randutil.MaybeReadByte
lea eax, [0x604640]
mov dword [esp], eax
call sym.runtime.newobject
mov eax, dword [esp + 4]
mov dword [eax + 4], 0x10001
mov ecx, dword [esp + 0xd8]
cmp ecx, 2
jl 0x55f980
mov dword [esp + 0x8c], eax
mov edx, dword [esp + 0xdc]
cmp edx, 0x40
jge 0x55f8f7
mov eax, edx
cdq
idiv ecx
mov edx, ecx
mov ecx, eax
mov ebp, 1
shl ebp, cl
lea esi, [eax - 0x20]
mov ecx, esi
mov edi, 1
shl edi, cl
neg ecx
mov ebx, 1
shr ebx, cl
cvtsi2sd xmm0, edx
movsd qword [esp + 0x68], xmm0
cmp eax, 0x20
sbb eax, eax
and ebp, eax
mov dword [esp], ebp
cmp esi, 0x20
sbb ebp, ebp
and ebp, edi
cmp ecx, 0x20
sbb esi, esi
and ebx, esi
or ebx, ebp
mov dword [esp + 4], ebx
call sym.runtime.uint64tofloat64
movsd xmm0, qword [esp + 8]
movsd qword [esp + 0x3c], xmm0
movsd qword [esp], xmm0
call sym.math.log
movsd xmm0, qword [esp + 8]
movsd xmm1, qword [0x6678bc]
subsd xmm0, xmm1
movsd xmm1, qword [esp + 0x3c]
divsd xmm1, xmm0
movsd xmm0, qword [0x6678ac]
mulsd xmm0, xmm1
movsd xmm1, qword [0x6678b4]
mulsd xmm1, xmm0
movsd xmm0, qword [esp + 0x68]
ucomisd xmm0, xmm1
jae 0x55f939
mov ecx, dword [esp + 0xd8]
lea eax, [0x6162e0]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], ecx
call sym.runtime.makeslice
mov eax, dword [esp + 0xc]
mov dword [esp + 0xc8], eax
mov ecx, dword [esp + 0xd0]
mov edx, dword [esp + 0xd4]
mov ebx, dword [esp + 0xd8]
mov ebp, dword [esp + 0xdc]
jmp 0x55f9ea
lea eax, [0x5fa0e0]
mov dword [esp], eax
call sym.runtime.newobject
mov eax, dword [esp + 4]
mov dword [eax + 4], 0x41
lea ecx, [0x627c69]
mov dword [eax], ecx
mov dword [esp + 0xe0], 0
lea ecx, [0x6681c0]
mov dword [esp + 0xe4], ecx
mov dword [esp + 0xe8], eax
add esp, 0xcc
ret
lea eax, [0x5fa0e0]
mov dword [esp], eax
call sym.runtime.newobject
mov eax, dword [esp + 4]
mov dword [eax + 4], 0x37
lea ecx, [0x626a87]
mov dword [eax], ecx
mov dword [esp + 0xe0], 0
lea ecx, [0x6681c0]
mov dword [esp + 0xe4], ecx
mov dword [esp + 0xe8], eax
add esp, 0xcc
ret
mov ecx, dword [esp + 0xd0]
mov edx, dword [esp + 0xd4]
mov ebx, dword [esp + 0xd8]
mov eax, dword [esp + 0xc8]
mov ebp, dword [esp + 0xdc]
cmp ebx, 7
jl 0x55fa13
lea esi, [ebx - 2]
mov edi, eax
mov eax, 0xcccccccd
imul esi
lea edx, [edx + ebx - 2]
sar edx, 2
add edx, ebp
mov eax, edi
mov esi, ebp
mov ebp, edx
mov edx, dword [esp + 0xd4]
jmp 0x55fa15
mov esi, ebp
xor edi, edi
jmp 0x55fecb
xor ebp, ebp
jmp 0x55ff71
lea eax, [0x5fd440]
mov dword [esp], eax
call sym.runtime.newobject
mov eax, dword [esp + 4]
mov dword [esp + 0x80], eax
mov ecx, dword [0x785b7c]
cmp ecx, eax
je 0x55fb5e
mov dword [esp + 0x88], ecx
mov edx, dword [eax + 0xc]
mov ebx, dword [ecx + 8]
mov ebp, dword [ecx + 4]
cmp edx, ebx
jl 0x55fa68
mov esi, dword [eax + 4]
mov edi, ebx
jmp 0x55faf6
mov dword [esp + 0x34], ebx
mov dword [esp + 0x7c], ebp
cmp ebx, 1
jne 0x55fab9
lea eax, [0x5f3ce0]
mov dword [esp], eax
mov dword [esp + 4], 1
mov dword [esp + 8], 1
call sym.runtime.makeslice
mov esi, dword [esp + 0xc]
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x88]
mov ebp, dword [esp + 0x7c]
mov edi, dword [esp + 0x34]
mov ebx, 1
mov edx, 1
jmp 0x55faf6
lea eax, [0x5f3ce0]
mov dword [esp], eax
mov dword [esp + 4], ebx
lea ecx, [ebx + 4]
mov dword [esp + 0x1c], ecx
mov dword [esp + 8], ecx
call sym.runtime.makeslice
mov esi, dword [esp + 0xc]
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x88]
mov ebp, dword [esp + 0x7c]
mov edi, dword [esp + 0x34]
mov ebx, edi
mov edx, dword [esp + 0x1c]
cmp ebx, edi
jg 0x55fafc
mov edi, ebx
cmp esi, ebp
je 0x55fb39
mov dword [esp + 0x2c], edx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x74], esi
mov dword [esp], esi
mov dword [esp + 4], ebp
shl edi, 2
mov dword [esp + 8], edi
call sym.runtime.memmove
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x88]
mov edx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x24]
mov esi, dword [esp + 0x74]
mov dword [eax + 8], ebx
mov dword [eax + 0xc], edx
mov edx, dword [0x7c5080]
test edx, edx
je 0x55fb56
call sym.runtime.gcWriteBarrier2
mov dword [edi], esi
mov edx, dword [eax + 4]
mov dword [edi + 4], edx
mov dword [eax + 4], esi
movzx ecx, byte [ecx]
mov byte [eax], cl
mov byte [esp + 0xb8], 0
mov dword [esp + 0xbc], 0
mov dword [esp + 0xc0], 0
mov dword [esp + 0xc4], 0
mov ecx, dword [0x785b7c]
lea edx, [esp + 0xb8]
cmp ecx, edx
je 0x55fccb
mov dword [esp + 0x84], ecx
mov ebx, dword [ecx + 8]
mov ebp, dword [ecx + 4]
test ebx, ebx
jg 0x55fbbe
mov esi, ebx
xor edi, edi
xor ebx, ebx
mov dword [esp + 0x28], ebx
mov ebx, esi
jmp 0x55fc66
mov dword [esp + 0x30], ebx
mov dword [esp + 0x78], ebp
cmp ebx, 1
jne 0x55fc1c
lea eax, [0x5f3ce0]
mov dword [esp], eax
mov dword [esp + 4], 1
mov dword [esp + 8], 1
call sym.runtime.makeslice
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x84]
lea edx, [esp + 0xb8]
mov ebp, dword [esp + 0x78]
mov esi, dword [esp + 0x30]
mov ebx, 1
mov edi, eax
mov eax, 1
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x80]
jmp 0x55fc66
lea eax, [0x5f3ce0]
mov dword [esp], eax
mov dword [esp + 4], ebx
lea ecx, [ebx + 4]
mov dword [esp + 0x18], ecx
mov dword [esp + 8], ecx
call sym.runtime.makeslice
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x84]
lea edx, [esp + 0xb8]
mov ebp, dword [esp + 0x78]
mov esi, dword [esp + 0x30]
mov ebx, esi
mov edi, eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x80]
cmp ebx, esi
jg 0x55fc6c
mov esi, ebx
cmp edi, ebp
je 0x55fca8
mov dword [esp + 0x20], ebx
mov dword [esp + 0x70], edi
mov dword [esp], edi
mov dword [esp + 4], ebp
shl esi, 2
mov dword [esp + 8], esi
call sym.runtime.memmove
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x84]
lea edx, [esp + 0xb8]
mov ebx, dword [esp + 0x20]
mov edi, dword [esp + 0x70]
mov dword [esp + 0xc0], ebx
mov ebx, dword [esp + 0x28]
mov dword [esp + 0xc4], ebx
mov dword [esp + 0xbc], edi
movzx ecx, byte [ecx]
mov byte [esp + 0xb8], cl
mov byte [esp + 0xa8], 0
mov dword [esp + 0xac], 0
mov dword [esp + 0xb0], 0
mov dword [esp + 0xb4], 0
xor ecx, ecx
jmp 0x560016
mov ecx, dword [eax + 4]
mov edx, dword [eax + 8]
mov ebx, dword [eax + 0xc]
mov dword [esp], ecx
mov dword [esp + 4], edx
mov dword [esp + 8], ebx
call sym.math_big.nat.bitLen
mov eax, dword [esp + 0xdc]
cmp dword [esp + 0xc], eax
jne 0x55f9c7
lea eax, [0x5fd440]
mov dword [esp], eax
call sym.runtime.newobject
mov eax, dword [0x7c5080]
mov ecx, dword [esp + 4]
test eax, eax
jne 0x55fd4a
mov eax, dword [esp + 0x8c]
jmp 0x55fd5e
call sym.runtime.gcWriteBarrier2
mov dword [edi], ecx
mov eax, dword [esp + 0x8c]
mov edx, dword [eax + 8]
mov dword [edi + 4], edx
mov dword [eax + 8], ecx
mov ecx, dword [eax + 4]
mov edx, ecx
sar ecx, 0x1f
test ecx, ecx
jge 0x55fd7c
xor ebx, ebx
sub ebx, edx
mov ebp, 0
sbb ebp, ecx
test ecx, ecx
jmp 0x55fd80
mov ebp, ecx
mov ebx, edx
xchg esi, ebx
sete bl
xchg esi, ebx
test edx, edx
sete dl
and esi, edx
xchg esi, eax
test al, al
xchg esi, eax
je 0x55fda2
test ecx, ecx
mov ecx, 0
mov edx, 0
jmp 0x55fde2
test ebp, ebp
je 0x55fdcb
mov dword [esp + 0x54], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x54], ebx
mov dword [esp + 0x58], ebp
test ecx, ecx
mov ecx, 2
lea edx, [esp + 0x54]
jmp 0x55fde2
mov dword [esp + 0x50], 0
mov dword [esp + 0x50], ebx
test ecx, ecx
mov ecx, 1
lea edx, [esp + 0x50]
setl bl
mov byte [esp + 0x98], 0
mov dword [esp + 0x9c], 0
mov dword [esp + 0xa0], 0
mov dword [esp + 0xa4], 0
mov byte [esp + 0x98], bl
mov dword [esp + 0xa0], ecx
mov dword [esp + 0xa4], ecx
mov dword [esp + 0x9c], edx
mov ecx, dword [eax + 8]
mov dword [esp], ecx
lea ecx, [esp + 0x98]
mov dword [esp + 4], ecx
lea ecx, [esp + 0xb8]
mov dword [esp + 8], ecx
call sym.math_big._Int_.ModInverse
mov eax, dword [esp + 0xc]
test eax, eax
jne 0x56002a
mov eax, dword [esp + 0xdc]
jmp 0x55f9c7
mov ecx, dword [edx + 4]
mov ebx, dword [edx + 8]
mov edx, dword [edx + 0xc]
inc eax
mov dword [esp + 0x4c], eax
mov dword [esp], ecx
mov dword [esp + 4], ebx
mov dword [esp + 8], edx
call sym.math_big.nat.bitLen
mov eax, dword [esp + 0xc]
mov ebp, dword [esp + 0x38]
sub ebp, eax
mov eax, dword [esp + 0xd0]
mov ecx, dword [esp + 0xd4]
mov edx, dword [esp + 0xd8]
mov ebx, dword [esp + 0x4c]
mov eax, dword [esp + 0xc8]
mov ecx, dword [esp + 0xd0]
mov edx, dword [esp + 0xd4]
mov ebx, dword [esp + 0xd8]
mov esi, dword [esp + 0xdc]
mov edi, dword [esp + 0x4c]
cmp ebx, edi
jle 0x55fa1c
sub ebx, edi
test ebx, ebx
je 0x560119
mov dword [esp + 0x4c], edi
mov dword [esp + 0x38], ebp
mov dword [esp], ecx
mov dword [esp + 4], edx
mov eax, ebp
cmp ebx, 0xffffffff
je 0x55fef8
cdq
idiv ebx
jmp 0x55fefa
neg eax
mov dword [esp + 8], eax
call sym.crypto_rand.Prime
mov ecx, dword [0x7c5080]
mov edx, dword [esp + 0xc]
mov ebx, dword [esp + 0x10]
mov ebp, dword [esp + 0x14]
test ecx, ecx
jne 0x55ff26
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0xc8]
jmp 0x55ff3e
call sym.runtime.gcWriteBarrier2
mov dword [edi], edx
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0xc8]
mov esi, dword [ecx + eax*4]
mov dword [edi + 4], esi
mov dword [ecx + eax*4], edx
test ebx, ebx
je 0x55fe63
mov dword [esp + 0xe0], 0
mov dword [esp + 0xe4], ebx
mov dword [esp + 0xe8], ebp
add esp, 0xcc
ret
inc ebp
mov edx, dword [esp + 0xd4]
cmp ebx, ebp
jle 0x55fa23
mov dword [esp + 0x48], ebp
mov edi, dword [eax + ebp*4]
mov dword [esp + 0x94], edi
mov dword [esp + 0x5c], eax
xor eax, eax
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x5c]
jmp 0x5600ea
mov dword [esp + 0x64], ecx
mov edx, dword [esp + 0xc8]
mov ebx, dword [edx + ecx*4]
mov dword [esp + 0x90], ebx
mov dword [esp], eax
mov dword [esp + 4], eax
mov dword [esp + 8], ebx
call sym.math_big._Int_.Mul
mov eax, dword [0x785b7c]
lea ecx, [esp + 0xa8]
mov dword [esp], ecx
mov edx, dword [esp + 0x90]
mov dword [esp + 4], edx
mov dword [esp + 8], eax
call sym.math_big._Int_.Sub
lea eax, [esp + 0xb8]
mov dword [esp], eax
mov dword [esp + 4], eax
lea ecx, [esp + 0xa8]
mov dword [esp + 8], ecx
call sym.math_big._Int_.Mul
mov eax, dword [esp + 0x64]
lea ecx, [eax + 1]
mov eax, dword [esp + 0x80]
lea edx, [esp + 0xb8]
mov ebx, dword [esp + 0xd8]
cmp ebx, ecx
jg 0x55ff9a
jmp 0x55fcfb
mov eax, dword [esp + 0xd8]
mov ecx, dword [esp + 0x8c]
mov dword [ecx + 0x10], eax
mov dword [ecx + 0x14], eax
mov eax, dword [0x7c5080]
test eax, eax
jne 0x560058
mov eax, dword [esp + 0xc8]
mov edx, dword [esp + 0x80]
jmp 0x56007b
call sym.runtime.gcWriteBarrier4
mov eax, dword [esp + 0xc8]
mov dword [edi], eax
mov edx, dword [ecx + 0xc]
mov dword [edi + 4], edx
mov edx, dword [esp + 0x80]
mov dword [edi + 8], edx
mov ebx, dword [ecx]
mov dword [edi + 0xc], ebx
mov dword [ecx + 0xc], eax
mov dword [ecx], edx
mov dword [esp], ecx
call sym.crypto_rsa._PrivateKey_.Precompute
mov eax, dword [esp + 0x8c]
mov dword [esp + 0xe0], eax
mov dword [esp + 0xe4], 0
mov dword [esp + 0xe8], 0
add esp, 0xcc
ret
mov eax, dword [esp + 0x44]
inc eax
mov ecx, dword [esp + 0xd0]
mov edx, dword [esp + 0xd4]
mov ebx, dword [esp + 0xd8]
mov ebp, dword [esp + 0x48]
mov esi, dword [esp + 0xdc]
mov edi, dword [esp + 0x94]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0xc8]
mov edx, dword [esp + 0x44]
cmp edx, ebp
jge 0x55ff69
mov ecx, dword [eax + edx*4]
mov dword [esp], edi
mov dword [esp + 4], ecx
call sym.math_big._Int_.Cmp
mov eax, dword [esp + 8]
test eax, eax
jne 0x5600b3
mov eax, dword [esp + 0xdc]
jmp 0x55f9c7
call sym.runtime.panicdivide
nop
call sym.runtime.morestack_noctxt
jmp sym.crypto_rsa.GenerateMultiPrimeKey