Function at 0x437f30
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x10
mov dword [esp + 0xc], ecx
mov ebx, dword [esp + 0x24]
mov dword [esp + 4], 0
mov dword [esp], 0x55565768
xor eax, eax
movzx edx, byte [esp + eax]
mov ecx, eax
neg ecx
lea esi, [ecx + ecx]
and esi, 0xe1a6cac2
xor ecx, 0x8f2c9a9e
sub ecx, esi
inc ecx
xor ecx, edx
lea edx, [ecx + ecx]
mov esi, edx
not esi
and esi, 2
or edx, 0xfd
add edx, ecx
add edx, esi
add dl, 9
mov byte [esp + eax], dl
lea ecx, [eax + eax]
and ecx, 2
sub eax, ecx
inc eax
mov edx, eax
and edx, ecx
xor eax, ecx
lea eax, [eax + edx*2]
cmp eax, 4
jb 0x437f50
mov ebp, dword [esp]
mov esi, dword [0x448580]
test esi, esi
je 0x437ff6
xor ecx, ecx
mov edx, dword [0x448584]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edx + ecx*8], 0x67f3d776
je 0x437fd0
inc ecx
cmp esi, ecx
jne 0x437fc0
jmp 0x437ff6
mov edx, dword [edx + ecx*8 + 4]
cmp edx, ebp
je 0x437ff6
lea ecx, [esp + 4]
push ecx
push 0
push 0
push 5
push 0x10
push edx
push dword [0x448588]
call fcn.00439ae0
add esp, 0x1c
mov ebp, eax
mov dword [esp], 0x9c5b5a5d
xor eax, eax
nop
movzx ecx, byte [esp + eax]
lea edx, [eax + 0xd1]
and edx, ecx
mov esi, edx
and esi, 0xffffffd5
mov edi, edx
and edi, 2
or edx, 2
imul edx, edi
xor edi, 2
imul edi, esi
sub edx, eax
add edx, edi
add edx, 0x5841672f
mov esi, ecx
not esi
and esi, edx
not edx
and edx, ecx
sub edx, esi
mov ecx, edx
and ecx, 0x77
add ecx, ecx
xor edx, 0x88
sub ecx, edx
mov byte [esp + eax], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 4
jb 0x438000
mov edi, ebp
cmp ebp, dword [esp]
jne 0x4381d4
push dword [esp + 4]
call fcn.00437ee0
add esp, 4
mov ebp, dword [esp + 4]
mov dword [esp], 0x55565768
xor edx, edx
nop
nop
movzx ecx, byte [esp + edx]
mov edi, edx
neg edi
lea esi, [edi + edi]
and esi, 0xe1a6cac2
xor edi, 0x8f2c9a9e
sub edi, esi
inc edi
xor edi, ecx
lea ecx, [edi + edi]
mov esi, ecx
not esi
and esi, 2
or ecx, 0xfd
add ecx, edi
add ecx, esi
add cl, 9
mov byte [esp + edx], cl
lea ecx, [edx + edx]
and ecx, 2
sub edx, ecx
inc edx
mov esi, edx
and esi, ecx
xor edx, ecx
lea edx, [edx + esi*2]
cmp edx, 4
jb 0x438080
mov edi, dword [esp]
mov edx, dword [0x448580]
test edx, edx
je 0x438125
xor ecx, ecx
mov esi, dword [0x448584]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + ecx*8], 0x67f3d776
je 0x438100
inc ecx
cmp edx, ecx
jne 0x4380f0
jmp 0x438125
mov edx, dword [esi + ecx*8 + 4]
cmp edx, edi
je 0x438125
push 0
push ebp
push eax
push 5
push 0x10
push edx
push dword [0x448588]
mov esi, eax
call fcn.00439ae0
add esp, 0x1c
mov edi, eax
mov eax, esi
test edi, edi
js 0x4381cb
mov dword [esp], 0x782724c0
mov ecx, 0xedd18b4d
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x122e74b3]
xor edx, ecx
add edx, 0x9173a597
mov esi, edx
and esi, 1
xor edx, 1
lea edx, [edx + esi*2]
mov byte [esp + ecx + 0x122e74b3], dl
inc ecx
cmp ecx, 0xedd18b51
jne 0x438140
mov ecx, dword [esp]
mov dword [esp + 8], ecx
mov esi, dword [eax]
mov ecx, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [ecx + esi + 0x3c]
add ecx, esi
xor ebp, ebp
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, word [edx + ebp]
movzx edi, word [ebx + ebp]
test si, si
je 0x4381a5
add ebp, 2
cmp si, di
je 0x438190
cmp si, di
je 0x4381b6
mov esi, dword [ecx]
test esi, esi
jne 0x438180
mov edi, dword [esp + 8]
jmp 0x4381cb
mov edx, dword [ecx + 0x44]
mov esi, dword [esp + 0xc]
mov dword [esi + 8], edx
mov ecx, dword [ecx + 0xdc]
mov dword [esi + 0xc], ecx
xor edi, edi
push eax
call fcn.00437f00
add esp, 4
mov eax, edi
add esp, 0x10
pop esi
pop edi
pop ebx
pop ebp
ret 4