Function at 0x5a6bc0
Capabilities:
Encrypt data using curve25519
Resolve function by parsing pe exports

Disassembly:
push ebp
pxor xmm7, xmm7
movdqa xmm4, xmm7
mov ebp, esp
push edi
xor edi, edi
push esi
mov esi, 0x1db42
push ebx
and esp, 0xfffffff0
sub esp, 0x230
mov dword [esp + 0x10], eax
mov eax, edx
mov edx, ecx
movdqu xmm5, xmmword [eax]
movups xmmword [esp + 0xd0], xmm5
movdqu xmm5, xmmword [eax + 0x10]
lea eax, [esp + 0x208]
and byte [esp + 0xd0], 0xf8
movups xmmword [esp + 0xe0], xmm5
movzx ebx, byte [esp + 0xef]
and ebx, 0x7f
or ebx, 0x40
mov byte [esp + 0xef], bl
call fcn.005a1de0
mov eax, dword [esp + 0x228]
movdqu xmm5, xmmword [esp + 0x208]
mov dword [esp + 0x70], 0
movdqu xmm6, xmmword [0x6c3bb0]
mov dword [esp + 0x38], edi
mov edx, dword [esp + 0x22c]
movups xmmword [esp + 0x150], xmm5
movdqu xmm5, xmmword [esp + 0x218]
mov dword [esp + 0x170], eax
movdqa xmm1, xmm6
xor eax, eax
mov dword [esp + 0x174], edx
xor edx, edx
movups xmmword [esp + 0x160], xmm5
movdqa xmm5, xmm6
mov dword [esp + 0x78], 0
mov dword [esp + 0xc0], 0
mov dword [esp + 0xcc], 0xfe
movups xmmword [esp + 0xa0], xmm7
movups xmmword [esp + 0x90], xmm7
movups xmmword [esp + 0x80], xmm7
movups xmmword [esp + 0x60], xmm6
movups xmmword [esp + 0x50], xmm7
movups xmmword [esp + 0x40], xmm7
jmp 0x5a6e4c
movd xmm6, dword [esp + 0x18c]
mov ecx, dword [esp + 0x140]
sar edi, 3
movd xmm0, dword [esp + 0x128]
movd xmm2, dword [esp + 0x120]
movd xmm3, dword [esp + 0x19c]
mov dword [esp + 0xc0], ecx
punpckldq xmm0, xmm6
movd xmm6, dword [esp + 0x124]
movdqu xmm4, xmmword [esp + 0x120]
movzx ebx, byte [esp + edi + 0xd0]
mov edi, dword [esp + 0x1a0]
punpckldq xmm2, xmm6
movups xmmword [esp + 0x40], xmm4
movdqu xmm4, xmmword [esp + 0x130]
movdqu xmm5, xmmword [esp + 0x180]
movdqu xmm7, xmmword [esp + 0x190]
movdqa xmm6, xmm2
movd xmm2, dword [esp + 0x180]
punpcklqdq xmm6, xmm0
movups xmmword [esp + 0x50], xmm4
movd xmm0, dword [esp + 0x188]
movdqu xmm1, xmmword [esp + 0xf0]
movups xmmword [esp + 0x90], xmm6
movd xmm6, dword [esp + 0x12c]
movdqu xmm4, xmmword [esp + 0x100]
punpckldq xmm0, xmm6
movd xmm6, dword [esp + 0x184]
punpckldq xmm2, xmm6
movdqa xmm6, xmm2
movd xmm2, dword [esp + 0x190]
punpcklqdq xmm6, xmm0
movd xmm0, dword [esp + 0x138]
movups xmmword [esp + 0x60], xmm6
movd xmm6, dword [esp + 0x194]
punpckldq xmm0, xmm3
movd xmm3, dword [esp + 0x13c]
punpckldq xmm2, xmm6
movdqa xmm6, xmm2
movd xmm2, dword [esp + 0x130]
punpcklqdq xmm6, xmm0
movd xmm0, dword [esp + 0x198]
movups xmmword [esp + 0x80], xmm6
movd xmm6, dword [esp + 0x134]
punpckldq xmm0, xmm3
punpckldq xmm2, xmm6
movdqa xmm6, xmm2
punpcklqdq xmm6, xmm0
movups xmmword [esp + 0xa0], xmm6
mov edx, dword [esp + 0x110]
mov ecx, dword [esp + 0x1a4]
mov eax, dword [esp + 0xc8]
mov dword [esp + 0x78], ecx
mov ecx, dword [esp + 0x144]
mov dword [esp + 0x70], ecx
mov ecx, dword [esp + 0x114]
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0xcc]
movzx ebx, bl
movdqu xmm3, xmmword [esp + 0x150]
movdqu xmm2, xmmword [esp + 0x150]
movdqu xmm0, xmmword [esp + 0x160]
and ecx, 7
pxor xmm3, xmm1
sar ebx, cl
mov ecx, edx
pxor xmm0, xmm4
and ebx, 1
xor eax, ebx
mov dword [esp + 0xc8], ebx
mov ebx, dword [esp + 0x170]
neg eax
movd xmm6, eax
xor ecx, ebx
pshufd xmm6, xmm6, 0
and ecx, eax
pand xmm3, xmm6
xor ebx, ecx
pand xmm0, xmm6
xor edx, ecx
pxor xmm2, xmm3
mov ecx, dword [esp + 0x174]
pxor xmm1, xmm3
movdqu xmm3, xmmword [esp + 0xa0]
pxor xmm3, xmmword [esp + 0x80]
mov dword [esp + 0xa0], edx
movups xmmword [esp + 0xb0], xmm2
movdqu xmm2, xmmword [esp + 0x160]
pand xmm3, xmm6
pxor xmm2, xmm0
pxor xmm0, xmm4
movdqu xmm4, xmmword [esp + 0x90]
mov dword [esp + 0x90], ebx
mov ebx, dword [esp + 0x38]
pxor xmm4, xmmword [esp + 0x60]
mov edx, ebx
pand xmm4, xmm6
movdqa xmm6, xmm7
movdqu xmm7, xmmword [esp + 0xb0]
xor edx, ecx
pxor xmm5, xmm4
pxor xmm6, xmm3
and edx, eax
psubd xmm7, xmm5
pxor xmm4, xmmword [esp + 0x40]
xor ebx, edx
xor ecx, edx
movups xmmword [esp + 0x1b0], xmm7
movdqa xmm7, xmm2
mov dword [esp + 0x60], ebx
psubd xmm7, xmm6
pxor xmm3, xmmword [esp + 0x50]
paddd xmm2, xmm6
mov ebx, dword [esp + 0xc0]
mov dword [esp + 0x80], ecx
movups xmmword [esp + 0x1c0], xmm7
movdqa xmm7, xmm1
paddd xmm1, xmm4
mov ecx, ebx
psubd xmm7, xmm4
xor ecx, edi
mov edx, ecx
and edx, eax
xor ebx, edx
xor edi, edx
mov ecx, ebx
mov ebx, dword [esp + 0x78]
mov dword [esp + 0xc0], edi
mov edi, dword [esp + 0x70]
mov edx, ebx
xor edx, edi
and edx, eax
mov eax, edi
mov edi, dword [esp + 0x90]
xor ebx, edx
xor eax, edx
mov edx, dword [esp + 0xc0]
sub edi, edx
mov edx, dword [esp + 0x80]
mov dword [esp + 0x1d0], edi
sub edx, ebx
mov dword [esp + 0x1d4], edx
movups xmmword [esp + 0x1e0], xmm7
mov edi, dword [esp + 0x60]
movdqa xmm7, xmm0
mov edx, dword [esp + 0xa0]
paddd xmm0, xmm3
psubd xmm7, xmm3
movups xmmword [esp + 0xf0], xmm1
sub edx, ecx
movups xmmword [esp + 0x100], xmm0
movdqu xmm0, xmmword [esp + 0xb0]
mov dword [esp + 0x200], edx
mov edx, edi
sub edx, eax
add eax, edi
mov edi, dword [esp + 0xc0]
paddd xmm0, xmm5
mov dword [esp + 0x204], edx
mov edx, dword [esp + 0xa0]
mov dword [esp + 0x114], eax
add ecx, edx
mov edx, dword [esp + 0x90]
movups xmmword [esp + 0x120], xmm0
mov dword [esp + 0x110], ecx
lea ecx, [esp + 0xf0]
add edi, edx
mov edx, dword [esp + 0x80]
movups xmmword [esp + 0x130], xmm2
mov dword [esp + 0x140], edi
lea eax, [ebx + edx]
lea edx, [esp + 0x1b0]
movups xmmword [esp + 0x1f0], xmm7
mov dword [esp + 0x144], eax
lea eax, [esp + 0x180]
call fcn.005a2520
lea edx, [esp + 0x120]
lea ecx, [esp + 0x1e0]
mov eax, edx
call fcn.005a2520
lea edx, [esp + 0x1e0]
lea eax, [esp + 0x1b0]
call fcn.005a2fc0
lea edx, [esp + 0xf0]
lea eax, [esp + 0x1e0]
call fcn.005a2fc0
mov ebx, dword [esp + 0x140]
movdqu xmm0, xmmword [esp + 0x120]
paddd xmm0, xmmword [esp + 0x180]
mov edx, dword [esp + 0x1a0]
mov ecx, dword [esp + 0x144]
movups xmmword [esp + 0x150], xmm0
lea eax, [edx + ebx]
sub edx, ebx
movdqu xmm0, xmmword [esp + 0x130]
paddd xmm0, xmmword [esp + 0x190]
mov dword [esp + 0x170], eax
mov eax, dword [esp + 0x1a4]
mov dword [esp + 0x140], edx
lea edx, [esp + 0x1e0]
movups xmmword [esp + 0x160], xmm0
movdqu xmm0, xmmword [esp + 0x180]
psubd xmm0, xmmword [esp + 0x120]
lea edi, [eax + ecx]
sub eax, ecx
lea ecx, [esp + 0x1b0]
movups xmmword [esp + 0x120], xmm0
movdqu xmm0, xmmword [esp + 0x190]
psubd xmm0, xmmword [esp + 0x130]
mov dword [esp + 0x144], eax
lea eax, [esp + 0xf0]
mov dword [esp + 0x174], edi
movups xmmword [esp + 0x130], xmm0
call fcn.005a2520
mov edi, dword [esp + 0x1d4]
mov eax, dword [esp + 0x204]
movdqu xmm1, xmmword [esp + 0x1b0]
mov edx, dword [esp + 0x1d0]
movdqu xmm0, xmmword [esp + 0x1c0]
sub eax, edi
movdqu xmm3, xmmword [esp + 0x1e0]
movdqu xmm2, xmmword [esp + 0x1f0]
mov ecx, dword [esp + 0x200]
mov ebx, eax
mov dword [esp + 0x204], eax
lea eax, [esp + 0x120]
psubd xmm3, xmm1
mov dword [esp + 0x14], edx
psubd xmm2, xmm0
sub ecx, edx
mov edx, eax
movups xmmword [esp + 0x1e0], xmm3
mov dword [esp + 0x200], ecx
pshufd xmm4, xmm3, 0x55
mov dword [esp + 0x50], ecx
movups xmmword [esp + 0x1f0], xmm2
call fcn.005a2fc0
movd eax, xmm3
imul esi
mov dword [esp + 0x80], eax
movd eax, xmm4
movdqa xmm4, xmm3
mov dword [esp + 0x84], edx
imul esi
punpckhdq xmm4, xmm3
pshufd xmm3, xmm3, 0xff
mov dword [esp + 0xb0], eax
movd eax, xmm4
mov dword [esp + 0xb4], edx
imul esi
mov dword [esp + 0x78], eax
movd eax, xmm3
pshufd xmm3, xmm2, 0x55
mov dword [esp + 0x7c], edx
imul esi
mov dword [esp + 0xc0], eax
movd eax, xmm2
mov dword [esp + 0xc4], edx
imul esi
mov dword [esp + 0x70], eax
movd eax, xmm3
movdqa xmm3, xmm2
mov dword [esp + 0x74], edx
imul esi
punpckhdq xmm3, xmm2
pshufd xmm2, xmm2, 0xff
mov dword [esp + 0xa0], eax
movd eax, xmm3
mov dword [esp + 0xa4], edx
imul esi
mov dword [esp + 0x60], eax
movd eax, xmm2
pshufd xmm2, xmm1, 0x55
mov dword [esp + 0x64], edx
imul esi
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x94], edx
imul esi
mov dword [esp + 0x50], eax
mov eax, ebx
mov dword [esp + 0x54], edx
imul esi
mov ecx, eax
mov ebx, edx
mov dword [esp + 0x44], edx
add ecx, 0x1000000
mov dword [esp + 0x40], eax
adc ebx, 0
mov edx, ecx
mov ecx, ebx
mov dword [esp + 0x38], edx
shrd edx, ebx, 0x19
sar ecx, 0x19
mov dword [esp + 0x3c], ebx
mov eax, edx
mov ebx, ecx
mov ecx, edx
mov edx, ebx
shld edx, eax, 2
shl eax, 2
add eax, ecx
adc edx, ebx
shld edx, eax, 2
shl eax, 2
sub eax, ecx
sbb edx, ebx
mov ecx, eax
add ecx, dword [esp + 0x80]
mov ebx, edx
mov edx, dword [esp + 0x38]
mov dword [esp + 0x80], ecx
mov ecx, dword [esp + 0x3c]
adc ebx, dword [esp + 0x84]
and edx, 0xfe000000
mov dword [esp + 0x84], ebx
mov ebx, dword [esp + 0x44]
mov eax, edx
mov edx, ecx
mov ecx, dword [esp + 0x40]
sub ecx, eax
mov dword [esp + 0x38], ecx
sbb ebx, edx
mov edx, dword [esp + 0xb0]
mov ecx, dword [esp + 0xb4]
mov dword [esp + 0x3c], ebx
add edx, 0x1000000
adc ecx, 0
mov eax, edx
mov edx, ecx
mov ecx, eax
mov ebx, edx
shrd ecx, ebx, 0x19
sar ebx, 0x19
add ecx, dword [esp + 0x78]
adc ebx, dword [esp + 0x7c]
mov dword [esp + 0x78], ecx
mov ecx, dword [esp + 0xb0]
and eax, 0xfe000000
mov dword [esp + 0x7c], ebx
mov ebx, dword [esp + 0xb4]
sub ecx, eax
sbb ebx, edx
mov edx, dword [esp + 0xc0]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0xc4]
mov dword [esp + 0x34], ebx
add edx, 0x1000000
adc ecx, 0
mov eax, edx
mov edx, ecx
mov ecx, eax
mov ebx, edx
shrd ecx, ebx, 0x19
sar ebx, 0x19
add ecx, dword [esp + 0x70]
adc ebx, dword [esp + 0x74]
mov dword [esp + 0xb0], ecx
mov ecx, dword [esp + 0xc0]
and eax, 0xfe000000
mov dword [esp + 0xb4], ebx
mov ebx, dword [esp + 0xc4]
sub ecx, eax
sbb ebx, edx
mov edx, dword [esp + 0xa0]
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0xa4]
mov dword [esp + 0x2c], ebx
add edx, 0x1000000
adc ecx, 0
mov eax, edx
mov edx, ecx
mov ecx, eax
mov ebx, edx
shrd ecx, ebx, 0x19
sar ebx, 0x19
add ecx, dword [esp + 0x60]
adc ebx, dword [esp + 0x64]
mov dword [esp + 0xc0], ecx
mov ecx, dword [esp + 0xa0]
and eax, 0xfe000000
mov dword [esp + 0xc4], ebx
mov ebx, dword [esp + 0xa4]
sub ecx, eax
mov dword [esp + 0x20], ecx
mov eax, dword [esp + 0x90]
sbb ebx, edx
mov edx, dword [esp + 0x94]
mov dword [esp + 0x24], ebx
add eax, 0x1000000
adc edx, 0
mov ecx, eax
mov ebx, edx
shrd ecx, ebx, 0x19
sar ebx, 0x19
add ecx, dword [esp + 0x50]
adc ebx, dword [esp + 0x54]
mov dword [esp + 0xa0], ecx
mov ecx, dword [esp + 0x90]
and eax, 0xfe000000
mov dword [esp + 0xa4], ebx
mov ebx, dword [esp + 0x94]
sub ecx, eax
mov eax, dword [esp + 0xa0]
sbb ebx, edx
mov edx, dword [esp + 0x80]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x84]
mov dword [esp + 0x1c], ebx
add edx, 0x2000000
mov ebx, dword [esp + 0x7c]
adc ecx, 0
mov dword [esp + 0x90], edx
mov edx, dword [esp + 0xb0]
mov dword [esp + 0x94], ecx
mov ecx, dword [esp + 0x78]
add ecx, 0x2000000
adc ebx, 0
mov dword [esp + 0x70], ecx
add edx, 0x2000000
mov ecx, dword [esp + 0xb4]
mov dword [esp + 0x60], edx
mov edx, dword [esp + 0xc0]
adc ecx, 0
mov dword [esp + 0x74], ebx
lea ebx, [esp + 0x150]
add edx, 0x2000000
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0xc4]
mov dword [esp + 0x50], edx
mov edx, dword [esp + 0xa4]
adc ecx, 0
add eax, 0x2000000
adc edx, 0
mov dword [esp + 0x40], eax
mov eax, ebx
mov dword [esp + 0x44], edx
mov edx, ebx
mov dword [esp + 0x54], ecx
call fcn.005a2fc0
mov ecx, dword [esp + 0x90]
mov eax, dword [esp + 0x80]
movd edx, xmm1
mov ebx, dword [esp + 0x94]
and ecx, 0xfc000000
sub eax, ecx
mov ecx, dword [esp + 0x90]
lea eax, [eax + edx]
movd edx, xmm2
movdqa xmm2, xmm1
shrd ecx, ebx, 0x1a
mov dword [esp + 0x1b0], eax
punpckhdq xmm2, xmm1
mov ebx, dword [esp + 0x74]
mov eax, ecx
mov ecx, dword [esp + 0x30]
pshufd xmm1, xmm1, 0xff
add ecx, eax
lea eax, [ecx + edx]
mov edx, dword [esp + 0x70]
mov ecx, dword [esp + 0x70]
mov dword [esp + 0x1b4], eax
mov eax, dword [esp + 0x78]
and edx, 0xfc000000
sub eax, edx
movd edx, xmm2
shrd ecx, ebx, 0x1a
add ecx, dword [esp + 0x28]
lea eax, [eax + edx]
mov ebx, dword [esp + 0x64]
movd edx, xmm0
mov dword [esp + 0x1b8], eax
movd eax, xmm1
pshufd xmm1, xmm0, 0x55
add eax, ecx
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x1bc], eax
mov eax, dword [esp + 0xb0]
and ecx, 0xfc000000
sub eax, ecx
mov ecx, dword [esp + 0x60]
lea eax, [eax + edx]
movd edx, xmm1
movdqa xmm1, xmm0
shrd ecx, ebx, 0x1a
mov dword [esp + 0x1c0], eax
punpckhdq xmm1, xmm0
mov ebx, dword [esp + 0x54]
mov eax, ecx
mov ecx, dword [esp + 0x20]
pshufd xmm0, xmm0, 0xff
add ecx, eax
lea eax, [ecx + edx]
mov ecx, dword [esp + 0x50]
movd edx, xmm1
mov dword [esp + 0x1c4], eax
mov eax, dword [esp + 0xc0]
and ecx, 0xfc000000
sub eax, ecx
mov ecx, dword [esp + 0x50]
lea eax, [eax + edx]
lea edx, [esp + 0x208]
mov dword [esp + 0x1c8], eax
shrd ecx, ebx, 0x1a
movd eax, xmm0
add ecx, dword [esp + 0x18]
add eax, ecx
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x1cc], eax
mov eax, dword [esp + 0xa0]
and ecx, 0xfc000000
mov ebx, dword [esp + 0x14]
sub eax, ecx
mov ecx, dword [esp + 0x40]
add eax, ebx
mov ebx, dword [esp + 0x44]
mov dword [esp + 0x1d0], eax
shrd ecx, ebx, 0x1a
mov eax, ecx
add eax, dword [esp + 0x38]
lea ecx, [esp + 0x120]
add eax, edi
mov dword [esp + 0x1d4], eax
lea eax, [esp + 0x180]
call fcn.005a2520
lea ecx, [esp + 0x1b0]
lea edx, [esp + 0x1e0]
lea eax, [esp + 0x120]
call fcn.005a2520
sub dword [esp + 0xcc], 1
mov edi, dword [esp + 0xcc]
cmp edi, 0xffffffff
jne 0x5a6cd0
lea edx, [esp + 0x120]
mov eax, edx
call fcn.005a36f0
lea edx, [esp + 0xf0]
lea ecx, [esp + 0x120]
mov eax, edx
call fcn.005a2520
mov eax, dword [esp + 0x10]
lea edx, [esp + 0xf0]
call fcn.005a2250
lea eax, [esp + 0xd0]
mov dword [esp + 4], 0x20
mov dword [esp], eax
call fcn.004ded70
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret