Function at 0x496df0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x46c
mov eax, dword [0x5080e8]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push ebx
push esi
mov dword [ebp - 0x44c], eax
mov eax, dword [ebp + 0x18]
push edi
mov edi, ecx
mov dword [ebp - 0x468], eax
mov eax, dword [ebp + 0x1c]
mov dword [ebp - 0x450], eax
mov eax, dword [ebp + 0x20]
cmp dword [edi + 0xa4], 1
mov dword [ebp - 0x46c], eax
jne case.default.0x496e62
mov ecx, dword [edi + 4]
mov dword [ebp - 0x454], ecx
lea eax, [ecx - 0x10]
cmp eax, 0x3f0
ja case.default.0x496e62
mov eax, dword [edi + 0xa8]
add eax, 0xfffffffd
cmp eax, 5
ja case.default.0x496e62
jmp dword [eax*4 + 0x4971b8]
mov esi, 0x4f63d8
jmp 0x496e91
mov esi, 0x4f62e8
jmp 0x496e91
mov esi, 0x4f63a8
jmp 0x496e91
mov esi, 0x4f6318
jmp 0x496e91
mov esi, 0x4f6378
jmp 0x496e91
mov esi, 0x4f6348
movzx ebx, byte [esi + 8]
mov dword [ebp - 0x448], ebx
lea eax, [ebx + ebx]
mov dword [ebp - 0x458], eax
add eax, 2
cmp eax, ecx
ja case.default.0x496e62
lea eax, [ebp - 0x444]
mov ecx, edi
push eax
push dword [ebp - 0x450]
push dword [ebp - 0x44c]
call fcn.004961b0
mov edi, eax
add esp, 0xc
test edi, edi
jne 0x497165
xorps xmm0, xmm0
mov dword [ebp - 0x45c], eax
mov eax, dword [esi + 0x20]
movq qword [ebp - 0x464], xmm0
call eax
mov dword [ebp - 0x460], eax
test eax, eax
jne 0x496f23
mov edi, 0xffffae80
cmp dword [ebp - 0x464], eax
je 0x497165
xor edx, edx
lea ecx, [ebp - 0x464]
mov eax, 0xc
mov byte [ecx], dl
lea ecx, [ecx + 1]
sub eax, 1
jne 0x496f14
jmp 0x497165
lea eax, [ebp - 0x44]
mov dword [ebp - 0x464], esi
push eax
mov eax, dword [esi + 0x1c]
push 0
push 0
call eax
mov edi, dword [ebp - 0x454]
lea eax, [ebp - 0x464]
sub edi, ebx
lea esi, [ebp - 0x443]
push eax
dec edi
lea ecx, [ebp - 0x443]
add esi, ebx
mov edx, ebx
push edi
push esi
call fcn.00496a80
lea eax, [ebp - 0x464]
mov edx, edi
push eax
lea eax, [ebp - 0x443]
mov ecx, esi
push ebx
push eax
call fcn.00496a80
mov edi, dword [ebp - 0x464]
add esp, 0x24
test edi, edi
je 0x496fdb
mov eax, dword [ebp - 0x460]
test eax, eax
je 0x496f95
push eax
mov eax, dword [edi + 0x24]
call eax
add esp, 4
mov edx, dword [ebp - 0x45c]
test edx, edx
je 0x496fc4
mov eax, dword [edi + 0xc]
mov ecx, edx
add eax, eax
je 0x496fbb
nop dword [eax + eax]
mov byte [ecx], 0
lea ecx, [ecx + 1]
sub eax, 1
jne 0x496fb0
push edx
call fcn.004c3b98
add esp, 4
mov eax, 0xc
lea ecx, [ebp - 0x464]
nop
mov byte [ecx], 0
lea ecx, [ecx + 1]
sub eax, 1
jne 0x496fd0
mov edx, dword [ebp - 0x448]
xor ecx, ecx
mov bl, byte [ebp - 0x444]
test edx, edx
je 0x49707e
cmp edx, 0x20
jb 0x497070
mov eax, edx
xorps xmm2, xmm2
and eax, 0xffffffe0
xorps xmm3, xmm3
movups xmm0, xmmword [esi]
movups xmm1, xmmword [ebp + ecx - 0x44]
pxor xmm1, xmm0
movups xmm0, xmmword [esi + 0x10]
add esi, 0x20
por xmm2, xmm1
movups xmm1, xmmword [ebp + ecx - 0x34]
add ecx, 0x20
pxor xmm1, xmm0
por xmm3, xmm1
cmp ecx, eax
jb 0x497001
por xmm2, xmm3
movaps xmm0, xmm2
psrldq xmm0, 8
por xmm2, xmm0
movups xmm0, xmm2
psrldq xmm0, 4
por xmm2, xmm0
movups xmm0, xmm2
psrldq xmm0, 2
por xmm2, xmm0
movups xmm0, xmm2
psrldq xmm0, 1
por xmm2, xmm0
movd eax, xmm2
or bl, al
cmp ecx, edx
jae 0x49707e
nop word [eax + eax]
mov al, byte [ebp + ecx - 0x44]
inc ecx
xor al, byte [esi]
inc esi
or bl, al
cmp ecx, edx
jb 0x497070
mov eax, dword [ebp - 0x454]
xor edi, edi
sub eax, dword [ebp - 0x458]
xor cl, cl
add eax, 0xfffffffe
mov dword [ebp - 0x448], edi
xor edx, edx
mov dword [ebp - 0x450], edi
mov dword [ebp - 0x44c], eax
cmp eax, 2
jb 0x4970f5
nop word [eax + eax]
or cl, byte [edx + esi]
mov al, cl
neg al
or al, cl
or cl, byte [edx + esi + 1]
not al
add edx, 2
movzx eax, al
shr eax, 7
add edi, eax
mov al, cl
neg al
mov dword [ebp - 0x458], edi
or al, cl
not al
movzx eax, al
shr eax, 7
add dword [ebp - 0x448], eax
mov eax, dword [ebp - 0x44c]
dec eax
cmp edx, eax
jb 0x4970b0
mov eax, dword [ebp - 0x44c]
cmp edx, eax
jae 0x497110
or cl, byte [edx + esi]
mov al, cl
neg al
or al, cl
not al
movzx eax, al
shr eax, 7
mov dword [ebp - 0x450], eax
mov eax, dword [ebp - 0x448]
add eax, edi
add eax, dword [ebp - 0x450]
add esi, eax
mov al, byte [esi]
inc esi
xor al, 1
or bl, al
je 0x497130
mov edi, 0xffffbf00
jmp 0x497165
mov eax, dword [ebp - 0x454]
sub eax, esi
lea eax, [ebp + eax - 0x444]
cmp eax, dword [ebp + 0x24]
jbe 0x49714b
mov edi, 0xffffbc00
jmp 0x497165
mov ecx, dword [ebp - 0x468]
push eax
push esi
push dword [ebp - 0x46c]
mov dword [ecx], eax
call fcn.004bbb30
add esp, 0xc
xor edi, edi
mov eax, 0x400
lea ecx, [ebp - 0x444]
mov byte [ecx], 0
lea ecx, [ecx + 1]
sub eax, 1
jne 0x497170
mov eax, 0x40
lea ecx, [ebp - 0x44]
mov byte [ecx], 0
lea ecx, [ecx + 1]
sub eax, 1
jne 0x497183
mov eax, edi
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004b992a
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 4]
mov eax, 0xffffbf80
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004b992a
mov esp, ebp
pop ebp
ret