Function at 0x437af0
Capabilities:
Encode data using xor

Disassembly:
pushfd
pushal
mov ebx, dword [esp + 0x3c]
mov edi, dword [esp + 0x28]
mov ecx, dword [esp + 0x30]
mov edx, ebx
mov esi, dword [esp + 0x2c]
and edx, 0xfff
mov ebp, dword [esp + 0x34]
cmp dword [esp + 0x40], 0
mov eax, dword [esp + 0x38]
mov dword [0x490634], edx
jne 0x437f70
mov dword [0x490630], eax
sub edx, 0x100
neg edx
mov dword [0x49063c], edx
or ebx, ebx
js 0x437d50
or ecx, ecx
jne 0x437c10
mov ecx, eax
test ebx, 0x40000000
jne 0x437bd0
push ecx
push ebp
mov ebp, 0x49068c
xor ecx, ecx
xor eax, eax
lea edx, [ebx + ecx]
inc ecx
sub edx, 0x100
adc eax, 0xffffffff
add ebp, 4
and edx, eax
cmp edx, 0x100
jbe 0x437b7e
mov edx, 0x100
cmp ecx, 0x100
mov dword [ebp], edx
jb 0x437b5d
pop ebp
pop ecx
add eax, 0
movzx edx, byte [ebp]
add ebp, 3
mov edx, dword [edx*4 + 0x490690]
movzx eax, byte [esi]
inc esi
imul eax, edx
mov byte [edi], ah
inc edi
movzx eax, byte [esi]
inc esi
imul eax, edx
mov byte [edi], ah
inc edi
movzx eax, byte [esi]
inc esi
imul eax, edx
mov byte [edi], ah
inc edi
dec ecx
jne 0x437b90
popal
popfd
ret
movzx edx, byte [ebp]
xor eax, eax
cmp edx, dword [0x49063c]
adc eax, 0xffffffff
and eax, 0xffffffff
add ebp, 3
mov edx, eax
mov al, byte [esi]
and al, dl
mov byte [edi], al
mov al, byte [esi + 1]
and al, dl
mov byte [edi + 1], al
mov al, byte [esi + 2]
and al, dl
mov byte [edi + 2], al
add esi, 3
add edi, 3
dec ecx
jne 0x437bd0
popal
popfd
ret
test ebx, 0x40000000
jne 0x437ce0
push ecx
push ebp
mov ebx, dword [0x490634]
mov ebp, 0x49068c
xor ecx, ecx
xor eax, eax
lea edx, [ebx + ecx]
inc ecx
sub edx, 0x100
adc eax, 0xffffffff
add ebp, 4
and edx, eax
cmp edx, 0x100
jbe 0x437c4c
mov edx, 0x100
mov eax, 0x100
mov dword [ebp], edx
sub eax, edx
cmp ecx, 0x100
mov dword [ebp + 0x400], eax
jb 0x437c2b
pop ebp
pop ecx
lea esp, [esp]
lea ecx, [ecx]
movzx edx, byte [ebp]
add ebp, 3
mov eax, dword [edx*4 + 0x490a90]
mov edx, dword [edx*4 + 0x490690]
mov dword [0x490638], eax
movzx eax, byte [esi]
movzx ebx, byte [ecx]
imul eax, edx
imul ebx, dword [0x490638]
add eax, ebx
inc ecx
mov byte [edi], ah
inc esi
inc edi
movzx eax, byte [esi]
movzx ebx, byte [ecx]
imul eax, edx
imul ebx, dword [0x490638]
add eax, ebx
inc ecx
mov byte [edi], ah
inc esi
inc edi
movzx eax, byte [esi]
movzx ebx, byte [ecx]
imul eax, edx
imul ebx, dword [0x490638]
add eax, ebx
inc ecx
mov byte [edi], ah
inc esi
inc edi
dec dword [0x490630]
jne 0x437c70
popal
popfd
ret
movzx edx, byte [ebp]
xor eax, eax
cmp edx, dword [0x49063c]
adc eax, 0xffffffff
and eax, 0xffffffff
add ebp, 3
mov edx, eax
not eax
mov dword [0x490638], eax
mov al, byte [esi]
mov bl, byte [ecx]
and al, dl
and bl, byte [0x490638]
add al, bl
mov byte [edi], al
mov al, byte [esi + 1]
mov bl, byte [ecx + 1]
and al, dl
and bl, byte [0x490638]
add al, bl
mov byte [edi + 1], al
mov al, byte [esi + 2]
mov bl, byte [ecx + 2]
and al, dl
and bl, byte [0x490638]
add al, bl
mov byte [edi + 2], al
add esi, 3
add edi, 3
add ecx, 3
dec dword [0x490630]
jne 0x437ce0
popal
popfd
ret
or ecx, ecx
jne 0x437e30
mov ecx, eax
test ebx, 0x40000000
jne 0x437df0
and ebx, 0x3fffffff
push eax
push ebp
mov ecx, 0xff
mov ebp, 0x49068c
lea edx, [ebx + ecx]
xor eax, eax
add edx, ebx
sub edx, 0x100
adc eax, 0xffffffff
add ebp, 4
and edx, eax
cmp edx, 0x100
jbe 0x437d9a
mov edx, 0x100
sub ecx, 1
mov dword [ebp], edx
jae 0x437d78
pop ebp
pop ecx
lea esp, [esp]
add eax, 0
movzx edx, byte [ebp]
add ebp, 3
mov edx, dword [edx*4 + 0x490690]
movzx eax, byte [esi]
imul eax, edx
mov byte [edi], ah
inc esi
inc edi
movzx eax, byte [esi]
imul eax, edx
mov byte [edi], ah
inc esi
inc edi
movzx eax, byte [esi]
imul eax, edx
mov byte [edi], ah
inc esi
inc edi
dec ecx
jne 0x437db0
popal
popfd
ret
movzx edx, byte [ebp]
xor eax, eax
xor edx, 0xff
cmp edx, dword [0x49063c]
adc eax, 0xffffffff
and eax, 0xffffffff
add ebp, 3
mov edx, eax
mov al, byte [esi]
and al, dl
mov byte [edi], al
mov al, byte [esi + 1]
and al, dl
mov byte [edi + 1], al
mov al, byte [esi + 2]
and al, dl
mov byte [edi + 2], al
add esi, 3
add edi, 3
dec ecx
jne 0x437df0
popal
popfd
ret
test ebx, 0x40000000
jne 0x437f00
push ecx
push ebp
mov ebx, dword [0x490634]
mov ecx, 0xff
mov ebp, 0x49068c
lea edx, [ebx + ecx]
xor eax, eax
sub edx, 0x100
adc eax, 0xffffffff
add ebp, 4
and edx, eax
cmp edx, 0x100
jbe 0x437e6e
mov edx, 0x100
mov eax, 0x100
mov dword [ebp], edx
sub eax, edx
sub ecx, 1
mov dword [ebp + 0x400], eax
jae 0x437e4e
pop ebp
pop ecx
lea esp, [esp]
lea esp, [esp]
movzx edx, byte [ebp]
add ebp, 3
mov eax, dword [edx*4 + 0x490a90]
mov edx, dword [edx*4 + 0x490690]
mov dword [0x490638], eax
movzx eax, byte [esi]
movzx ebx, byte [ecx]
imul eax, edx
imul ebx, dword [0x490638]
add eax, ebx
inc ecx
mov byte [edi], ah
inc esi
inc edi
movzx eax, byte [esi]
movzx ebx, byte [ecx]
imul eax, edx
imul ebx, dword [0x490638]
add eax, ebx
inc ecx
mov byte [edi], ah
inc esi
inc edi
movzx eax, byte [esi]
movzx ebx, byte [ecx]
imul eax, edx
imul ebx, dword [0x490638]
add eax, ebx
inc ecx
mov byte [edi], ah
inc esi
inc edi
dec dword [0x490630]
jne 0x437e90
popal
popfd
ret
movzx edx, byte [ebp]
xor eax, eax
xor edx, 0xff
cmp edx, dword [0x49063c]
adc eax, 0xffffffff
and eax, 0xffffffff
add ebp, 3
mov edx, eax
not eax
mov dword [0x490638], eax
mov al, byte [esi]
mov bl, byte [ecx]
and al, dl
and bl, byte [0x490638]
add al, bl
mov byte [edi], al
mov al, byte [esi + 1]
mov bl, byte [ecx + 1]
and al, dl
and bl, byte [0x490638]
add al, bl
mov byte [edi + 1], al
mov al, byte [esi + 2]
mov bl, byte [ecx + 2]
and al, dl
and bl, byte [0x490638]
add al, bl
mov byte [edi + 2], al
add esi, 3
add edi, 3
add ecx, 3
dec dword [0x490630]
jne 0x437f00
popal
popfd
ret
lea edx, [eax + eax*2]
pxor mm6, mm6
mov eax, 0xff
movd mm4, eax
mov eax, ebx
and ebx, 0x3fffffff
movd mm3, ebx
shr edx, 2
punpckldq mm3, mm3
punpckldq mm4, mm4
or eax, eax
js 0x4381f0
or ecx, ecx
jne 0x438050
test eax, 0x40000000
jne 0x438000
lea esp, [esp]
movd mm0, dword [ebp]
punpcklbw mm0, mm6
movq mm1, mm0
punpcklwd mm0, mm6
punpckhwd mm1, mm6
paddd mm0, mm3
paddd mm1, mm3
psubusw mm0, mm4
psubusw mm1, mm4
packuswb mm0, mm6
movd mm2, dword [esi]
packuswb mm1, mm6
psllq mm1, 0x20
punpcklbw mm2, mm6
por mm0, mm1
pmullw mm2, mm0
add ebp, 4
add esi, 4
add edi, 4
psrlw mm2, 8
dec edx
packuswb mm2, mm6
movd dword [edi - 4], mm2
jne 0x437fb0
emms
popal
popfd
ret
sub ebx, 0x100
neg ebx
movd mm3, ebx
punpcklwd mm3, mm3
punpckldq mm3, mm3
lea esp, [esp]
lea esp, [esp]
nop
movd mm0, dword [ebp]
movd mm1, dword [esi]
punpcklbw mm0, mm6
add ebp, 4
pcmpgtw mm0, mm3
punpcklbw mm1, mm6
add esi, 4
pand mm1, mm0
add edi, 4
packuswb mm1, mm6
dec edx
movd dword [edi - 4], mm1
jne 0x438020
emms
popal
popfd
ret
test eax, 0x40000000
jne 0x438150
mov eax, 0x1010101
cmp ecx, 0xffffffff
je 0x4380e0
lea esp, [esp]
movd mm5, eax
movd mm0, dword [ebp]
add ebp, 4
punpcklbw mm0, mm6
movq mm1, mm0
punpcklwd mm0, mm6
punpckhwd mm1, mm6
paddd mm0, mm3
paddd mm1, mm3
psubusw mm0, mm4
psubusw mm1, mm4
packuswb mm0, mm6
packuswb mm1, mm6
movd mm2, dword [esi]
psllq mm1, 0x20
movd mm7, dword [ecx]
por mm0, mm1
punpcklbw mm5, mm6
punpcklbw mm2, mm6
punpcklbw mm7, mm6
psllq mm5, 8
add esi, 4
psubusw mm5, mm0
pmullw mm2, mm0
pmullw mm7, mm5
add ecx, 4
add edi, 4
dec edx
paddusw mm2, mm7
psrlw mm2, 8
packuswb mm2, mm6
movd dword [edi - 4], mm2
jne 0x438070
emms
popal
popfd
ret
movd mm5, eax
movd mm0, dword [ebp]
movd mm2, dword [ebp + 4]
movd mm7, dword [ebp + 8]
add ebp, 0xc
punpcklbw mm0, mm6
movq mm1, mm0
punpcklwd mm0, mm6
punpckhwd mm1, mm6
paddd mm0, mm3
paddd mm1, mm3
psubusw mm0, mm4
psubusw mm1, mm4
packuswb mm0, mm6
packuswb mm1, mm6
psllq mm1, 0x20
por mm0, mm1
punpcklbw mm5, mm6
punpcklbw mm2, mm6
punpcklbw mm7, mm6
psllq mm5, 8
psubusw mm5, mm0
pmullw mm2, mm0
pmullw mm7, mm5
add edi, 4
dec edx
paddusw mm2, mm7
psrlw mm2, 8
packuswb mm2, mm6
movd dword [edi - 4], mm2
jne 0x4380e0
emms
popal
popfd
ret
sub ebx, 0x100
neg ebx
movd mm3, ebx
punpcklwd mm3, mm3
punpckldq mm3, mm3
cmp ecx, 0xffffffff
je 0x4381b0
lea esp, [esp]
lea ecx, [ecx]
movd mm0, dword [ebp]
add ebp, 4
punpcklbw mm0, mm6
movd mm1, dword [esi]
pcmpgtw mm0, mm3
movd mm2, dword [ecx]
punpcklbw mm1, mm6
punpcklbw mm2, mm6
pand mm1, mm0
add esi, 4
pandn mm0, mm2
add ecx, 4
paddw mm1, mm0
packuswb mm1, mm6
add edi, 4
dec edx
movd dword [edi - 4], mm1
jne 0x438170
emms
popal
popfd
ret
movd mm0, dword [ebp]
movd mm1, dword [ebp + 4]
movd mm2, dword [ebp + 8]
add ebp, 0xc
punpcklbw mm0, mm6
pcmpgtw mm0, mm3
punpcklbw mm1, mm6
punpcklbw mm2, mm6
pand mm1, mm0
add esi, 4
pandn mm0, mm2
add ecx, 4
paddw mm1, mm0
packuswb mm1, mm6
add edi, 4
dec edx
movd dword [edi - 4], mm1
jne 0x4381b0
emms
popal
popfd
ret
or ecx, ecx
jne 0x4382c0
test eax, 0x40000000
jne 0x438270
mov eax, 0xffffffff
movd mm5, eax
lea esp, [esp]
mov edi, edi
movd mm0, dword [ebp]
add ebp, 4
pxor mm0, mm5
punpcklbw mm0, mm6
movq mm1, mm0
punpcklwd mm0, mm6
punpckhwd mm1, mm6
paddd mm0, mm3
paddd mm1, mm3
psubusw mm0, mm4
psubusw mm1, mm4
packuswb mm0, mm6
packuswb mm1, mm6
movd mm2, dword [esi]
psllq mm1, 0x20
por mm0, mm1
punpcklbw mm2, mm6
pmullw mm2, mm0
add esi, 4
psrlw mm2, 8
add edi, 4
packuswb mm2, mm6
movd dword [edi - 4], mm2
dec edx
jne 0x438210
emms
popal
popfd
ret
sub ebx, 0x100
neg ebx
mov eax, 0xffffffff
movd mm3, ebx
movd mm5, eax
punpcklwd mm3, mm3
punpckldq mm3, mm3
lea esp, [esp]
movd mm0, dword [ebp]
movd mm1, dword [esi]
pxor mm0, mm5
add ebp, 4
punpcklbw mm0, mm6
pcmpgtw mm0, mm3
punpcklbw mm1, mm6
add esi, 4
pand mm1, mm0
add edi, 4
packuswb mm1, mm6
dec edx
movd dword [edi - 4], mm1
jne 0x438290
emms
popal
popfd
ret
test eax, 0x40000000
jne 0x4383c0
mov eax, 0x1010101
cmp ecx, 0xffffffff
je 0x438350
lea esp, [esp]
movd mm5, eax
movd mm0, dword [ebp]
add ebp, 4
pxor mm0, mm5
punpcklbw mm0, mm6
movq mm1, mm0
punpcklwd mm0, mm6
punpckhwd mm1, mm6
paddd mm0, mm3
paddd mm1, mm3
psubusw mm0, mm4
psubusw mm1, mm4
packuswb mm0, mm6
packuswb mm1, mm6
movd mm2, dword [esi]
psllq mm1, 0x20
movd mm7, dword [ecx]
punpcklbw mm5, mm6
por mm0, mm1
punpcklbw mm2, mm6
punpcklbw mm7, mm6
psllq mm5, 8
add esi, 4
psubusw mm5, mm0
pmullw mm2, mm0
pmullw mm7, mm5
add ecx, 4
add edi, 4
dec edx
paddusw mm2, mm7
psrlw mm2, 8
packuswb mm2, mm6
movd dword [edi - 4], mm2
jne 0x4382e0
emms
popal
popfd
ret
movd mm5, eax
movd mm0, dword [ebp]
movd mm2, dword [ebp + 4]
movd mm7, dword [ebp + 8]
add ebp, 0xc
pxor mm0, mm5
punpcklbw mm0, mm6
movq mm1, mm0
punpcklwd mm0, mm6
punpckhwd mm1, mm6
paddd mm0, mm3
paddd mm1, mm3
psubusw mm0, mm4
psubusw mm1, mm4
packuswb mm0, mm6
packuswb mm1, mm6
psllq mm1, 0x20
punpcklbw mm5, mm6
por mm0, mm1
punpcklbw mm2, mm6
punpcklbw mm7, mm6
psllq mm5, 8
psubusw mm5, mm0
pmullw mm2, mm0
pmullw mm7, mm5
add edi, 4
dec edx
paddusw mm2, mm7
psrlw mm2, 8
packuswb mm2, mm6
movd dword [edi - 4], mm2
jne 0x438350
emms
popal
popfd
ret
sub ebx, 0x100
neg ebx
mov eax, 0xffffffff
movd mm3, ebx
movd mm5, eax
punpcklwd mm3, mm3
punpckldq mm3, mm3
cmp ecx, 0xffffffff
je 0x438420
mov edi, edi
movd mm0, dword [ebp]
add ebp, 4
pxor mm0, mm5
punpcklbw mm0, mm6
movd mm1, dword [esi]
pcmpgtw mm0, mm3
movd mm2, dword [ecx]
punpcklbw mm1, mm6
punpcklbw mm2, mm6
pand mm1, mm0
add esi, 4
pandn mm0, mm2
add ecx, 4
paddw mm1, mm0
packuswb mm1, mm6
add edi, 4
dec edx
movd dword [edi - 4], mm1
jne 0x4383e0
emms
popal
popfd
ret
movd mm0, dword [ebp]
movd mm1, dword [ebp + 4]
movd mm2, dword [ebp + 8]
add ebp, 0xc
pxor mm0, mm5
punpcklbw mm0, mm6
pcmpgtw mm0, mm3
punpcklbw mm1, mm6
punpcklbw mm2, mm6
pand mm1, mm0
add esi, 4
pandn mm0, mm2
add ecx, 4
paddw mm1, mm0
packuswb mm1, mm6
add edi, 4
dec edx
movd dword [edi - 4], mm1
jne 0x438420
emms
popal
popfd
ret