Function at 0x407d60
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x160
mov eax, dword [ecx + 0x10]
push ebx
push ebp
mov dword [esp + 0x28], eax
xor ebp, ebp
mov eax, dword [eax + 0x10]
push esi
push edi
mov edi, 9
mov dword [esp + 0x38], edx
mov ebx, dword [eax + 4]
lea edx, [esp + 0x14]
mov esi, dword [eax + 8]
cmp ebx, edi
mov dword [esp + 0x14], 0x8648862a
mov ecx, esi
cmovb edi, ebx
mov dword [esp + 0x18], 0x5010df7
mov byte [esp + 0x1c], 0xd
mov dword [esp + 0x20], 0x8648862a
mov dword [esp + 0x24], 0xc010df7
mov word [esp + 0x28], 0x105
mov byte [esp + 0x2a], 3
sub edi, 4
jb 0x407dd7
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x407de0
add ecx, 4
add edx, 4
sub edi, 4
jae 0x407dc6
cmp edi, 0xfffffffc
je 0x407ec1
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x407e1d
cmp edi, 0xfffffffd
je 0x407ec1
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x407e1d
cmp edi, 0xfffffffe
je 0x407ec1
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x407e1d
cmp edi, 0xffffffff
je 0x407ec1
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
je 0x407ec1
mov edx, 0xb
lea ecx, [esp + 0x20]
cmp ebx, edx
cmovb edx, ebx
sub edx, 4
jb 0x407e41
mov eax, dword [esi]
cmp eax, dword [ecx]
jne 0x407e46
add esi, 4
add ecx, 4
sub edx, 4
jae 0x407e30
cmp edx, 0xfffffffc
je 0x407e83
mov al, byte [esi]
cmp al, byte [ecx]
jne 0x40813e
cmp edx, 0xfffffffd
je 0x407e83
mov al, byte [esi + 1]
cmp al, byte [ecx + 1]
jne 0x40813e
cmp edx, 0xfffffffe
je 0x407e83
mov al, byte [esi + 2]
cmp al, byte [ecx + 2]
jne 0x40813e
cmp edx, 0xffffffff
je 0x407e83
mov al, byte [esi + 3]
cmp al, byte [ecx + 3]
jne 0x40813e
mov ecx, dword [esp + 0x30]
mov eax, dword [ecx + 0x10]
mov esi, dword [ecx + 0x14]
mov ecx, dword [esp + 0x38]
mov eax, dword [eax + 0x14]
push dword [esi + 4]
push dword [esi + 8]
mov edx, dword [eax + 0x10]
mov edx, dword [edx + 8]
call fcn.00407bb0
mov ecx, dword [esp + 0x17c]
add esp, 8
mov edx, dword [esi + 4]
mov ebp, eax
mov dword [ecx], edx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x160
ret
mov ecx, dword [esp + 0x30]
mov esi, 0x4cebd0
mov eax, dword [ecx + 0x10]
mov eax, dword [eax + 0x14]
mov ecx, dword [eax + 0x10]
mov edx, dword [ecx + 0x10]
mov eax, dword [edx + 0x14]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x34], eax
mov eax, dword [eax + 0x14]
mov eax, dword [eax + 0x14]
mov eax, dword [eax + 0x14]
mov edi, dword [eax + 0x10]
mov eax, dword [ecx + 0x14]
mov ecx, dword [edx + 8]
mov edx, dword [edx + 4]
mov ebp, dword [eax + 0x10]
sub edx, 4
jb 0x407f11
nop dword [eax]
mov eax, dword [ecx]
cmp eax, dword [esi]
jne 0x407f16
add ecx, 4
add esi, 4
sub edx, 4
jae 0x407f00
cmp edx, 0xfffffffc
je 0x407f4a
mov al, byte [ecx]
cmp al, byte [esi]
jne 0x407f43
cmp edx, 0xfffffffd
je 0x407f4a
mov al, byte [ecx + 1]
cmp al, byte [esi + 1]
jne 0x407f43
cmp edx, 0xfffffffe
je 0x407f4a
mov al, byte [ecx + 2]
cmp al, byte [esi + 2]
jne 0x407f43
cmp edx, 0xffffffff
je 0x407f4a
mov al, byte [ecx + 3]
cmp al, byte [esi + 3]
je 0x407f4a
sbb ebx, ebx
or ebx, 1
jmp 0x407f4c
xor ebx, ebx
mov esi, dword [edi + 4]
mov edx, 0x4cebdc
mov ecx, dword [edi + 8]
sub esi, 4
jb 0x407f71
nop dword [eax]
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x407f76
add ecx, 4
add edx, 4
sub esi, 4
jae 0x407f60
cmp esi, 0xfffffffc
je 0x407faa
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x407fa3
cmp esi, 0xfffffffd
je 0x407faa
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x407fa3
cmp esi, 0xfffffffe
je 0x407faa
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x407fa3
cmp esi, 0xffffffff
je 0x407faa
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
je 0x407faa
sbb edi, edi
or edi, 1
jmp 0x407fac
xor edi, edi
mov esi, dword [ebp + 4]
mov edx, 0x4cebe8
mov ecx, dword [ebp + 8]
sub esi, 4
jb 0x407fd1
nop dword [eax]
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x407fd6
add ecx, 4
add edx, 4
sub esi, 4
jae 0x407fc0
cmp esi, 0xfffffffc
je 0x40800a
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x408003
cmp esi, 0xfffffffd
je 0x40800a
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x408003
cmp esi, 0xfffffffe
je 0x40800a
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x408003
cmp esi, 0xffffffff
je 0x40800a
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
je 0x40800a
sbb eax, eax
or eax, 1
jmp 0x40800c
xor eax, eax
test ebx, ebx
jne 0x40814b
test edi, edi
jne 0x40814b
test eax, eax
jne 0x40814b
mov ecx, dword [ebp + 0x14]
cmp dword [ecx + 4], 0xe
jne 0x40814b
mov edi, dword [esp + 0x34]
cmp dword [edi + 4], 0x20
jne 0x40814b
mov eax, dword [esp + 0x30]
lea edx, [ebx + 0x14]
mov ecx, dword [ecx + 8]
mov esi, dword [eax + 0x14]
mov eax, 0xe04
movq xmm0, qword [ecx]
mov word [esp + 0x20], ax
mov eax, dword [ecx + 8]
mov dword [esp + 0x2a], eax
mov ax, word [ecx + 0xc]
mov ecx, dword [esp + 0x38]
mov word [esp + 0x2e], ax
lea eax, [esp + 0x5c]
movq qword [esp + 0x22], xmm0
xorps xmm0, xmm0
push eax
mov dword [esp + 0x38], esi
movups xmmword [esp + 0x40], xmm0
movups xmmword [esp + 0x50], xmm0
call fcn.004078c0
lea eax, [esp + 0x40]
push eax
push ecx
push dword [edi + 4]
lea edx, [esp + 0x6c]
push dword [edi + 8]
push ecx
lea ecx, [esp + 0x88]
call fcn.00407580
push dword [esi + 4]
call fcn.004a9d98
mov ebp, eax
add esp, 0x1c
test ebp, ebp
je 0x40813e
mov ebx, dword [esi + 4]
push ebx
push dword [esi + 8]
push ebp
call fcn.004a5830
add esp, 0xc
lea edx, [esp + 0x3c]
lea ecx, [esp + 0x70]
call fcn.00406390
mov esi, ebp
movups xmm0, xmmword [esp + 0x20]
movups xmmword [esp + 0x160], xmm0
test ebx, ebx
je 0x408135
dec ebx
lea edi, [esp + 0x160]
shr ebx, 4
sub edi, ebp
inc ebx
nop
movups xmm0, xmmword [esi]
lea edx, [esp + 0x70]
mov ecx, esi
call fcn.004067a0
mov ecx, 0x10
mov al, byte [edi + esi]
xor byte [esi], al
inc esi
sub ecx, 1
jne 0x408113
sub edi, 0x10
movups xmmword [esp + 0x160], xmm0
sub ebx, 1
jne 0x408100
mov ebx, dword [esp + 0x34]
mov ebx, dword [ebx + 4]
mov eax, dword [esp + 0x174]
mov dword [eax], ebx
mov eax, ebp
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x160
ret
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x160
ret