Function at 0x402500
Capabilities:
Encode data using xor
Encrypt data using aes
Reference aes constants

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x54
mov eax, dword [0x44f00c]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0xc]
push ebx
push esi
push edi
mov edi, edx
mov dword [ebp - 0x30], ecx
mov edx, dword [ebp + 0x10]
mov ebx, ecx
mov dword [ebp - 0x38], edi
mov esi, edx
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x44], edx
mov dword [ebp - 0x40], esi
test ebx, ebx
je 0x403525
test edi, edi
je 0x403525
mov ecx, dword [ebp + 8]
test ecx, ecx
je 0x403525
test eax, eax
je 0x403525
test edx, edx
je 0x403525
cmp dword [ebp + 0x14], 1
je 0x40331d
cmp dword [ebp + 0x14], 0
je 0x40257f
pop edi
pop esi
mov eax, 0xfffffffe
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004192ef
mov esp, ebp
pop ebp
ret
cmp ebx, edi
je 0x402c43
cmp ecx, 0x10
jb 0x402614
push eax
mov edx, edi
mov ecx, ebx
call fcn.00401fb0
add esp, 4
test eax, eax
jne 0x4034f1
lea eax, [esi + 0xf]
cmp edi, eax
ja 0x4025d0
lea eax, [edi + 0xf]
cmp eax, esi
jb 0x4025d0
mov ecx, edi
sub esi, edi
mov edx, 0x10
nop dword [eax]
mov al, byte [ecx + esi]
lea ecx, [ecx + 1]
xor byte [ecx - 1], al
sub edx, 1
jne 0x4025c0
jmp 0x4025dd
movups xmm1, xmmword [edi]
movups xmm0, xmmword [esi]
pxor xmm1, xmm0
movups xmmword [edi], xmm1
mov eax, dword [ebp + 8]
mov esi, ebx
sub eax, 0x10
add ebx, 0x10
add edi, 0x10
mov dword [ebp + 8], eax
mov ecx, eax
cmp eax, 0x10
mov eax, dword [ebp - 0x1c]
jae 0x402590
mov dword [ebp + 8], ecx
mov dword [ebp - 0x40], esi
mov dword [ebp - 0x30], ebx
mov dword [ebp - 0x38], edi
test ecx, ecx
je 0x403509
test ebx, ebx
je 0x4034f1
mov eax, dword [ebx]
mov ecx, eax
rol eax, 8
mov edi, dword [ebp - 0x1c]
and eax, 0xff00ff
ror ecx, 8
and ecx, 0xff00ff00
or ecx, eax
mov eax, dword [ebx + 4]
xor ecx, dword [edi]
mov dword [ebp - 0x2c], ecx
mov ecx, eax
rol eax, 8
and eax, 0xff00ff
ror ecx, 8
and ecx, 0xff00ff00
or ecx, eax
mov eax, dword [ebx + 8]
mov ebx, eax
xor ecx, dword [edi + 4]
rol eax, 8
and eax, 0xff00ff
ror ebx, 8
and ebx, 0xff00ff00
mov dword [ebp - 0x20], ecx
or ebx, eax
mov eax, dword [ebp - 0x30]
xor ebx, dword [edi + 8]
mov eax, dword [eax + 0xc]
mov edx, eax
rol eax, 8
and eax, 0xff00ff
ror edx, 8
and edx, 0xff00ff00
or edx, eax
xor edx, dword [edi + 0xc]
mov eax, edx
shr eax, 0x10
movzx ecx, al
mov eax, ebx
shr eax, 8
movzx eax, al
mov ecx, dword [ecx*4 + 0x446f88]
xor ecx, dword [eax*4 + 0x446b88]
mov eax, dword [ebp - 0x2c]
shr eax, 0x18
xor ecx, dword [eax*4 + 0x447488]
mov eax, dword [ebp - 0x20]
movzx eax, al
xor ecx, dword [eax*4 + 0x4484b0]
mov eax, edi
xor ecx, dword [eax + 0x10]
mov eax, edx
shr eax, 8
mov dword [ebp - 0x28], ecx
movzx ecx, al
mov eax, dword [ebp - 0x2c]
shr eax, 0x10
movzx eax, al
mov ecx, dword [ecx*4 + 0x446b88]
xor ecx, dword [eax*4 + 0x446f88]
mov eax, dword [ebp - 0x20]
mov edi, ecx
shr eax, 0x18
mov dword [ebp - 0x24], ecx
xor edi, dword [eax*4 + 0x447488]
movzx eax, bl
xor edi, dword [eax*4 + 0x4484b0]
mov eax, dword [ebp - 0x1c]
xor edi, dword [eax + 0x14]
mov eax, dword [ebp - 0x20]
shr eax, 0x10
movzx ecx, al
mov eax, dword [ebp - 0x2c]
shr eax, 8
movzx eax, al
mov ecx, dword [ecx*4 + 0x446f88]
mov dword [ebp - 0x24], edi
xor ecx, dword [eax*4 + 0x446b88]
mov eax, ebx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x447488]
mov edi, dword [ebp - 0x1c]
movzx eax, dl
shr ebx, 0x10
shr edx, 0x18
xor ecx, dword [eax*4 + 0x4484b0]
xor ecx, dword [edi + 0x18]
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x3c], ecx
shr eax, 8
movzx eax, al
movzx ecx, bl
mov ecx, dword [ecx*4 + 0x446f88]
xor ecx, dword [eax*4 + 0x446b88]
mov eax, dword [ebp - 0x2c]
xor ecx, dword [edx*4 + 0x447488]
movzx eax, al
xor ecx, dword [eax*4 + 0x4484b0]
lea eax, [edi + 0x20]
xor ecx, dword [edi + 0x1c]
mov dword [ebp - 0x20], eax
mov eax, dword [edi + 0xf0]
mov edi, dword [ebp - 0x20]
sar eax, 1
sub eax, 1
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x18], eax
je 0x4029a9
mov ebx, dword [ebp - 0x3c]
mov eax, ecx
shr eax, 0x10
movzx ecx, al
mov eax, ebx
shr eax, 8
movzx eax, al
mov esi, dword [ebp - 0x28]
mov ecx, dword [ecx*4 + 0x446f88]
mov edx, dword [ebp - 0x24]
xor ecx, dword [eax*4 + 0x446b88]
mov eax, esi
shr eax, 0x18
xor ecx, dword [eax*4 + 0x447488]
movzx eax, dl
xor ecx, dword [eax*4 + 0x4484b0]
xor ecx, dword [edi]
mov eax, dword [ebp - 0x1c]
shr eax, 8
mov dword [ebp - 0x34], ecx
movzx ecx, al
mov eax, esi
shr eax, 0x10
movzx eax, al
mov ecx, dword [ecx*4 + 0x446b88]
xor ecx, dword [eax*4 + 0x446f88]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x447488]
movzx eax, bl
xor ecx, dword [eax*4 + 0x4484b0]
mov eax, edx
xor ecx, dword [edi + 4]
shr eax, 0x10
mov dword [ebp - 0x2c], ecx
movzx ecx, al
mov eax, esi
shr eax, 8
movzx eax, al
shr edx, 8
mov ebx, dword [ecx*4 + 0x446f88]
mov ecx, dword [ebp - 0x3c]
xor ebx, dword [eax*4 + 0x446b88]
mov eax, ecx
shr eax, 0x18
shr ecx, 0x10
movzx ecx, cl
xor ebx, dword [eax*4 + 0x447488]
mov eax, dword [ebp - 0x1c]
movzx eax, al
xor ebx, dword [eax*4 + 0x4484b0]
xor ebx, dword [edi + 8]
movzx eax, dl
mov edx, dword [ecx*4 + 0x446f88]
xor edx, dword [eax*4 + 0x446b88]
mov eax, dword [ebp - 0x1c]
shr eax, 0x18
xor edx, dword [eax*4 + 0x447488]
mov eax, esi
movzx eax, al
xor edx, dword [eax*4 + 0x4484b0]
xor edx, dword [edi + 0xc]
mov edi, dword [ebp - 0x34]
mov eax, edx
shr eax, 0x10
movzx ecx, al
mov eax, ebx
shr eax, 8
movzx eax, al
mov ecx, dword [ecx*4 + 0x446f88]
xor ecx, dword [eax*4 + 0x446b88]
mov eax, edi
shr eax, 0x18
xor ecx, dword [eax*4 + 0x447488]
mov eax, dword [ebp - 0x2c]
movzx eax, al
xor ecx, dword [eax*4 + 0x4484b0]
mov eax, dword [ebp - 0x20]
xor ecx, dword [eax + 0x10]
mov eax, edx
mov dword [ebp - 0x28], ecx
shr eax, 8
movzx ecx, al
mov eax, edi
shr eax, 0x10
movzx eax, al
mov ecx, dword [ecx*4 + 0x446b88]
xor ecx, dword [eax*4 + 0x446f88]
mov eax, dword [ebp - 0x2c]
mov esi, ecx
shr eax, 0x18
mov dword [ebp - 0x24], ecx
xor esi, dword [eax*4 + 0x447488]
movzx eax, bl
xor esi, dword [eax*4 + 0x4484b0]
mov dword [ebp - 0x24], esi
mov eax, esi
mov esi, dword [ebp - 0x20]
xor eax, dword [esi + 0x14]
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x2c]
shr eax, 0x10
movzx ecx, al
mov eax, edi
shr eax, 8
mov edi, esi
movzx eax, al
mov ecx, dword [ecx*4 + 0x446f88]
xor ecx, dword [eax*4 + 0x446b88]
mov eax, ebx
shr eax, 0x18
shr ebx, 0x10
xor ecx, dword [eax*4 + 0x447488]
movzx eax, dl
shr edx, 0x18
xor ecx, dword [eax*4 + 0x4484b0]
xor ecx, dword [edi + 0x18]
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x3c], ecx
shr eax, 8
movzx ecx, bl
movzx eax, al
mov ecx, dword [ecx*4 + 0x446f88]
xor ecx, dword [eax*4 + 0x446b88]
mov eax, dword [ebp - 0x34]
xor ecx, dword [edx*4 + 0x447488]
movzx eax, al
xor ecx, dword [eax*4 + 0x4484b0]
xor ecx, dword [edi + 0x1c]
add edi, 0x20
sub dword [ebp - 0x18], 1
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x20], edi
jne 0x4027a4
mov esi, dword [ebp - 0x40]
mov eax, ecx
mov ebx, dword [ebp - 0x3c]
shr eax, 0x10
movzx eax, al
mov edx, dword [ebp - 0x24]
movzx ecx, byte [eax + 0x447388]
mov eax, dword [ebp - 0x28]
shr eax, 0x18
movzx eax, byte [eax + 0x447388]
shl eax, 8
xor ecx, eax
mov eax, ebx
shr eax, 8
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x447388]
xor ecx, eax
movzx eax, dl
shl ecx, 8
movzx eax, byte [eax + 0x447388]
xor ecx, eax
xor ecx, dword [edi]
mov eax, ecx
rol ecx, 8
ror eax, 8
and ecx, 0xff00ff
and eax, 0xff00ff00
or eax, ecx
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x28]
shr eax, 0x10
movzx eax, al
movzx ecx, byte [eax + 0x447388]
mov eax, edx
shr eax, 0x18
movzx eax, byte [eax + 0x447388]
shl eax, 8
xor ecx, eax
mov eax, dword [ebp - 0x1c]
shr eax, 8
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x447388]
xor ecx, eax
movzx eax, bl
shl ecx, 8
movzx eax, byte [eax + 0x447388]
xor ecx, eax
xor ecx, dword [edi + 4]
mov eax, ecx
rol ecx, 8
ror eax, 8
and ecx, 0xff00ff
and eax, 0xff00ff00
or eax, ecx
mov dword [ebp - 0x10], eax
mov eax, edx
shr eax, 0x10
movzx eax, al
movzx ecx, byte [eax + 0x447388]
mov eax, ebx
shr eax, 0x18
movzx eax, byte [eax + 0x447388]
shl eax, 8
xor ecx, eax
mov eax, dword [ebp - 0x28]
shr eax, 8
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x447388]
xor ecx, eax
mov eax, dword [ebp - 0x1c]
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x447388]
xor ecx, eax
xor ecx, dword [edi + 8]
mov eax, ecx
ror eax, 8
and eax, 0xff00ff00
rol ecx, 8
and ecx, 0xff00ff
shr ebx, 0x10
or eax, ecx
shr edx, 8
mov dword [ebp - 0xc], eax
movzx eax, bl
mov ebx, dword [ebp + 8]
movzx ecx, byte [eax + 0x447388]
mov eax, dword [ebp - 0x1c]
shr eax, 0x18
movzx eax, byte [eax + 0x447388]
shl eax, 8
xor ecx, eax
movzx eax, dl
shl ecx, 8
movzx eax, byte [eax + 0x447388]
xor ecx, eax
mov eax, dword [ebp - 0x28]
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x447388]
xor ecx, eax
xor ecx, dword [edi + 0xc]
xor edi, edi
mov eax, ecx
rol ecx, 8
ror eax, 8
and ecx, 0xff00ff
and eax, 0xff00ff00
or eax, ecx
mov dword [ebp - 8], eax
test ebx, ebx
je 0x402c24
mov edx, dword [ebp - 0x38]
cmp ebx, 0x40
jb 0x402c0b
lea ecx, [edx - 1]
lea eax, [ebp + ebx - 0x15]
add ecx, ebx
cmp edx, eax
ja 0x402b5e
lea eax, [ebp - 0x14]
cmp ecx, eax
jae 0x402c0b
lea eax, [ebx - 1]
add eax, esi
cmp edx, eax
ja 0x402b6f
cmp ecx, esi
jae 0x402c0b
mov eax, ebx
lea ecx, [esi + 0x30]
mov ebx, esi
and eax, 0xffffffc0
sub ebx, edx
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x18], ebx
lea eax, [edx + 0x10]
mov esi, dword [ebp - 0x18]
lea ebx, [ebp - 0x14]
sub ebx, edx
mov dword [ebp - 0x34], ebx
lea ebx, [ebp - 4]
sub ebx, edx
mov dword [ebp - 0x2c], ebx
lea ebx, [ebp + 0xc]
sub ebx, edx
mov edx, dword [ebp - 0x34]
mov dword [ebp - 0x3c], ebx
movups xmm0, xmmword [ecx - 0x30]
mov ebx, dword [ebp - 0x2c]
lea ecx, [ecx + 0x40]
movups xmm1, xmmword [ebp + edi - 0x14]
add edi, 0x40
lea eax, [eax + 0x40]
pxor xmm1, xmm0
movups xmm0, xmmword [esi + eax - 0x40]
movups xmmword [eax - 0x50], xmm1
movups xmm1, xmmword [edx + eax - 0x40]
pxor xmm1, xmm0
movups xmm0, xmmword [ecx - 0x50]
movups xmmword [eax - 0x40], xmm1
movups xmm1, xmmword [ebx + eax - 0x40]
mov ebx, dword [ebp - 0x3c]
pxor xmm1, xmm0
movups xmm0, xmmword [ecx - 0x40]
movups xmmword [eax - 0x30], xmm1
movups xmm1, xmmword [ebx + eax - 0x40]
mov ebx, dword [ebp + 8]
pxor xmm1, xmm0
movups xmmword [eax - 0x20], xmm1
cmp edi, dword [ebp - 0x20]
jb 0x402ba2
mov esi, dword [ebp - 0x40]
mov edx, dword [ebp - 0x38]
mov dword [ebp - 0x18], edi
cmp edi, ebx
jae 0x402c24
lea eax, [ebp - 0x14]
sub esi, eax
sub edx, eax
lea ecx, [ebp - 0x14]
add ecx, edi
inc edi
mov al, byte [ecx + esi]
xor al, byte [ecx]
mov byte [ecx + edx], al
cmp edi, ebx
jb 0x402c12
mov esi, dword [ebp - 0x30]
xor eax, eax
pop edi
movups xmm0, xmmword [esi]
mov esi, dword [ebp - 0x44]
movups xmmword [esi], xmm0
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004192ef
mov esp, ebp
pop ebp
ret
cmp ecx, 0x10
jb 0x402ccd
sub esi, edi
nop
movups xmm2, xmmword [ebx]
push eax
mov edx, edi
mov ecx, ebx
call fcn.00401fb0
add esp, 4
test eax, eax
jne 0x4034f1
mov edx, dword [ebp - 0x44]
lea eax, [edx + 0xf]
cmp edi, eax
ja 0x402c93
lea eax, [edi + 0xf]
cmp eax, edx
jb 0x402c93
mov ecx, edi
mov edx, 0x10
mov al, byte [esi + ecx]
lea ecx, [ecx + 1]
xor byte [ecx - 1], al
sub edx, 1
jne 0x402c80
mov edx, dword [ebp - 0x44]
jmp 0x402ca0
movups xmm1, xmmword [edi]
movups xmm0, xmmword [edx]
pxor xmm1, xmm0
movups xmmword [edi], xmm1
mov eax, dword [ebp + 8]
add ebx, 0x10
sub eax, 0x10
add edi, 0x10
sub esi, 0x10
mov dword [ebp + 8], eax
mov ecx, eax
cmp eax, 0x10
mov eax, dword [ebp - 0x1c]
movups xmmword [edx], xmm2
jae 0x402c50
mov dword [ebp + 8], ecx
mov dword [ebp - 0x38], edi
test ecx, ecx
je 0x403512
movups xmm1, xmmword [ebx]
movups xmmword [ebp - 0x54], xmm1
movups xmmword [ebp - 0x14], xmm1
test edi, edi
je 0x4034f1
mov esi, dword [ebp - 0x1c]
movaps xmm0, xmm1
movd eax, xmm1
psrldq xmm0, 4
mov ecx, eax
rol eax, 8
and eax, 0xff00ff
ror ecx, 8
and ecx, 0xff00ff00
or ecx, eax
movd eax, xmm0
xor ecx, dword [esi]
movaps xmm0, xmm1
mov dword [ebp - 0x2c], ecx
mov ecx, eax
psrldq xmm0, 8
rol eax, 8
and eax, 0xff00ff
ror ecx, 8
and ecx, 0xff00ff00
or ecx, eax
movd eax, xmm0
xor ecx, dword [esi + 4]
movaps xmm0, xmm1
psrldq xmm0, 0xc
mov ebx, eax
mov dword [ebp - 0x30], ecx
rol eax, 8
and eax, 0xff00ff
ror ebx, 8
and ebx, 0xff00ff00
or ebx, eax
movd eax, xmm0
xor ebx, dword [esi + 8]
mov edx, eax
rol eax, 8
and eax, 0xff00ff
ror edx, 8
and edx, 0xff00ff00
or edx, eax
xor edx, dword [esi + 0xc]
mov eax, edx
shr eax, 0x10
movzx ecx, al
mov eax, ebx
shr eax, 8
movzx eax, al
mov ecx, dword [ecx*4 + 0x446f88]
xor ecx, dword [eax*4 + 0x446b88]
mov eax, dword [ebp - 0x2c]
shr eax, 0x18
xor ecx, dword [eax*4 + 0x447488]
mov eax, dword [ebp - 0x30]
movzx eax, al
xor ecx, dword [eax*4 + 0x4484b0]
mov eax, esi
xor ecx, dword [eax + 0x10]
mov eax, edx
shr eax, 8
mov dword [ebp - 0x20], ecx
movzx ecx, al
mov eax, dword [ebp - 0x2c]
shr eax, 0x10
movzx eax, al
mov ecx, dword [ecx*4 + 0x446b88]
xor ecx, dword [eax*4 + 0x446f88]
mov eax, dword [ebp - 0x30]
mov esi, ecx
shr eax, 0x18
mov dword [ebp - 0x24], ecx
xor esi, dword [eax*4 + 0x447488]
movzx eax, bl
xor esi, dword [eax*4 + 0x4484b0]
mov eax, dword [ebp - 0x1c]
xor esi, dword [eax + 0x14]
mov eax, dword [ebp - 0x30]
shr eax, 0x10
movzx ecx, al
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x24], esi
shr eax, 8
mov ecx, dword [ecx*4 + 0x446f88]
mov esi, dword [ebp - 0x1c]
movzx eax, al
xor ecx, dword [eax*4 + 0x446b88]
mov eax, ebx
shr eax, 0x18
shr ebx, 0x10
xor ecx, dword [eax*4 + 0x447488]
movzx eax, dl
shr edx, 0x18
xor ecx, dword [eax*4 + 0x4484b0]
xor ecx, dword [esi + 0x18]
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x3c], ecx
shr eax, 8
movzx eax, al
movzx ecx, bl
mov ecx, dword [ecx*4 + 0x446f88]
xor ecx, dword [eax*4 + 0x446b88]
mov eax, dword [ebp - 0x2c]
xor ecx, dword [edx*4 + 0x447488]
movzx eax, al
xor ecx, dword [eax*4 + 0x4484b0]
lea eax, [esi + 0x20]
xor ecx, dword [esi + 0x1c]
mov dword [ebp - 0x40], eax
mov eax, dword [esi + 0xf0]
sar eax, 1
sub eax, 1
mov dword [ebp - 0x28], ecx
mov dword [ebp - 0x34], eax
je 0x40308f
mov edi, dword [ebp - 0x40]
nop word [eax + eax]
mov ebx, dword [ebp - 0x3c]
mov eax, ecx
shr eax, 0x10
movzx ecx, al
mov eax, ebx
shr eax, 8
movzx eax, al
mov esi, dword [ebp - 0x20]
mov ecx, dword [ecx*4 + 0x446f88]
mov edx, dword [ebp - 0x24]
xor ecx, dword [eax*4 + 0x446b88]
mov eax, esi
shr eax, 0x18
xor ecx, dword [eax*4 + 0x447488]
movzx eax, dl
xor ecx, dword [eax*4 + 0x4484b0]
xor ecx, dword [edi]
mov eax, dword [ebp - 0x28]
shr eax, 8
mov dword [ebp - 0x18], ecx
movzx ecx, al
mov eax, esi
shr eax, 0x10
movzx eax, al
mov ecx, dword [ecx*4 + 0x446b88]
xor ecx, dword [eax*4 + 0x446f88]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x447488]
movzx eax, bl
xor ecx, dword [eax*4 + 0x4484b0]
mov eax, edx
xor ecx, dword [edi + 4]
shr eax, 0x10
mov dword [ebp - 0x30], ecx
movzx ecx, al
mov eax, esi
shr eax, 8
movzx eax, al
shr edx, 8
mov ebx, dword [ecx*4 + 0x446f88]
mov ecx, dword [ebp - 0x3c]
xor ebx, dword [eax*4 + 0x446b88]
mov eax, ecx
shr eax, 0x18
shr ecx, 0x10
movzx ecx, cl
xor ebx, dword [eax*4 + 0x447488]
mov eax, dword [ebp - 0x28]
movzx eax, al
xor ebx, dword [eax*4 + 0x4484b0]
xor ebx, dword [edi + 8]
movzx eax, dl
mov edx, dword [ecx*4 + 0x446f88]
xor edx, dword [eax*4 + 0x446b88]
mov eax, dword [ebp - 0x28]
shr eax, 0x18
xor edx, dword [eax*4 + 0x447488]
mov eax, esi
movzx eax, al
mov esi, dword [ebp - 0x18]
xor edx, dword [eax*4 + 0x4484b0]
xor edx, dword [edi + 0xc]
mov eax, edx
shr eax, 0x10
movzx ecx, al
mov eax, ebx
shr eax, 8
movzx eax, al
mov ecx, dword [ecx*4 + 0x446f88]
xor ecx, dword [eax*4 + 0x446b88]
mov eax, esi
shr eax, 0x18
xor ecx, dword [eax*4 + 0x447488]
mov eax, dword [ebp - 0x30]
movzx eax, al
xor ecx, dword [eax*4 + 0x4484b0]
mov eax, edx
xor ecx, dword [edi + 0x10]
mov dword [ebp - 0x20], ecx
shr eax, 8
movzx ecx, al
mov eax, esi
shr eax, 0x10
movzx eax, al
mov ecx, dword [ecx*4 + 0x446b88]
xor ecx, dword [eax*4 + 0x446f88]
mov eax, dword [ebp - 0x30]
mov edi, ecx
shr eax, 0x18
mov dword [ebp - 0x24], ecx
xor edi, dword [eax*4 + 0x447488]
movzx eax, bl
xor edi, dword [eax*4 + 0x4484b0]
mov dword [ebp - 0x24], edi
mov eax, edi
mov edi, dword [ebp - 0x40]
xor eax, dword [edi + 0x14]
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x30]
shr eax, 0x10
movzx ecx, al
mov eax, esi
shr eax, 8
movzx eax, al
mov ecx, dword [ecx*4 + 0x446f88]
xor ecx, dword [eax*4 + 0x446b88]
mov eax, ebx
shr eax, 0x18
shr ebx, 0x10
xor ecx, dword [eax*4 + 0x447488]
movzx eax, dl
shr edx, 0x18
xor ecx, dword [eax*4 + 0x4484b0]
xor ecx, dword [edi + 0x18]
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x3c], ecx
shr eax, 8
movzx ecx, bl
movzx eax, al
mov ecx, dword [ecx*4 + 0x446f88]
xor ecx, dword [eax*4 + 0x446b88]
mov eax, esi
xor ecx, dword [edx*4 + 0x447488]
movzx eax, al
xor ecx, dword [eax*4 + 0x4484b0]
xor ecx, dword [edi + 0x1c]
add edi, 0x20
sub dword [ebp - 0x34], 1
mov dword [ebp - 0x28], ecx
mov dword [ebp - 0x40], edi
jne 0x402e90
mov edi, dword [ebp - 0x38]
mov eax, ecx
mov ebx, dword [ebp - 0x3c]
shr eax, 0x10
movzx eax, al
mov edx, dword [ebp - 0x24]
mov esi, dword [ebp - 0x40]
movzx ecx, byte [eax + 0x447388]
mov eax, dword [ebp - 0x20]
shr eax, 0x18
movzx eax, byte [eax + 0x447388]
shl eax, 8
xor ecx, eax
mov eax, ebx
shr eax, 8
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x447388]
xor ecx, eax
movzx eax, dl
shl ecx, 8
movzx eax, byte [eax + 0x447388]
xor ecx, eax
xor ecx, dword [esi]
mov eax, ecx
rol ecx, 8
ror eax, 8
and ecx, 0xff00ff
and eax, 0xff00ff00
or eax, ecx
mov dword [edi], eax
mov eax, dword [ebp - 0x20]
shr eax, 0x10
movzx eax, al
movzx ecx, byte [eax + 0x447388]
mov eax, edx
shr eax, 0x18
movzx eax, byte [eax + 0x447388]
shl eax, 8
xor ecx, eax
mov eax, dword [ebp - 0x28]
shr eax, 8
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x447388]
xor ecx, eax
movzx eax, bl
shl ecx, 8
movzx eax, byte [eax + 0x447388]
xor ecx, eax
xor ecx, dword [esi + 4]
mov eax, ecx
rol ecx, 8
ror eax, 8
and ecx, 0xff00ff
and eax, 0xff00ff00
or eax, ecx
mov dword [edi + 4], eax
mov eax, edx
shr eax, 0x10
movzx eax, al
movzx ecx, byte [eax + 0x447388]
mov eax, ebx
shr eax, 0x18
movzx eax, byte [eax + 0x447388]
shl eax, 8
xor ecx, eax
mov eax, dword [ebp - 0x20]
shr eax, 8
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x447388]
xor ecx, eax
mov eax, dword [ebp - 0x28]
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x447388]
xor ecx, eax
xor ecx, dword [esi + 8]
mov eax, ecx
ror eax, 8
and eax, 0xff00ff00
rol ecx, 8
and ecx, 0xff00ff
shr ebx, 0x10
or eax, ecx
shr edx, 8
mov dword [edi + 8], eax
movzx eax, bl
mov ebx, dword [ebp + 8]
movzx ecx, byte [eax + 0x447388]
mov eax, dword [ebp - 0x28]
shr eax, 0x18
movzx eax, byte [eax + 0x447388]
shl eax, 8
xor ecx, eax
movzx eax, dl
shl ecx, 8
xor edx, edx
movzx eax, byte [eax + 0x447388]
xor ecx, eax
mov eax, dword [ebp - 0x20]
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x447388]
xor ecx, eax
xor ecx, dword [esi + 0xc]
mov eax, ecx
rol ecx, 8
ror eax, 8
and ecx, 0xff00ff
and eax, 0xff00ff00
or eax, ecx
mov dword [edi + 0xc], eax
test ebx, ebx
je 0x4032e1
mov esi, dword [ebp - 0x44]
cmp ebx, 0x40
jb 0x4032b9
lea eax, [ebx - 1]
lea ecx, [ebx - 1]
add eax, esi
add ecx, edi
cmp edi, eax
ja 0x403240
cmp ecx, esi
jae 0x4032b9
mov eax, ebx
lea ecx, [esi + 0x30]
and eax, 0xffffffc0
mov ebx, esi
sub ebx, edi
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x18], ebx
lea eax, [edi + 0x10]
mov ebx, dword [ebp + 8]
mov esi, dword [ebp - 0x18]
nop dword [eax + eax]
movups xmm0, xmmword [eax - 0x10]
add edx, 0x40
lea ecx, [ecx + 0x40]
lea eax, [eax + 0x40]
movups xmm1, xmmword [ecx - 0x70]
pxor xmm1, xmm0
movups xmmword [eax - 0x50], xmm1
movups xmm0, xmmword [eax - 0x40]
movups xmm1, xmmword [eax + esi - 0x40]
pxor xmm1, xmm0
movups xmmword [eax - 0x40], xmm1
movups xmm0, xmmword [eax - 0x30]
movups xmm1, xmmword [ecx - 0x50]
pxor xmm1, xmm0
movups xmmword [eax - 0x30], xmm1
movups xmm0, xmmword [eax - 0x20]
movups xmm1, xmmword [ecx - 0x40]
pxor xmm1, xmm0
movups xmmword [eax - 0x20], xmm1
cmp edx, dword [ebp - 0x34]
jb 0x403260
mov esi, dword [ebp - 0x44]
mov dword [ebp - 0x18], edx
cmp edx, ebx
jae 0x4032e4
sub esi, edi
lea ecx, [edi + edx]
mov dword [ebp - 0x18], esi
mov esi, ebx
mov ebx, dword [ebp - 0x18]
sub esi, edx
nop dword [eax + eax]
mov al, byte [ecx + ebx]
lea ecx, [ecx + 1]
xor byte [ecx - 1], al
sub esi, 1
jne 0x4032d0
mov ebx, dword [ebp + 8]
mov esi, dword [ebp - 0x44]
cmp ebx, 0x10
jae 0x403303
mov eax, 0x10
lea ecx, [ebp - 0x14]
sub eax, ebx
lea edx, [edi + ebx]
push eax
add ecx, ebx
push ecx
push edx
call fcn.0041c3b0
add esp, 0xc
movups xmm0, xmmword [ebp - 0x54]
pop edi
xor eax, eax
movups xmmword [esi], xmm0
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004192ef
mov esp, ebp
pop ebp
ret
cmp ecx, 0x10
jb 0x4033bf
lea eax, [esi + 0xf]
cmp edi, eax
ja 0x403334
lea eax, [edi + 0xf]
cmp eax, esi
jae 0x403342
lea eax, [ebx + 0xf]
cmp edi, eax
ja 0x40336b
lea eax, [edi + 0xf]
cmp eax, ebx
jb 0x40336b
mov edx, ebx
mov eax, edi
sub edx, esi
mov ecx, 0x10
sub eax, esi
mov dword [ebp - 0x18], eax
mov edi, eax
mov al, byte [edx + esi]
lea esi, [esi + 1]
xor al, byte [esi - 1]
mov byte [edi + esi - 1], al
sub ecx, 1
jne 0x403354
mov edi, dword [ebp - 0x38]
jmp 0x403378
movups xmm1, xmmword [ebx]
movups xmm0, xmmword [esi]
pxor xmm1, xmm0
movups xmmword [edi], xmm1
push dword [ebp - 0x1c]
mov edx, edi
mov ecx, edi
call fcn.00401a50
add esp, 4
test eax, eax
jne 0x4034f1
mov ecx, dword [ebp + 8]
mov esi, edi
sub ecx, 0x10
add edi, 0x10
add ebx, 0x10
mov dword [ebp + 8], ecx
mov dword [ebp - 0x38], edi
mov eax, ecx
cmp ecx, 0x10
jae 0x403326
mov dword [ebp + 8], ecx
mov dword [ebp - 0x40], esi
mov dword [ebp - 0x38], edi
test eax, eax
je 0x403509
xor edx, edx
test ecx, ecx
je 0x4034bd
cmp ecx, 0x40
jb 0x40348c
lea eax, [esi - 1]
add eax, ecx
cmp edi, eax
ja 0x4033e8
lea eax, [edi - 1]
add eax, ecx
cmp eax, esi
jae 0x40348c
lea eax, [ebx - 1]
add eax, ecx
cmp edi, eax
ja 0x4033fe
lea eax, [edi - 1]
add eax, ecx
cmp eax, ebx
jae 0x40348c
mov eax, ecx
mov ecx, ebx
sub ecx, esi
and eax, 0xffffffc0
mov dword [ebp - 0x18], ecx
mov ecx, edi
sub ecx, esi
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x34], ecx
lea eax, [esi + 0x10]
mov esi, dword [ebp - 0x18]
mov ecx, ebx
sub ecx, edi
mov dword [ebp - 0x30], ecx
lea ecx, [edi + 0x20]
movups xmm0, xmmword [eax - 0x10]
mov edi, dword [ebp - 0x34]
lea eax, [eax + 0x40]
movups xmm1, xmmword [ebx + edx]
lea ecx, [ecx + 0x40]
pxor xmm1, xmm0
movups xmm0, xmmword [eax - 0x40]
movups xmmword [ecx - 0x60], xmm1
movups xmm1, xmmword [eax + esi - 0x40]
pxor xmm1, xmm0
movups xmm0, xmmword [eax - 0x30]
movups xmmword [eax + edi - 0x40], xmm1
mov edi, dword [ebp - 0x30]
movups xmm1, xmmword [edi + ecx - 0x40]
mov edi, dword [ebp - 0x38]
pxor xmm1, xmm0
movups xmm0, xmmword [eax - 0x20]
movups xmmword [ecx - 0x40], xmm1
movups xmm1, xmmword [ebx + edx + 0x30]
add edx, 0x40
pxor xmm1, xmm0
movups xmmword [ecx - 0x30], xmm1
cmp edx, dword [ebp - 0x2c]
jb 0x403424
mov ecx, dword [ebp + 8]
mov esi, dword [ebp - 0x40]
mov dword [ebp - 0x18], edx
cmp edx, ecx
jae 0x4034b8
lea eax, [edx + esi]
mov dword [ebp - 0x18], ecx
sub edi, esi
mov dword [ebp - 0x34], eax
sub ebx, esi
mov dword [ebp - 0x30], edi
sub ecx, edx
mov edx, eax
mov al, byte [edx + ebx]
lea edx, [edx + 1]
xor al, byte [edx - 1]
mov byte [edx + edi - 1], al
sub ecx, 1
jne 0x4034a0
mov edi, dword [ebp - 0x38]
mov ecx, dword [ebp + 8]
cmp ecx, 0x10
jae 0x4034de
mov ebx, 0x10
lea edx, [edi + ecx]
sub esi, edi
sub ebx, ecx
nop dword [eax]
mov al, byte [esi + edx]
lea edx, [edx + 1]
mov byte [edx - 1], al
sub ebx, 1
jne 0x4034d0
push dword [ebp - 0x1c]
mov edx, edi
mov ecx, edi
call fcn.00401a50
add esp, 4
test eax, eax
je 0x403507
pop edi
pop esi
mov eax, 0xfffffffd
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004192ef
mov esp, ebp
pop ebp
ret
mov esi, edi
movups xmm0, xmmword [esi]
mov esi, dword [ebp - 0x44]
movups xmmword [esi], xmm0
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004192ef
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 4]
or eax, 0xffffffff
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004192ef
mov esp, ebp
pop ebp
ret