Function at 0x436221
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0xcf2552
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xcc
mov dword [ebp - 0x10], esp
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x14], ebx
mov edx, dword [ebp + 0x10]
movsx eax, byte [edx + 0x15]
mov dword [ebp - 0x20], ecx
test eax, eax
je 0x43634c
push 0xd27f00
lea ecx, [ebp - 0x64]
call fcn.004356e5
mov dword [ebp - 4], 0
lea ecx, [ebp - 0x8c]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], ecx
call 0xce969e
mov dword [ebp - 4], 1
mov dword [ebp - 0x8c], 0xe442a8
lea esi, [ebp - 0x80]
xor eax, eax
mov dword [ebp - 0x68], 0xf
mov dword [ebp - 0x6c], eax
mov byte [ebp - 0x7c], al
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x30], esi
test ebx, ebx
lea edi, [ebp - 0x64]
mov dword [ebp - 0x2c], edi
mov dword [ebp - 0x28], eax
jae 0x4362c0
call 0xd1c242
mov ebx, dword [ebp - 0x50]
lea eax, [ebp - 0x80]
lea edx, [ebp - 0x64]
cmp ebx, 0xffffffff
jbe 0x4362d0
mov ebx, 0xffffffff
mov dword [ebp - 0x3c], ebx
cmp eax, edx
je 0x4367e9
mov dword [ebp - 0x40], ebx
cmp ebx, 0xfffffffe
jbe 0x4362eb
call 0xd1c203
mov ebx, dword [ebp - 0x40]
mov esi, dword [ebp - 0x68]
cmp esi, ebx
jb 0x4366e1
test ebx, ebx
je 0x4366c2
test ebx, ebx
ja 0x43665f
mov dword [ebp - 4], 0
push 0xe4a780
mov eax, dword [ebp - 0x38]
lea edx, [ebp - 0x8c]
mov dword [eax], 0xe442cc
push edx
call 0xce991b
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x4c]
cmp eax, 0x10
jae 0x436651
mov edx, dword [ebp + 0x10]
mov dword [ebp - 0x4c], 0xf
xor eax, eax
mov dword [ebp - 0x50], eax
mov byte [ebp - 0x60], al
mov eax, dword [ebp + 0xc]
mov ebx, edx
test eax, eax
je 0x436d00
movsx eax, byte [edx + 0x15]
test eax, eax
je 0x436368
call 0xce9685
jmp 0x4363a0
mov eax, dword [edx + 8]
movsx ecx, byte [eax + 0x15]
test ecx, ecx
je 0x436387
mov ecx, dword [edx + 4]
movsx eax, byte [ecx + 0x15]
test eax, eax
je 0x4368d0
mov dword [ebp + 0x10], ecx
jmp 0x4363a0
mov edx, dword [eax]
movsx ecx, byte [edx + 0x15]
test ecx, ecx
jne 0x43639d
mov eax, dword [eax]
mov edx, dword [eax]
movsx ecx, byte [edx + 0x15]
test ecx, ecx
je 0x436391
mov dword [ebp + 0x10], eax
mov eax, dword [ebx]
movsx edx, byte [eax + 0x15]
mov edi, ebx
test edx, edx
je 0x4363b1
mov esi, dword [ebx + 8]
jmp 0x4363c6
mov edx, dword [ebx + 8]
movsx ecx, byte [edx + 0x15]
test ecx, ecx
je 0x4363c0
mov esi, eax
jmp 0x4363c6
mov edi, dword [ebp + 0x10]
mov esi, dword [edi + 8]
cmp edi, ebx
je 0x436c20
mov dword [eax + 4], edi
mov eax, dword [ebx]
mov dword [edi], eax
cmp edi, dword [ebx + 8]
jne 0x4363de
mov ecx, edi
jmp 0x4363fb
mov ecx, dword [edi + 4]
movsx eax, byte [esi + 0x15]
test eax, eax
je 0x436c18
mov dword [ecx], esi
mov eax, dword [ebx + 8]
mov dword [edi + 8], eax
mov edx, dword [ebx + 8]
mov dword [edx + 4], edi
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x24], eax
mov eax, dword [eax + 4]
cmp ebx, dword [eax + 4]
je 0x436c10
mov eax, dword [ebx + 4]
cmp ebx, dword [eax]
je 0x436419
mov dword [eax + 8], edi
jmp 0x43641b
mov dword [eax], edi
mov eax, dword [ebx + 4]
mov dword [edi + 4], eax
movzx eax, byte [edi + 0x14]
movzx edx, byte [ebx + 0x14]
mov byte [edi + 0x14], dl
mov byte [ebx + 0x14], al
movsx eax, byte [ebx + 0x14]
cmp eax, 1
je 0x4368f7
push ebx
call 0xce7f16
pop ecx
mov edx, dword [ebp - 0x20]
mov eax, dword [edx + 8]
test eax, eax
je 0x436453
add eax, 0xffffffff
mov dword [edx + 8], eax
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x10]
mov edi, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x18]
mov ebx, dword [ebp - 0x14]
mov dword [eax], edx
mov dword [eax + 4], ecx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret 0xc
mov edx, dword [ebp - 0x94]
test edx, edx
ja 0x43656c
mov edx, dword [ebp - 0x98]
mov eax, dword [edx + 0x18]
cmp eax, 0x10
jae 0x436558
mov dword [edx + 0x18], 0xf
mov eax, dword [ebp - 0x98]
mov dword [eax + 0x14], 0
mov eax, dword [ebp - 0x98]
mov edx, dword [eax + 0x18]
cmp edx, 0x10
jb 0x4364fd
mov eax, dword [eax + 4]
jmp 0x436500
add eax, 4
mov ecx, dword [ebp - 0xa0]
mov byte [eax], 0
mov edx, dword [ebp - 0x98]
mov eax, dword [ebp - 0x9c]
mov dword [edx + 4], eax
mov ebx, dword [ebp - 0x98]
mov dword [ebx + 0x18], ecx
mov edi, dword [ebp - 0x98]
mov esi, dword [ebp - 0x94]
mov dword [edi + 0x14], esi
mov edx, dword [ebp - 0x98]
mov eax, dword [edx + 0x18]
cmp eax, 0x10
jb 0x436543
mov edx, dword [edx + 4]
jmp 0x436546
add edx, 4
mov eax, dword [ebp - 0x94]
mov byte [edx + eax], 0
mov ebx, dword [ebp - 0x40]
jmp 0x4362fe
push dword [edx + 4]
call 0xce7f16
pop ecx
mov edx, dword [ebp - 0x98]
jmp 0x4364d6
mov ecx, dword [ebp - 0x98]
mov eax, dword [ecx + 0x18]
cmp eax, 0x10
jb 0x43657f
mov ecx, dword [ecx + 4]
jmp 0x436582
add ecx, 4
mov ebx, dword [ebp - 0xa0]
movzx eax, byte [ebp - 0xb4]
mov byte [ebp - 0xb8], al
push edx
add ebx, 1
push ecx
push ebx
push dword [ebp - 0x9c]
call 0xce9965
add esp, 0x10
jmp 0x4364c4
push dword [ebp - 0x60]
call 0xce7f16
pop ecx
jmp 0x43633a
mov ebx, dword [ebp - 0x30]
mov ecx, dword [ebx + 0x18]
cmp ecx, 0x10
jb 0x43666f
mov ebx, dword [ebx + 4]
jmp 0x436672
add ebx, 4
mov edx, dword [ebp - 0x2c]
mov eax, dword [edx + 0x18]
cmp eax, 0x10
jb 0x436682
mov edx, dword [edx + 4]
jmp 0x436685
add edx, 4
add edx, dword [ebp - 0x28]
push dword [ebp - 0x3c]
movzx eax, byte [ebp - 0x44]
mov byte [ebp - 0x48], al
push edx
push ecx
push ebx
call 0xce9965
add esp, 0x10
mov ecx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x30]
mov dword [eax + 0x14], ecx
mov eax, dword [ebp - 0x30]
mov edx, dword [eax + 0x18]
cmp edx, 0x10
jb 0x4366b6
mov eax, dword [eax + 4]
jmp 0x4366b9
add eax, 4
mov byte [eax + ecx], 0
jmp 0x436306
mov dword [ebp - 0x6c], 0
cmp esi, 0x10
jb 0x4366d3
mov eax, dword [ebp - 0x7c]
jmp 0x4366d6
lea eax, [ebp - 0x7c]
mov byte [eax], 0
mov ebx, dword [ebp - 0x40]
jmp 0x4362fe
mov edx, dword [ebp - 0x6c]
mov dword [ebp - 0xac], ebx
mov ecx, ebx
lea eax, [ebp - 0x80]
or ecx, 0xf
cmp ecx, 0xfffffffe
mov dword [ebp - 0x98], eax
mov dword [ebp - 0x94], edx
mov dword [ebp - 0xb0], ecx
mov dword [ebp - 0xa0], ecx
jbe 0x43671d
mov dword [ebp - 0xb0], ebx
mov dword [ebp - 0xa0], ebx
jmp 0x436734
mov ebx, ecx
mov ecx, esi
shr ecx, 1
mov eax, 0xaaaaaaab
mul ebx
shr edx, 1
cmp ecx, edx
ja 0x4367c6
mov dword [ebp - 0x9c], 0
mov dword [ebp - 4], 2
mov eax, dword [ebp - 0xb0]
add eax, 1
mov dword [ebp - 0xb0], eax
jne 0x436760
xor eax, eax
mov dword [ebp - 0xb0], eax
jmp 0x4367a7
mov ecx, eax
xor edx, edx
mov eax, 0xffffffff
div ecx
cmp eax, 1
jae 0x4367a7
mov dword [ebp - 0xbc], 0
lea eax, [ebp - 0xbc]
push eax
lea ecx, [ebp - 0xcc]
call 0xce96af
mov dword [ebp - 0xcc], 0xe40cb4
lea eax, [ebp - 0xcc]
push 0xe4a720
push eax
call 0xce991b
mov eax, dword [ebp - 0xb0]
push eax
call 0xce7eac
pop ecx
mov dword [ebp - 0x9c], eax
mov dword [ebp - 4], 1
jmp 0x4364b6
mov eax, ecx
neg eax
add eax, 0xfffffffe
cmp esi, eax
ja 0x436734
lea eax, [esi + ecx]
mov dword [ebp - 0xb0], eax
mov dword [ebp - 0xa0], eax
jmp 0x436734
mov edx, dword [ebp - 0x6c]
cmp edx, ebx
jae 0x4367f8
call 0xd1c242
mov edx, dword [ebp - 0x6c]
mov eax, edx
sub eax, ebx
cmp eax, 0xffffffff
mov esi, eax
jb 0x436808
mov esi, 0xffffffff
test esi, esi
ja 0x436879
test edx, edx
jae 0x436818
call 0xd1c242
mov edx, dword [ebp - 0x6c]
test edx, edx
mov ebx, edx
jb 0x436823
mov ebx, 0
test ebx, ebx
jbe 0x436306
mov ecx, dword [ebp - 0x68]
cmp ecx, 0x10
jb 0x43683b
mov esi, dword [ebp - 0x7c]
mov eax, dword [ebp - 0x7c]
jmp 0x436841
lea esi, [ebp - 0x7c]
lea eax, [ebp - 0x7c]
mov byte [ebp - 0xa8], 0
add eax, ebx
sub edx, ebx
push edx
push eax
push ecx
push esi
call 0xce99e0
add esp, 0x10
mov edx, dword [ebp - 0x6c]
mov eax, dword [ebp - 0x68]
sub edx, ebx
mov dword [ebp - 0x6c], edx
cmp eax, 0x10
jb 0x43686d
mov eax, dword [ebp - 0x7c]
jmp 0x436870
lea eax, [ebp - 0x7c]
mov byte [eax + edx], 0
jmp 0x436306
mov ecx, dword [ebp - 0x68]
cmp ecx, 0x10
jb 0x436889
mov edi, dword [ebp - 0x7c]
mov edx, dword [ebp - 0x7c]
jmp 0x43688f
lea edi, [ebp - 0x7c]
lea edx, [ebp - 0x7c]
mov byte [ebp - 0xa4], 0
add edi, ebx
sub ecx, ebx
add ebx, esi
add ebx, edx
sub eax, esi
push eax
push ebx
push ecx
push edi
call 0xce99e0
add esp, 0x10
mov edx, dword [ebp - 0x6c]
mov eax, dword [ebp - 0x68]
sub edx, esi
mov dword [ebp - 0x6c], edx
cmp eax, 0x10
jb 0x4368c1
mov eax, dword [ebp - 0x7c]
jmp 0x4368c4
lea eax, [ebp - 0x7c]
mov byte [eax + edx], 0
mov edx, dword [ebp - 0x6c]
jmp 0x43680c
cmp edx, dword [ecx + 8]
jne 0x436382
mov dword [ebp + 0x10], ecx
mov edx, ecx
mov ecx, dword [ecx + 4]
movsx eax, byte [ecx + 0x15]
test eax, eax
jne 0x436382
cmp edx, dword [ecx + 8]
je 0x4368d9
jmp 0x436382
mov eax, dword [ebp - 0x24]
mov edx, dword [eax + 4]
cmp esi, dword [edx + 4]
je 0x43690b
movsx eax, byte [esi + 0x14]
cmp eax, 1
je 0x436914
mov byte [esi + 0x14], 1
jmp 0x43643c
mov edi, dword [ecx]
cmp esi, edi
je 0x436aa2
movsx eax, byte [edi + 0x14]
test eax, eax
je 0x436a51
movsx eax, byte [edi + 0x15]
test eax, eax
jne 0x436957
mov eax, dword [edi + 8]
movsx edx, byte [eax + 0x14]
mov dword [ebp - 0xb0], eax
cmp edx, 1
jne 0x4369cd
mov eax, dword [edi]
movsx edx, byte [eax + 0x14]
cmp edx, 1
jne 0x436972
mov byte [edi + 0x14], 0
mov eax, dword [ebp - 0x24]
mov edx, dword [eax + 4]
mov esi, ecx
mov ecx, dword [ecx + 4]
cmp esi, dword [edx + 4]
je 0x43690b
movsx eax, byte [esi + 0x14]
cmp eax, 1
je 0x436914
jmp 0x43690b
movzx eax, byte [ecx + 0x14]
mov byte [edi + 0x14], al
mov edx, 1
mov byte [ecx + 0x14], dl
mov edi, dword [edi]
mov byte [edi + 0x14], dl
mov eax, dword [ecx]
mov edx, dword [eax + 8]
mov dword [ecx], edx
mov edi, dword [eax + 8]
movsx edx, byte [edi + 0x15]
test edx, edx
je 0x4369c8
mov edi, dword [ebp - 0x24]
mov edx, dword [ecx + 4]
mov dword [eax + 4], edx
mov edx, dword [edi + 4]
cmp ecx, dword [edx + 4]
je 0x4369c3
mov edx, dword [ecx + 4]
cmp ecx, dword [edx + 8]
je 0x4369b5
mov dword [edx], eax
jmp 0x4369b8
mov dword [edx + 8], eax
mov dword [eax + 8], ecx
mov dword [ecx + 4], eax
jmp 0x43690b
mov dword [edx + 4], eax
jmp 0x4369b8
mov dword [edi + 4], ecx
jmp 0x436998
mov eax, dword [edi]
movsx edx, byte [eax + 0x14]
cmp edx, 1
jne 0x436972
mov eax, dword [ebp - 0xb0]
mov byte [eax + 0x14], 1
mov eax, dword [edi + 8]
mov byte [edi + 0x14], 0
mov edx, dword [eax]
mov dword [edi + 8], edx
mov edx, dword [eax]
mov dword [ebp - 0xb0], eax
movsx eax, byte [edx + 0x15]
test eax, eax
je 0x436a4c
mov edx, dword [ebp - 0xb0]
mov eax, dword [edi + 4]
mov dword [edx + 4], eax
mov eax, dword [ebp - 0x24]
mov edx, dword [eax + 4]
cmp edi, dword [edx + 4]
je 0x436a41
mov eax, dword [edi + 4]
cmp edi, dword [eax]
je 0x436a27
mov edx, dword [ebp - 0xb0]
mov dword [eax + 8], edx
jmp 0x436a2f
mov edx, dword [ebp - 0xb0]
mov dword [eax], edx
mov eax, dword [ebp - 0xb0]
mov dword [eax], edi
mov dword [edi + 4], eax
mov edi, dword [ecx]
jmp 0x436972
mov eax, dword [ebp - 0xb0]
mov dword [edx + 4], eax
jmp 0x436a2f
mov dword [edx + 4], edi
jmp 0x4369fe
mov byte [edi + 0x14], 1
mov eax, dword [ecx]
mov byte [ecx + 0x14], 0
mov edx, dword [eax + 8]
mov dword [ecx], edx
mov edx, dword [eax + 8]
movsx edi, byte [edx + 0x15]
test edi, edi
je 0x436a9d
mov edi, dword [ebp - 0x24]
mov edx, dword [ecx + 4]
mov dword [eax + 4], edx
mov edx, dword [edi + 4]
cmp ecx, dword [edx + 4]
je 0x436a98
mov edx, dword [ecx + 4]
cmp ecx, dword [edx + 8]
je 0x436a88
mov dword [edx], eax
jmp 0x436a8b
mov dword [edx + 8], eax
mov dword [eax + 8], ecx
mov edi, dword [ecx]
mov dword [ecx + 4], eax
jmp 0x43692a
mov dword [edx + 4], eax
jmp 0x436a8b
mov dword [edx + 4], ecx
jmp 0x436a6b
mov edi, dword [ecx + 8]
movsx eax, byte [edi + 0x14]
test eax, eax
je 0x96436bc0
pushal
insd dword es:[edi], dx
fstp xword [eax - 0x5dc679bc]
dec edx
xchg ebp, eax
cmp edx, esi
movsd dword es:[edi], dword [esi]
out 0x74, eax
or byte [0xc126ea30], al
push si
sub dword [ecx - 0x7b8a4dc0], 0x77e59474
push 0x6ccee611
xchg byte fs:[esi + eax*8], dh
xor al, 8
jb 0x436ae9
lahf
popfd
outsd dx, dword [esi]
hlt
insb byte es:[edi], dx
add al, 0xf6
sbb esi, dword es:[edi + edx*2 + 0x58d75868]
push ebp
sti
mov esp, 0x84c8d4e9
cmpsb byte [esi], byte es:[edi]
test al, 0x84
add al, 0x63
xor eax, ebx
dec esi
sub byte [esp + eax*8], dl
or eax, ebx
dec edx
iretd
jle 0x436c81
imul esp, dword [ebp + 0x3a], 0x5f
pop ecx
pushal
enter 0xffffffffffffdf7c, 0xffffffffffffff8d
adc dh, byte [ecx + 0x70]
xchg ebp, eax
push ss
xchg ebx, eax
test dword [ebx], ecx
adc dword [esi - 0x2b], ecx
mov edx, 0xbbf0e3a5
test byte [esi + 0x529db5e], ah
cmpsd dword [esi], dword es:[edi]
inc eax
inc esi
stosb byte es:[edi], al
mov ebp, 0xc8c12426
push ebx
push eax
xor eax, 0xd6e18614
inc esp
js 0x436c3d
xchg edi, eax
retf 0x164a
xchg esi, eax
pop es
je 0x436c88
enter 0xffffffffffffab53, 0x6a
movsb byte es:[edi], byte [esi]
push 0xffffffffffffffa4
sahf
jecxz 0x436c82
push esp
imul eax, dword [ebp - 0x182b8eb1], 0xfffffff6
inc esp
push es
aaa
imul esp, dword [esi + edi], 0x29
not byte [ebx + esi*4 - 6]
test edi, esp
push ds
idiv byte [edi]
lodsd eax, dword [esi]
invalid
cmp byte [edx + 0x13], bh
daa
arpl si, si
invalid