Function at 0x401e30
Capabilities:
Get common file path
Hash data using sha256
Resolve function by parsing pe exports
Write file on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x414611
mov eax, dword fs:[0]
push eax
sub esp, 0xd00
mov eax, dword [0x41a678]
xor eax, esp
mov dword [esp + 0xcf8], eax
push ebx
push esi
push edi
mov eax, dword [0x41a678]
xor eax, esp
push eax
lea eax, [esp + 0xd10]
mov dword fs:[0], eax
xor ebx, ebx
mov eax, 0xf
mov dword [esp + 0x68], eax
mov dword [esp + 0x64], ebx
mov byte [esp + 0x54], bl
mov dword [esp + 0xd18], ebx
mov dword [esp + 0x30], eax
mov dword [esp + 0x2c], ebx
mov byte [esp + 0x1c], bl
push 0x250
lea eax, [esp + 0x70]
push ebx
push eax
mov byte [esp + 0xd24], 1
call fcn.0040b5c0
lea ecx, [esp + 0x78]
add esp, 0xc
push ecx
call fcn.004016e0
xor eax, eax
mov ecx, 0x40
lea edi, [esp + 0x3b0]
rep stosd dword es:[edi], eax
add esp, 4
mov byte [esp + 0x2c0], bl
mov dword [esp + 0x2c1], eax
mov dword [esp + 0x2c5], eax
mov dword [esp + 0x2c9], eax
mov dword [esp + 0x2cd], eax
mov dword [esp + 0x2d1], eax
mov dword [esp + 0x2d5], eax
mov dword [esp + 0x2d9], eax
mov word [esp + 0x2dd], ax
mov byte [esp + 0x2df], al
mov dword [esp + 0x388], ebx
mov dword [esp + 0x384], ebx
mov dword [esp + 0x38c], 0x6a09e667
mov dword [esp + 0x390], 0xbb67ae85
mov dword [esp + 0x394], 0x3c6ef372
mov dword [esp + 0x398], 0xa54ff53a
mov dword [esp + 0x39c], 0x510e527f
mov dword [esp + 0x3a0], 0x9b05688c
mov dword [esp + 0x3a4], 0x1f83d9ab
mov dword [esp + 0x3a8], 0x5be0cd19
xor esi, esi
mov eax, dword [esp + 0x384]
movzx ecx, byte [esp + esi + 0x6c]
shr eax, 5
and eax, 0xf
mov edx, dword [esp + eax*4 + 0x3ac]
lea eax, [esp + eax*4 + 0x3ac]
movzx ecx, cl
shl edx, 8
or edx, ecx
mov dword [eax], edx
add dword [esp + 0x384], 8
jne 0x401fc0
add dword [esp + 0x388], 1
mov dword [esp + 0x384], ebx
test dword [esp + 0x384], 0x1ff
jne 0x401fdd
lea edx, [esp + 0x384]
push edx
call fcn.00406320
add esp, 4
add esi, 1
cmp esi, 0x250
jl 0x401f7d
lea ebx, [esp + 0x2c0]
lea esi, [esp + 0x384]
call fcn.004066e0
push 0x7f
lea eax, [esp + 0x309]
push 0
push eax
mov byte [esp + 0x310], 0
call fcn.0040b5c0
add esp, 0xc
lea ecx, [esp + 0x304]
push ecx
mov edx, ebx
push edx
call fcn.00401920
lea eax, [esp + 0x74]
push eax
lea eax, [esp + 0x310]
call fcn.00401450
add esp, 0xc
push 0x2cf
lea ecx, [esp + 0x389]
push 0
push ecx
mov byte [esp + 0x390], 0
call fcn.0040b5c0
add esp, 0xc
push 0x80
lea edx, [esp + 0x308]
push edx
lea eax, [esp + 0x38c]
push eax
call fcn.0040b640
add esp, 0xc
push 0x250
lea ecx, [esp + 0x70]
push ecx
lea edx, [esp + 0x40c]
push edx
call fcn.0040b640
add esp, 0xc
push 0x5a0
lea eax, [esp + 0x761]
push 0
push eax
mov byte [esp + 0x768], 0
call fcn.0040b5c0
add esp, 0xc
xor esi, esi
lea edi, [esp + 0x75c]
lea esp, [esp]
movzx ecx, byte [esp + esi + 0x384]
push ecx
push str._02X
push 3
push edi
call fcn.0040a284
add esi, 1
add esp, 0x10
add edi, 2
cmp esi, 0x2d0
jl 0x4020c0
push 0x40
push str.__________________________________
lea eax, [esp + 0x58]
call fcn.00403110
lea eax, [esp + 0x75c]
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x402101
sub eax, edx
push eax
lea edx, [esp + 0x760]
push edx
lea eax, [esp + 0x58]
call fcn.00403110
push 0x40
push str.____________________________________
lea eax, [esp + 0x58]
call fcn.00403110
mov ebx, 0x41
push 0xd
lea edi, [ebx - 1]
lea esi, [esp + 0x54]
call fcn.00402fa0
push 0xa
mov edi, ebx
call fcn.00402fa0
add ebx, 0x42
cmp ebx, 0x62f
jl 0x402133
push 0xd
mov edi, 0x60e
call fcn.00402fa0
push 0xa
mov edi, 0x60f
call fcn.00402fa0
mov ecx, dword [esp + 0x70]
xor eax, eax
mov edi, 0x10
push edi
mov dword [esp + 0x2e5], eax
mov dword [esp + 0x2e9], eax
mov dword [esp + 0x2ed], eax
mov dword [esp + 0x2f1], eax
mov dword [esp + 0x2f5], eax
mov dword [esp + 0x2f9], eax
mov dword [esp + 0x2fd], eax
mov dword [esp + 0x301], eax
push 0x21
lea eax, [esp + 0x2e8]
push eax
push ecx
mov byte [esp + 0x2f0], 0
xor ebx, ebx
call fcn.00409da8
add esp, 0x10
mov dword [esp + 0x4c], 0xf
mov dword [esp + 0x48], ebx
mov byte [esp + 0x38], bl
lea eax, [esp + 0x2e0]
mov byte [esp + 0xd18], 2
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x4021f0
sub eax, edx
push eax
lea edx, [esp + 0x2e4]
push edx
lea eax, [esp + 0x3c]
call fcn.00403110
push 0xd
push str..ssc_rdrp_key
lea eax, [esp + 0x3c]
call fcn.00403110
cmp dword [esp + 0x4c], edi
mov eax, dword [esp + 0x38]
jae 0x40222b
lea eax, [esp + 0x38]
push ebx
push 0x80
push 2
push ebx
push 1
push 0xc0000000
push eax
call dword [sym.imp.KERNEL32.DLL_CreateFileA]
mov esi, eax
cmp esi, ebx
je 0x402275
cmp dword [esp + 0x68], edi
mov eax, dword [esp + 0x54]
mov dword [esp + 0x14], ebx
jae 0x40225a
lea eax, [esp + 0x54]
mov edx, dword [esp + 0x64]
push ebx
lea ecx, [esp + 0x18]
push ecx
push edx
push eax
push esi
call dword [sym.imp.KERNEL32.DLL_WriteFile]
test eax, eax
jne 0x402341
call dword [sym.imp.KERNEL32.DLL_GetLastError]
push ebx
push ebx
mov edi, eax
lea eax, [esp + 0x18]
push eax
push 0x400
push edi
push ebx
push 0x1100
call dword [sym.imp.KERNEL32.DLL_FormatMessageA]
mov ecx, dword [esp + 0x10]
push ecx
push edi
lea edx, [esp + 0x30c]
push str.Failed_with_error__d:__s
push edx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
push ebx
push str.Error
lea eax, [esp + 0x30c]
push eax
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
mov ecx, dword [esp + 0x10]
push ecx
call dword [sym.imp.KERNEL32.DLL_LocalFree]
cmp esi, ebx
je 0x4022dd
push esi
call dword [sym.imp.KERNEL32.DLL_CloseHandle]
mov esi, 0x10
cmp dword [esp + 0x4c], esi
jb 0x4022f5
mov edx, dword [esp + 0x38]
push edx
call fcn.0040a323
add esp, 4
cmp dword [esp + 0x30], esi
mov edi, 0xf
mov dword [esp + 0x4c], edi
mov dword [esp + 0x48], ebx
mov byte [esp + 0x38], 0
jb 0x40231a
mov eax, dword [esp + 0x1c]
push eax
call fcn.0040a323
add esp, 4
cmp dword [esp + 0x68], esi
mov dword [esp + 0x30], edi
mov dword [esp + 0x2c], ebx
mov byte [esp + 0x1c], 0
jb 0x40233a
mov ecx, dword [esp + 0x54]
push ecx
call fcn.0040a323
add esp, 4
xor eax, eax
jmp 0x402529
push esi
call dword [sym.imp.KERNEL32.DLL_CloseHandle]
push 0x103
lea edx, [esp + 0x659]
push ebx
push edx
mov byte [esp + 0x660], 0
call fcn.0040b5c0
add esp, 0xc
lea eax, [esp + 0x654]
push eax
push 0x104
call dword [sym.imp.KERNEL32.DLL_GetCurrentDirectoryA]
push 0x31
push str.License_Key_file_has_been_generated_and_saved_to:
lea eax, [esp + 0x20]
call fcn.00403110
or ecx, 0xffffffff
sub ecx, dword [esp + 0x2c]
cmp ecx, 1
ja 0x40239a
call fcn.00409be5
mov esi, dword [esp + 0x2c]
add esi, 1
cmp esi, 0xfffffffe
jbe 0x4023ab
call fcn.00409be5
mov eax, dword [esp + 0x30]
cmp eax, esi
jae 0x40254d
mov edx, dword [esp + 0x2c]
push edx
push esi
lea ecx, [esp + 0x20]
call fcn.004035b0
cmp esi, ebx
jbe 0x4023f6
cmp dword [esp + 0x30], edi
mov eax, dword [esp + 0x1c]
jae 0x4023d8
lea eax, [esp + 0x1c]
mov ecx, dword [esp + 0x2c]
mov byte [eax + ecx], 0xd
cmp dword [esp + 0x30], edi
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x2c], esi
jae 0x4023f2
lea eax, [esp + 0x1c]
mov byte [eax + esi], 0
or edx, 0xffffffff
sub edx, dword [esp + 0x2c]
cmp edx, 1
ja 0x402407
call fcn.00409be5
mov esi, dword [esp + 0x2c]
add esi, 1
cmp esi, 0xfffffffe
jbe 0x402418
call fcn.00409be5
mov eax, dword [esp + 0x30]
cmp eax, esi
jae 0x40256d
mov eax, dword [esp + 0x2c]
push eax
push esi
lea ecx, [esp + 0x20]
call fcn.004035b0
cmp esi, ebx
jbe 0x402463
cmp dword [esp + 0x30], edi
mov eax, dword [esp + 0x1c]
jae 0x402445
lea eax, [esp + 0x1c]
mov ecx, dword [esp + 0x2c]
mov byte [eax + ecx], 0xa
cmp dword [esp + 0x30], edi
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x2c], esi
jae 0x40245f
lea eax, [esp + 0x1c]
mov byte [eax + esi], 0
lea eax, [esp + 0x654]
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x402470
sub eax, edx
push eax
lea edx, [esp + 0x658]
push edx
lea eax, [esp + 0x20]
call fcn.00403110
push 1
push 0x416ff8
lea eax, [esp + 0x20]
call fcn.00403110
push ebx
lea eax, [esp + 0x38]
push eax
or eax, 0xffffffff
lea esi, [esp + 0x20]
call fcn.004033f0
cmp dword [esp + 0x30], edi
mov eax, dword [esp + 0x1c]
jae 0x4024bd
lea eax, [esp + 0x1c]
push 0x40
push str.Success_
push eax
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
cmp dword [esp + 0x4c], edi
jb 0x4024df
mov ecx, dword [esp + 0x38]
push ecx
call fcn.0040a323
add esp, 4
cmp dword [esp + 0x30], edi
mov esi, 0xf
mov dword [esp + 0x4c], esi
mov dword [esp + 0x48], ebx
mov byte [esp + 0x38], 0
jb 0x402504
mov edx, dword [esp + 0x1c]
push edx
call fcn.0040a323
add esp, 4
cmp dword [esp + 0x68], edi
mov dword [esp + 0x30], esi
mov dword [esp + 0x2c], ebx
mov byte [esp + 0x1c], 0
jb 0x402524
mov eax, dword [esp + 0x54]
push eax
call fcn.0040a323
add esp, 4
mov eax, 1
mov ecx, dword [esp + 0xd10]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xcf8]
xor ecx, esp
call fcn.0040a18c
mov esp, ebp
pop ebp
ret
cmp esi, ebx
jne 0x4023c8
cmp eax, edi
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x2c], ebx
jae 0x402565
lea eax, [esp + 0x1c]
mov byte [eax], 0
jmp 0x4023f6
cmp esi, ebx
jne 0x402435
cmp eax, edi
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x2c], ebx
jae 0x402585
lea eax, [esp + 0x1c]
mov byte [eax], 0
jmp 0x402463