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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x60
mov ecx, dword [ebp + 8]
mov eax, dword [ebp + 0xc]
xorps xmm0, xmm0
movups xmmword [ecx], xmm0
movdqu xmm5, xmmword [eax]
pshufd xmm0, xmm5, 0x4e
movdqu xmmword [ecx + 0x80], xmm0
movdqa xmm3, xmm0
movdqa xmmword [esp + 0x40], xmm0
pshufd xmm0, xmm5, 0xee
movd eax, xmm0
mov dword [esp + 0x2c], eax
and eax, 1
neg eax
and eax, 0xe1000000
psrlq xmm3, 1
movd xmm0, eax
movdqa xmm2, xmm5
punpcklqdq xmm2, xmm0
psllq xmm2, 0x20
movdqa xmm4, xmm5
psllq xmm4, 0x3f
shufps xmm4, xmm2, 0xe4
movaps xmm2, xmm4
por xmm2, xmm3
xorps xmm4, xmm3
movaps xmm6, xmm4
movsd xmm6, xmm2
pshufd xmm0, xmm2, 0x55
movd dword [esp + 0x18], xmm0
movupd xmmword [ecx + 0x40], xmm6
pshufd xmm0, xmm4, 0xff
movd eax, xmm3
mov dword [esp + 0x10], eax
and eax, 1
neg eax
and eax, 0xe1000000
movd xmm7, eax
movd dword [esp + 0x14], xmm0
psrlq xmm6, 1
pshufd xmm0, xmm3, 0xee
movdqa xmmword [esp + 0x30], xmm0
shufps xmm3, xmm7, 0x4e
movaps xmm0, xmm3
psllq xmm0, 0x3f
psllq xmm3, 0x20
movsd xmm3, xmm0
movdqa xmm7, xmm6
por xmm7, xmm3
pshufd xmm0, xmm7, 0x55
movd edi, xmm0
pxor xmm3, xmm6
pshufd xmm0, xmm3, 0xee
movd edx, xmm0
mov dword [esp + 4], edx
pshufd xmm0, xmm3, 0xff
movd ebx, xmm0
movd eax, xmm6
and eax, 1
neg eax
and eax, 0xe1000000
mov ecx, ebx
mov dword [esp + 8], ebx
shr ecx, 1
xor ecx, eax
pshufd xmm0, xmm6, 0xee
shld ebx, edx, 0x1f
mov dword [esp + 0xc], ebx
movd esi, xmm0
movd xmm6, ebx
mov dword [esp + 0x1c], ecx
movd xmm0, ecx
punpcklqdq xmm0, xmm6
movapd xmm6, xmm2
shufps xmm6, xmm0, 0x24
movdqa xmm1, xmm3
movsd xmm1, xmm7
movd ebx, xmm7
shufpd xmm7, xmm4, 2
xorps xmm6, xmm7
mov eax, edi
shld edi, ebx, 0x1f
mov ecx, esi
shld ecx, eax, 0x1f
mov dword [esp + 0x28], ecx
mov esi, dword [ebp + 8]
movupd xmmword [esi + 0x20], xmm1
mov dword [esi + 0x14], ecx
mov dword [esi + 0x10], edi
mov edx, dword [esp + 0xc]
mov dword [esi + 0x18], edx
mov edx, dword [esp + 0x1c]
mov dword [esi + 0x1c], edx
xor ebx, edi
xor eax, ecx
mov dword [esp + 0x20], eax
mov dword [esi + 0x34], eax
mov dword [esi + 0x30], ebx
mov eax, dword [esp + 8]
xor eax, edx
mov dword [esp + 8], eax
mov edx, dword [esp + 4]
xor edx, dword [esp + 0xc]
mov dword [esp + 4], edx
mov dword [esi + 0x38], edx
mov dword [esi + 0x3c], eax
mov edx, dword [esp + 0x10]
xor edx, edi
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0x18]
xor eax, ecx
mov dword [esp + 0x18], eax
mov dword [esi + 0x54], eax
mov dword [esi + 0x50], edx
pshufd xmm7, xmm6, 0x4e
movdqu xmmword [esi + 0x58], xmm7
movd xmm7, ebx
movd xmm0, dword [esp + 0x20]
punpcklqdq xmm0, xmm7
pshufd xmm7, xmm4, 0xee
movdqa xmm4, xmm7
shufps xmm4, xmm0, 0x24
shufpd xmm3, xmm2, 1
xorps xmm4, xmm3
movdqa xmm0, xmmword [esp + 0x30]
movd edx, xmm0
pshufd xmm0, xmm5, 0xff
movups xmmword [esi + 0x68], xmm4
mov eax, dword [esp + 0x14]
xor eax, dword [esp + 8]
mov dword [esp + 0x14], eax
xor edx, dword [esp + 4]
mov dword [esi + 0x78], edx
mov dword [esi + 0x7c], eax
movd ecx, xmm0
mov dword [esp + 0x24], ecx
mov eax, dword [esp + 0x28]
xor eax, ecx
mov dword [esi + 0x94], eax
mov eax, dword [esp + 0x2c]
xor edi, eax
mov dword [esi + 0x90], edi
movd edi, xmm5
mov dword [esp + 0x30], edi
mov ecx, dword [esp + 0xc]
xor ecx, edi
mov dword [esi + 0x98], ecx
pshufd xmm0, xmm5, 0x55
movd edi, xmm0
mov ecx, dword [esp + 0x1c]
xor ecx, edi
mov dword [esi + 0x9c], ecx
xor ebx, eax
mov eax, dword [esp + 0x20]
xor eax, dword [esp + 0x24]
movapd xmm3, xmmword [esp + 0x40]
xorpd xmm1, xmm3
movupd xmmword [esi + 0xa0], xmm1
mov dword [esi + 0xb4], eax
mov dword [esi + 0xb0], ebx
movd xmm0, dword [esp + 4]
movd xmm1, dword [esp + 8]
punpckldq xmm0, xmm1
movss xmm1, dword [esp + 0x10]
punpcklqdq xmm0, xmm2
movss xmm2, dword [esp + 0x18]
pxor xmm0, xmm5
movdqu xmmword [esi + 0xb8], xmm0
movlhps xmm2, xmm1
shufps xmm7, xmm5, 0xe4
xorps xmm4, xmm5
shufps xmm5, xmm2, 0x24
xorps xmm5, xmm7
movups xmmword [esi + 0xc8], xmm5
pxor xmm6, xmm3
pshufd xmm0, xmm6, 0x4e
movdqu xmmword [esi + 0xd8], xmm0
movups xmmword [esi + 0xe8], xmm4
mov eax, dword [esp + 0x14]
xor eax, edi
xor edx, dword [esp + 0x30]
lea edi, [esi + 0x10]
mov dword [esi + 0xf8], edx
mov dword [esi + 0xfc], eax
lea edx, [esi + 1]
xor eax, eax
jmp 0x50452e
add eax, 1
add edx, 0x10
add edi, 1
cmp eax, 0x10
je 0x5045a4
test eax, eax
je 0x504520
xor esi, esi
mov dword [esp + 4], eax
cmp eax, 1
je 0x504574
mov eax, dword [esp + 4]
and eax, 0xfffffffe
xor esi, esi
mov ecx, edi
nop dword [eax + eax]
movzx ebx, byte [edx + esi - 1]
mov bh, byte [ecx - 0x10]
mov byte [edx + esi - 1], bh
mov byte [ecx - 0x10], bl
movzx ebx, byte [edx + esi]
mov bh, byte [ecx]
mov byte [edx + esi], bh
mov byte [ecx], bl
add esi, 2
add ecx, 0x20
cmp eax, esi
jne 0x504550
mov eax, dword [esp + 4]
test al, 1
je 0x504520
mov eax, dword [esp + 4]
shl eax, 4
add eax, esi
mov ebx, dword [ebp + 8]
mov cl, byte [ebx + eax]
shl esi, 4
add esi, dword [esp + 4]
mov ch, byte [ebx + esi]
mov byte [ebx + eax], ch
mov eax, dword [esp + 4]
mov byte [ebx + esi], cl
jmp 0x504520
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret