Function at 0x3605c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x30
mov esi, dword [ebp + 0x14]
mov ecx, dword [ebp + 8]
mov ebx, dword [ebp + 0x18]
mov eax, dword [0x10376020]
xor eax, ebp
test ebx, ebx
cmove ebx, esi
mov dword [ebp - 0x10], eax
mov eax, dword [ecx + 4]
mov ecx, dword [eax + 4]
test ecx, ecx
je 0x360609
mov edx, dword [ebp + 0xc]
mov dword [ebp - 0x24], edx
mov edx, dword [esi + 4]
mov dword [ebp - 0x28], edx
mov edx, dword [eax]
xor esi, esi
xor edi, edi
or edi, dword [edx + esi*4]
inc esi
cmp ecx, esi
jne 0x3605fd
test edi, edi
jne 0x360642
push 0x149
push 0x10323c87
push pe_nt_image_headers32
push 0
push 4
call fcn.0039f2d0
add esp, 0x14
xor edi, edi
xor esi, esi
push esi
call fcn.0038abe0
add esp, 4
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.002a5ceb
mov eax, edi
add esp, 0x30
pop esi
pop edi
pop ebx
pop ebp
ret
push eax
call fcn.00350240
add esp, 4
mov edx, eax
add edx, 7
mov eax, edx
and eax, 7
mov dword [ebp - 0x38], eax
mov esi, dword [ebp + 8]
mov eax, dword [esi]
mov ecx, dword [eax + 0x14]
test ecx, ecx
je 0x36069e
call dword [0x10391000]
push esi
call ecx
add esp, 4
mov edx, eax
mov ecx, dword [ebp - 0x28]
cmp dword [ebp - 0x38], 0
jne 0x360686
mov eax, dword [ebp + 0xc]
mov byte [eax], 0
inc eax
mov dword [ebp - 0x24], eax
dec edx
lea eax, [ecx + 2]
cmp edx, eax
jae 0x3606a3
push 0x156
push 0x10323c87
push 0x72
jmp 0x360615
shr edx, 3
jmp 0x360672
mov esi, ecx
mov eax, dword [ebp + 0x1c]
cmp eax, 0xffffffff
je 0x3606d3
cmp eax, 0xfffffffe
je 0x3606cc
mov esi, eax
test eax, eax
jns 0x3606d3
push 0x164
push 0x10323c87
push 0x8a
jmp 0x360615
mov esi, edx
sub esi, ecx
add esi, 0xfffffffe
mov edi, edx
sub edi, ecx
lea eax, [edi - 2]
cmp eax, esi
jae 0x3606e5
push 0x16b
jmp 0x360692
mov dword [ebp - 0x34], edi
mov dword [ebp - 0x30], edx
test esi, esi
je 0x36071f
push esi
call fcn.0038ab10
add esp, 4
mov ecx, esi
xor edi, edi
mov esi, 0
test eax, eax
je 0x360625
push 0x10323c67
mov dword [ebp - 0x2c], ecx
push ecx
push eax
mov esi, eax
call fcn.00356c40
add esp, 0xc
jmp 0x360724
mov dword [ebp - 0x2c], esi
xor esi, esi
xorps xmm0, xmm0
lea edi, [ebp - 0x20]
movups xmmword [edi], xmm0
sub esp, 4
push dword [ebp + 0x14]
push edi
call fcn.00357df0
add esp, 0xc
test eax, eax
jne 0x360771
push dword [ebp - 0x1c]
call fcn.0038abe0
add esp, 4
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x360763
mov ecx, dword [eax]
mov edi, dword [ebp - 0x18]
call dword [0x10391000]
push edi
call ecx
add esp, 4
xorps xmm0, xmm0
movups xmmword [ebp - 0x20], xmm0
xor edi, edi
jmp 0x360625
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x34]
add eax, ecx
dec eax
mov dword [ebp - 0x3c], eax
dec ecx
mov dword [ebp - 0x34], ecx
mov eax, dword [ebp - 0x20]
mov ecx, dword [eax + 0x10]
call dword [0x10391000]
push 8
push 0x10323cc7
push edi
call ecx
add esp, 0xc
mov eax, dword [ebp - 0x20]
mov ecx, dword [eax + 0x10]
call dword [0x10391000]
push dword [ebp - 0x28]
push dword [ebp + 0x10]
push edi
call ecx
add esp, 0xc
mov eax, dword [ebp - 0x20]
mov ecx, dword [eax + 0x10]
call dword [0x10391000]
push dword [ebp - 0x2c]
push esi
push edi
call ecx
add esp, 0xc
mov eax, dword [ebp - 0x20]
mov ecx, dword [eax + 0x14]
call dword [0x10391000]
push dword [ebp - 0x3c]
push edi
call ecx
add esp, 8
mov eax, dword [ebp - 0x20]
push dword [eax + 0x1c]
push dword [ebp - 0x1c]
call fcn.0038ac10
add esp, 8
push dword [ebp - 0x1c]
call fcn.0038abe0
add esp, 4
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x360811
mov ecx, dword [eax]
mov edi, dword [ebp - 0x18]
call dword [0x10391000]
push edi
call ecx
add esp, 4
xorps xmm0, xmm0
movups xmmword [ebp - 0x20], xmm0
push ebx
push dword [ebp - 0x28]
push dword [ebp - 0x3c]
push dword [ebp - 0x34]
push dword [ebp - 0x24]
call fcn.00360100
add esp, 0x14
test eax, eax
je 0x36076a
mov edx, dword [ebp - 0x28]
mov edi, dword [ebp - 0x2c]
add edx, edi
mov eax, dword [ebp - 0x30]
sub eax, edx
mov ecx, dword [ebp - 0x24]
xor byte [eax + ecx - 2], 1
test edi, edi
je 0x360867
not edx
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x30]
add eax, ecx
add edx, eax
xor eax, eax
mov cl, byte [esi + eax]
xor byte [edx + eax], cl
inc eax
cmp edi, eax
jne 0x36085c
cmp dword [ebp - 0x38], 0
je 0x36087e
mov cl, 8
sub cl, byte [ebp - 0x38]
mov eax, 0xff
shr eax, cl
mov ecx, dword [ebp - 0x24]
and byte [ecx], al
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x30]
mov byte [ecx + eax - 1], 0xbc
xor edi, edi
inc edi
jmp 0x360625