Function at 0x472a60
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x178
push ebx
push esi
push edi
push dword [ebp + 0x18]
xor esi, esi
call fcn.00473ae0
mov ecx, dword [ebp + 8]
add esp, 4
mov dword [ebp - 0x30], eax
cmp ecx, 0xffffffff
jne 0x472a8d
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
test ecx, ecx
jne 0x472a9b
call fcn.004628b0
mov ecx, eax
mov dword [ebp + 8], ecx
mov eax, dword [ecx + 0x14]
mov edi, dword [ebp + 0x14]
mov ebx, dword [ebp + 0xc]
test eax, eax
je 0x472abb
push ebx
push edi
push dword [ebp + 0x10]
push ecx
push 0x1a3
call eax
mov ecx, dword [ebp + 8]
add esp, 0x14
test ebx, ebx
jne 0x472ad9
mov eax, dword [ecx + 0x14]
test eax, eax
je 0x472ed3
push 0x14
push ecx
push 0x1a5
call eax
jmp 0x472ed0
mov edx, dword [ebx + 4]
lea eax, [ebp - 0x10]
mov ebx, dword [ebx + 8]
mov dword [ebp - 0x18], eax
lea eax, [ebp - 0x78]
mov dword [ebp - 0x28], eax
lea eax, [ebp - 0x58]
mov dword [ebp - 0x2c], eax
lea eax, [ebp - 0x178]
mov dword [ebp - 8], eax
lea eax, [ebp - 0xf8]
mov dword [ebp - 0x20], edx
mov dword [ebp - 0x24], ebx
mov dword [ebp - 4], eax
cmp edi, 8
je 0x472b28
mov eax, dword [ecx + 0x14]
test eax, eax
je 0x472ed3
push 5
push ecx
push 0x1a5
call eax
jmp 0x472ed0
xor eax, eax
mov dword [ebp - 0x1c], eax
nop dword [eax]
mov ecx, dword [ebp + 0x10]
push 0x20
push edx
movzx eax, byte [eax + ecx]
shl eax, 0x18
mov dword [ebp - 0x10], eax
not eax
mov dword [ebp - 0xc], eax
lea eax, [ebp - 0x78]
push eax
call fcn.004d0d60
push 0x20
lea eax, [ebp - 0x58]
push ebx
push eax
call fcn.004d0d60
add esp, 0x18
mov esi, dword [ebp - 0x28]
mov edi, dword [ebp - 8]
mov ecx, 8
rep movsd dword es:[edi], dword [esi]
mov esi, dword [ebp - 8]
mov ecx, 0x10
rep movsd dword es:[edi], dword [esi]
mov eax, dword [esi]
mov dword [edi + 0x1c], eax
mov eax, dword [esi + 4]
mov dword [edi + 0x18], eax
mov eax, dword [esi + 8]
mov dword [edi + 0x14], eax
mov eax, dword [esi + 0xc]
mov dword [edi + 0x10], eax
mov eax, dword [esi + 0x10]
mov dword [edi + 0xc], eax
mov eax, dword [esi + 0x14]
mov dword [edi + 8], eax
mov eax, dword [esi + 0x18]
mov dword [edi + 4], eax
mov eax, dword [esi + 0x1c]
mov dword [edi], eax
mov esi, dword [ebp - 0x2c]
mov edi, dword [ebp - 4]
mov ecx, 8
rep movsd dword es:[edi], dword [esi]
mov esi, dword [ebp - 4]
mov ecx, 0x10
rep movsd dword es:[edi], dword [esi]
mov eax, dword [esi]
mov dword [edi + 0x1c], eax
mov eax, dword [esi + 4]
mov dword [edi + 0x18], eax
mov eax, dword [esi + 8]
mov dword [edi + 0x14], eax
mov eax, dword [esi + 0xc]
mov dword [edi + 0x10], eax
mov eax, dword [esi + 0x10]
mov dword [edi + 0xc], eax
mov eax, dword [esi + 0x14]
mov dword [edi + 8], eax
mov eax, dword [esi + 0x18]
mov dword [edi + 4], eax
mov eax, dword [esi + 0x1c]
mov dword [edi], eax
mov dword [ebp - 0x14], 4
nop
pushal
mov esi, dword [ebp - 0x18]
mov eax, dword [esi]
mov edx, dword [esi + 4]
mov esi, dword [ebp - 8]
mov edi, dword [ebp - 0x30]
push ebp
mov ecx, 8
mov ebp, eax
add eax, dword [esi]
sub eax, dword [esi + 0x80]
add esi, 4
movzx ebx, al
xor edx, dword [edi + ebx*4]
mov bl, ah
xor edx, dword [edi + ebx*4 + 0x400]
shr eax, 0x10
mov bl, ah
xor edx, dword [edi + ebx*4 + 0xc00]
mov bl, al
xor edx, dword [edi + ebx*4 + 0x800]
mov eax, edx
mov edx, ebp
loop 0x472c05
pop ebp
mov esi, dword [ebp - 0x18]
mov dword [esi], edx
mov dword [esi + 4], eax
popal
mov ebx, dword [ebp + 0xc]
mov edx, dword [ebx + 8]
test edx, edx
je 0x472c69
mov eax, dword [ebx + 4]
test eax, eax
je 0x472c69
mov ecx, dword [ebp - 0x14]
cmp dword [ebx + 0x14], ecx
jb 0x472c6c
mov eax, dword [ecx + eax - 4]
sub eax, dword [ecx + edx - 4]
jmp 0x472c6e
mov ecx, dword [ebp - 0x14]
xor eax, eax
mov edi, dword [ebp - 0x10]
xor edi, eax
mov dword [ebp - 0x10], edi
test edx, edx
je 0x472c91
mov esi, dword [ebx + 4]
test esi, esi
je 0x472c91
lea eax, [ecx + 4]
cmp dword [ebx + 0x14], eax
jb 0x472c91
mov eax, dword [ecx + esi]
sub eax, dword [ecx + edx]
jmp 0x472c93
xor eax, eax
mov esi, dword [ebp - 0xc]
xor esi, eax
mov dword [ebp - 0xc], esi
test edx, edx
je 0x472cbb
mov eax, dword [ebx + 4]
test eax, eax
je 0x472cbb
cmp dword [ebx + 0x14], ecx
jb 0x472cbb
mov eax, dword [ecx + edx - 4]
mov edx, dword [ebx + 4]
add eax, edi
mov dword [ecx + edx - 4], eax
mov esi, dword [ebp - 0xc]
mov edx, dword [ebx + 8]
test edx, edx
je 0x472cd9
mov edi, dword [ebx + 4]
test edi, edi
je 0x472cd9
lea eax, [ecx + 4]
cmp dword [ebx + 0x14], eax
jb 0x472cd9
mov eax, dword [ecx + edx]
add eax, esi
mov dword [ecx + edi], eax
add ecx, 8
mov dword [ebp - 0x14], ecx
cmp ecx, 0x24
jl 0x472bf0
mov eax, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x20]
inc eax
mov ebx, dword [ebp - 0x24]
mov dword [ebp - 0x1c], eax
cmp eax, 8
jl 0x472b30
mov ebx, dword [ebp + 0x10]
lea eax, [ebp - 0x38]
push 8
push ebx
push eax
call fcn.004d0d60
push 8
lea eax, [ebp - 0x10]
push ebx
push eax
call fcn.004d0d60
push 0x20
push dword [ebp - 0x20]
lea eax, [ebp - 0x78]
push eax
call fcn.004d0d60
push 0x20
push dword [ebp - 0x24]
lea eax, [ebp - 0x58]
push eax
call fcn.004d0d60
add esp, 0x30
mov esi, dword [ebp - 0x28]
mov edi, dword [ebp - 8]
mov ecx, 8
rep movsd dword es:[edi], dword [esi]
mov esi, dword [ebp - 8]
mov ecx, 0x10
rep movsd dword es:[edi], dword [esi]
mov eax, dword [esi]
mov dword [edi + 0x1c], eax
mov eax, dword [esi + 4]
mov dword [edi + 0x18], eax
mov eax, dword [esi + 8]
mov dword [edi + 0x14], eax
mov eax, dword [esi + 0xc]
mov dword [edi + 0x10], eax
mov eax, dword [esi + 0x10]
mov dword [edi + 0xc], eax
mov eax, dword [esi + 0x14]
mov dword [edi + 8], eax
mov eax, dword [esi + 0x18]
mov dword [edi + 4], eax
mov eax, dword [esi + 0x1c]
mov dword [edi], eax
mov esi, dword [ebp - 0x2c]
mov edi, dword [ebp - 4]
mov ecx, 8
rep movsd dword es:[edi], dword [esi]
mov esi, dword [ebp - 4]
mov ecx, 0x10
rep movsd dword es:[edi], dword [esi]
mov eax, dword [esi]
mov dword [edi + 0x1c], eax
mov eax, dword [esi + 4]
mov dword [edi + 0x18], eax
mov eax, dword [esi + 8]
mov dword [edi + 0x14], eax
mov eax, dword [esi + 0xc]
mov dword [edi + 0x10], eax
mov eax, dword [esi + 0x10]
mov dword [edi + 0xc], eax
mov eax, dword [esi + 0x14]
mov dword [edi + 8], eax
mov eax, dword [esi + 0x18]
mov dword [edi + 4], eax
mov eax, dword [esi + 0x1c]
mov dword [edi], eax
mov dword [ebp - 4], 4
nop dword [eax]
pushal
mov esi, dword [ebp - 0x18]
mov eax, dword [esi]
mov edx, dword [esi + 4]
mov esi, dword [ebp - 8]
mov edi, dword [ebp - 0x30]
push ebp
mov ecx, 0x20
mov ebp, eax
add eax, dword [esi]
sub eax, dword [esi + 0x80]
add esi, 4
movzx ebx, al
xor edx, dword [edi + ebx*4]
mov bl, ah
xor edx, dword [edi + ebx*4 + 0x400]
shr eax, 0x10
mov bl, ah
xor edx, dword [edi + ebx*4 + 0xc00]
mov bl, al
xor edx, dword [edi + ebx*4 + 0x800]
mov eax, edx
mov edx, ebp
loop 0x472de5
pop ebp
mov esi, dword [ebp - 0x18]
mov dword [esi], edx
mov dword [esi + 4], eax
popal
mov ebx, dword [ebp + 0xc]
mov esi, dword [ebp - 0x10]
mov edx, dword [ebp - 0xc]
xor esi, dword [ebp - 0x38]
xor edx, dword [ebp - 0x34]
mov eax, dword [ebx + 8]
mov ecx, dword [ebp - 4]
mov dword [ebp - 0x10], esi
mov dword [ebp - 0xc], edx
test eax, eax
je 0x472e5e
mov edi, dword [ebx + 4]
test edi, edi
je 0x472e5e
cmp dword [ebx + 0x14], ecx
jb 0x472e5e
mov eax, dword [ecx + eax - 4]
add eax, esi
mov dword [ecx + edi - 4], eax
mov edx, dword [ebp - 0xc]
mov esi, dword [ebx + 8]
test esi, esi
je 0x472e7c
mov edi, dword [ebx + 4]
test edi, edi
je 0x472e7c
lea eax, [ecx + 4]
cmp dword [ebx + 0x14], eax
jb 0x472e7c
mov eax, dword [ecx + esi]
add eax, edx
mov dword [ecx + edi], eax
add ecx, 8
mov dword [ebp - 4], ecx
cmp ecx, 0x24
jl 0x472dd0
cmp dword [ebx + 8], 0
je 0x472eb8
mov eax, dword [ebx + 4]
test eax, eax
je 0x472eb8
push dword [ebx + 0x14]
push eax
call fcn.00495d30
push dword [ebx + 0x14]
mov dword [ebx + 0xc], eax
push dword [ebx + 8]
call fcn.00495d30
add esp, 0x10
mov dword [ebx + 0x10], eax
add dword [ebx + 0xc], eax
mov eax, dword [ebp + 8]
mov esi, 1
mov ecx, dword [eax + 0x14]
test ecx, ecx
je 0x472ed3
push ebx
push eax
push 0x1a4
call ecx
add esp, 0xc
push dword [ebp + 0x18]
call fcn.00473aa0
add esp, 4
mov eax, esi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret