Function at 0x437a90
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x18
mov dword [esp + 8], ecx
cmp dword [ecx + 8], 0
je 0x437b23
mov eax, dword [esp + 8]
mov ecx, dword [eax]
test ecx, ecx
je 0x437b23
mov esi, dword [ebp + 8]
mov dword [esp], 0x2b2c2d2e
mov eax, 0x6648b569
nop
movzx edx, byte [esp + eax - 0x6648b569]
mov ebx, edx
and ebx, eax
add bl, bl
sub dl, bl
movzx edx, dl
add edx, eax
add dl, 0xb8
mov byte [esp + eax - 0x6648b569], dl
inc eax
cmp eax, 0x6648b56d
jne 0x437ac0
mov eax, dword [esp]
mov ebx, dword [0x447604]
test ebx, ebx
je 0x437bad
mov edx, esi
xor edi, edi
mov esi, dword [0x447608]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edi*8], 0xddb7c3f3
je 0x437b92
inc edi
cmp ebx, edi
jne 0x437b10
jmp 0x437bad
mov dword [esp], 0x39f8f7fe
xor eax, eax
xor ecx, ecx
nop
nop
movzx esi, byte [esp + ecx]
mov edi, eax
and edi, 4
mov edx, ecx
xor edx, 0xa53c73c6
add edx, edi
mov edi, edx
and edi, esi
add edx, esi
add edi, edi
sub edx, edi
mov edi, edx
and edi, 0xd61c61cf
xor edx, 0xd61c61cf
lea esi, [edx + edi*2]
mov ebx, esi
not ebx
or ebx, 1
add esi, ebx
inc esi
lea edi, [edx + edi*2]
inc edi
add esi, esi
add edx, edx
and edx, 2
sub edi, edx
mov edx, esi
and edx, edi
xor edi, esi
lea edx, [edi + edx*2]
mov byte [esp + ecx], dl
inc ecx
add eax, 2
cmp ecx, 4
jne 0x437b30
mov eax, dword [esp]
jmp 0x437d18
mov esi, dword [esi + edi*8 + 4]
cmp esi, eax
je 0x437bad
push edx
push ecx
push 8
push esi
push dword [0x44760c]
call fcn.00439030
add esp, 0x14
mov esi, dword [ebp + 0xc]
test esi, esi
je 0x437c7a
cmp eax, 0xc000010a
jne 0x437c7a
mov ecx, 0xffffd8f0
mov eax, esi
mul ecx
sub edx, esi
mov dword [esp], eax
mov dword [esp + 4], edx
mov eax, dword [esp + 8]
mov ebx, dword [eax]
mov dword [esp + 0xc], 0x2b2c2d2e
mov eax, 0x6648b569
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0x6648b55d]
mov ecx, edx
and ecx, eax
add cl, cl
sub dl, cl
movzx ecx, dl
add ecx, eax
add cl, 0xb8
mov byte [esp + eax - 0x6648b55d], cl
inc eax
cmp eax, 0x6648b56d
jne 0x437bf0
xor edi, edi
cmp esi, 0xffffffff
je 0x437c20
mov edi, esp
mov eax, dword [esp + 0xc]
mov esi, dword [0x447604]
test esi, esi
je 0x437c7a
mov dword [esp + 0x10], ebx
xor ebx, ebx
mov edx, dword [0x447608]
nop
nop
nop
nop
nop
nop
cmp dword [edx + ebx*8], 0xa67d73aa
je 0x437c5a
mov ecx, ebx
and ecx, 1
xor ebx, 1
lea ebx, [ebx + ecx*2]
cmp ebx, esi
jb 0x437c40
jmp 0x437c7a
mov edx, dword [edx + ebx*8 + 4]
cmp edx, eax
je 0x437c7a
push edi
push 0
push dword [esp + 0x18]
push 0xc
push edx
push dword [0x44760c]
call fcn.00439030
add esp, 0x18
test eax, eax
js 0x437d18
mov ecx, dword [esp + 8]
mov edx, dword [ecx]
test edx, edx
je 0x437d18
mov dword [esp], 0x2b2c2d2e
mov esi, 0x6648b569
nop
nop
nop
nop
movzx ebx, byte [esp + esi - 0x6648b569]
mov ecx, ebx
and ecx, esi
add cl, cl
sub bl, cl
movzx ecx, bl
add ecx, esi
add cl, 0xb8
mov byte [esp + esi - 0x6648b569], cl
inc esi
cmp esi, 0x6648b56d
jne 0x437ca0
mov esi, dword [0x447604]
test esi, esi
je 0x437d0e
mov ecx, dword [esp]
xor ebx, ebx
mov edi, dword [0x447608]
nop
nop
nop
cmp dword [edi + ebx*8], 0xb430e561
je 0x437cf0
inc ebx
cmp esi, ebx
jne 0x437ce0
jmp 0x437d0e
mov esi, dword [edi + ebx*8 + 4]
cmp esi, ecx
je 0x437d0e
push edx
push 4
push esi
push dword [0x44760c]
mov edi, eax
call fcn.00439030
mov eax, edi
add esp, 0x10
mov ecx, dword [esp + 8]
mov dword [ecx], 0
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 8