Function at 0x512230
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x308
mov esi, edx
mov dword [esp + 0x2c], ecx
mov edi, dword [ebp + 8]
lea eax, [esp + 0x38]
push 0x2c8
push 0
push eax
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
add esp, 0xc
mov dword [esp + 0x30], edi
test edi, edi
je 0x512768
mov eax, dword [esp + 0x2c]
movups xmm0, xmmword [eax]
movups xmm1, xmmword [eax + 0x10]
movups xmm2, xmmword [eax + 0x20]
movups xmm3, xmmword [eax + 0x30]
nop dword [eax + eax]
mov dword [esp + 0x28], esi
movaps xmm4, xmm0
shufps xmm4, xmm1, 0x4e
movups xmmword [esp + 0x2c0], xmm4
pshufd xmm4, xmm1, 0xee
movq qword [esp + 0x2d0], xmm4
movaps xmm4, xmm2
shufps xmm4, xmm3, 0x4e
movups xmmword [esp + 0x2e0], xmm4
pshufd xmm4, xmm3, 0xee
movq qword [esp + 0x2f0], xmm4
movd ecx, xmm0
pshufd xmm4, xmm0, 0x55
movd esi, xmm4
movss dword [esp + 0x1c], xmm2
pshufd xmm4, xmm2, 0x55
movd dword [esp + 0x18], xmm4
mov dword [esp + 0x14], 0xffffff80
lea eax, [esp + 0x2b8]
nop dword [eax + eax]
mov dword [esp + 0x10], esi
mov dword [esp + 0x20], ecx
mov dword [esp + 4], eax
mov ebx, dword [esp + 0x1c]
mov edx, ebx
mov ecx, dword [esp + 0x18]
shld edx, ecx, 0x12
mov eax, ebx
shld eax, ecx, 0xe
xor eax, edx
mov esi, ecx
shld esi, ebx, 0x12
mov edx, ecx
shld edx, ebx, 0xe
xor edx, esi
mov edi, ebx
shld edi, ecx, 0x17
xor edi, edx
mov esi, ecx
shld esi, ebx, 0x17
xor esi, eax
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x28]
mov edx, dword [edx + eax + 0x84]
mov dword [esp + 8], edx
mov edx, dword [esp + 8]
bswap edx
mov dword [esp + 8], edx
mov edx, dword [esp + 0x28]
mov eax, dword [edx + eax + 0x80]
bswap eax
mov dword [esp + 0xc], eax
mov edx, dword [esp + 4]
mov eax, dword [esp + 0x10]
mov dword [edx + 4], eax
mov edx, dword [esp + 4]
mov eax, dword [esp + 0x20]
mov dword [edx], eax
mov edx, dword [esp + 4]
mov dword [edx + 0x24], ecx
mov edx, dword [esp + 4]
mov dword [edx + 0x20], ebx
mov edx, dword [esp + 4]
mov eax, dword [esp + 0xc]
mov dword [edx + 0x44], eax
mov edx, dword [esp + 4]
mov eax, dword [esp + 8]
mov dword [edx + 0x40], eax
mov edx, dword [esp + 4]
mov eax, dword [edx + 0x2c]
and eax, ecx
mov dword [esp + 0x24], eax
mov edx, dword [esp + 4]
mov eax, dword [edx + 0x28]
and eax, ebx
mov dword [esp + 0x34], eax
not ecx
mov edx, dword [esp + 4]
and ecx, dword [edx + 0x34]
not ebx
mov edx, dword [esp + 4]
and ebx, dword [edx + 0x30]
add edi, dword [esp + 8]
adc esi, dword [esp + 0xc]
mov eax, dword [esp + 4]
add edi, dword [eax + 0x38]
mov eax, dword [esp + 4]
adc esi, dword [eax + 0x3c]
add edi, dword [esp + 0x34]
adc esi, dword [esp + 0x24]
add edi, ebx
adc esi, ecx
mov eax, dword [esp + 0x14]
add edi, dword [eax + 0x599178]
adc esi, dword [eax + 0x59917c]
mov eax, dword [esp + 4]
mov eax, dword [eax + 0x18]
add eax, edi
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 4]
mov eax, dword [eax + 0x1c]
adc eax, esi
mov dword [esp + 0x18], eax
mov ebx, dword [esp + 0x20]
mov eax, ebx
mov edx, dword [esp + 0x10]
shld eax, edx, 4
mov ecx, edx
shld ecx, ebx, 0x1e
xor ecx, eax
mov dword [esp + 8], ecx
mov ecx, edx
shld ecx, ebx, 4
mov edx, ebx
mov eax, dword [esp + 0x10]
shld edx, eax, 0x1e
xor edx, ecx
mov eax, ebx
mov ecx, dword [esp + 0x10]
shld eax, ecx, 0x19
xor eax, edx
mov edx, dword [esp + 0x10]
shld edx, ebx, 0x19
xor edx, dword [esp + 8]
add eax, edi
mov dword [esp + 8], eax
adc edx, esi
mov eax, dword [esp + 4]
mov esi, dword [eax + 8]
mov dword [esp + 0xc], esi
mov eax, dword [esp + 4]
mov ecx, dword [eax + 0x10]
mov edi, ecx
xor edi, esi
and edi, ebx
mov eax, dword [esp + 4]
mov esi, dword [eax + 0xc]
mov eax, dword [esp + 4]
mov eax, dword [eax + 0x14]
mov ebx, eax
xor ebx, esi
and ebx, dword [esp + 0x10]
and ecx, dword [esp + 0xc]
xor ecx, edi
and eax, esi
xor eax, ebx
add ecx, dword [esp + 8]
mov esi, eax
mov eax, dword [esp + 4]
adc esi, edx
add eax, 0xfffffff8
add dword [esp + 0x14], 8
jne 0x5122f0
dec dword [esp + 0x30]
mov dword [esp + 0x14], 0xfffffe00
nop dword [eax]
mov dword [esp + 0x10], esi
mov dword [esp + 0x20], ecx
mov dword [esp + 4], eax
mov edx, dword [eax + 0xbc]
mov esi, dword [eax + 0xb8]
mov eax, esi
shld eax, edx, 0x1f
mov ecx, esi
shld ecx, edx, 0x18
xor ecx, eax
mov eax, edx
shld eax, esi, 0x1f
mov edi, edx
shld edi, esi, 0x18
shrd esi, edx, 7
xor edi, eax
xor esi, edi
shr edx, 7
mov eax, dword [esp + 4]
mov eax, dword [eax + 0x54]
mov edi, dword [esp + 4]
mov edi, dword [edi + 0x50]
mov ebx, edi
shld ebx, eax, 0xd
mov dword [esp + 8], ebx
xor edx, ecx
mov ecx, eax
shld ecx, edi, 0xd
mov dword [esp + 0xc], ecx
mov ecx, eax
shld ecx, edi, 3
mov ebx, eax
shld ebx, edi, 0x1a
shld edi, eax, 3
xor ecx, dword [esp + 8]
xor edi, dword [esp + 0xc]
xor edi, ebx
shr eax, 6
xor eax, ecx
mov ecx, dword [esp + 4]
mov ebx, dword [ecx + 0x78]
mov ecx, dword [esp + 4]
add ebx, dword [ecx + 0xc0]
mov dword [esp + 8], ebx
mov ecx, dword [esp + 4]
mov ecx, dword [ecx + 0x7c]
mov ebx, dword [esp + 4]
adc ecx, dword [ebx + 0xc4]
mov ebx, ecx
mov ecx, dword [esp + 8]
add ecx, esi
mov esi, ebx
adc esi, edx
add ecx, edi
mov dword [esp + 8], ecx
adc esi, eax
mov dword [esp + 0xc], esi
mov ebx, dword [esp + 0x1c]
mov esi, ebx
mov edx, dword [esp + 0x18]
shld esi, edx, 0x12
mov eax, ebx
shld eax, edx, 0xe
xor eax, esi
mov esi, edx
shld esi, ebx, 0x12
mov edi, edx
shld edi, ebx, 0xe
xor edi, esi
mov ecx, ebx
shld ecx, edx, 0x17
xor ecx, edi
mov esi, edx
shld esi, ebx, 0x17
xor esi, eax
mov eax, dword [esp + 4]
mov edi, dword [esp + 0x20]
mov dword [eax], edi
mov eax, dword [esp + 4]
mov edi, dword [esp + 0x10]
mov dword [eax + 4], edi
mov eax, dword [esp + 4]
mov dword [eax + 0x20], ebx
mov eax, dword [esp + 4]
mov dword [eax + 0x24], edx
mov eax, dword [esp + 4]
mov edi, dword [esp + 8]
mov dword [eax + 0x40], edi
mov eax, dword [esp + 4]
mov edi, dword [esp + 0xc]
mov dword [eax + 0x44], edi
mov eax, dword [esp + 4]
mov eax, dword [eax + 0x2c]
and eax, edx
mov dword [esp + 0x24], eax
mov eax, dword [esp + 4]
mov edi, dword [eax + 0x28]
and edi, ebx
not edx
mov eax, dword [esp + 4]
and edx, dword [eax + 0x34]
not ebx
mov eax, dword [esp + 4]
and ebx, dword [eax + 0x30]
add ecx, dword [esp + 8]
adc esi, dword [esp + 0xc]
mov eax, dword [esp + 4]
add ecx, dword [eax + 0x38]
mov eax, dword [esp + 4]
adc esi, dword [eax + 0x3c]
add ecx, edi
adc esi, dword [esp + 0x24]
add ecx, ebx
adc esi, edx
mov eax, dword [esp + 0x14]
add ecx, dword [eax + 0x599378]
mov dword [esp + 8], ecx
adc esi, dword [eax + 0x59937c]
mov eax, dword [esp + 4]
mov eax, dword [eax + 0x18]
add eax, ecx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 4]
mov eax, dword [eax + 0x1c]
adc eax, esi
mov dword [esp + 0x18], eax
mov edx, dword [esp + 0x20]
mov eax, edx
mov ebx, dword [esp + 0x10]
shld eax, ebx, 4
mov edi, ebx
shld edi, edx, 0x1e
xor edi, eax
mov eax, ebx
shld eax, edx, 4
mov ecx, edx
shld ecx, ebx, 0x1e
xor ecx, eax
mov eax, edx
shld eax, ebx, 0x19
xor eax, ecx
mov ecx, edx
shld ebx, edx, 0x19
xor ebx, edi
add eax, dword [esp + 8]
mov dword [esp + 8], eax
adc ebx, esi
mov eax, dword [esp + 4]
mov esi, dword [eax + 8]
mov dword [esp + 0xc], esi
mov eax, dword [esp + 4]
mov edx, dword [eax + 0x10]
mov edi, edx
xor edi, esi
and edi, ecx
mov eax, dword [esp + 4]
mov esi, dword [eax + 0xc]
mov eax, dword [esp + 4]
mov eax, dword [eax + 0x14]
mov ecx, eax
xor ecx, esi
and ecx, dword [esp + 0x10]
and edx, dword [esp + 0xc]
xor edx, edi
and eax, esi
xor eax, ecx
mov ecx, edx
add ecx, dword [esp + 8]
mov esi, eax
mov eax, dword [esp + 4]
adc esi, ebx
add eax, 0xfffffff8
add dword [esp + 0x14], 8
jne 0x5124c0
movd xmm4, ecx
movd xmm5, esi
movd xmm6, dword [esp + 0x1c]
movd xmm7, dword [esp + 0x18]
punpckldq xmm4, xmm5
movdqu xmm5, xmmword [esp + 0x40]
punpcklqdq xmm4, xmm5
paddq xmm0, xmm4
mov eax, dword [esp + 0x2c]
movdqu xmmword [eax], xmm0
movdqu xmm4, xmmword [esp + 0x48]
paddq xmm1, xmm4
movdqu xmmword [eax + 0x10], xmm1
punpckldq xmm6, xmm7
movdqu xmm4, xmmword [esp + 0x60]
punpcklqdq xmm6, xmm4
paddq xmm2, xmm6
movdqu xmmword [eax + 0x20], xmm2
movdqu xmm4, xmmword [esp + 0x68]
paddq xmm3, xmm4
movdqu xmmword [eax + 0x30], xmm3
mov esi, dword [esp + 0x28]
sub esi, 0xffffff80
cmp dword [esp + 0x30], 0
jne 0x512280
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret