Function at 0x437b20
Capabilities:
Encode data using xor

Disassembly:
push ebx
push esi
sub esp, 0x2c
mov dword [esp + 0x20], 0xe1262724
mov byte [esp + 0x24], 0
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 4
ja 0x437b8e
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
movzx ecx, byte [esp + ecx + 0x20]
mov edx, eax
xor edx, 0x9cc128f9
and eax, 0x1cc128f9
lea eax, [edx + eax*2]
xor eax, ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 0x23
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0x20], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 5
jb 0x437b50
mov dword [esp + 4], 0xe1262724
mov byte [esp + 8], 0
mov dword [esp + 0x18], 0
mov eax, dword [esp + 0x18]
cmp eax, 4
ja 0x437bee
nop
nop
nop
nop
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x18]
movzx ecx, byte [esp + ecx + 4]
mov edx, eax
xor edx, 0x9cc128f9
and eax, 0x1cc128f9
lea eax, [edx + eax*2]
xor eax, ecx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
add al, 0x23
mov ecx, dword [esp + 0x18]
mov byte [esp + ecx + 4], al
inc dword [esp + 0x18]
mov eax, dword [esp + 0x18]
cmp eax, 5
jb 0x437bb0
mov eax, dword [esp + 4]
xor ecx, ecx
cpuid
mov dword [esp + 0x28], 0xc5d1d4c2
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 3
ja 0x437c4e
nop
mov eax, dword [esp + 4]
mov edx, dword [esp + 4]
movzx edx, byte [esp + edx + 0x28]
mov esi, eax
xor esi, 0x66b5c91a
and eax, 0xe6b5c91a
lea eax, [esi + eax*2]
xor eax, edx
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
add al, 0x7e
mov edx, dword [esp + 4]
mov byte [esp + edx + 0x28], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 4
jb 0x437c10
cmp ecx, dword [esp + 0x28]
je 0x437dbb
mov dword [esp + 0x20], 0x988a8287
mov dword [esp + 0x24], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 7
ja 0x437cca
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x20]
mov esi, eax
xor esi, 0x28fb8bce
and eax, 0x28fb8bce
lea eax, [esi + eax*2]
lea esi, [eax + edx]
and eax, edx
mov edx, esi
not edx
and edx, eax
add edx, eax
not eax
and eax, esi
sub eax, edx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0xfa
mov edx, dword [esp]
mov byte [esp + edx + 0x20], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 8
jb 0x437c80
cmp ecx, dword [esp + 0x20]
je 0x437dbb
mov dword [esp + 4], 0xe6ecfc82
mov dword [esp + 8], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 7
ja 0x437d45
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 4]
mov esi, eax
xor esi, 0x2be3c944
and eax, 0x2be3c944
lea eax, [esi + eax*2]
xor eax, edx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
mov edx, eax
not edx
and edx, 0x54
and eax, 0xab
sub eax, edx
mov edx, dword [esp]
mov byte [esp + edx + 4], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 8
jb 0x437d00
cmp ecx, dword [esp + 4]
je 0x437dbb
mov dword [esp + 0x10], 0x3b2d4356
mov word [esp + 0x14], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 5
ja 0x437db5
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x10]
mov esi, eax
xor esi, 0xdffae0e0
and eax, 0xdffae0e0
lea eax, [esi + eax*2]
xor eax, edx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
mov edx, eax
not edx
and edx, 0x60
and eax, 0x9f
sub eax, edx
mov edx, dword [esp]
mov byte [esp + edx + 0x10], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 6
jb 0x437d70
cmp ecx, dword [esp + 0x10]
jne 0x437dc3
mov al, 1
add esp, 0x2c
pop esi
pop ebx
ret
mov dword [esp + 0x18], 0x7242484f
mov byte [esp + 0x1c], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 4
ja 0x437e23
nop
mov eax, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x18]
mov esi, eax
xor esi, 0x117682db
and eax, 0x117682db
lea eax, [esi + eax*2]
xor eax, edx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
mov edx, eax
xor edx, 0x47
and eax, 0x38
add eax, eax
sub eax, edx
mov edx, dword [esp]
mov byte [esp + edx + 0x18], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 5
jb 0x437de0
cmp ecx, dword [esp + 0x18]
sete al
jmp 0x437dbd