Function at 0x4aa50c
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0x21
push 0
push 0
dec ecx
jne 0x4aa514
push ecx
push ebx
push esi
mov ebx, eax
xor eax, eax
push ebp
push 0x4aac5a
push dword fs:[eax]
mov dword fs:[eax], esp
cmp byte [ebx + 0x3e0], 0
je 0x4aa8bc
mov eax, dword [ebx + 4]
cmp eax, 0x7304
je 0x4aa54c
cmp eax, 0x7305
jne 0x4aa558
mov dword [ebx + 0x3e4], 0x80
jmp 0x4aa562
mov dword [ebx + 0x3e4], 0x40
mov eax, dword [ebx + 0x3dc]
mov edx, dword [0x4aa294]
call fcn.00403684
test al, al
jne 0x4aa59e
lea edx, [ebp - 0xdc]
mov eax, dword [0x4e24b8]
call fcn.0040630c
mov ecx, dword [ebp - 0xdc]
mov dl, 1
mov eax, dword [0x4aa1c4]
call fcn.0040bf84
call fcn.00403c74
lea edx, [ebp - 0xe0]
mov eax, dword [ebx + 0x3dc]
mov ecx, dword [eax]
call dword [ecx + 0x30]
mov eax, dword [ebp - 0xe0]
call fcn.0040540c
cmp eax, dword [ebx + 0x3e4]
jle 0x4aa84e
lea edx, [ebp - 0xe4]
mov eax, dword [ebx + 0x3dc]
mov ecx, dword [eax]
call dword [ecx + 0x30]
mov eax, dword [ebp - 0xe4]
lea edx, [ebp - 8]
call fcn.0045765c
mov eax, dword [ebx + 4]
add eax, 0xffff8cff
cmp eax, 6
ja case.default.0x4aa5f6
jmp dword [eax*4 + 0x4aa5fd]
mov eax, dword [ebp - 8]
call fcn.0040540c
mov edx, eax
lea ecx, [ebp - 0x18]
mov eax, dword [ebp - 8]
call fcn.00451780
push 0x10
lea eax, [ebp - 8]
mov ecx, 1
mov edx, dword [0x4565dc]
call fcn.004055e8
add esp, 4
mov edx, dword [ebp - 8]
lea eax, [ebp - 0x18]
mov ecx, 0x10
call fcn.00402c74
jmp 0x4aa82d
mov eax, dword [ebp - 8]
call fcn.0040540c
mov edx, eax
lea ecx, [ebp - 0x2c]
mov eax, dword [ebp - 8]
call fcn.004506a0
push 0x14
lea eax, [ebp - 8]
mov ecx, 1
mov edx, dword [0x4565dc]
call fcn.004055e8
add esp, 4
mov edx, dword [ebp - 8]
lea eax, [ebp - 0x2c]
mov ecx, 0x14
call fcn.00402c74
jmp 0x4aa82d
mov eax, dword [ebp - 8]
call fcn.0040540c
mov edx, eax
lea ecx, [ebp - 0x48]
mov eax, dword [ebp - 8]
call fcn.0046fe68
push 0x1c
lea eax, [ebp - 8]
mov ecx, 1
mov edx, dword [0x4565dc]
call fcn.004055e8
add esp, 4
mov edx, dword [ebp - 8]
lea eax, [ebp - 0x48]
mov ecx, 0x1c
call fcn.00402c74
jmp 0x4aa82d
mov eax, dword [ebp - 8]
call fcn.0040540c
mov edx, eax
lea ecx, [ebp - 0x68]
mov eax, dword [ebp - 8]
call fcn.004701b0
push 0x20
lea eax, [ebp - 8]
mov ecx, 1
mov edx, dword [0x4565dc]
call fcn.004055e8
add esp, 4
mov edx, dword [ebp - 8]
lea eax, [ebp - 0x68]
mov ecx, 0x20
call fcn.00402c74
jmp 0x4aa82d
mov eax, dword [ebp - 8]
call fcn.0040540c
mov edx, eax
lea ecx, [ebp - 0x98]
mov eax, dword [ebp - 8]
call fcn.004713c4
push 0x30
lea eax, [ebp - 8]
mov ecx, 1
mov edx, dword [0x4565dc]
call fcn.004055e8
add esp, 4
mov edx, dword [ebp - 8]
lea eax, [ebp - 0x98]
mov ecx, 0x30
call fcn.00402c74
jmp 0x4aa82d
mov eax, dword [ebp - 8]
call fcn.0040540c
mov edx, eax
lea ecx, [ebp - 0xd8]
mov eax, dword [ebp - 8]
call fcn.00470af0
push 0x40
lea eax, [ebp - 8]
mov ecx, 1
mov edx, dword [0x4565dc]
call fcn.004055e8
add esp, 4
mov edx, dword [ebp - 8]
lea eax, [ebp - 0xd8]
mov ecx, 0x40
call fcn.00402c74
jmp 0x4aa82d
mov eax, dword [ebp - 8]
call fcn.0040540c
mov edx, eax
lea ecx, [ebp - 0x2c]
mov eax, dword [ebp - 8]
call fcn.0046fcd8
push 0x14
lea eax, [ebp - 8]
mov ecx, 1
mov edx, dword [0x4565dc]
call fcn.004055e8
add esp, 4
mov edx, dword [ebp - 8]
lea eax, [ebp - 0x2c]
mov ecx, 0x14
call fcn.00402c74
jmp 0x4aa82d
mov eax, dword [ebx + 4]
mov dword [ebp - 0xec], eax
mov byte [ebp - 0xe8], 0
lea eax, [ebp - 0xec]
push eax
push 0
lea edx, [ebp - 0xf0]
mov eax, dword [0x4e2450]
call fcn.0040630c
mov ecx, dword [ebp - 0xf0]
mov dl, 1
mov eax, dword [0x4aa228]
call fcn.0040bfc0
call fcn.00403c74
lea edx, [ebp - 0xf4]
mov eax, dword [ebp - 8]
call fcn.0045765c
mov edx, dword [ebp - 0xf4]
mov eax, dword [ebx + 0x3dc]
mov ecx, dword [eax]
call dword [ecx + 0x34]
jmp 0x4aa86d
lea edx, [ebp - 0xf8]
mov eax, dword [ebx + 0x3dc]
mov ecx, dword [eax]
call dword [ecx + 0x30]
mov eax, dword [ebp - 0xf8]
lea edx, [ebp - 8]
call fcn.0045765c
mov eax, dword [ebx + 0x3e4]
push eax
lea eax, [ebp - 4]
mov ecx, 1
mov edx, dword [0x4565dc]
call fcn.004055e8
add esp, 4
mov eax, dword [ebp - 4]
mov cl, 0x36
mov edx, dword [ebx + 0x3e4]
call fcn.0045a0cc
mov eax, dword [ebp - 8]
call fcn.0040540c
mov edx, eax
dec edx
test edx, edx
jl 0x4aa8bc
inc edx
xor eax, eax
mov ecx, dword [ebp - 8]
mov cl, byte [ecx + eax]
mov esi, dword [ebp - 4]
xor byte [esi + eax], cl
inc eax
dec edx
jne 0x4aa8ac
mov eax, dword [ebx + 4]
cmp eax, 0x7302
jg 0x4aa929
je 0x4aaa3e
cmp eax, 0x7105
jg 0x4aa8fe
je 0x4aa9dc
sub eax, 0x7101
je 0x4aa99c
dec eax
je 0x4aa98f
dec eax
je 0x4aa982
dec eax
je 0x4aa9bc
jmp case.0x4aa937.29448
sub eax, 0x7106
je 0x4aa9cc
dec eax
je 0x4aa9ac
sub eax, 2
je 0x4aa9ec
sub eax, 0x1f8
je 0x4aaa1a
jmp case.0x4aa937.29448
add eax, 0xffff8cfd
cmp eax, 0x10
ja case.0x4aa937.29448
jmp dword [eax*4 + 0x4aa93e]
lea eax, [ebx + 8]
call 0x451a4c
jmp 0x4aabec
lea eax, [ebx + 0x44]
call fcn.00451878
jmp 0x4aabec
lea eax, [ebx + 0xa0]
call fcn.004506d4
jmp 0x4aabec
lea eax, [ebx + 0x240]
call fcn.0046fe00
jmp 0x4aabec
lea eax, [ebx + 0x240]
call fcn.0046febc
jmp 0x4aabec
lea eax, [ebx + 0x2ac]
call fcn.00470484
jmp 0x4aabec
lea eax, [ebx + 0x2ac]
call fcn.004712f0
jmp 0x4aabec
lea eax, [ebx + 0x378]
call fcn.0046f5c8
jmp 0x4aabec
lea eax, [ebx + 0x44]
call fcn.00451878
mov edx, dword [ebp - 4]
lea eax, [ebx + 0x44]
mov ecx, dword [ebx + 0x3e4]
call fcn.004518bc
jmp 0x4aabec
lea eax, [ebx + 0xa0]
call fcn.004506d4
mov edx, dword [ebp - 4]
lea eax, [ebx + 0xa0]
mov ecx, dword [ebx + 0x3e4]
call fcn.00450730
jmp 0x4aabec
lea eax, [ebx + 0x240]
call fcn.0046fe00
mov edx, dword [ebp - 4]
lea eax, [ebx + 0x240]
mov ecx, dword [ebx + 0x3e4]
call fcn.0046fe60
jmp 0x4aabec
lea eax, [ebx + 0x240]
call fcn.0046febc
mov edx, dword [ebp - 4]
lea eax, [ebx + 0x240]
mov ecx, dword [ebx + 0x3e4]
call fcn.00470118
jmp 0x4aabec
lea eax, [ebx + 0x2ac]
call fcn.004712f0
mov edx, dword [ebp - 4]
lea eax, [ebx + 0x2ac]
mov ecx, dword [ebx + 0x3e4]
call fcn.004713bc
jmp 0x4aabec
lea eax, [ebx + 0x2ac]
call fcn.00470484
mov edx, dword [ebp - 4]
lea eax, [ebx + 0x2ac]
mov ecx, dword [ebx + 0x3e4]
call fcn.00470a3c
jmp 0x4aabec
lea eax, [ebx + 0x378]
call fcn.0046f5c8
mov edx, dword [ebp - 4]
lea eax, [ebx + 0x378]
mov ecx, dword [ebx + 0x3e4]
call fcn.0046fc58
jmp 0x4aabec
push 4
lea edx, [ebp - 0xfc]
mov eax, dword [ebx + 0x3dc]
mov ecx, dword [eax]
call dword [ecx + 0x30]
mov ecx, dword [ebp - 0xfc]
mov dl, 1
mov eax, dword [0x4a7a44]
call fcn.004a9880
mov dword [ebx + 0x3e8], eax
jmp 0x4aabec
push 8
lea edx, [ebp - 0x100]
mov eax, dword [ebx + 0x3dc]
mov ecx, dword [eax]
call dword [ecx + 0x30]
mov ecx, dword [ebp - 0x100]
mov dl, 1
mov eax, dword [0x4a7a44]
call fcn.004a9880
mov dword [ebx + 0x3e8], eax
jmp 0x4aabec
push 0xc
lea edx, [ebp - 0x104]
mov eax, dword [ebx + 0x3dc]
mov ecx, dword [eax]
call dword [ecx + 0x30]
mov ecx, dword [ebp - 0x104]
mov dl, 1
mov eax, dword [0x4a7a44]
call fcn.004a9880
mov dword [ebx + 0x3e8], eax
jmp 0x4aabec
push 0x10
lea edx, [ebp - 0x108]
mov eax, dword [ebx + 0x3dc]
mov ecx, dword [eax]
call dword [ecx + 0x30]
mov ecx, dword [ebp - 0x108]
mov dl, 1
mov eax, dword [0x4a7a44]
call fcn.004a9880
mov dword [ebx + 0x3e8], eax
jmp 0x4aabec
mov eax, dword [ebx + 4]
mov dword [ebp - 0xec], eax
mov byte [ebp - 0xe8], 0
lea eax, [ebp - 0xec]
push eax
push 0
lea edx, [ebp - 0x10c]
mov eax, dword [0x4e2450]
call fcn.0040630c
mov ecx, dword [ebp - 0x10c]
mov dl, 1
mov eax, dword [0x4aa228]
call fcn.0040bfc0
call fcn.00403c74
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4aac61
lea eax, [ebp - 0x10c]
call fcn.00404304
lea eax, [ebp - 0x108]
mov edx, dword [0x4565dc]
mov ecx, 6
call fcn.00404d84
lea eax, [ebp - 0xf0]
call fcn.00404304
lea eax, [ebp - 0xe4]
mov edx, dword [0x4565dc]
mov ecx, 2
call fcn.00404d84
lea eax, [ebp - 0xdc]
call fcn.00404304
lea eax, [ebp - 8]
mov edx, dword [0x4565dc]
mov ecx, 2
call fcn.00404d84
ret