Function at 0x4371e0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x68
mov dword [esp + 0x20], 0xebaaadac
mov dword [esp + 0x24], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x2b], 0
xor eax, eax
xor ecx, ecx
movzx esi, byte [esp + ecx + 0x20]
mov edx, eax
and edx, 0x14
mov edi, ecx
xor edi, 0x54a4c2ba
add edi, edx
xor edi, esi
mov dword [esp + 8], edi
mov ebx, dword [esp + 8]
add bl, 0xea
mov byte [esp + ecx + 0x20], bl
lea esi, [ecx + 1]
cmp esi, 0xf
je 0x437266
lea edi, [esi - 1]
xor edi, 0x54a4c2bb
add edx, edi
movzx edi, byte [esp + ecx + 0x21]
xor edx, edi
mov dword [esp + 8], edx
mov edx, dword [esp + 8]
add dl, 0xea
mov byte [esp + ecx + 0x21], dl
add eax, 4
inc esi
mov ecx, esi
jmp 0x437210
mov dword [esp + 8], 0xebaaadac
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x13], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx + 8]
mov edx, eax
and edx, 0x14
mov edi, ecx
xor edi, 0x54a4c2ba
add edi, edx
xor edi, esi
mov dword [esp + 0x30], edi
mov ebx, dword [esp + 0x30]
add bl, 0xea
mov byte [esp + ecx + 8], bl
lea esi, [ecx + 1]
cmp esi, 0xf
je 0x4372e6
lea edi, [esi - 1]
xor edi, 0x54a4c2bb
add edx, edi
movzx edi, byte [esp + ecx + 9]
xor edx, edi
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x30]
add dl, 0xea
mov byte [esp + ecx + 9], dl
add eax, 4
inc esi
mov ecx, esi
jmp 0x437290
mov eax, dword [esp + 8]
xor ecx, ecx
cpuid
mov dword [esp + 0x20], 0x95a9ac96
mov dword [esp + 0x24], 0
mov dword [esp + 0x28], 0
mov word [esp + 0x2c], 0
mov eax, 0x71f402b0
mov edx, 0x8e0bfd4f
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + eax - 0x71f40290]
lea esi, [ebx + ebx]
not esi
add esi, ebx
and esi, 0xb28c0c72
and ebx, 0xffffff8d
or ebx, esi
mov esi, edx
and esi, 0x80080c02
mov edi, eax
and edi, 0x41f002bd
or edi, esi
xor edi, ebx
xor edi, 0x2800070
mov dword [esp + 8], edi
mov ebx, dword [esp + 8]
add bl, 0x30
mov byte [esp + eax - 0x71f40290], bl
inc eax
dec edx
cmp eax, 0x71f402be
jne 0x437320
cmp ecx, dword [esp + 0x20]
je 0x437591
mov dword [esp + 0x18], ecx
mov dword [esp + 8], 0x2e182c2b
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov word [esp + 0x14], 0
mov edi, 0x74f146f1
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + edi - 0x74f146e9]
mov dword [esp + 4], ecx
mov eax, ecx
not eax
or eax, edi
lea edx, [ecx + eax]
inc edx
mov ecx, edx
or ecx, 0xfffffffd
mov esi, edx
and esi, 2
mov dword [esp + 0x1c], esi
mov eax, edx
xor eax, 0xfffffffd
neg eax
add eax, esi
add eax, 0xfffffffd
mov esi, eax
and esi, ecx
mov ebx, ecx
or ecx, eax
not ecx
imul ecx, esi
not ebx
mov esi, eax
and esi, ebx
or ebx, eax
imul ebx, esi
or edx, 2
imul edx, dword [esp + 0x1c]
add edx, ebx
add edx, ecx
mov ecx, dword [esp + 4]
add ecx, edi
mov eax, edx
xor eax, ecx
not edx
and edx, ecx
add edx, edx
sub edx, eax
mov dword [esp], edx
mov eax, dword [esp]
add al, 0x69
mov byte [esp + edi - 0x74f146e9], al
inc edi
cmp edi, 0x74f146ff
jne 0x4373b0
mov ebx, dword [esp + 0x18]
cmp ebx, dword [esp + 8]
je 0x437591
mov dword [esp + 0x30], 0x4e546472
mov dword [esp + 0x34], 0
mov byte [esp + 0x38], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x30]
mov ecx, edx
not ecx
mov edi, ecx
and edi, 0x80860308
mov esi, edx
and esi, 0x47
or esi, edi
mov edi, 0x7a39fcbf
sub edi, eax
and ecx, 0x3a189436
and edx, 0xffffff89
or edx, ecx
xor edx, 0x40216889
and edx, edi
and edi, 0x948d
mov ecx, eax
and ecx, 2
or ecx, edi
xor esi, 0x80860308
xor ecx, 0x85c697cd
and ecx, esi
or edx, ecx
not edx
mov dword [esp], edx
mov ecx, dword [esp]
mov edx, ecx
not edx
lea edx, [ecx + edx*2]
inc edx
and edx, 0xc0
and ecx, 0x3f
sub ecx, edx
mov byte [esp + eax + 0x30], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 9
jb 0x437460
cmp ebx, dword [esp + 0x30]
je 0x437591
mov dword [esp + 0x50], 0xabb1e3c8
mov dword [esp + 0x58], 0
mov dword [esp + 0x54], 0
mov eax, 0x8cca7b59
mov edx, 0x733584a6
mov esi, 0xe66b094c
nop
mov dword [esp + 4], edx
mov ecx, esi
and ecx, 0x76
xor ecx, 0x190032f6
mov edi, dword [esp + 4]
and edi, 0x2335003b
mov ebx, eax
and ebx, 0x804a6204
or ebx, edi
lea edx, [ecx + ebx]
add ecx, ebx
add ecx, 0x733584a7
mov ebx, 0x58
sub ebx, edx
lea edi, [edx*2 - 0x1994f6b2]
sub edi, edx
movzx edx, byte [esp + eax + 0x733584f7]
add edi, 0x59
and edi, edx
and ebx, edx
xor ecx, edx
add ecx, edx
sub ecx, ebx
not edi
and edi, ecx
mov dword [esp], edi
mov edx, dword [esp + 4]
mov ecx, dword [esp]
add cl, 0xa3
mov byte [esp + eax + 0x733584f7], cl
inc eax
dec edx
add esi, 0xfffffffe
cmp eax, 0x8cca7b65
jne 0x437510
mov eax, dword [esp + 0x18]
cmp eax, dword [esp + 0x50]
jne 0x43759b
mov al, 1
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [esp + 0x40], 0x46726c6d
mov dword [esp + 0x44], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x4c], 0
xor esi, esi
nop
nop
nop
movzx ebx, byte [esp + esi + 0x40]
mov eax, esi
xor eax, 0xb68a81e3
mov ecx, esi
xor ecx, 0x49757e1c
mov edi, esi
or edi, 3
and edi, ecx
mov ecx, edi
and ecx, 0xd
mov edx, esi
and edx, 2
or edi, 2
imul edi, edx
xor edx, 2
imul edx, ecx
add edx, eax
lea eax, [edx + edi]
mov dword [esp + 4], eax
lea ecx, [edi + edx]
inc ecx
mov edx, ebx
mov eax, ebx
not eax
or eax, ecx
add ebx, eax
mov dword [esp + 0x1c], edx
mov ecx, 0xfffffffe
sub ecx, ebx
mov edi, ecx
mov ebx, ecx
and ecx, 0x1feb19bb
add eax, edx
inc eax
mov edx, eax
and edx, 0xe014e644
or edx, ecx
or edi, 2
inc edi
and ebx, 2
imul edi, ebx
xor ebx, 2
or ebx, edx
mov edx, ebx
xor edx, 0x1feb19b9
and eax, 2
mov ecx, edx
or ecx, eax
not ebx
and ebx, eax
imul ecx, eax
not eax
and eax, edx
imul eax, ebx
add eax, ecx
sub edi, eax
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x1c]
add eax, ecx
inc eax
add eax, edi
mov dword [esp], eax
mov eax, dword [esp]
mov ecx, eax
and ecx, 0xc3
or eax, 0xc3
add eax, ecx
inc al
mov byte [esp + esi + 0x40], al
inc esi
cmp esi, 0x10
jne 0x4375c0
mov eax, dword [esp + 0x18]
cmp eax, dword [esp + 0x40]
sete al
jmp 0x437593