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

Disassembly:
mov eax, 0xec
call fcn.005f62e0
mov eax, dword [0x6c02d0]
xor eax, esp
mov dword [esp + 0xe8], eax
mov eax, dword [esp + 0xf4]
mov edx, dword [esp + 0x108]
mov ecx, dword [esp + 0x10c]
push ebx
push ebp
mov ebp, dword [esp + 0xf8]
xor ebx, ebx
push esi
mov esi, dword [esp + 0x110]
push edi
xor edi, edi
mov dword [esp + 0x1c], eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x58], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x14], ebx
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x70], ebx
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x74], ebx
cmp dword [esp + 0x108], ebx
jne 0x51f195
mov ecx, dword [eax + 0x28]
mov dword [esp + 0x3c], ecx
jmp 0x51f199
mov dword [esp + 0x3c], ebx
mov dword [edx], ebx
mov eax, dword [eax + 0x2c]
test eax, eax
jne 0x51f1eb
test esi, esi
jne 0x51f1bc
cmp dword [esp + 0x110], 0x800
sbb esi, esi
and esi, 0xffffffa0
add esi, 0x100
cmp esi, 0xa0
jne 0x51f1cb
mov eax, str.SHA1
jmp 0x51f1eb
cmp esi, 0xe0
jne 0x51f1da
mov eax, str.SHA_224
jmp 0x51f1eb
cmp esi, 0x100
jne 0x51fbf2
mov eax, str.SHA_256
mov ecx, dword [esp + 0x1c]
push dword [ecx + 0x30]
push eax
push ebp
call fcn.004e3bd0
mov ebx, eax
add esp, 0xc
mov dword [esp + 0x38], ebx
mov edi, ebx
test ebx, ebx
je 0x51fb70
push ebx
call fcn.004c17b0
add esp, 4
mov dword [esp + 0x28], eax
test eax, eax
jle 0x51fb70
mov ecx, dword [esp + 0x110]
lea ebx, [eax*8]
test esi, esi
cmovne ebx, esi
mov eax, ebx
shr eax, 3
mov dword [esp + 0x60], eax
cmp ecx, ebx
jbe 0x51fb62
mov eax, dword [esp + 0x10c]
cmp eax, 1
jne 0x51f29c
cmp ecx, 0x400
jne 0x51f263
cmp ebx, 0xa0
jne 0x51f27b
jmp 0x51f2e0
cmp ecx, 0x800
jne 0x51f27b
cmp ebx, 0xe0
je 0x51f2e0
cmp ebx, 0x100
je 0x51f2e0
call fcn.004c22a0
push 0x66524c
push 0x4d
push str.crypto_ffc_ffc_params_generate.c
call fcn.004c23a0
push 0
push 0x7f
push 5
jmp 0x51fb5a
test eax, eax
jne 0x51fb62
cmp ecx, 0xc00
jb 0x51f2b6
cmp ebx, 0x100
jb 0x51f2be
jmp 0x51f2e0
cmp ecx, 0x800
jb 0x51f2c8
cmp ebx, 0xe0
jb 0x51f2d4
jmp 0x51f2e0
cmp ecx, 0x400
jb 0x51fb3e
cmp ebx, 0xa0
jb 0x51fb3e
call fcn.004e3b40
mov edi, dword [esp + 0x38]
mov dword [esp + 0x74], eax
test eax, eax
je 0x51fb70
push ebp
call fcn.00540ce0
mov esi, eax
add esp, 4
mov dword [esp + 0x10], esi
mov ebp, edi
test esi, esi
je 0x51fb72
push esi
call fcn.00540d80
push esi
call fcn.00540b90
push esi
mov dword [esp + 0x4c], eax
call fcn.00540b90
push esi
mov dword [esp + 0x78], eax
call fcn.00540b90
push esi
mov dword [esp + 0x4c], eax
call fcn.00540b90
push esi
mov dword [esp + 0x74], eax
call fcn.00540b90
add esp, 0x18
mov dword [esp + 0x44], eax
test eax, eax
je 0x51fb72
mov edi, dword [esp + 0x1c]
mov eax, dword [edi + 0x14]
test eax, eax
cmove eax, dword [esp + 0x28]
xor esi, esi
mov dword [esp + 0x34], eax
mov eax, dword [edi + 0x10]
test eax, eax
cmovne esi, eax
cmp dword [esp + 0x108], 0
mov dword [esp + 0x24], esi
je 0x51f3c4
xor ecx, ecx
cmp dword [edi + 4], ecx
sete cl
xor eax, eax
cmp dword [edi], eax
sete al
cmp eax, ecx
je 0x51f3a3
mov eax, dword [esp + 0x18]
mov dword [eax], 0x800
mov edi, ebp
mov esi, dword [esp + 0x10]
jmp 0x51fb72
mov eax, dword [esp + 0x3c]
and eax, 1
mov ecx, dword [edi]
mov dword [esp + 0x20], ecx
test ecx, ecx
je 0x51f40e
test eax, eax
jne 0x51f40e
mov ebx, dword [edi + 4]
mov dword [esp + 0x2c], ebx
jmp 0x51f7bc
mov ecx, dword [esp + 0x3c]
mov eax, ecx
and eax, 1
je 0x51f3ee
test esi, esi
je 0x51f3d9
cmp dword [edi + 0x18], 0
jge 0x51f3ee
mov eax, dword [esp + 0x18]
mov edi, ebp
mov esi, dword [esp + 0x10]
mov dword [eax], 0x200
jmp 0x51fb72
test cl, 2
je 0x51f3aa
cmp dword [edi + 8], 0
jne 0x51f3aa
mov eax, dword [esp + 0x18]
mov edi, ebp
mov esi, dword [esp + 0x10]
mov dword [eax], 0x400
jmp 0x51fb72
mov edi, dword [esp + 0x10]
push edi
call fcn.00540b90
push edi
mov dword [esp + 0x28], eax
call fcn.00540b90
add esp, 8
mov dword [esp + 0x2c], eax
mov edi, ebp
test eax, eax
je 0x51f39a
mov ecx, dword [esp + 0x34]
lea eax, [ecx*8]
cmp eax, ebx
jae 0x51f455
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x10]
mov dword [eax], 0x40000
jmp 0x51fb72
push 0x283
push str.crypto_ffc_ffc_params_generate.c
push ecx
call fcn.004c0940
add esp, 0xc
mov dword [esp + 0x48], eax
mov edi, ebp
test eax, eax
je 0x51f39a
test esi, esi
jne 0x51f4bc
cmp dword [esp + 0x108], esi
jne 0x51f496
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x10]
mov dword [eax], 0x200
jmp 0x51fb72
push 0x28e
push str.crypto_ffc_ffc_params_generate.c
push dword [esp + 0x3c]
call fcn.004c0940
mov esi, eax
add esp, 0xc
mov dword [esp + 0x24], esi
mov edi, ebp
test esi, esi
je 0x51f39a
cmp dword [esp + 0x108], 0
mov ecx, dword [esp + 0x110]
lea ebx, [ecx*4 - 1]
mov dword [esp + 0x50], ebx
jne 0x51f4fc
mov eax, dword [esp + 0x1c]
mov eax, dword [eax + 0x18]
cmp eax, ebx
jle 0x51f4f8
mov eax, dword [esp + 0x18]
mov edi, ebp
mov esi, dword [esp + 0x10]
mov dword [eax], 0x1000
jmp 0x51fb72
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x28]
lea esi, [ecx - 1]
xor edx, edx
mov edi, ebp
push esi
lea ecx, [eax*8]
mov eax, esi
div ecx
mov dword [esp + 0x68], eax
call fcn.004deff0
push eax
push dword [esp + 0x64]
call fcn.004dfc60
add esp, 0xc
test eax, eax
je 0x51f39a
mov ebx, dword [esp + 0x60]
mov eax, dword [esp + 0x1c]
nop dword [eax]
mov eax, dword [eax + 0x10]
mov esi, dword [esp + 0x4c]
push ebp
mov dword [esp + 0x2c], eax
call fcn.004c17b0
push dword [esp + 0x14]
mov edi, eax
call fcn.00540e50
push esi
push 0
push dword [esp + 0x40]
mov dword [esp + 0x74], eax
call fcn.0057f320
add esp, 0x14
test eax, eax
je 0x51f398
inc esi
mov dword [esp + 0x5c], esi
mov dword [esp + 0x4c], esi
mov esi, dword [esp + 0x24]
cmp esi, dword [esp + 0x28]
je 0x51f5a5
push 0
push dword [esp + 0x38]
push esi
push dword [esp + 0x6c]
call fcn.004c27a0
add esp, 0x10
test eax, eax
jle 0x51f398
push 0
push ebp
push 0
lea eax, [esp + 0xc4]
push eax
push dword [esp + 0x44]
push esi
call fcn.004e2fa0
add esp, 0x18
test eax, eax
je 0x51f398
lea esi, [esp + 0xb8]
cmp edi, ebx
jle 0x51f5da
mov eax, edi
sub eax, ebx
add esi, eax
jmp 0x51f5f5
jge 0x51f5f5
mov eax, ebx
sub eax, edi
push eax
lea eax, [esp + 0xbc]
add eax, edi
push 0
push eax
call fcn.005f77b0
add esp, 0xc
push dword [esp + 0x2c]
or byte [esi], 0x80
or byte [esi + ebx - 1], 1
push ebx
push esi
call fcn.004de4f0
add esp, 0xc
test eax, eax
je 0x51f398
push dword [esp + 0x30]
mov esi, dword [esp + 0x30]
push dword [esp + 0x14]
push esi
call fcn.0057f370
add esp, 0xc
test eax, eax
jg 0x51f667
mov ecx, dword [esp + 0x28]
cmp dword [esp + 0x24], ecx
je 0x51f732
test eax, eax
jne 0x51f398
mov esi, dword [esp + 0x5c]
push esi
push eax
push dword [esp + 0x38]
call fcn.0057f320
add esp, 0xc
test eax, eax
jne 0x51f577
mov esi, dword [esp + 0x10]
mov edi, ebp
jmp 0x51fb72
cmp dword [esp + 0x108], 0
jne 0x51f689
mov eax, dword [esp + 0x1c]
push dword [eax + 4]
push esi
call fcn.004de690
add esp, 8
test eax, eax
jne 0x51f744
mov esi, dword [esp + 0x30]
push 0
push 2
push esi
call fcn.0057f320
add esp, 0xc
test eax, eax
je 0x51f398
push 0
push 3
push esi
call fcn.0057f320
add esp, 0xc
test eax, eax
je 0x51f398
mov edi, dword [esp + 0x34]
mov esi, dword [esp + 0x24]
push edi
push esi
push dword [esp + 0x50]
call fcn.005f7b80
push dword [esp + 0x24]
lea eax, [esp + 0x64]
push eax
push dword [esp + 0x44]
push dword [esp + 0x128]
push dword [esp + 0x3c]
push dword [esp + 0x4c]
push edi
push dword [esp + 0x70]
push dword [esp + 0x90]
push dword [esp + 0x80]
push ebp
push dword [esp + 0x48]
call fcn.0051e4c0
add esp, 0x3c
test eax, eax
jg 0x51f759
js 0x51f398
mov eax, dword [esp + 0x1c]
cmp esi, dword [eax + 0x10]
jne 0x51f540
mov eax, dword [esp + 0x18]
mov edi, ebp
mov esi, dword [esp + 0x10]
mov dword [eax], 1
jmp 0x51fb72
mov eax, dword [esp + 0x18]
mov edi, ebp
mov esi, dword [esp + 0x10]
or dword [eax], 0x10
jmp 0x51fb72
mov eax, dword [esp + 0x18]
mov edi, ebp
mov esi, dword [esp + 0x10]
mov dword [eax], 0x4000
jmp 0x51fb72
push 1
push 2
push dword [esp + 0x38]
mov edi, ebp
call fcn.0057f320
add esp, 0xc
test eax, eax
je 0x51f39a
cmp dword [esp + 0x108], 0
jne 0x51f7aa
mov eax, dword [esp + 0x50]
cmp dword [esp + 0x54], eax
jne 0x51f398
mov eax, dword [esp + 0x1c]
push dword [eax]
push dword [esp + 0x24]
call fcn.004de690
add esp, 8
test eax, eax
je 0x51f7aa
mov esi, dword [esp + 0x10]
jmp 0x51fb72
mov eax, dword [esp + 0x3c]
and al, 3
cmp al, 1
je 0x51fb08
mov ebx, dword [esp + 0x2c]
call fcn.005111a0
mov dword [esp + 0x14], eax
mov edi, ebp
test eax, eax
je 0x51f9f9
push dword [esp + 0x10]
push dword [esp + 0x24]
push eax
call fcn.00511200
add esp, 0xc
test eax, eax
je 0x51f9f9
test byte [esp + 0x3c], 2
je 0x51f81b
push dword [esp + 0x18]
mov eax, dword [esp + 0x20]
push dword [esp + 0x48]
push dword [eax + 8]
push ebx
push dword [esp + 0x30]
push dword [esp + 0x28]
push dword [esp + 0x28]
call fcn.0056c190
add esp, 0x1c
test eax, eax
je 0x51f9f9
call fcn.004deff0
mov edi, dword [esp + 0x68]
push eax
push dword [esp + 0x24]
push edi
call fcn.00567a10
add esp, 0xc
test eax, eax
je 0x51f9f7
push dword [esp + 0x10]
push ebx
push edi
push 0
push dword [esp + 0x48]
call fcn.00568830
add esp, 0x14
test eax, eax
je 0x51f9f7
test esi, esi
je 0x51fa06
mov eax, dword [esp + 0x1c]
mov eax, dword [eax + 0x20]
mov dword [esp + 0x64], eax
cmp eax, 0xffffffff
je 0x51fa06
push ebp
mov dword [esp + 0x74], 1
mov dword [esp + 0x2c], 0
call fcn.004c17b0
mov edi, eax
add esp, 4
test edi, edi
jle 0x51f9ed
call fcn.004e3b40
mov esi, eax
test esi, esi
je 0x51f9ed
mov ebx, 1
nop dword [eax]
mov eax, dword [esp + 0x64]
mov byte [esp + 0x78], al
mov eax, ebx
push 0
sar eax, 8
push ebp
push esi
mov byte [esp + 0x85], al
mov byte [esp + 0x86], bl
call fcn.004e3500
add esp, 0xc
test eax, eax
je 0x51f99f
push dword [esp + 0x34]
push dword [esp + 0x28]
push esi
call fcn.004e3540
add esp, 0xc
test eax, eax
je 0x51f99f
push 4
push str.ggenffc_validate_LN
push esi
call fcn.004e3540
add esp, 0xc
test eax, eax
je 0x51f99f
push 3
lea eax, [esp + 0x7c]
push eax
push esi
call fcn.004e3540
add esp, 0xc
test eax, eax
je 0x51f99f
push 0
lea eax, [esp + 0x7c]
push eax
push esi
call fcn.004e3310
add esp, 0xc
test eax, eax
je 0x51f99f
push dword [esp + 0x44]
lea eax, [esp + 0x7c]
push edi
push eax
call fcn.004de4f0
add esp, 0xc
test eax, eax
je 0x51f99f
push dword [esp + 0x14]
push dword [esp + 0x14]
push dword [esp + 0x28]
push dword [esp + 0x44]
push dword [esp + 0x54]
push dword [esp + 0x54]
call fcn.00566170
add esp, 0x18
test eax, eax
je 0x51f99f
call fcn.004deff0
push eax
push dword [esp + 0x44]
call fcn.004de690
add esp, 8
test eax, eax
jg 0x51f997
inc ebx
cmp ebx, 0xffff
jle 0x51f8b0
jmp 0x51f99f
mov dword [esp + 0x28], 1
push esi
call fcn.004e3ab0
add esp, 4
cmp dword [esp + 0x28], 0
je 0x51f9ed
cmp dword [esp + 0x108], 0
jne 0x51fa41
mov eax, dword [esp + 0x1c]
push dword [eax + 8]
push dword [esp + 0x44]
call fcn.004de690
add esp, 8
test eax, eax
je 0x51fa41
mov eax, dword [esp + 0x18]
mov edi, ebp
mov esi, dword [esp + 0x10]
mov ebx, dword [esp + 0x14]
mov dword [eax], 0x8000
jmp 0x51fb74
mov eax, dword [esp + 0x18]
mov dword [eax], 0x400
mov edi, ebp
mov esi, dword [esp + 0x10]
mov ebx, dword [esp + 0x14]
jmp 0x51fb74
cmp dword [esp + 0x108], 0
je 0x51fa49
lea eax, [esp + 0x6c]
mov edi, ebp
push eax
push dword [esp + 0x6c]
push dword [esp + 0x40]
push dword [esp + 0x2c]
push dword [esp + 0x54]
push dword [esp + 0x54]
push dword [esp + 0x2c]
push dword [esp + 0x2c]
call fcn.0051ea20
add esp, 0x20
test eax, eax
je 0x51f9f9
jmp 0x51fa49
mov ebx, dword [esp + 0x2c]
mov esi, dword [esp + 0x24]
push 1
push 3
push dword [esp + 0x38]
mov edi, ebp
call fcn.0057f320
add esp, 0xc
test eax, eax
je 0x51f9f9
cmp dword [esp + 0x108], 0
je 0x51fb08
mov edi, dword [esp + 0x1c]
mov eax, dword [edi]
cmp dword [esp + 0x20], eax
je 0x51fa8d
push eax
call fcn.004de970
push dword [esp + 0x24]
call fcn.004de8c0
add esp, 8
mov dword [edi], eax
mov eax, dword [edi + 4]
cmp ebx, eax
je 0x51faa6
push eax
call fcn.004de970
push ebx
call fcn.004de8c0
add esp, 8
mov dword [edi + 4], eax
mov eax, dword [edi + 8]
mov ebx, dword [esp + 0x40]
cmp ebx, eax
je 0x51fac3
push eax
call fcn.004de970
push ebx
call fcn.004de8c0
add esp, 8
mov dword [edi + 8], eax
cmp dword [edi], 0
je 0x51f9f7
cmp dword [edi + 4], 0
je 0x51f9f7
test eax, eax
je 0x51f9f7
push dword [esp + 0x54]
mov edi, ebp
push dword [esp + 0x38]
push esi
push dword [esp + 0x28]
call fcn.0051e260
add esp, 0x10
test eax, eax
je 0x51f9f9
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x6c]
mov dword [eax + 0x24], ecx
test byte [esp + 0x3c], 2
je 0x51fb2a
cmp dword [esp + 0x70], 0
jne 0x51fb2a
mov esi, dword [esp + 0x10]
mov edi, ebp
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x58], 2
jmp 0x51fb74
mov esi, dword [esp + 0x10]
mov edi, ebp
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x58], 1
jmp 0x51fb74
call fcn.004c22a0
push 0x66524c
push 0x57
push str.crypto_ffc_ffc_params_generate.c
call fcn.004c23a0
push 0
push 0x72
push 0xa
call fcn.004c24b0
add esp, 0x18
mov eax, dword [esp + 0x18]
mov edi, dword [esp + 0x38]
mov dword [eax], 0x20000
xor esi, esi
xor ebx, ebx
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x24]
cmp eax, dword [ecx + 0x10]
je 0x51fb94
push 0x31a
push str.crypto_ffc_ffc_params_generate.c
push eax
call fcn.004c09d0
add esp, 0xc
push 0x31b
push str.crypto_ffc_ffc_params_generate.c
push dword [esp + 0x50]
call fcn.004c09d0
add esp, 0xc
test esi, esi
je 0x51fbb7
push esi
call fcn.00540a90
add esp, 4
push esi
call fcn.00540b00
push ebx
call fcn.00511150
push dword [esp + 0x7c]
call fcn.004e3ab0
push edi
call fcn.004e3c00
mov ecx, dword [esp + 0x108]
add esp, 0x10
mov eax, dword [esp + 0x58]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.005f5e48
add esp, 0xec
ret
mov dword [edx], 0x20
xor esi, esi
jmp 0x51fb74