Function at 0x42a424
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0xc8
push esi
mov esi, ecx
push edi
mov dword [esp + 0x28], esi
mov ecx, dword [esi + 0x230]
mov dword [esp + 0x10], ecx
test ecx, ecx
jne 0x42a44d
lea ecx, [esi + 0x40]
mov dword [esp + 0x10], ecx
mov edx, dword [esi + 0x214]
mov eax, dword [esi + 0x210]
mov dword [esp + 0x34], eax
mov dword [esp + 0x30], edx
test edx, edx
jne 0x42a4c3
cmp eax, 0xf0
ja 0x42a4c3
mov edx, dword [esi + 0x220]
mov eax, edx
mov edi, dword [esi + 0x224]
or eax, edi
je 0x42a4a0
push edi
push edx
mov edx, dword [esi + 0x210]
lea eax, [esp + 0x48]
lea ecx, [esi + 0x100]
push eax
call fcn.00429b13
add esp, 0xc
mov esi, eax
jmp 0x42a7e6
mov eax, dword [esi + 0x21c]
mov edx, dword [esi + 0x210]
add eax, 0x40
push eax
push ecx
lea eax, [esp + 0x48]
lea ecx, [esi + 0x100]
push eax
call fcn.004293c9
jmp 0x42a496
push 0x40
pop edi
push edi
lea eax, [esp + 0x54]
push esi
push eax
call sub.msvcrt.dll_memcpy
mov ecx, dword [esi + 0x200]
add esp, 0xc
cmp ecx, edi
jb 0x42a6e6
mov edx, dword [esi + 0x21c]
dec ecx
mov eax, dword [esi + 0x208]
mov dword [esp + 0xc], edx
lea edx, [esi + 0x100]
mov dword [esp + 0x14], edx
mov edx, dword [esi + 0x218]
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x10]
shr ecx, 6
mov dword [esp + 0x20], ecx
lea edx, [edx + eax*8]
mov dword [esp + 8], edx
mov edx, dword [esi + 0x218]
mov dword [esp + 0x18], edx
sub dword [esp + 0x18], eax
mov edx, dword [esp + 8]
cmp ecx, dword [esp + 0x18]
jb 0x42a65d
mov eax, dword [esp + 0x10]
add eax, dword [esp + 0xc]
movdqa xmm3, xmmword [0x4376d0]
mov esi, dword [esp + 0x18]
mov dword [esp + 0x38], eax
test esi, esi
je 0x42a5e1
mov ecx, dword [esp + 0x14]
mov eax, edx
lea edx, [esp + 0x50]
mov dword [esp + 0x2c], ecx
sub eax, edx
mov dword [esp + 0xc], esi
mov edx, dword [esp + 8]
mov dword [esp + 0x24], eax
prefetcht0 byte [ecx + 0x180]
lea eax, [esp + 0x50]
mov edi, dword [esp + 0x24]
mov esi, ecx
push 4
sub esi, edx
mov edx, eax
pop ecx
lea eax, [edi + edx]
movdqu xmm0, xmmword [eax + esi]
movdqu xmm2, xmmword [eax]
pshufd xmm1, xmm0, 0x4e
paddq xmm1, xmmword [edx]
pxor xmm2, xmm0
pshufd xmm0, xmm2, 0x31
pmuludq xmm0, xmm2
paddq xmm1, xmm0
movdqa xmmword [edx], xmm1
lea edx, [edx + 0x10]
dec ecx
jne 0x42a58a
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 8]
add dword [esp + 0x24], 8
add edx, 8
push 0x40
pop edi
add ecx, edi
mov dword [esp + 8], edx
dec dword [esp + 0xc]
mov dword [esp + 0x2c], ecx
jne 0x42a572
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 0x38]
lea eax, [esp + 0x50]
mov ecx, eax
mov dword [esp + 0xc], 4
sub edx, ecx
mov ecx, dword [esp + 0x20]
dec dword [esp + 0xc]
movdqa xmm1, xmmword [eax]
movdqu xmm0, xmmword [edx + eax]
psrlq xmm1, 0x2f
pxor xmm1, xmmword [eax]
pxor xmm1, xmm0
pshufd xmm0, xmm1, 0x31
pmuludq xmm0, xmm3
pmuludq xmm1, xmm3
psllq xmm0, 0x20
paddq xmm0, xmm1
movdqa xmmword [eax], xmm0
lea eax, [eax + 0x10]
jne 0x42a5f9
mov edx, dword [esp + 0x10]
mov eax, esi
shl eax, 6
sub ecx, esi
mov esi, dword [esp + 0x1c]
add dword [esp + 0x14], eax
mov dword [esp + 0x20], ecx
mov dword [esp + 0x18], esi
mov dword [esp + 8], edx
cmp ecx, esi
jae 0x42a54e
mov esi, dword [esp + 0x28]
test ecx, ecx
je 0x42a6d8
lea eax, [esp + 0x50]
mov esi, edx
sub esi, eax
mov eax, dword [esp + 0x14]
prefetcht0 byte [eax + 0x180]
lea edi, [esp + 0x50]
sub eax, edx
push 4
mov dword [esp + 0x20], eax
mov ecx, eax
pop edx
lea eax, [edi + esi]
movdqu xmm2, xmmword [eax + ecx]
movdqu xmm0, xmmword [eax]
pxor xmm0, xmm2
pshufd xmm1, xmm0, 0x31
pmuludq xmm1, xmm0
pshufd xmm0, xmm2, 0x4e
paddq xmm0, xmmword [edi]
paddq xmm1, xmm0
movdqa xmmword [edi], xmm1
lea edi, [edi + 0x10]
dec edx
jne 0x42a683
mov eax, dword [esp + 0x14]
add esi, 8
mov edx, dword [esp + 8]
push 0x40
pop edi
add eax, edi
add edx, 8
dec dword [esp + 0x20]
mov dword [esp + 0x14], eax
mov dword [esp + 8], edx
jne 0x42a66d
mov esi, dword [esp + 0x28]
lea edx, [esi + 0xc0]
add edx, dword [esi + 0x200]
jmp 0x42a72a
sub edi, ecx
mov eax, esi
sub eax, edi
add eax, 0x200
push edi
push eax
lea eax, [esp + 0x98]
push eax
call sub.msvcrt.dll_memcpy
mov eax, dword [esi + 0x200]
add esp, 0xc
push eax
lea eax, [esi + 0x100]
push eax
lea eax, [esp + 0x98]
add eax, edi
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
lea edx, [esp + 0x90]
mov eax, dword [esi + 0x21c]
lea ecx, [esp + 0x50]
mov edi, dword [esp + 0x10]
add edi, 0xfffffff9
mov dword [esp + 0x1c], eax
add edi, eax
mov eax, ecx
push 4
sub edx, edi
sub edi, eax
pop esi
lea eax, [edi + ecx]
movdqu xmm2, xmmword [eax + edx]
movdqu xmm0, xmmword [eax]
pxor xmm0, xmm2
pshufd xmm1, xmm0, 0x31
pmuludq xmm1, xmm0
pshufd xmm0, xmm2, 0x4e
paddq xmm0, xmmword [ecx]
paddq xmm1, xmm0
movdqa xmmword [ecx], xmm1
lea ecx, [ecx + 0x10]
dec esi
jne 0x42a74a
mov edi, dword [esp + 0x34]
push 0x9e3779b1
push 0x85ebca87
push dword [esp + 0x38]
push edi
call fcn.00401ac0
mov esi, dword [esp + 0x10]
lea ecx, [esp + 0x50]
push edx
push eax
lea edx, [esi + 0xb]
call fcn.00426c32
pop ecx
pop ecx
push 0xc2b2ae3d
push 0x27d4eb4f
push dword [esp + 0x38]
mov dword [esp + 0x4c], eax
push edi
mov dword [esp + 0x54], edx
call fcn.00401ac0
not edx
lea ecx, [esp + 0x50]
push edx
not eax
lea edx, [esi - 0xb]
add edx, dword [esp + 0x20]
push eax
call fcn.00426c32
pop ecx
pop ecx
mov dword [esp + 0x48], eax
lea esi, [esp + 0x40]
mov dword [esp + 0x4c], edx
mov eax, dword [ebp + 8]
mov edi, eax
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
pop edi
pop esi
mov esp, ebp
pop ebp
ret