Function at 0x436470
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x20
cmp dword [ecx + 8], 0
je 0x4364fa
mov edx, dword [ecx]
test edx, edx
je 0x4364fa
mov edi, dword [ebp + 0x10]
mov dword [esp + 4], 0xc0c7c6c5
mov word [esp + 8], 0
mov byte [esp + 0xa], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ebx, eax
add bl, 0xb1
xor bl, byte [esp + eax + 4]
add bl, 0x8b
mov byte [esp + eax + 4], bl
inc eax
cmp eax, 7
jne 0x4364b0
mov eax, dword [esp + 4]
mov ebx, dword [0x44a8e4]
test ebx, ebx
je 0x4365de
xor edi, edi
mov esi, dword [0x44a8e8]
cmp dword [esi + edi*8], 0x2dedf0b8
je 0x4365ba
inc edi
cmp ebx, edi
jne 0x4364e0
mov edi, dword [ebp + 0x10]
jmp 0x4365de
mov dword [esp + 4], 0xa1e6e7fc
mov word [esp + 8], 0
xor eax, eax
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 4]
lea esi, [eax + 0x6f0cda29]
mov edi, 0x10f325d6
sub edi, eax
or edi, ecx
mov edx, 0x16
sub edx, eax
and edx, ecx
xor edx, edi
and edx, esi
mov esi, edx
and esi, 0x3d
mov edi, edx
and edi, 2
or edx, 2
imul edx, edi
xor edi, 2
imul edi, esi
sub edx, eax
mov esi, 0x28
sub esi, edx
sub esi, edi
add edx, edi
add edx, 0x90f325d7
and esi, ecx
not ecx
and ecx, edx
sub esi, ecx
mov ecx, 2
sub ecx, esi
sub ecx, esi
mov edi, 0x4d
sub edi, esi
lea edx, [esi + 0x32]
and edi, 0x71
and edx, 0x8e
or edx, edi
or ecx, 0xfd
xor edx, 0x8f
add edx, ecx
mov cl, 0xfe
sub cl, dl
mov byte [esp + eax + 4], cl
mov ecx, eax
not ecx
or ecx, 1
add ecx, eax
xor eax, 1
lea eax, [eax + ecx*2]
add eax, 2
cmp eax, 6
jb 0x436510
mov eax, dword [esp + 4]
jmp 0x43673b
mov esi, dword [esi + edi*8 + 4]
cmp esi, eax
mov edi, dword [ebp + 0x10]
je 0x4365de
push dword [ebp + 8]
push edx
push 2
push esi
push dword [0x44a8ec]
mov esi, ecx
call fcn.004390d0
mov ecx, esi
add esp, 0x14
mov esi, dword [ebp + 0xc]
cmp esi, 1
mov edx, edi
sbb edx, 0
jl 0x436695
cmp eax, 0xc000010a
jne 0x436695
mov edx, 0xffffd8f0
mov eax, esi
mul edx
sub edx, esi
imul esi, edi, 0xffffd8f0
add esi, edx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], esi
mov edx, dword [ecx]
mov dword [esp + 4], 0xc0c7c6c5
mov word [esp + 8], 0
mov byte [esp + 0xa], 0
xor eax, eax
nop
nop
nop
mov ebx, eax
add bl, 0xb1
xor bl, byte [esp + eax + 4]
add bl, 0x8b
mov byte [esp + eax + 4], bl
inc eax
cmp eax, 7
jne 0x436630
mov eax, dword [esp + 4]
mov esi, dword [0x44a8e4]
test esi, esi
je 0x436695
xor edi, edi
mov ebx, dword [0x44a8e8]
nop
nop
nop
nop
cmp dword [ebx + edi*8], 0x4e66b5a3
je 0x436670
inc edi
cmp esi, edi
jne 0x436660
jmp 0x436695
mov esi, dword [ebx + edi*8 + 4]
cmp esi, eax
je 0x436695
lea eax, [esp + 0x10]
push eax
push 0
push edx
push 3
push esi
push dword [0x44a8ec]
mov esi, ecx
call fcn.004390d0
mov ecx, esi
add esp, 0x18
test eax, eax
js 0x43673b
mov edx, dword [ecx]
test edx, edx
je 0x43673b
mov dword [esp + 0xc], edx
mov dword [esp + 4], 0xc0c7c6c5
mov word [esp + 8], 0
mov byte [esp + 0xa], 0
xor ebx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, ebx
add dl, 0xb1
xor dl, byte [esp + ebx + 4]
add dl, 0x8b
mov byte [esp + ebx + 4], dl
inc ebx
cmp ebx, 7
jne 0x4366d0
mov esi, dword [0x44a8e4]
test esi, esi
je 0x436735
mov edx, dword [esp + 4]
xor ebx, ebx
mov edi, dword [0x44a8e8]
nop
nop
nop
nop
cmp dword [edi + ebx*8], 0xb62b8d10
je 0x436710
inc ebx
cmp esi, ebx
jne 0x436700
jmp 0x436735
mov esi, dword [edi + ebx*8 + 4]
cmp esi, edx
je 0x436735
push dword [esp + 0xc]
push 1
push esi
push dword [0x44a8ec]
mov esi, ecx
mov edi, eax
call fcn.004390d0
mov eax, edi
mov ecx, esi
add esp, 0x10
mov dword [ecx], 0
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0xc