Function at 0x436230
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x80
mov dword [esp + 0x2c], ecx
mov eax, dword [ebp + 8]
mov dword [eax + 8], 0
mov dword [eax + 4], 0
mov dword [eax], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x3c], 0x100000
mov dword [esp + 0x14], 0
mov dword [esp + 4], 0xb8bbba85
mov dword [esp + 8], 0
xor edi, edi
mov esi, 0x65
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + edi + 4]
mov ebx, edi
xor ebx, 0xca0f841f
lea edx, [esi + ebx]
add edx, 0xffffff9b
and edx, ecx
mov eax, edx
or al, 0xfd
inc al
mov ah, dl
and ah, 0x3d
mul ah
add bl, cl
add bl, al
mov eax, edx
shr al, 1
and al, 1
or dl, 2
mul dl
add al, al
sub bl, al
movzx eax, bl
add eax, esi
mov byte [esp + edi + 4], al
inc edi
add esi, 2
cmp edi, 8
jne 0x436290
mov eax, dword [esp + 4]
mov ecx, dword [0x449644]
test ecx, ecx
je 0x436310
xor edx, edx
mov esi, dword [0x449648]
mov edi, dword [esp + 0x2c]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0x3e416e49
je 0x436316
inc edx
cmp ecx, edx
jne 0x436300
jmp 0x436344
mov edi, dword [esp + 0x2c]
jmp 0x436344
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0x436344
lea eax, [esp + 0x3c]
lea edx, [esp + 0x14]
push 4
push 0x3000
push eax
push 0
push edx
push 0xffffffffffffffff
push 6
push ecx
push dword [0x44964c]
call fcn.00438a80
add esp, 0x24
test eax, eax
js 0x436ad2
cmp dword [edi + 4], 0
je 0x436a60
mov eax, dword [edi + 4]
mov dword [esp + 0x54], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x60], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 4], 0x41454744
mov byte [esp + 8], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 4]
lea esi, [ecx - 0x32c6d90f]
xor esi, edx
add esi, 0xec601fe1
mov edx, esi
and edx, 0x4a
xor esi, 0x4a
lea edx, [esi + edx*2]
add dl, 0x20
mov byte [esp + ecx + 4], dl
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
cmp ecx, 5
jb 0x4363a0
mov ebx, 0x7fff
cmp eax, 2
je 0x4363e4
mov ebx, 0
mov eax, 0xfffeffff
mov esi, dword [ebp + 0x10]
je 0x4363f3
mov eax, SysReAllocString
mov edx, dword [esp + 4]
mov ecx, edx
sar ecx, 0x1f
mov dword [esp + 0x24], eax
cmp edx, eax
mov dword [esp + 0x38], ecx
mov eax, ecx
sbb eax, ebx
jae 0x4369d0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x10], 0
mov dword [esp], 0
mov dword [esp + 0x20], ebx
jmp 0x436454
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x48]
add edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x4c]
adc ecx, dword [esp + 0x54]
cmp edx, eax
mov dword [esp + 0x38], ecx
mov eax, ecx
sbb eax, ebx
jae 0x4369d0
mov dword [esp + 0x30], edx
mov ecx, dword [esp + 0x2c]
lea eax, [esp + 0x5c]
push eax
lea eax, [esp + 0x64]
push eax
lea eax, [esp + 0x50]
push eax
lea eax, [esp + 0x5c]
push eax
push dword [esp + 0x48]
push edx
call fcn.00435d40
mov edx, dword [esp + 0x30]
cmp eax, 0xbfffffff
ja 0x4369d0
test eax, eax
js 0x436430
cmp dword [esp + 0x60], 0x1000
mov eax, dword [esp + 0x24]
jne 0x436434
test byte [esp + 0x5c], 0x66
je 0x436434
mov eax, dword [esp + 0x48]
mov dword [esp + 0x34], eax
cmp dword [esp + 0x3c], eax
mov ecx, dword [esp + 0x4c]
mov eax, 0
mov dword [esp + 0x40], ecx
sbb eax, ecx
jae 0x436673
mov dword [esp + 4], 0xb8bbba85
mov dword [esp + 8], 0
xor edi, edi
mov esi, 0x65
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + edi + 4]
mov ecx, edi
xor ecx, 0xca0f841f
lea edx, [esi + ecx]
add edx, 0xffffff9b
and edx, ebx
mov eax, edx
or al, 0xfd
inc al
mov ah, dl
and ah, 0x3d
mul ah
add cl, bl
add cl, al
mov eax, edx
shr al, 1
and al, 1
or dl, 2
mul dl
add al, al
sub cl, al
movzx eax, cl
add eax, esi
mov byte [esp + edi + 4], al
inc edi
add esi, 2
cmp edi, 8
jne 0x4364e0
mov eax, dword [0x449644]
test eax, eax
je 0x43657a
mov ecx, dword [esp + 4]
xor edx, edx
mov esi, dword [0x449648]
nop
nop
nop
nop
cmp dword [esi + edx*8], 0x16194952
je 0x436550
inc edx
cmp eax, edx
jne 0x436540
jmp 0x43657a
mov eax, dword [esi + edx*8 + 4]
cmp eax, ecx
je 0x43657a
push 0x8000
lea ecx, [esp + 0x48]
push ecx
lea ecx, [esp + 0x1c]
push ecx
push 0xffffffffffffffff
push 4
push eax
push dword [0x44964c]
call fcn.00438a80
add esp, 0x1c
mov dword [esp + 0x44], 0
mov dword [esp + 0x14], 0
mov eax, dword [esp + 0x34]
mov dword [esp + 0x3c], eax
mov dword [esp + 4], 0xb8bbba85
mov dword [esp + 8], 0
xor edi, edi
mov esi, 0x65
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + edi + 4]
mov ebx, edi
xor ebx, 0xca0f841f
lea edx, [esi + ebx]
add edx, 0xffffff9b
and edx, ecx
mov eax, edx
or al, 0xfd
inc al
mov ah, dl
and ah, 0x3d
mul ah
add bl, cl
add bl, al
mov eax, edx
shr al, 1
and al, 1
or dl, 2
mul dl
add al, al
sub bl, al
movzx eax, bl
add eax, esi
mov byte [esp + edi + 4], al
inc edi
add esi, 2
cmp edi, 8
jne 0x4365b0
mov eax, dword [esp + 4]
mov ecx, dword [0x449644]
test ecx, ecx
je 0x436630
xor edx, edx
mov esi, dword [0x449648]
mov ebx, dword [esp + 0x20]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0x3e416e49
je 0x436636
inc edx
cmp ecx, edx
jne 0x436620
jmp 0x436664
mov ebx, dword [esp + 0x20]
jmp 0x436664
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0x436664
push 4
push 0x3000
lea eax, [esp + 0x44]
push eax
push 0
lea eax, [esp + 0x24]
push eax
push 0xffffffffffffffff
push 6
push ecx
push dword [0x44964c]
call fcn.00438a80
add esp, 0x24
test eax, eax
mov esi, dword [ebp + 0x10]
mov edx, dword [esp + 0x30]
js 0x4369d0
mov ecx, dword [esp + 0x2c]
lea eax, [esp + 0x70]
push eax
push dword [esp + 0x44]
push dword [esp + 0x3c]
push dword [esp + 0x20]
push dword [esp + 0x48]
push edx
call fcn.00436080
test eax, eax
jns 0x43669d
cmp eax, 0x8000000d
jne 0x4366ac
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x74]
cmp eax, esi
sbb ecx, 0
jae 0x4366b8
mov eax, dword [esp + 0x24]
mov edx, dword [esp]
jmp 0x4369c8
push dword [ebp + 0x14]
push esi
push dword [ebp + 0xc]
push eax
push dword [esp + 0x24]
lea eax, [esp + 0x18]
push eax
call fcn.00436b20
add esp, 0x18
mov eax, dword [esp + 4]
mov ecx, dword [esp + 8]
mov dword [esp + 0x58], ecx
cmp eax, ecx
je 0x4369a1
mov dword [esp + 0x64], eax
mov esi, eax
mov ecx, dword [esp + 0x10]
mov ebx, dword [esp + 0x30]
mov edx, dword [esp]
jmp 0x436748
push dword [esp + 0x10]
call fcn.004081c0
add esp, 4
mov ebx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x28]
lea eax, [ecx + ebx*8]
mov dword [esp + 0x1c], eax
mov edx, ecx
mov eax, dword [esp + 0x18]
add edx, eax
mov ebx, dword [esp + 0x30]
mov edi, dword [esp + 0x34]
mov dword [ecx + eax], edi
mov edi, eax
mov eax, dword [esp + 0x40]
mov dword [ecx + edi + 4], eax
add edx, 8
add esi, 4
cmp esi, dword [esp + 0x58]
je 0x436962
mov edi, dword [esi]
sub edi, dword [esp + 0x14]
mov eax, edi
sar eax, 0x1f
add edi, ebx
mov dword [esp + 0x34], edi
adc eax, dword [esp + 0x38]
mov dword [esp + 0x40], eax
mov eax, edx
sub eax, ecx
cmp edx, dword [esp + 0x1c]
jne 0x436727
mov dword [esp], edx
mov dword [esp + 0x10], ecx
mov dword [esp + 0x18], eax
mov ecx, eax
sar ecx, 3
lea eax, [ecx + 1]
mov ebx, ecx
shr ebx, 1
add ebx, ecx
cmp ebx, eax
ja 0x43678a
mov ebx, eax
lea eax, [ebx*8]
push eax
call fcn.004081b0
add esp, 4
mov ecx, eax
mov edx, dword [esp + 0x10]
test edx, edx
je 0x436714
mov dword [esp + 0x1c], ebx
cmp ecx, edx
mov dword [esp + 0x28], ecx
jbe 0x436872
cmp dword [esp], ecx
jbe 0x436872
cmp dword [esp + 0x18], 0
je 0x436700
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x18]
add eax, edx
dec eax
mov ecx, dword [esp + 0x28]
add ecx, edx
dec ecx
mov edi, edx
and edi, 7
je 0x436804
neg edi
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [eax + edx]
mov byte [ecx + edx], bl
dec edx
cmp edi, edx
jne 0x4367f0
add eax, edx
add ecx, edx
add edx, dword [esp + 0x18]
mov edi, dword [esp + 0x10]
sub edi, dword [esp]
cmp edi, 0xfffffff8
ja 0x436700
neg edx
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [eax + edi]
mov byte [ecx + edi], bl
movzx ebx, byte [eax + edi - 1]
mov byte [ecx + edi - 1], bl
movzx ebx, byte [eax + edi - 2]
mov byte [ecx + edi - 2], bl
movzx ebx, byte [eax + edi - 3]
mov byte [ecx + edi - 3], bl
movzx ebx, byte [eax + edi - 4]
mov byte [ecx + edi - 4], bl
movzx ebx, byte [eax + edi - 5]
mov byte [ecx + edi - 5], bl
movzx ebx, byte [eax + edi - 6]
mov byte [ecx + edi - 6], bl
movzx ebx, byte [eax + edi - 7]
mov byte [ecx + edi - 7], bl
add edi, 0xfffffff8
cmp edx, edi
jne 0x436820
jmp 0x436700
mov ebx, dword [esp + 0x18]
mov ecx, ebx
shr ecx, 2
mov eax, edx
mov edi, dword [esp + 0x28]
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov ecx, ebx
and ecx, 3
mov eax, ebx
and eax, 0xfffffffc
add edx, eax
add eax, dword [esp + 0x28]
mov ebx, ecx
not ebx
or ebx, 1
add ebx, ecx
shr ecx, 1
mov dword [esp], edx
mov edi, eax
mov dword [esp + 0x6c], esi
mov esi, dword [esp]
xchg esi, esi
rep movsw word es:[edi], word [esi]
xchg esi, esi
mov esi, dword [esp + 0x6c]
mov dword [esp], ebx
inc ebx
je 0x436700
mov ecx, dword [esp + 0x18]
and ecx, 2
add eax, ecx
add edx, ecx
mov ecx, ebx
and ecx, 7
je 0x4368f6
mov dword [esp + 0x68], ebx
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [edx + edi]
mov byte [eax + edi], bl
inc edi
cmp ecx, edi
jne 0x4368e0
add edx, edi
add eax, edi
mov ebx, dword [esp + 0x68]
sub ebx, edi
cmp dword [esp], 7
jb 0x436700
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [edx + edi]
mov byte [eax + edi], cl
movzx ecx, byte [edx + edi + 1]
mov byte [eax + edi + 1], cl
movzx ecx, byte [edx + edi + 2]
mov byte [eax + edi + 2], cl
movzx ecx, byte [edx + edi + 3]
mov byte [eax + edi + 3], cl
movzx ecx, byte [edx + edi + 4]
mov byte [eax + edi + 4], cl
movzx ecx, byte [edx + edi + 5]
mov byte [eax + edi + 5], cl
movzx ecx, byte [edx + edi + 6]
mov byte [eax + edi + 6], cl
movzx ecx, byte [edx + edi + 7]
mov byte [eax + edi + 7], cl
add edi, 8
cmp ebx, edi
jne 0x436910
jmp 0x436700
mov eax, dword [ebp + 8]
mov dword [eax + 4], edx
mov dword [eax], ecx
mov esi, dword [esp + 0x1c]
mov dword [eax + 8], esi
mov eax, dword [esp + 0x64]
test eax, eax
je 0x4369b9
mov dword [esp + 0x10], ecx
cmp eax, dword [esp + 0x58]
mov esi, dword [ebp + 0x10]
je 0x4369c0
push eax
mov dword [esp + 4], edx
call fcn.004081c0
mov edx, dword [esp + 4]
add esp, 4
mov dword [esp + 4], 0
jmp 0x4369c0
mov eax, dword [ebp + 8]
mov edx, dword [esp]
mov dword [eax + 4], edx
mov ecx, dword [esp + 0x10]
mov dword [eax], ecx
mov ecx, dword [esp + 0x1c]
mov dword [eax + 8], ecx
jmp 0x4369c4
mov dword [esp + 0x10], ecx
mov esi, dword [ebp + 0x10]
mov ebx, dword [esp + 0x20]
mov eax, dword [esp + 0x24]
mov dword [esp], edx
jmp 0x436434
mov dword [esp + 4], 0xb8bbba85
mov dword [esp + 8], 0
xor edi, edi
mov esi, 0x65
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + edi + 4]
mov ebx, edi
xor ebx, 0xca0f841f
lea edx, [esi + ebx]
add edx, 0xffffff9b
and edx, ecx
mov eax, edx
or al, 0xfd
inc al
mov ah, dl
and ah, 0x3d
mul ah
add bl, cl
add bl, al
mov eax, edx
shr al, 1
and al, 1
or dl, 2
mul dl
add al, al
sub bl, al
movzx eax, bl
add eax, esi
mov byte [esp + edi + 4], al
inc edi
add esi, 2
cmp edi, 8
jne 0x4369f0
mov eax, dword [0x449644]
test eax, eax
je 0x436ad2
mov ecx, dword [esp + 4]
xor edx, edx
mov esi, dword [0x449648]
cmp dword [esi + edx*8], 0x16194952
je 0x436aa8
inc edx
cmp eax, edx
jne 0x436a50
jmp 0x436ad2
push 0xbbf966b4
push dword [0x449638]
call fcn.0043bcb0
add esp, 8
test eax, eax
je 0x436adf
mov ecx, dword [edi]
test ecx, ecx
je 0x436356
mov dword [esp + 4], 0
lea edx, [esp + 4]
push edx
push ecx
call eax
test eax, eax
je 0x436aeb
cmp dword [esp + 4], 0
je 0x436aeb
mov dword [edi + 4], 3
jmp 0x436356
mov eax, dword [esi + edx*8 + 4]
cmp eax, ecx
je 0x436ad2
lea ecx, [esp + 0x44]
lea edx, [esp + 0x14]
push 0x8000
push ecx
push edx
push 0xffffffffffffffff
push 4
push eax
push dword [0x44964c]
call fcn.00438a80
add esp, 0x1c
mov eax, dword [ebp + 8]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0x10
mov dword [edi + 4], 1
jmp 0x436356
lea eax, [esp + 0x50]
push eax
call fcn.0043c460
add esp, 4
test al, al
je 0x436356
mov eax, dword [esp + 0x50]
mov ecx, 2
cmp eax, 3
je 0x436b10
mov ecx, eax
mov dword [edi + 4], ecx
jmp 0x436356