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

Disassembly:
push ebp
push ebx
push esi
push edi
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
mov ebx, esp
call 0x521c17
pop ebp
lea ebp, [ebp + 0x929]
sub esp, 0x10
and esp, 0xffffffc0
shl eax, 7
add eax, edi
mov dword [esp], esi
mov dword [esp + 4], edi
mov dword [esp + 8], eax
mov dword [esp + 0xc], ebx
lea edx, [0x58cbac]
bt dword [edx], 0x1a
jae 0x522020
movq mm0, qword [esi]
movq mm1, qword [esi + 8]
movq mm2, qword [esi + 0x10]
movq mm3, qword [esi + 0x18]
movq mm4, qword [esi + 0x20]
movq mm5, qword [esi + 0x28]
movq mm6, qword [esi + 0x30]
movq mm7, qword [esi + 0x38]
sub esp, 0x50
lea ebx, [ebx]
movq qword [esp + 8], mm1
movq qword [esp + 0x10], mm2
movq qword [esp + 0x18], mm3
movq qword [esp + 0x28], mm5
movq qword [esp + 0x30], mm6
movq qword [esp + 0x38], mm7
mov ecx, dword [edi]
mov edx, dword [edi + 4]
add edi, 8
bswap ecx
bswap edx
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x48], edx
lea esp, [esp]
lea esp, [esp]
mov eax, dword [edi]
mov ebx, dword [edi + 4]
add edi, 8
bswap eax
bswap ebx
mov dword [esp + 0x44], eax
mov dword [esp + 0x40], ebx
movq mm5, qword [esp + 0x28]
movq mm6, qword [esp + 0x30]
movq mm7, qword [esp + 0x38]
movq mm1, mm4
movq mm2, mm4
psrlq mm1, 0xe
movq qword [esp + 0x20], mm4
psllq mm2, 0x17
movq mm3, mm1
psrlq mm1, 4
pxor mm3, mm2
psllq mm2, 0x17
pxor mm3, mm1
psrlq mm1, 0x17
pxor mm3, mm2
psllq mm2, 4
pxor mm3, mm1
paddq mm7, qword [ebp]
pxor mm3, mm2
pxor mm5, mm6
movq mm1, qword [esp + 8]
pand mm5, mm4
movq mm2, qword [esp + 0x10]
pxor mm5, mm6
movq mm4, qword [esp + 0x18]
paddq mm3, mm5
movq qword [esp], mm0
paddq mm3, mm7
movq mm5, mm0
movq mm6, mm0
paddq mm3, qword [esp + 0x48]
psrlq mm5, 0x1c
paddq mm4, mm3
psllq mm6, 0x19
movq mm7, mm5
psrlq mm5, 6
pxor mm7, mm6
psllq mm6, 5
pxor mm7, mm5
psrlq mm5, 5
pxor mm7, mm6
psllq mm6, 6
pxor mm7, mm5
sub esp, 8
pxor mm7, mm6
movq mm5, mm0
por mm0, mm2
pand mm5, mm2
pand mm0, mm1
por mm5, mm0
paddq mm7, mm5
movq mm0, mm3
mov dl, byte [ebp]
paddq mm0, mm7
add ebp, 8
cmp dl, 0x35
jne 0x521cb0
movq mm5, qword [esp + 0x28]
movq mm6, qword [esp + 0x30]
movq mm7, qword [esp + 0x38]
movq mm1, mm4
movq mm2, mm4
psrlq mm1, 0xe
movq qword [esp + 0x20], mm4
psllq mm2, 0x17
movq mm3, mm1
psrlq mm1, 4
pxor mm3, mm2
psllq mm2, 0x17
pxor mm3, mm1
psrlq mm1, 0x17
pxor mm3, mm2
psllq mm2, 4
pxor mm3, mm1
paddq mm7, qword [ebp]
pxor mm3, mm2
pxor mm5, mm6
movq mm1, qword [esp + 8]
pand mm5, mm4
movq mm2, qword [esp + 0x10]
pxor mm5, mm6
movq mm4, qword [esp + 0x18]
paddq mm3, mm5
movq qword [esp], mm0
paddq mm3, mm7
movq mm5, mm0
movq mm6, mm0
paddq mm3, qword [esp + 0x48]
psrlq mm5, 0x1c
paddq mm4, mm3
psllq mm6, 0x19
movq mm7, mm5
psrlq mm5, 6
pxor mm7, mm6
psllq mm6, 5
pxor mm7, mm5
psrlq mm5, 5
pxor mm7, mm6
psllq mm6, 6
pxor mm7, mm5
sub esp, 8
pxor mm7, mm6
movq mm5, mm0
por mm0, mm2
movq mm6, qword [esp + 0x58]
pand mm5, mm2
pand mm0, mm1
movq mm2, qword [esp + 0xc0]
por mm5, mm0
paddq mm7, mm5
movq mm0, mm3
mov dl, byte [ebp]
paddq mm0, mm7
add ebp, 8
movq mm1, mm2
psrlq mm2, 1
movq mm7, mm6
psrlq mm6, 6
movq mm3, mm2
psrlq mm2, 6
movq mm5, mm6
psrlq mm6, 0xd
pxor mm3, mm2
psrlq mm2, 1
pxor mm5, mm6
psrlq mm6, 0x2a
pxor mm3, mm2
movq mm2, qword [esp + 0xc8]
psllq mm1, 0x38
pxor mm5, mm6
psllq mm7, 3
pxor mm3, mm1
paddq mm2, qword [esp + 0x80]
psllq mm1, 7
pxor mm5, mm7
psllq mm7, 0x2a
pxor mm3, mm1
pxor mm5, mm7
paddq mm3, mm5
paddq mm3, mm2
movq qword [esp + 0x48], mm3
movq mm5, qword [esp + 0x28]
movq mm6, qword [esp + 0x30]
movq mm7, qword [esp + 0x38]
movq mm1, mm4
movq mm2, mm4
psrlq mm1, 0xe
movq qword [esp + 0x20], mm4
psllq mm2, 0x17
movq mm3, mm1
psrlq mm1, 4
pxor mm3, mm2
psllq mm2, 0x17
pxor mm3, mm1
psrlq mm1, 0x17
pxor mm3, mm2
psllq mm2, 4
pxor mm3, mm1
paddq mm7, qword [ebp]
pxor mm3, mm2
pxor mm5, mm6
movq mm1, qword [esp + 8]
pand mm5, mm4
movq mm2, qword [esp + 0x10]
pxor mm5, mm6
movq mm4, qword [esp + 0x18]
paddq mm3, mm5
movq qword [esp], mm0
paddq mm3, mm7
movq mm5, mm0
movq mm6, mm0
paddq mm3, qword [esp + 0x48]
psrlq mm5, 0x1c
paddq mm4, mm3
psllq mm6, 0x19
movq mm7, mm5
psrlq mm5, 6
pxor mm7, mm6
psllq mm6, 5
pxor mm7, mm5
psrlq mm5, 5
pxor mm7, mm6
psllq mm6, 6
pxor mm7, mm5
sub esp, 8
pxor mm7, mm6
movq mm5, mm0
por mm0, mm2
movq mm6, qword [esp + 0x58]
pand mm5, mm2
pand mm0, mm1
movq mm2, qword [esp + 0xc0]
por mm5, mm0
paddq mm7, mm5
movq mm0, mm3
mov dl, byte [ebp]
paddq mm0, mm7
add ebp, 8
cmp dl, 0x17
jne 0x521e60
movq mm1, qword [esp + 8]
movq mm2, qword [esp + 0x10]
movq mm3, qword [esp + 0x18]
movq mm5, qword [esp + 0x28]
movq mm6, qword [esp + 0x30]
movq mm7, qword [esp + 0x38]
paddq mm0, qword [esi]
paddq mm1, qword [esi + 8]
paddq mm2, qword [esi + 0x10]
paddq mm3, qword [esi + 0x18]
paddq mm4, qword [esi + 0x20]
paddq mm5, qword [esi + 0x28]
paddq mm6, qword [esi + 0x30]
paddq mm7, qword [esi + 0x38]
movq qword [esi], mm0
movq qword [esi + 8], mm1
movq qword [esi + 0x10], mm2
movq qword [esi + 0x18], mm3
movq qword [esi + 0x20], mm4
movq qword [esi + 0x28], mm5
movq qword [esi + 0x30], mm6
movq qword [esi + 0x38], mm7
add esp, 0x280
sub ebp, 0x280
cmp edi, dword [esp + 0x58]
jb 0x521c70
emms
mov esp, dword [esp + 0x5c]
pop edi
pop esi
pop ebx
pop ebp
ret
mov eax, dword [edi]
mov ebx, dword [edi + 4]
mov ecx, dword [edi + 8]
mov edx, dword [edi + 0xc]
bswap eax
bswap ebx
bswap ecx
bswap edx
push eax
push ebx
push ecx
push edx
mov eax, dword [edi + 0x10]
mov ebx, dword [edi + 0x14]
mov ecx, dword [edi + 0x18]
mov edx, dword [edi + 0x1c]
bswap eax
bswap ebx
bswap ecx
bswap edx
push eax
push ebx
push ecx
push edx
mov eax, dword [edi + 0x20]
mov ebx, dword [edi + 0x24]
mov ecx, dword [edi + 0x28]
mov edx, dword [edi + 0x2c]
bswap eax
bswap ebx
bswap ecx
bswap edx
push eax
push ebx
push ecx
push edx
mov eax, dword [edi + 0x30]
mov ebx, dword [edi + 0x34]
mov ecx, dword [edi + 0x38]
mov edx, dword [edi + 0x3c]
bswap eax
bswap ebx
bswap ecx
bswap edx
push eax
push ebx
push ecx
push edx
mov eax, dword [edi + 0x40]
mov ebx, dword [edi + 0x44]
mov ecx, dword [edi + 0x48]
mov edx, dword [edi + 0x4c]
bswap eax
bswap ebx
bswap ecx
bswap edx
push eax
push ebx
push ecx
push edx
mov eax, dword [edi + 0x50]
mov ebx, dword [edi + 0x54]
mov ecx, dword [edi + 0x58]
mov edx, dword [edi + 0x5c]
bswap eax
bswap ebx
bswap ecx
bswap edx
push eax
push ebx
push ecx
push edx
mov eax, dword [edi + 0x60]
mov ebx, dword [edi + 0x64]
mov ecx, dword [edi + 0x68]
mov edx, dword [edi + 0x6c]
bswap eax
bswap ebx
bswap ecx
bswap edx
push eax
push ebx
push ecx
push edx
mov eax, dword [edi + 0x70]
mov ebx, dword [edi + 0x74]
mov ecx, dword [edi + 0x78]
mov edx, dword [edi + 0x7c]
bswap eax
bswap ebx
bswap ecx
bswap edx
push eax
push ebx
push ecx
push edx
add edi, 0x80
sub esp, 0x48
mov dword [esp + 0xcc], edi
lea edi, [esp + 8]
mov ecx, 0x10
mov esi, esi
rep movsd dword es:[edi], dword [esi]
lea esp, [esp]
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
mov esi, ecx
shr ecx, 9
mov edi, edx
shr edx, 9
mov ebx, ecx
shl esi, 0xe
mov eax, edx
shl edi, 0xe
xor ebx, esi
shr ecx, 5
xor eax, edi
shr edx, 5
xor eax, ecx
shl esi, 4
xor ebx, edx
shl edi, 4
xor ebx, esi
shr ecx, 4
xor eax, edi
shr edx, 4
xor eax, ecx
shl esi, 5
xor ebx, edx
shl edi, 5
xor eax, esi
xor ebx, edi
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x34]
mov esi, dword [esp + 0x38]
mov edi, dword [esp + 0x3c]
add eax, dword [esp + 0x40]
adc ebx, dword [esp + 0x44]
xor ecx, esi
xor edx, edi
and ecx, dword [esp + 0x28]
and edx, dword [esp + 0x2c]
add eax, dword [esp + 0xc0]
adc ebx, dword [esp + 0xc4]
xor ecx, esi
xor edx, edi
mov esi, dword [ebp]
mov edi, dword [ebp + 4]
add eax, ecx
adc ebx, edx
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
add eax, esi
adc ebx, edi
mov dword [esp], eax
mov dword [esp + 4], ebx
add eax, ecx
adc ebx, edx
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0xc]
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], ebx
mov esi, ecx
shr ecx, 2
mov edi, edx
shr edx, 2
mov ebx, ecx
shl esi, 4
mov eax, edx
shl edi, 4
xor ebx, esi
shr ecx, 5
xor eax, edi
shr edx, 5
xor ebx, ecx
shl esi, 0x15
xor eax, edx
shl edi, 0x15
xor eax, esi
shr ecx, 0x15
xor ebx, edi
shr edx, 0x15
xor eax, ecx
shl esi, 5
xor ebx, edx
shl edi, 5
xor eax, esi
xor ebx, edi
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0xc]
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
add eax, dword [esp]
adc ebx, dword [esp + 4]
or ecx, esi
or edx, edi
and ecx, dword [esp + 0x18]
and edx, dword [esp + 0x1c]
and esi, dword [esp + 8]
and edi, dword [esp + 0xc]
or ecx, esi
or edx, edi
add eax, ecx
adc ebx, edx
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dl, byte [ebp]
sub esp, 8
lea ebp, [ebp + 8]
cmp dl, 0x94
jne 0x522100
jmp 0x522240
mov ecx, dword [esp + 0x138]
mov edx, dword [esp + 0x13c]
mov esi, ecx
shr ecx, 1
mov edi, edx
shr edx, 1
mov eax, ecx
shl esi, 0x18
mov ebx, edx
shl edi, 0x18
xor ebx, esi
shr ecx, 6
xor eax, edi
shr edx, 6
xor eax, ecx
shl esi, 7
xor ebx, edx
shl edi, 1
xor ebx, esi
shr ecx, 1
xor eax, edi
shr edx, 1
xor eax, ecx
shl edi, 6
xor ebx, edx
xor eax, edi
mov dword [esp], eax
mov dword [esp + 4], ebx
mov ecx, dword [esp + 0xd0]
mov edx, dword [esp + 0xd4]
mov esi, ecx
shr ecx, 6
mov edi, edx
shr edx, 6
mov eax, ecx
shl esi, 3
mov ebx, edx
shl edi, 3
xor eax, esi
shr ecx, 0xd
xor ebx, edi
shr edx, 0xd
xor eax, ecx
shl esi, 0xa
xor ebx, edx
shl edi, 0xa
xor ebx, esi
shr ecx, 0xa
xor eax, edi
shr edx, 0xa
xor ebx, ecx
shl edi, 0xd
xor eax, edx
xor eax, edi
mov ecx, dword [esp + 0x140]
mov edx, dword [esp + 0x144]
add eax, dword [esp]
adc ebx, dword [esp + 4]
mov esi, dword [esp + 0xf8]
mov edi, dword [esp + 0xfc]
add eax, ecx
adc ebx, edx
add eax, esi
adc ebx, edi
mov dword [esp + 0xc0], eax
mov dword [esp + 0xc4], ebx
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
mov esi, ecx
shr ecx, 9
mov edi, edx
shr edx, 9
mov ebx, ecx
shl esi, 0xe
mov eax, edx
shl edi, 0xe
xor ebx, esi
shr ecx, 5
xor eax, edi
shr edx, 5
xor eax, ecx
shl esi, 4
xor ebx, edx
shl edi, 4
xor ebx, esi
shr ecx, 4
xor eax, edi
shr edx, 4
xor eax, ecx
shl esi, 5
xor ebx, edx
shl edi, 5
xor eax, esi
xor ebx, edi
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x34]
mov esi, dword [esp + 0x38]
mov edi, dword [esp + 0x3c]
add eax, dword [esp + 0x40]
adc ebx, dword [esp + 0x44]
xor ecx, esi
xor edx, edi
and ecx, dword [esp + 0x28]
and edx, dword [esp + 0x2c]
add eax, dword [esp + 0xc0]
adc ebx, dword [esp + 0xc4]
xor ecx, esi
xor edx, edi
mov esi, dword [ebp]
mov edi, dword [ebp + 4]
add eax, ecx
adc ebx, edx
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
add eax, esi
adc ebx, edi
mov dword [esp], eax
mov dword [esp + 4], ebx
add eax, ecx
adc ebx, edx
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0xc]
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], ebx
mov esi, ecx
shr ecx, 2
mov edi, edx
shr edx, 2
mov ebx, ecx
shl esi, 4
mov eax, edx
shl edi, 4
xor ebx, esi
shr ecx, 5
xor eax, edi
shr edx, 5
xor ebx, ecx
shl esi, 0x15
xor eax, edx
shl edi, 0x15
xor eax, esi
shr ecx, 0x15
xor ebx, edi
shr edx, 0x15
xor eax, ecx
shl esi, 5
xor ebx, edx
shl edi, 5
xor eax, esi
xor ebx, edi
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0xc]
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
add eax, dword [esp]
adc ebx, dword [esp + 4]
or ecx, esi
or edx, edi
and ecx, dword [esp + 0x18]
and edx, dword [esp + 0x1c]
and esi, dword [esp + 8]
and edi, dword [esp + 0xc]
or ecx, esi
or edx, edi
add eax, ecx
adc ebx, edx
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dl, byte [ebp]
sub esp, 8
lea ebp, [ebp + 8]
cmp dl, 0x17
jne 0x522240
mov esi, dword [esp + 0x348]
mov edi, dword [esp + 0x34c]
mov eax, dword [esi]
mov ebx, dword [esi + 4]
mov ecx, dword [esi + 8]
mov edx, dword [esi + 0xc]
add eax, dword [esp + 8]
adc ebx, dword [esp + 0xc]
mov dword [esi], eax
mov dword [esi + 4], ebx
add ecx, dword [esp + 0x10]
adc edx, dword [esp + 0x14]
mov dword [esi + 8], ecx
mov dword [esi + 0xc], edx
mov eax, dword [esi + 0x10]
mov ebx, dword [esi + 0x14]
mov ecx, dword [esi + 0x18]
mov edx, dword [esi + 0x1c]
add eax, dword [esp + 0x18]
adc ebx, dword [esp + 0x1c]
mov dword [esi + 0x10], eax
mov dword [esi + 0x14], ebx
add ecx, dword [esp + 0x20]
adc edx, dword [esp + 0x24]
mov dword [esi + 0x18], ecx
mov dword [esi + 0x1c], edx
mov eax, dword [esi + 0x20]
mov ebx, dword [esi + 0x24]
mov ecx, dword [esi + 0x28]
mov edx, dword [esi + 0x2c]
add eax, dword [esp + 0x28]
adc ebx, dword [esp + 0x2c]
mov dword [esi + 0x20], eax
mov dword [esi + 0x24], ebx
add ecx, dword [esp + 0x30]
adc edx, dword [esp + 0x34]
mov dword [esi + 0x28], ecx
mov dword [esi + 0x2c], edx
mov eax, dword [esi + 0x30]
mov ebx, dword [esi + 0x34]
mov ecx, dword [esi + 0x38]
mov edx, dword [esi + 0x3c]
add eax, dword [esp + 0x38]
adc ebx, dword [esp + 0x3c]
mov dword [esi + 0x30], eax
mov dword [esi + 0x34], ebx
add ecx, dword [esp + 0x40]
adc edx, dword [esp + 0x44]
mov dword [esi + 0x38], ecx
mov dword [esi + 0x3c], edx
add esp, 0x348
sub ebp, 0x280
cmp edi, dword [esp + 8]
jb 0x522020
mov esp, dword [esp + 0xc]
pop edi
pop esi
pop ebx
pop ebp
ret