Function at 0x457160
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x124
mov eax, dword [0x70e00c]
xor eax, ebp
mov dword [ebp - 4], eax
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 0x10]
push ebx
mov ebx, dword [ebp + 8]
push esi
mov esi, ecx
mov dword [ebp - 0x118], ebx
mov ecx, dword [ebp + 0x14]
push edi
mov edi, dword [ebp + 0x18]
mov dword [ebp - 0x124], esi
mov dword [ebp - 0x11c], edx
mov dword [ebp - 0x10c], eax
mov dword [ebp - 0x110], ecx
mov dword [esi + 0x10], 0
mov dword [esi + 0x14], 0xffffffff
test edi, edi
je 0x457651
test edx, edx
je 0x457651
test ebx, ebx
je 0x457651
test eax, eax
je 0x457651
test ecx, ecx
je 0x457651
push edi
lea ecx, [esi + 0x18]
call fcn.00457bc0
lea ecx, [esi + 0x20]
push edi
call fcn.00457bc0
shl edi, 2
push edi
push dword [ebp - 0x10c]
push dword [esi + 0x18]
call fcn.005f40c0
push edi
push dword [ebp - 0x110]
push dword [esi + 0x20]
call fcn.005f40c0
push 0x100
lea eax, [esi + 0xd1]
push 0
push eax
call fcn.005f46f0
mov ebx, dword [ebp + 0x18]
lea ecx, [esi + 8]
add esp, 0x24
push ebx
call fcn.00457bc0
push ebx
mov ecx, esi
call fcn.00457c60
push 0x100
lea eax, [ebp - 0x104]
mov ebx, 1
push 0
push eax
call fcn.005f46f0
xor ecx, ecx
add esp, 0xc
mov dword [ebp - 0x114], ecx
cmp dword [ebp + 0x18], ecx
jbe 0x45735d
mov eax, dword [ebp - 0x118]
mov edx, dword [ebp - 0x11c]
mov edi, dword [ebp + 0x18]
sub edx, eax
mov dword [ebp - 0x120], eax
mov dword [ebp - 0x10c], edx
mov eax, dword [edx + eax]
mov dword [ebp - 0x110], eax
test eax, eax
je 0x457335
cmp eax, dword [esi + 0x14]
jae 0x45729a
mov dword [esi + 0x14], eax
mov edi, dword [ebp - 0x120]
mov edi, dword [edi]
test edi, edi
je 0x457651
lea edx, [ecx*8]
mov ecx, dword [esi]
add ecx, edx
push eax
call fcn.00457e70
test al, al
je 0x457651
mov eax, dword [esi + 8]
mov edx, dword [ebp - 0x114]
mov ecx, dword [ebp - 0x110]
push ecx
push edi
mov dword [eax + edx*4], ecx
mov eax, dword [esi]
push dword [eax + edx*8]
call fcn.005f40c0
mov edx, dword [ebp - 0x110]
xor ecx, ecx
add esp, 0xc
lea eax, [edi + edx]
cmp edi, eax
cmova edx, ecx
test edx, edx
je 0x457326
nop dword [eax + eax]
movzx eax, byte [edi]
cmp byte [ebp + eax - 0x104], 0
jne 0x457320
mov byte [eax + esi + 0xd1], bl
inc ebx
movzx eax, byte [edi]
mov byte [ebp + eax - 0x104], 1
inc ecx
inc edi
cmp ecx, edx
jb 0x457300
mov edi, dword [ebp + 0x18]
mov edx, dword [ebp - 0x10c]
mov ecx, dword [ebp - 0x114]
mov eax, dword [ebp - 0x120]
inc ecx
add eax, 4
mov dword [ebp - 0x114], ecx
mov dword [ebp - 0x120], eax
cmp ecx, edi
jb 0x457281
mov eax, 0x100
cmp ebx, eax
cmova ebx, eax
xor al, al
sub ebx, 1
je 0x457374
add al, 1
shr ebx, 1
jne 0x457364
mov byte [ebp - 0x105], al
test al, al
jne 0x45737c
mov al, 1
mov byte [ebp - 0x105], al
movzx ecx, al
xor edx, edx
mov eax, 0x10
div ecx
mov byte [esi + 0xd0], al
movzx eax, al
cmp dword [esi + 0x14], eax
jae 0x45739f
mov al, byte [esi + 0x14]
mov byte [esi + 0xd0], al
mov al, byte [ebp - 0x105]
mov byte [esi + 0x1d1], 8
cmp al, 6
ja 0x4573b6
mov byte [esi + 0x1d1], al
movzx edi, byte [esi + 0x1d1]
xor edx, edx
mov eax, 0x20
movzx ecx, byte [esi + 0xd0]
div edi
imul ecx, edi
mov byte [esi + 0x1d2], al
mov eax, 1
shl eax, cl
dec eax
mov dword [esi + 0xcc], eax
lea ebx, [eax + 1]
test ebx, ebx
je 0x457651
push dword [esi + 0x40]
call fcn.004aadd5
xor ecx, ecx
mov dword [esi + 0x40], 0
mov eax, ebx
mov dword [esi + 0x44], 0
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0065e055
mov edi, eax
add esp, 8
mov dword [esi + 0x40], edi
test edi, edi
je 0x457651
mov dword [esi + 0x44], ebx
lea ebx, [edi + ebx*4]
cmp edi, ebx
je 0x457453
push edi
push 4
add edi, 4
call fcn.00404280
add esp, 8
test eax, eax
je 0x45744f
mov dword [eax], 0
cmp edi, ebx
jne 0x457437
mov eax, dword [ebp + 0x18]
lea ebx, [eax + 1]
test ebx, ebx
je 0x457651
push dword [esi + 0x28]
call fcn.004aadd5
xor ecx, ecx
mov dword [esi + 0x28], 0
mov eax, ebx
mov dword [esi + 0x2c], 0
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0065e055
mov edi, eax
add esp, 8
mov dword [esi + 0x28], edi
test edi, edi
je 0x457651
lea eax, [edi + ebx*4]
mov dword [esi + 0x2c], ebx
mov dword [ebp - 0x10c], eax
cmp edi, eax
je 0x4574d3
mov esi, eax
push edi
push 4
add edi, 4
call fcn.00404280
add esp, 8
test eax, eax
je 0x4574c9
mov dword [eax], 0
cmp edi, esi
jne 0x4574b1
mov esi, dword [ebp - 0x124]
lea eax, [esi + 0x30]
push ebx
mov ecx, eax
call fcn.00457bc0
test al, al
je 0x457651
test ebx, ebx
je 0x457651
push dword [esi + 0x38]
call fcn.004aadd5
push ebx
mov dword [esi + 0x38], 0
mov dword [esi + 0x3c], 0
call fcn.0065e055
mov edi, eax
add esp, 8
mov dword [esi + 0x38], edi
test edi, edi
je 0x457651
mov dword [esi + 0x3c], ebx
add ebx, edi
cmp edi, ebx
je 0x45753f
push edi
push 1
inc edi
call fcn.00404280
add esp, 8
test eax, eax
je 0x45753b
mov cl, byte [esi + 0x1d2]
mov byte [eax], cl
cmp edi, ebx
jne 0x457523
xor ebx, ebx
mov dword [ebp - 0x10c], ebx
cmp dword [ebp + 0x18], ebx
jbe 0x4575f5
mov edi, dword [ebp - 0x11c]
sub dword [ebp - 0x118], edi
nop dword [eax]
mov ecx, dword [esi + 0x38]
movzx eax, byte [ecx + ebx + 1]
cmp eax, dword [edi]
jbe 0x457572
mov al, byte [edi]
mov byte [ecx + ebx + 1], al
mov al, byte [ecx + ebx + 1]
xor edx, edx
test al, al
je 0x4575b3
mov ecx, dword [ebp - 0x118]
movzx ebx, al
mov edi, dword [ecx + edi]
movzx ecx, byte [esi + 0x1d1]
nop
movzx eax, byte [edi]
lea edi, [edi + 1]
shl edx, cl
movzx eax, byte [eax + esi + 0xd1]
or edx, eax
sub ebx, 1
jne 0x457590
mov ebx, dword [ebp - 0x10c]
mov edi, dword [ebp - 0x11c]
mov eax, dword [esi + 0x30]
add edi, 4
mov dword [ebp - 0x11c], edi
mov dword [eax + ebx*4 + 4], edx
mov eax, dword [esi + 0xcc]
mov ecx, dword [esi + 0x28]
and eax, edx
lea edx, [eax*4]
mov eax, dword [esi + 0x40]
mov eax, dword [edx + eax]
mov dword [ecx + ebx*4 + 4], eax
inc ebx
mov eax, dword [esi + 0x40]
mov dword [ebp - 0x10c], ebx
mov dword [edx + eax], ebx
cmp ebx, dword [ebp + 0x18]
jb 0x457560
xor edi, edi
lea ebx, [esi + 0x48]
nop word [eax + eax]
movzx ecx, byte [esi + 0x1d1]
lea ebx, [ebx + 4]
imul ecx, edi
xor edx, edx
xor eax, eax
bts edx, ecx
cmp ecx, 0x20
cmovae eax, edx
xor edx, eax
cmp ecx, 0x40
cmovae eax, edx
dec edx
mov dword [ebx - 4], edx
inc edi
movzx eax, byte [esi + 0x1d1]
imul eax, edi
cmp eax, 0x20
jbe 0x457600
mov eax, dword [ebp + 0x18]
pop edi
mov dword [esi + 0x10], eax
mov al, 1
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004aa758
mov esp, ebp
pop ebp
ret 0x14
mov ecx, dword [ebp - 4]
xor al, al
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004aa758
mov esp, ebp
pop ebp
ret 0x14