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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x330
mov eax, dword [ebp + 0xc]
mov ecx, dword [0x7024bc]
xor ecx, ebp
mov dword [esp + 0x328], ecx
pcmpeqd xmm0, xmm0
movdqa xmmword [esp + 0x2e0], xmm0
movdqa xmmword [esp + 0x2d0], xmm0
mov dword [esp + 0x2f4], 0xffffffff
mov dword [esp + 0x2f0], 0xffffffff
movdqa xmmword [esp + 0x260], xmm0
movdqa xmmword [esp + 0x250], xmm0
mov dword [esp + 0x274], 0xffffffff
mov dword [esp + 0x270], 0xffffffff
movdqa xmmword [esp + 0x210], xmm0
movdqa xmmword [esp + 0x200], xmm0
mov dword [esp + 0x224], 0xffffffff
mov dword [esp + 0x220], 0xffffffff
movdqa xmmword [esp + 0x1e0], xmm0
movdqa xmmword [esp + 0x1d0], xmm0
mov dword [esp + 0x1f4], 0xffffffff
mov dword [esp + 0x1f0], 0xffffffff
movdqa xmmword [esp + 0x1b0], xmm0
movdqa xmmword [esp + 0x1a0], xmm0
mov dword [esp + 0x1c4], 0xffffffff
mov dword [esp + 0x1c0], 0xffffffff
movdqa xmmword [esp + 0x180], xmm0
movdqa xmmword [esp + 0x170], xmm0
mov dword [esp + 0x194], 0xffffffff
mov dword [esp + 0x190], 0xffffffff
movdqa xmmword [esp + 0x150], xmm0
movdqa xmmword [esp + 0x140], xmm0
mov dword [esp + 0x164], 0xffffffff
mov dword [esp + 0x160], 0xffffffff
movdqa xmmword [esp + 0x120], xmm0
movdqa xmmword [esp + 0x110], xmm0
mov dword [esp + 0x134], 0xffffffff
mov dword [esp + 0x130], 0xffffffff
movdqa xmmword [esp + 0xf0], xmm0
movdqa xmmword [esp + 0xe0], xmm0
mov dword [esp + 0x104], 0xffffffff
mov dword [esp + 0x100], 0xffffffff
movups xmm0, xmmword [eax]
movups xmm1, xmmword [eax + 0x10]
movaps xmmword [esp + 0xc0], xmm0
movaps xmmword [esp + 0xd0], xmm1
and byte [esp + 0xc0], 0xf8
mov eax, dword [ebp + 0x10]
mov cl, byte [esp + 0xdf]
and cl, 0x3f
or cl, 0x40
mov byte [esp + 0xdf], cl
movdqu xmm0, xmmword [eax]
movups xmm1, xmmword [eax + 0x10]
movaps xmmword [esp + 0x310], xmm1
movdqa xmmword [esp + 0x300], xmm0
and byte [esp + 0x31f], 0x7f
lea ecx, [esp + 0x2d0]
lea edx, [esp + 0x300]
call fcn.004cc530
pxor xmm0, xmm0
movdqu xmmword [esp + 0x2ac], xmm0
movdqu xmmword [esp + 0x2bc], xmm0
mov dword [esp + 0x2cc], 0
mov dword [esp + 0x2a8], 1
movdqa xmmword [esp + 0x280], xmm0
movdqa xmmword [esp + 0x290], xmm0
mov dword [esp + 0x2a4], 0
mov dword [esp + 0x2a0], 0
movaps xmm1, xmmword [esp + 0x2d0]
movdqa xmm2, xmmword [esp + 0x2e0]
movaps xmmword [esp + 0x250], xmm1
movdqa xmmword [esp + 0x260], xmm2
movq xmm1, qword [esp + 0x2f0]
movq qword [esp + 0x270], xmm1
movdqu xmmword [esp + 0x22c], xmm0
movdqu xmmword [esp + 0x23c], xmm0
mov dword [esp + 0x24c], 0
mov dword [esp + 0x228], 1
mov eax, 0xfe
mov dword [esp + 0x4c], 0
nop word cs:[eax + eax]
nop
mov esi, dword [esp + 0x4c]
mov ecx, eax
mov dword [esp + 0xbc], eax
shr eax, 3
movzx eax, byte [esp + eax + 0xc0]
and cl, 7
shr eax, cl
and eax, 1
mov dword [esp + 0x4c], eax
xor esi, eax
neg esi
mov edx, dword [esp + 0x2a8]
mov eax, dword [esp + 0x250]
mov ecx, eax
xor ecx, edx
and ecx, esi
xor edx, ecx
mov dword [esp + 0x24], edx
xor ecx, eax
mov dword [esp + 0x30], ecx
mov edi, dword [esp + 0x2ac]
mov eax, dword [esp + 0x254]
mov ebx, eax
xor ebx, edi
and ebx, esi
xor edi, ebx
mov dword [esp + 0x28], edi
xor ebx, eax
mov dword [esp + 0x48], ebx
mov edx, dword [esp + 0x280]
mov ecx, dword [esp + 0x228]
mov eax, ecx
xor eax, edx
and eax, esi
xor edx, eax
mov dword [esp + 0x14], edx
xor eax, ecx
mov dword [esp + 0x50], eax
mov dword [esp + 0x280], edx
mov dword [esp + 0x228], eax
mov edi, dword [esp + 0x284]
mov edx, dword [esp + 0x22c]
mov ecx, edx
xor ecx, edi
and ecx, esi
xor edi, ecx
mov dword [esp + 0x80], edi
xor ecx, edx
mov edx, ecx
mov dword [esp + 0x20], ecx
mov eax, dword [esp + 0x24]
mov dword [esp + 0x2a8], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x250], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x2ac], eax
mov dword [esp + 0x254], ebx
mov eax, dword [esp + 0x2b0]
mov ecx, dword [esp + 0x258]
mov ebx, ecx
xor ebx, eax
and ebx, esi
xor eax, ebx
mov dword [esp + 0x90], eax
xor ebx, ecx
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x284], edi
mov dword [esp + 0x22c], edx
mov edi, dword [esp + 0x288]
mov eax, dword [esp + 0x230]
mov ecx, eax
xor ecx, edi
and ecx, esi
xor edi, ecx
mov dword [esp + 8], edi
xor ecx, eax
mov dword [esp + 0x1c], ecx
mov eax, dword [esp + 0x90]
mov dword [esp + 0x2b0], eax
mov dword [esp + 0x258], ebx
mov edx, dword [esp + 0x2b4]
mov eax, dword [esp + 0x25c]
mov ebx, eax
xor ebx, edx
and ebx, esi
xor edx, ebx
mov dword [esp + 0x44], edx
xor ebx, eax
mov dword [esp + 0x78], ebx
mov dword [esp + 0x288], edi
mov dword [esp + 0x230], ecx
mov edi, dword [esp + 0x28c]
mov eax, dword [esp + 0x234]
mov ecx, eax
xor ecx, edi
and ecx, esi
xor edi, ecx
mov dword [esp + 0xc], edi
xor ecx, eax
mov dword [esp + 0x2b4], edx
mov dword [esp + 0x25c], ebx
mov edx, dword [esp + 0x2b8]
mov eax, dword [esp + 0x260]
mov ebx, eax
xor ebx, edx
and ebx, esi
xor edx, ebx
mov dword [esp + 0x74], edx
xor ebx, eax
mov dword [esp + 0x40], ebx
mov dword [esp + 0x28c], edi
mov dword [esp + 0x234], ecx
mov ebx, ecx
mov dword [esp + 0x2c], ecx
mov edi, dword [esp + 0x290]
mov eax, dword [esp + 0x238]
mov ecx, eax
xor ecx, edi
and ecx, esi
xor edi, ecx
mov dword [esp + 0x38], edi
xor ecx, eax
mov dword [esp + 0x18], ecx
mov eax, dword [esp + 0x30]
sub eax, dword [esp + 0x50]
add eax, 0x7ffffda
mov dword [esp + 0x110], eax
mov eax, dword [esp + 0x48]
sub eax, dword [esp + 0x20]
add eax, 0x3fffffe
mov dword [esp + 0x114], eax
mov eax, dword [esp + 0x7c]
sub eax, dword [esp + 0x1c]
add eax, 0x7fffffe
mov dword [esp + 0x118], eax
mov eax, dword [esp + 0x78]
sub eax, ebx
add eax, 0x3fffffe
mov dword [esp + 0x11c], eax
mov dword [esp + 0x2b8], edx
mov eax, dword [esp + 0x40]
mov dword [esp + 0x260], eax
mov ebx, dword [esp + 0x2bc]
mov eax, dword [esp + 0x264]
mov edx, eax
xor edx, ebx
mov dword [esp + 0x10], esi
and edx, esi
xor ebx, edx
mov dword [esp + 0x3c], ebx
xor edx, eax
mov dword [esp + 0x70], edx
mov dword [esp + 0x290], edi
mov eax, dword [esp + 0x18]
mov dword [esp + 0x238], eax
mov edi, dword [esp + 0x294]
mov eax, dword [esp + 0x23c]
mov edx, eax
xor edx, edi
and edx, esi
xor edi, edx
mov dword [esp + 0x34], edi
xor edx, eax
mov dword [esp + 0xa0], edx
mov edi, dword [esp + 0x24]
mov eax, edi
mov ebx, dword [esp + 0x14]
sub eax, ebx
add eax, 0x7ffffda
mov dword [esp + 0xe0], eax
mov esi, dword [esp + 0x28]
mov eax, esi
mov ecx, dword [esp + 0x80]
sub eax, ecx
add eax, 0x3fffffe
mov dword [esp + 0xe4], eax
mov eax, dword [esp + 0x90]
sub eax, dword [esp + 8]
add eax, 0x7fffffe
mov dword [esp + 0xe8], eax
mov eax, dword [esp + 0x44]
sub eax, dword [esp + 0xc]
add eax, 0x3fffffe
mov dword [esp + 0xec], eax
add ebx, edi
mov dword [esp + 0x14], ebx
mov eax, dword [esp + 0x40]
sub eax, dword [esp + 0x18]
add eax, 0x7fffffe
mov dword [esp + 0x120], eax
add ecx, esi
mov dword [esp + 0x80], ecx
mov eax, dword [esp + 0x74]
sub eax, dword [esp + 0x38]
add eax, 0x7fffffe
mov dword [esp + 0xf0], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x2bc], eax
mov edi, dword [esp + 0x70]
mov dword [esp + 0x264], edi
mov ecx, dword [esp + 0x2c0]
mov edx, dword [esp + 0x268]
mov eax, edx
xor eax, ecx
mov esi, dword [esp + 0x10]
and eax, esi
xor ecx, eax
mov dword [esp + 0x68], ecx
xor eax, edx
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x294], eax
mov ebx, dword [esp + 0xa0]
mov dword [esp + 0x23c], ebx
mov ecx, dword [esp + 0x298]
mov edx, dword [esp + 0x240]
mov eax, edx
xor eax, ecx
and eax, esi
xor ecx, eax
mov dword [esp + 0x24], ecx
xor eax, edx
mov edx, dword [esp + 8]
add edx, dword [esp + 0x90]
mov dword [esp + 8], edx
sub edi, ebx
add edi, 0x3fffffe
mov dword [esp + 0x124], edi
mov edx, dword [esp + 0xc]
add edx, dword [esp + 0x44]
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x3c]
mov ebx, dword [esp + 0x34]
sub edx, ebx
add edx, 0x3fffffe
mov dword [esp + 0xf4], edx
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x2c0], ecx
mov edx, dword [esp + 0x6c]
mov dword [esp + 0x268], edx
mov ecx, dword [esp + 0x2c4]
mov esi, dword [esp + 0x26c]
mov edi, esi
xor edi, ecx
and edi, dword [esp + 0x10]
xor ecx, edi
mov dword [esp + 0x44], ecx
xor edi, esi
mov dword [esp + 0x90], edi
mov esi, dword [esp + 0x38]
add esi, dword [esp + 0x74]
mov dword [esp + 0x38], esi
add ebx, dword [esp + 0x3c]
mov dword [esp + 0x34], ebx
mov esi, dword [esp + 0x24]
mov dword [esp + 0x298], esi
mov ecx, dword [esp + 0x68]
mov ebx, ecx
sub ebx, esi
add esi, ecx
mov dword [esp + 0x24], esi
mov dword [esp + 0x28], eax
sub edx, eax
add edx, 0x7fffffe
mov dword [esp + 0x128], edx
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x1a0], ecx
mov ecx, dword [esp + 0x80]
mov dword [esp + 0x1a4], ecx
add ebx, 0x7fffffe
mov dword [esp + 0xf8], ebx
mov ecx, dword [esp + 8]
mov dword [esp + 0x1a8], ecx
mov dword [esp + 0x240], eax
mov eax, dword [esp + 0x29c]
mov ecx, dword [esp + 0x244]
mov esi, ecx
xor esi, eax
mov edx, dword [esp + 0x10]
and esi, edx
xor eax, esi
xor esi, ecx
mov dword [esp + 8], esi
mov edi, dword [esp + 0x44]
mov dword [esp + 0x2c4], edi
mov ebx, dword [esp + 0x90]
mov dword [esp + 0x26c], ebx
mov ecx, dword [esp + 0x2c8]
mov esi, dword [esp + 0x270]
mov dword [esp + 0x14], esi
mov esi, dword [esp + 0x14]
xor esi, ecx
and esi, edx
xor ecx, esi
mov dword [esp + 0x80], ecx
xor esi, dword [esp + 0x14]
mov edx, dword [esp + 0xc]
mov dword [esp + 0x1ac], edx
mov dword [esp + 0x29c], eax
mov edx, edi
sub edx, eax
add eax, edi
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x1b0], ecx
mov edi, ebx
sub edi, dword [esp + 8]
add edi, 0x3fffffe
mov dword [esp + 0x12c], edi
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x1b4], ecx
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x1b8], ecx
add edx, 0x3fffffe
mov dword [esp + 0xfc], edx
mov ecx, dword [esp + 0x80]
mov dword [esp + 0x2c8], ecx
mov dword [esp + 0x270], esi
mov edi, dword [esp + 0x2cc]
mov ecx, dword [esp + 0x274]
mov ebx, ecx
xor ebx, edi
mov edx, dword [esp + 0x10]
and ebx, edx
xor edi, ebx
mov dword [esp + 0xc], edi
xor ebx, ecx
mov dword [esp + 0x1bc], eax
mov eax, dword [esp + 8]
mov dword [esp + 0x244], eax
mov eax, dword [esp + 0x2a0]
mov edi, dword [esp + 0x248]
mov ecx, edi
xor ecx, eax
and ecx, edx
xor eax, ecx
xor ecx, edi
mov edx, dword [esp + 0x50]
add edx, dword [esp + 0x30]
mov dword [esp + 0x50], edx
mov dword [esp + 0x2a0], eax
mov edx, dword [esp + 0x80]
mov edi, edx
sub edi, eax
add eax, edx
mov edx, dword [esp + 0x20]
add edx, dword [esp + 0x48]
mov dword [esp + 0x20], edx
mov edx, dword [esp + 0x1c]
add edx, dword [esp + 0x7c]
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x2c]
add edx, dword [esp + 0x78]
mov dword [esp + 0x2c], edx
mov dword [esp + 0x1c0], eax
mov eax, dword [esp + 0x40]
add dword [esp + 0x18], eax
mov eax, esi
sub eax, ecx
add eax, 0x7fffffe
mov dword [esp + 0x130], eax
mov eax, dword [esp + 0x70]
add dword [esp + 0xa0], eax
mov eax, dword [esp + 0x6c]
add dword [esp + 0x28], eax
mov eax, dword [esp + 0x90]
add dword [esp + 8], eax
mov dword [esp + 0x248], ecx
add ecx, esi
mov eax, dword [esp + 0x50]
mov dword [esp + 0x170], eax
add edi, 0x7fffffe
mov dword [esp + 0x100], edi
mov eax, dword [esp + 0x2a4]
mov esi, dword [esp + 0x24c]
mov edi, esi
xor edi, eax
and edi, dword [esp + 0x10]
mov edx, dword [esp + 0x20]
mov dword [esp + 0x174], edx
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x178], edx
xor eax, edi
xor edi, esi
mov edx, dword [esp + 0xc]
mov dword [esp + 0x2cc], edx
mov dword [esp + 0x2a4], eax
mov esi, edx
sub esi, eax
add eax, edx
mov dword [esp + 0x274], ebx
mov dword [esp + 0x24c], edi
mov edx, ebx
sub edx, edi
add edi, ebx
mov ebx, dword [esp + 0x2c]
mov dword [esp + 0x17c], ebx
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x180], ebx
mov ebx, dword [esp + 0xa0]
mov dword [esp + 0x184], ebx
mov dword [esp + 0x1c4], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x188], eax
mov eax, dword [esp + 8]
mov dword [esp + 0x18c], eax
add edx, 0x3fffffe
mov dword [esp + 0x134], edx
mov dword [esp + 0x190], ecx
mov dword [esp + 0x194], edi
add esi, 0x3fffffe
mov dword [esp + 0x104], esi
lea ecx, [esp + 0x228]
lea edx, [esp + 0x110]
lea esi, [esp + 0x1a0]
push esi
call fcn.004d5b10
add esp, 4
lea ecx, [esp + 0x280]
lea edx, [esp + 0x170]
lea edi, [esp + 0xe0]
push edi
call fcn.004d5b10
add esp, 4
lea ecx, [esp + 0x200]
mov edx, edi
call fcn.004d68a0
lea ebx, [esp + 0x1d0]
mov ecx, ebx
mov edx, esi
call fcn.004d68a0
movdqu xmm0, xmmword [esp + 0x228]
movdqu xmm1, xmmword [esp + 0x238]
movdqa xmm2, xmmword [esp + 0x280]
movdqa xmm3, xmmword [esp + 0x290]
movdqa xmm4, xmm2
paddd xmm4, xmm0
movdqa xmm5, xmm3
paddd xmm5, xmm1
mov eax, dword [esp + 0x248]
mov ecx, dword [esp + 0x2a0]
lea edx, [ecx + eax]
mov esi, dword [esp + 0x24c]
mov edi, dword [esp + 0x2a4]
movdqa xmmword [esp + 0x140], xmm4
movdqa xmmword [esp + 0x150], xmm5
mov dword [esp + 0x160], edx
lea edx, [edi + esi]
mov dword [esp + 0x164], edx
sub eax, ecx
sub esi, edi
psubd xmm0, xmm2
movdqa xmm2, xmmword [0x68c080]
paddd xmm0, xmm2
psubd xmm1, xmm3
movdqa xmm2, xmmword [0x68c090]
paddd xmm1, xmm2
add eax, 0x7fffffe
movdqa xmmword [esp + 0x170], xmm0
movdqa xmmword [esp + 0x180], xmm1
mov dword [esp + 0x190], eax
add esi, 0x3fffffe
mov dword [esp + 0x194], esi
lea ecx, [esp + 0x2a8]
mov edx, ebx
lea eax, [esp + 0x200]
push eax
call fcn.004d5b10
add esp, 4
movdqa xmm3, xmmword [esp + 0x1d0]
movdqa xmm2, xmmword [esp + 0x1e0]
movdqa xmm1, xmmword [esp + 0x200]
movdqa xmmword [esp + 0x80], xmm1
movdqa xmm0, xmmword [esp + 0x210]
movdqa xmmword [esp + 0x90], xmm0
psubd xmm3, xmm1
paddd xmm3, xmmword [0x68c080]
movdqa xmmword [esp + 0xa0], xmm3
psubd xmm2, xmm0
paddd xmm2, xmmword [0x68c090]
movdqa xmmword [esp + 0x50], xmm2
mov esi, dword [esp + 0x1f0]
mov eax, dword [esp + 0x220]
mov dword [esp + 0x38], eax
sub esi, eax
add esi, 0x7fffffe
mov edi, dword [esp + 0x1f4]
mov eax, dword [esp + 0x224]
mov dword [esp + 0x34], eax
sub edi, eax
add edi, 0x3fffffe
movdqa xmmword [esp + 0xe0], xmm3
movdqa xmmword [esp + 0xf0], xmm2
mov dword [esp + 0x100], esi
mov dword [esp + 0x104], edi
lea ecx, [esp + 0x280]
lea edx, [esp + 0x170]
call fcn.004d68a0
mov eax, edi
mov ecx, 0x1db42
mul ecx
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], eax
mov eax, esi
mul ecx
mov dword [esp + 0x30], eax
mov dword [esp + 0x18], edx
movdqa xmm1, xmmword [esp + 0x50]
pshufd xmm0, xmm1, 0xff
movd eax, xmm0
mul ecx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x1c], edx
pshufd xmm0, xmm1, 0xee
movd eax, xmm0
mul ecx
mov dword [esp + 0x40], eax
mov dword [esp + 0x20], edx
pshufd xmm0, xmm1, 0x55
movd eax, xmm0
mul ecx
mov dword [esp + 0x3c], eax
mov dword [esp + 0xc], edx
movd eax, xmm1
mul ecx
mov dword [esp + 0x24], eax
mov dword [esp + 8], edx
movdqa xmm1, xmmword [esp + 0xa0]
pshufd xmm0, xmm1, 0xff
movd eax, xmm0
mul ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x50], edx
pshufd xmm0, xmm1, 0xee
movd eax, xmm0
mul ecx
mov ebx, eax
mov dword [esp + 0x48], edx
pshufd xmm0, xmm1, 0x55
movd eax, xmm0
mul ecx
mov esi, eax
mov edi, edx
movd eax, xmm1
mul ecx
mov ecx, eax
mov eax, edx
shr edx, 0x1a
shld eax, ecx, 6
and ecx, 0x3fffffe
mov dword [esp + 0xa0], ecx
add eax, esi
adc edx, edi
mov ecx, edx
shld ecx, eax, 7
shr edx, 0x19
and eax, 0x1ffffff
add ecx, ebx
adc edx, dword [esp + 0x48]
mov esi, edx
shld esi, ecx, 6
shr edx, 0x1a
and ecx, 0x3ffffff
add esi, dword [esp + 0x28]
adc edx, dword [esp + 0x50]
mov edi, edx
shld edi, esi, 7
shr edx, 0x19
and esi, 0x1ffffff
mov dword [esp + 0x50], esi
add edi, dword [esp + 0x24]
adc edx, dword [esp + 8]
mov esi, edx
shld esi, edi, 6
shr edx, 0x1a
and edi, 0x3ffffff
mov dword [esp + 8], edi
add esi, dword [esp + 0x3c]
adc edx, dword [esp + 0xc]
mov edi, edx
shld edi, esi, 7
shr edx, 0x19
and esi, 0x1ffffff
mov dword [esp + 0xc], esi
add edi, dword [esp + 0x40]
adc edx, dword [esp + 0x20]
mov ebx, edx
shld ebx, edi, 6
shr edx, 0x1a
and edi, 0x3ffffff
mov dword [esp + 0x20], edi
add ebx, dword [esp + 0x2c]
adc edx, dword [esp + 0x1c]
mov esi, edx
shld esi, ebx, 7
shr edx, 0x19
and ebx, 0x1ffffff
mov dword [esp + 0x1c], ebx
add esi, dword [esp + 0x30]
adc edx, dword [esp + 0x18]
mov edi, edx
shld edi, esi, 6
shr edx, 0x1a
and esi, 0x3ffffff
mov dword [esp + 0x18], esi
add edi, dword [esp + 0x10]
mov dword [esp + 0x10], edi
adc edx, dword [esp + 0x14]
shld edx, edi, 7
lea esi, [edx + edx*8]
lea edi, [edx + esi*2]
add edi, dword [esp + 0xa0]
mov esi, edi
shr esi, 0x1a
add esi, eax
mov ebx, esi
shr ebx, 0x19
add ebx, ecx
mov ecx, dword [esp + 0x10]
and ecx, 0x1ffffff
mov dword [esp + 0x10], ecx
and edi, 0x3ffffff
and esi, 0x1ffffff
mov dword [esp + 0x228], edi
mov dword [esp + 0x22c], esi
mov dword [esp + 0x230], ebx
mov eax, dword [esp + 0x50]
mov dword [esp + 0x234], eax
mov eax, dword [esp + 8]
mov dword [esp + 0x238], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0x23c], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x240], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x244], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x248], eax
mov dword [esp + 0x24c], ecx
lea ecx, [esp + 0x250]
lea edx, [esp + 0x140]
call fcn.004d68a0
movdqa xmm1, xmmword [esp + 0x80]
movd eax, xmm1
add eax, edi
mov dword [esp + 0x14], eax
pshufd xmm0, xmm1, 0x55
movd eax, xmm0
add eax, esi
mov dword [esp + 0x30], eax
pshufd xmm0, xmm1, 0xee
movd eax, xmm0
add eax, ebx
mov dword [esp + 0x2c], eax
pshufd xmm0, xmm1, 0xff
movd eax, xmm0
add eax, dword [esp + 0x50]
mov dword [esp + 0x50], eax
movdqa xmm1, xmmword [esp + 0x90]
movd eax, xmm1
add eax, dword [esp + 8]
mov dword [esp + 8], eax
pshufd xmm0, xmm1, 0x55
movd ebx, xmm0
add ebx, dword [esp + 0xc]
pshufd xmm0, xmm1, 0xee
movd esi, xmm0
add esi, dword [esp + 0x20]
pshufd xmm0, xmm1, 0xff
movd edx, xmm0
add edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x18]
add ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x10]
add eax, dword [esp + 0x34]
mov edi, dword [esp + 0x14]
mov dword [esp + 0x110], edi
mov edi, dword [esp + 0x30]
mov dword [esp + 0x114], edi
mov edi, dword [esp + 0x2c]
mov dword [esp + 0x118], edi
mov edi, dword [esp + 0x50]
mov dword [esp + 0x11c], edi
mov edi, dword [esp + 8]
mov dword [esp + 0x120], edi
mov dword [esp + 0x124], ebx
mov dword [esp + 0x128], esi
mov dword [esp + 0x12c], edx
mov dword [esp + 0x130], ecx
mov dword [esp + 0x134], eax
lea ecx, [esp + 0x228]
lea edx, [esp + 0x2d0]
lea edi, [esp + 0x280]
push edi
call fcn.004d5b10
add esp, 4
mov ecx, edi
lea edx, [esp + 0xe0]
lea eax, [esp + 0x110]
push eax
call fcn.004d5b10
add esp, 4
mov eax, dword [esp + 0xbc]
add eax, 0xffffffff
jb 0x4d48a0
mov esi, dword [esp + 0x4c]
neg esi
movdqu xmm1, xmmword [esp + 0x2a8]
movdqu xmm2, xmmword [esp + 0x2b8]
movdqa xmm3, xmmword [esp + 0x250]
movdqa xmm4, xmmword [esp + 0x260]
movdqa xmm5, xmm3
pxor xmm5, xmm1
movd xmm0, esi
pshufd xmm0, xmm0, 0
pand xmm5, xmm0
pxor xmm1, xmm5
movdqu xmmword [esp + 0x2a8], xmm1
pxor xmm5, xmm3
movdqa xmmword [esp + 0x250], xmm5
movdqa xmm1, xmm4
pxor xmm1, xmm2
pand xmm1, xmm0
pxor xmm2, xmm1
movdqu xmmword [esp + 0x2b8], xmm2
pxor xmm1, xmm4
movdqa xmmword [esp + 0x260], xmm1
mov eax, dword [esp + 0x2c8]
mov ecx, dword [esp + 0x270]
mov edx, ecx
xor edx, eax
and edx, esi
xor eax, edx
mov dword [esp + 0x2c8], eax
xor edx, ecx
mov dword [esp + 0x270], edx
mov eax, dword [esp + 0x2cc]
mov ecx, dword [esp + 0x274]
xor ecx, eax
and ecx, esi
xor ecx, eax
mov dword [esp + 0x2cc], ecx
movdqa xmm1, xmmword [esp + 0x280]
movdqu xmm2, xmmword [esp + 0x228]
movdqa xmm3, xmm2
pxor xmm3, xmm1
pand xmm3, xmm0
pxor xmm1, xmm3
movdqa xmmword [esp + 0x280], xmm1
pxor xmm3, xmm2
movdqu xmmword [esp + 0x228], xmm3
movdqa xmm1, xmmword [esp + 0x290]
movdqu xmm2, xmmword [esp + 0x238]
movdqa xmm3, xmm2
pxor xmm3, xmm1
pand xmm3, xmm0
pxor xmm1, xmm3
movdqa xmmword [esp + 0x290], xmm1
pxor xmm3, xmm2
movdqu xmmword [esp + 0x238], xmm3
mov eax, dword [esp + 0x2a0]
mov ecx, dword [esp + 0x248]
mov edx, ecx
xor edx, eax
and edx, esi
xor eax, edx
mov dword [esp + 0x2a0], eax
xor edx, ecx
mov dword [esp + 0x248], edx
mov eax, dword [esp + 0x2a4]
mov ecx, dword [esp + 0x24c]
xor ecx, eax
and ecx, esi
xor ecx, eax
mov dword [esp + 0x2a4], ecx
movsd xmm0, qword [esp + 0x2a0]
movsd qword [esp + 0x320], xmm0
movaps xmm0, xmmword [esp + 0x290]
movaps xmmword [esp + 0x310], xmm0
movaps xmm0, xmmword [esp + 0x280]
movaps xmmword [esp + 0x300], xmm0
lea edx, [esp + 0x300]
lea edi, [esp + 0x280]
mov ecx, edi
call fcn.004d5740
lea esi, [esp + 0x2a8]
mov ecx, esi
mov edx, esi
push edi
call fcn.004d5b10
add esp, 4
mov edi, dword [ebp + 8]
mov ecx, edi
mov edx, esi
call fcn.004ca2a0
push 0x20
push edi
push 0x68c4f8
call fcn.00516910
add esp, 0xc
xor ebx, ebx
test eax, eax
setne bl
mov ecx, dword [esp + 0x328]
xor ecx, ebp
call fcn.0064180a
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret