Function at 0x406ca0
Capabilities:
Encode data using xor

Disassembly:
push 0xffffffffffffffff
push 0x48a6d8
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x14
mov al, byte [esp + 0x24]
push ebx
mov byte [esp + 8], al
push ebp
xor ecx, ecx
xor edx, edx
xor eax, eax
push esi
push edi
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], ecx
mov esi, dword [0x49dac8]
mov dword [esp + 0x2c], ecx
lea ebp, [esi + 0x19000]
cmp ebp, ecx
jbe 0x406d66
mov eax, ebp
jge 0x406cf0
xor eax, eax
push eax
call fcn.0047f3d2
mov esi, dword [esp + 0x1c]
mov edi, eax
mov eax, dword [esp + 0x20]
add esp, 4
cmp esi, eax
mov ebx, edi
mov dword [esp + 0x10], eax
je 0x406d29
push esi
push ebx
call fcn.00406c50
mov eax, dword [esp + 0x18]
add esp, 8
inc ebx
inc esi
cmp esi, eax
jne 0x406d0d
mov eax, dword [esp + 0x1c]
mov esi, dword [esp + 0x18]
push eax
push esi
lea ecx, [esp + 0x1c]
call fcn.00406bf0
mov ecx, dword [esp + 0x18]
push ecx
call fcn.0047f3fb
mov edx, dword [esp + 0x1c]
add esp, 4
lea ecx, [edi + ebp]
test edx, edx
mov dword [esp + 0x20], ecx
jne 0x406d54
xor eax, eax
jmp 0x406d5a
mov eax, dword [esp + 0x1c]
sub eax, edx
add eax, edi
mov edx, edi
mov dword [esp + 0x1c], eax
mov dword [esp + 0x18], edx
mov esi, dword [0x49dacc]
sub ecx, eax
mov edi, eax
lea ebp, [esi + 0x49dad0]
mov esi, ebp
mov dword [esp + 0x10], ebp
sub esi, 0x49dad0
cmp ecx, esi
jae 0x406e3f
test edx, edx
je 0x406d96
mov ecx, eax
sub ecx, edx
cmp esi, ecx
jb 0x406d98
mov ecx, esi
test edx, edx
jne 0x406da0
xor eax, eax
jmp 0x406da2
sub eax, edx
lea ebp, [eax + ecx]
test ebp, ebp
mov eax, ebp
jge 0x406dad
xor eax, eax
push eax
call fcn.0047f3d2
mov edx, dword [esp + 0x1c]
add esp, 4
mov ebx, eax
lea ecx, [esp + 0x14]
push ebx
push edi
push edx
call fcn.00406c00
push eax
mov eax, dword [esp + 0x14]
push eax
push 0x49dad0
lea ecx, [esp + 0x20]
call fcn.00406c00
mov ecx, dword [esp + 0x1c]
push eax
push ecx
push edi
lea ecx, [esp + 0x20]
call fcn.00406c00
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
push edx
push eax
lea ecx, [esp + 0x1c]
call fcn.00406bf0
mov ecx, dword [esp + 0x18]
push ecx
call fcn.0047f3fb
mov ecx, dword [esp + 0x1c]
add esp, 4
lea edx, [ebx + ebp]
test ecx, ecx
mov dword [esp + 0x20], edx
jne 0x406e2b
xor eax, eax
mov dword [esp + 0x18], ebx
mov eax, ebx
add eax, esi
mov dword [esp + 0x1c], eax
jmp 0x406e9d
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x18], ebx
sub eax, ecx
add eax, ebx
add eax, esi
mov dword [esp + 0x1c], eax
jmp 0x406e9d
test esi, esi
jbe 0x406e9d
lea ecx, [eax + esi]
push ecx
push eax
push eax
lea ecx, [esp + 0x20]
call fcn.00406c00
mov eax, dword [esp + 0x1c]
lea ecx, [esp + 0x14]
push eax
sub eax, edi
add eax, 0x49dad0
push ebp
push eax
call fcn.00406c00
mov edx, dword [esp + 0x1c]
push edi
sub edx, edi
add edx, 0x49dad0
push edx
jmp 0x406e86
push 0x49dad0
call fcn.00406c30
mov eax, dword [esp + 0x28]
add esp, 0xc
add eax, esi
mov dword [esp + 0x1c], eax
mov ecx, dword [0x4b6ad0]
lea edx, [ecx + 0x4b6ad4]
lea ecx, [esp + 0x14]
push edx
push 0x4b6ad4
push eax
call fcn.00406fa0
mov eax, dword [0x4cfad4]
mov edx, dword [esp + 0x1c]
lea ecx, [eax + 0x4cfad8]
push ecx
push 0x4cfad8
push edx
lea ecx, [esp + 0x20]
call fcn.00406fa0
mov eax, dword [0x4e8ad8]
mov edx, dword [esp + 0x1c]
lea ecx, [eax + 0x4e8adc]
push ecx
push 0x4e8adc
push edx
lea ecx, [esp + 0x20]
call fcn.00406fa0
mov ecx, dword [esp + 0x18]
test ecx, ecx
jne 0x406f03
xor edx, edx
jmp 0x406f09
mov edx, dword [esp + 0x1c]
sub edx, ecx
xor eax, eax
test edx, edx
jle 0x406f1d
mov bl, byte [eax + ecx]
xor bl, 0x25
mov byte [eax + ecx], bl
inc eax
cmp eax, edx
jl 0x406f0f
mov esi, dword [esp + 0x34]
lea eax, [esp + 0x14]
push esi
push eax
call fcn.00406820
mov eax, dword [esi + 4]
add esp, 8
test eax, eax
jne 0x406f3a
xor esi, esi
jmp 0x406f3f
mov esi, dword [esi + 8]
sub esi, eax
mov ecx, dword [esp + 0x18]
push ecx
call fcn.0047f3fb
mov ecx, dword [esp + 0x28]
add esp, 4
mov eax, esi
mov dword fs:[0], ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret